Files
SmokyZoneandCopilot e27524177c Use global.tlsDisable=false instead of duplicating BAO_ADDR
Setting a second BAO_ADDR via extraEnvironmentVars produced two entries
with the same name in the container env list. kubectl itself warns
this 'may be dropped when using apply', and in practice the live
StatefulSet kept only the first (http) value, leaving the pod stuck
NotReady. The chart already exposes global.tlsDisable specifically to
drive BAO_ADDR/health-check scheme - use that instead.

Co-authored-by: Copilot <[email protected]>
2026-09-18 20:33:12 +02:00

116 lines
3.7 KiB
YAML

## Values for openbao-gitops.
##
## `openbao:` maps directly onto the upstream openbao-helm chart values
## (https://github.com/openbao/openbao-helm). Only the settings relevant for
## a standalone/file-storage deployment with ESO integration are overridden
## here - see `helm show values openbao/openbao` for the full list.
openbao:
# Tells the chart's own helpers (BAO_ADDR, health-check scheme, etc.) that
# the server listener speaks TLS - avoids duplicate/conflicting env vars.
global:
tlsDisable: false
server:
# Standalone mode: single replica, file storage backend, PVC-backed.
standalone:
enabled: true
# TLS terminated directly by OpenBao itself, using the cert-manager
# issued self-signed certificate mounted below (see templates/tls.yaml
# and the `tls:` section further down). "-tls-skip-verify" is already
# baked into the chart's readiness/liveness probes, so this doesn't
# need any extra values there.
config: |
ui = true
listener "tcp" {
tls_disable = 0
address = "[::]:8200"
cluster_address = "[::]:8201"
tls_cert_file = "/openbao/userconfig/openbao-tls/tls.crt"
tls_key_file = "/openbao/userconfig/openbao-tls/tls.key"
}
storage "file" {
path = "/openbao/data"
}
dataStorage:
enabled: true
size: 10Gi
# Empty = cluster default StorageClass.
storageClass: ""
# Required so OpenBao's ServiceAccount can call the Kubernetes
# TokenReview API - needed for the "kubernetes" auth method used by ESO.
serviceAccount:
create: true
authDelegator:
enabled: true
# Mounts the cert-manager issued TLS secret at
# /openbao/userconfig/openbao-tls/{tls.crt,tls.key,ca.crt}.
extraVolumes:
- type: secret
name: openbao-tls
resources:
requests:
cpu: 250m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
ui:
enabled: true
# NodePort, same pattern as ArgoCD (30080/30443) and Gitea (30300):
# reachable at https://<node-ip>:30200 without needing an Ingress.
serviceType: NodePort
serviceNodePort: 30200
injector:
# Sidecar-injector webhook is not needed for ESO integration.
enabled: false
# --- TLS (self-signed via cert-manager) -------------------------------------
tls:
enabled: true
secretName: openbao-tls
# cert-manager Certificate validity/renewal.
duration: 2160h # 90d
renewBefore: 360h # 15d
# Extra SANs beyond the in-cluster service names (which are always
# included). Add your node IP(s)/hostname(s) here so browsers hitting the
# NodePort get a matching cert.
ipAddresses:
- 192.168.2.218
dnsNames: []
# --- ESO <-> OpenBao binding -------------------------------------------------
eso:
# Namespace and ServiceAccount name that the External Secrets Operator
# (its `SecretStore`/`ClusterSecretStore`) authenticates with. Must match
# the ESO Helm release deployed via apps-in-apps.
serviceAccountName: external-secrets
namespace: external-secrets
# Name of the Vault/OpenBao Kubernetes auth role that ESO will use.
roleName: eso-role
# KV v2 mount path that ClusterSecretStore(s) will read from.
kvMountPath: secret
# One-time bootstrap Job that enables the Kubernetes auth method, creates the
# "eso-read" policy and the "eso-role" role bound to the ESO ServiceAccount.
#
# OpenBao must already be initialized AND unsealed before this can run (see
# README). Enable this only after that manual step, providing the root token
# via the referenced secret.
bootstrap:
enabled: false
image: openbao/openbao:2.6.2
rootTokenSecretName: openbao-root-token
rootTokenSecretKey: token