Skip to content

Kibana

Kibana is the Elastic Stack analytics and visualization UI. The HelmForge chart connects Kibana to an existing Elasticsearch cluster or an optional HelmForge Elasticsearch dependency for self-contained environments.

Key Features

  • Official Elastic Kibana image pinned to 9.4.2
  • Optional Wolfi image flavor
  • Basic auth or Elasticsearch service account token wiring
  • Static encryption key support for HA sessions and encrypted saved objects
  • Optional HelmForge Elasticsearch subchart for local and self-contained installs
  • Ingress, Gateway API, dual-stack Services, NetworkPolicy, ServiceMonitor, PDB, and External Secrets

Installation

helm repo add helmforge https://repo.helmforge.dev
helm repo update
helm install kibana helmforge/kibana --namespace observability --create-namespace \
  --set elasticsearch.hosts[0]=http://elasticsearch:9200
helm install kibana oci://ghcr.io/helmforgedev/helm/kibana --namespace observability --create-namespace

Examples

Bundled Elasticsearch:

bundledElasticsearch:
  enabled: true

elasticsearch:
  hosts:
    - http://kibana-bundled-elasticsearch:9200

Secured Elasticsearch:

elasticsearch:
  hosts:
    - https://elasticsearch:9200
  auth:
    type: serviceAccountToken
    existingSecret: kibana-elasticsearch-token
  tls:
    enabled: true
    certificateAuthoritiesSecret: elasticsearch-ca

Operations

Set stable encryption keys before scaling beyond one replica. Elastic recommends matching Kibana and Elasticsearch versions across the stack.

Architecture

The chart deploys Kibana as the visualization layer for Elasticsearch. It can connect to an external Elasticsearch cluster or deploy the HelmForge Elasticsearch subchart for self-contained environments. Authentication can be disabled for local tests, use basic credentials, or use a service account token.

Runtime flow:

  1. Users reach Kibana through Ingress or Gateway API.
  2. Kibana reads stable encryption keys from generated or existing Secrets.
  3. Kibana connects to one or more Elasticsearch endpoints.
  4. Optional TLS CA material verifies Elasticsearch certificates.
  5. Optional ServiceMonitor scrapes Kibana process metrics.

Production Values

Use stable encryption keys, TLS verification, service account tokens, and explicit network policy:

replicaCount: 2

elasticsearch:
  hosts:
    - https://elasticsearch:9200
  auth:
    type: serviceAccountToken
    existingSecret: kibana-elasticsearch-token
  tls:
    enabled: true
    certificateAuthoritiesSecret: elasticsearch-ca
    verificationMode: certificate

encryptionKeys:
  existingSecret: kibana-encryption-keys

networkPolicy:
  enabled: true

Stable encryption keys are required before scaling beyond one pod. Without them, sessions, saved object encryption, and reporting features can fail across restarts or replicas.

Bundled Elasticsearch

For development or self-contained validation, enable the HelmForge Elasticsearch dependency:

bundledElasticsearch:
  enabled: true

elasticsearch:
  hosts:
    - http://kibana-bundled-elasticsearch:9200

bundled-elasticsearch:
  clusterProfile: dev
  image:
    tag: '9.4.2'
  kibana:
    enabled: false
  master:
    persistence:
      enabled: false
  sysctlInit:
    enabled: false

For production, prefer a separately managed Elasticsearch release with its own capacity, backup, and upgrade plan.

Secrets And External Secrets

Service account token example:

elasticsearch:
  auth:
    type: serviceAccountToken
    existingSecret: kibana-elasticsearch-token

externalSecrets:
  enabled: true
  secretStoreRef:
    name: cluster-secrets
    kind: ClusterSecretStore
  data:
    - secretKey: service-account-token
      remoteRef:
        key: elastic/kibana
        property: service-account-token

Use the same target Secret names in Kibana values and ExternalSecret configuration to avoid race conditions or orphaned credentials.

Networking

Ingress example:

ingress:
  enabled: true
  ingressClassName: nginx
  hosts:
    - host: kibana.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: kibana-tls
      hosts:
        - kibana.example.com

Gateway API example:

gateway:
  enabled: true
  parentRefs:
    - name: shared-gateway
      namespace: gateway-system
  hostnames:
    - kibana.example.com

Upgrade Notes

Keep Kibana and Elasticsearch versions aligned. When upgrading:

  1. Confirm Elasticsearch is compatible with the target Kibana version.
  2. Back up saved objects and Elasticsearch data according to the Elastic runbook.
  3. Keep encryption keys stable.
  4. Roll out Kibana after Elasticsearch is healthy.

Validation

After deployment:

helm test kibana -n kibana
kubectl get pods -n kibana -l app.kubernetes.io/name=kibana
kubectl logs -n kibana deploy/kibana --since=10m
kubectl get events -n kibana --sort-by=.lastTimestamp

Also validate login, saved object access, index pattern discovery, and TLS verification against Elasticsearch.

Common Issues

SymptomLikely CauseFix
Kibana reports encryption key warningsKeys are generated or unstableSet encryptionKeys.existingSecret.
Cannot connect to ElasticsearchWrong hosts, credentials, CA, or NetworkPolicyValidate DNS, Secret keys, CA Secret, and egress.
TLS verification failsCA Secret missing or verification mode wrongMount the correct CA and set verificationMode.
Version compatibility errorsKibana and Elasticsearch versions differAlign stack versions before rollout.

Values

ParameterDefaultDescription
image.repositorydocker.elastic.co/kibana/kibanaOfficial Kibana image.
image.flavordefaultImage flavor: default or wolfi.
replicaCount1Number of Kibana replicas.
elasticsearch.hosts[http://elasticsearch:9200]Elasticsearch endpoints.
bundledElasticsearch.enabledfalseDeploy HelmForge Elasticsearch dependency.
elasticsearch.auth.typenoneAuth mode: none, basic, or serviceAccountToken.
encryptionKeys.existingSecret""Secret with stable Kibana encryption keys.
gateway.enabledfalseRender Gateway API HTTPRoute.
serviceMonitor.enabledfalseRender ServiceMonitor.
externalSecrets.enabledfalseRender ExternalSecret resources.