Le premier article provisionne un cluster Kapsule avec OpenTofu.
Cet article y installe OpenObserve en mode standalone.

Installer OpenObserve

Les namespaces d’abord :

kubectl create namespace openobserve
kubectl create namespace otel
kubectl create namespace demo

otel sert à l’article suivant et demo dans celui qui suivra ensuite.

Ajoutez le repo Helm. La ligne 1.0.x du chart suit la 1.0 GA d’OpenObserve (11 septembre 2026).

helm repo add openobserve https://charts.openobserve.ai
helm repo update

Préparez les identifiants root dans un Secret :

kubectl create secret generic o2-root-user \
  --namespace openobserve \
  --from-literal=ZO_ROOT_USER_EMAIL=admin@example.com \
  --from-literal=ZO_ROOT_USER_PASSWORD='<mot-de-passe-fort>'

Sans Secret, le chart standalone crée un compte root avec un mot de passe connu de tous (Complexpass#123). Il active aussi ZO_TELEMETRY, qui envoie un heartbeat à l’éditeur. Le Secret règle le premier point, les values le second :

# openobserve-values.yaml
auth:
  existingRootUserSecret:
    name: o2-root-user

config:
  ZO_TELEMETRY: "false"
  ZO_COMPACT_DATA_RETENTION_DAYS: "14"

image:
  oss:
    tag: "v1.1.1"

persistence:
  size: 30Gi
  storageClass: scw-bssd-retain

resources:
  requests:
    cpu: 250m
    memory: 512Mi
  limits:
    cpu: "1"
    memory: 2Gi

Les clés du Secret correspondent aux valeurs par défaut emailKey et passwordKey du chart. Trois réglages s’écartent des valeurs par défaut du chart :

  • ZO_COMPACT_DATA_RETENTION_DAYS vaut 3650 jours par défaut.
    Les values la fixent à 14 jours pour un volume de 30 Gi.
  • resources n’a aucune limite par défaut dans le chart.
    Sans limite, OpenObserve peut consommer toute la RAM d’un nœud.
  • scw-bssd-retain : la StorageClass par défaut, scw-bssd, supprime le volume avec le PVC. La variante retain garde le volume si quelqu’un lance un helm uninstall ou supprime le PVC par erreur.

Installez :

helm install o2 openobserve/openobserve-standalone \
  --namespace openobserve \
  --version 1.0.1 \
  --values openobserve-values.yaml

Le chart crée un StatefulSet avec un volume monté sur /data et un Service o2-openobserve-standalone qui expose le port 5080 (UI, API, ingestion) et le port 5081 (gRPC).

Comment indiquer une version précise d’OpenObserve

Le chart 1.0.1 embarque OpenObserve v1.0.1.
Les values fixent image.oss.tag à v1.1.1 dans notre paramétrage de la chart helm.

--version choisit la version du chart, pas celle d’OpenObserve.
Pour une autre version de l’application, changez image.oss.tag dans les values, ou passez --set image.oss.tag=<version> à helm install :

        helm install o2 openobserve/openobserve-standalone \
          --namespace openobserve \
          --version 1.0.1 \
          --set image.oss.tag=v1.1.1 \
          --values openobserve-values.yaml
kubectl get pods -n openobserve
kubectl get pvc -n openobserve

Le PVC doit passer à Bound.

Vérifier OpenObserve en interne

D’abord en interne, pour isoler un souci réseau d’un souci DNS ou TLS. Lancez le port-forward en arrière-plan, puis arrêtez-le.

kubectl -n openobserve port-forward svc/o2-openobserve-standalone 5080:5080 &
sleep 2
curl -s -o /dev/null -w '%{http_code}\n' http://localhost:5080/healthz
kill %1

Un 200 confirme que le pod répond.

On peut aussi ouvrir l’interface via son navigateur :

Ecran OpenObserve

Si le cluster est éteint puis rallumé après cette installation, le pod peut rester quelques minutes en ContainerCreating avec l’événement FailedAttachVolume.

Le volume est encore rattaché à l’ancien nœud, et Kubernetes le détache puis l’attache au nouveau nœud sans intervention. Cela peut prendre un peu de temps.

Ressources