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
otelsert à l’article suivant etdemodans 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_DAYSvaut 3650 jours par défaut.
Les values la fixent à 14 jours pour un volume de 30 Gi.resourcesn’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 varianteretaingarde le volume si quelqu’un lance unhelm uninstallou 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.yamlkubectl 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 :

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.
