Helm

This page describes installing Lenses in Kubernetes via Helm.

Only Helm version 3 is supported.

On start-up, Lenses will be in bootstrap mode unless it has an existing Kafka Connection. Enable provisioning to automate the creation of connections.

First, add the Helm Chart repository using the Helm command line:

helm repo add lensesio https://helm.repo.lenses.io
helm repo update

Use helm to install Lenses with default values:

helm install lenses lensesio/lenses --namespace lenses --create-namespace

The default install of Lenses will place Lenses in bootstrap mode, you can add the connections to Kafka manually and upload your license or automation with provisioning. Please refer to the GitHub values.yaml for all options.

Provisioning

To automatically provision the connections to Kafka and other systems set the .Values.lenses.provision.connections to be the YAML definition of your connections. For a full list of the connection types supported see Provisioning.

The chart will render the full YAML specified under this setting as the provisioning.yaml file.

Alternatively you can use a second YAML file, which contains only the connections pass them at the command line when installing:

helm install lenses \
charts/lenses \
--values charts/lenses/values.yaml \
--values provisioning.yaml

Helm Chart components

The chart uses:

  1. Secrets to store Lenses Postgres credentials and authentication credentials

  2. Secrets to store connection credentials such as Kafka SASL_SCRAM password or password for SSL JKS stores.

  3. Secrets to hold the base64 encoded values of the JKS stores

  4. ConfigMap for Lenses configuration overrides

  5. Cluster roles and role bindings (optional).

Secrets and config maps are mounted as files under the mount /mnt:

  1. settings - holds the lenses.conf

  2. secrets - holds the secrets Lenses and license

  3. provision-secrets - holds the secrets for connections in the provisioning.yaml file

  4. provision-secrets/files - holds any file needed for a connection, e.g. JKS files.

Cluster RBAC

The Helm chart creates Cluster roles and bindings, these are used by SQL Processors if the deployment mode is set to KUBERENTES. They are used so that Lenses can deploy and monitor SQL Processor deployments in namespaces.

To disable the RBAC set: rbacEnabled: false

If you want to limit the permissions Lenses has against your Kubernetes cluster, you can use Role/RoleBinging resources instead.

To achieve this you need to create a Role and a RoleBinding resource in the namespace you want the processors deployed to.

For example:

  • Lenses namespace = lenses-ns

  • Processor namespace = lenses-proc-ns

Finally you need to define in Lenses configuration which namespaces can Lenses access. To achieve this amend values.yaml to contain the following:

lenses.conf

The main configurable options for lenses.conf are available in the values.yaml under the lenses object. These include:

  • Authentication

  • Database connections

  • SQL processor configurations

To apply other static configurations use lenses.append.conf, for example:

Authentication secrets

Set accordingly under**lenses.security.**

For SSO set lenses.security.saml

Postgres

To use Postgres as the backing store for Lenses set the details in the lenses.storage.postgres object.

If Postgres is not enabled a default embedded H2 database is used. To enable persistence for this data:

External Secrets

The chart relies on secrets for sensitive information such as Passwords. Secrets can rotate and are commonly stored in an external store such as Azure KeyVault, Hashicorp Vault or AWS Secrets Manager.

If you wish to have the chart use external secrets that are synchronized with these providers, set the following for the Lenses user:

For Postgres, add additional ENV variables via the lenses.additionalEnv object to point to your secret and set the username and password to external in the Postgres section.

Ingress & Services

While the chart supports setting TLS on Lenses itself we recommend placing it on the Ingress resource

Ingress and service resources are supported.

Enabled an Ingress resource in the values.yaml:

Enable a service resource in the values.yaml:

Controlling resources

To control the resources used by Lenses:

Enabling SQL Processors in K8s mode

To enable SQL processor in KUBERENTES mode and control the defaults:

To control the namespace Lenses can deploy processors, use the sql.namespaces value.

Prometheus metrics

Prometheus metrics are automatically exposed on port 9102 under /metrics.

Example Values files

For Connections, see Provisioning examples. You can also find examples in the Helm chart repo.

Last updated

Was this helpful?