Skip to content

feat: replace Infisical with OpenBao as OSS secrets backend#8

Merged
nbrieussel merged 1 commit into
mainfrom
feat/001-replace-infisical-oss-secrets
Jul 15, 2026
Merged

feat: replace Infisical with OpenBao as OSS secrets backend#8
nbrieussel merged 1 commit into
mainfrom
feat/001-replace-infisical-oss-secrets

Conversation

@nbrieussel

Copy link
Copy Markdown
Contributor

Summary

  • Deploys OpenBao (MPL 2.0) as the cluster secrets backend via ArgoCD, replacing the planned Infisical integration
  • State persisted to Scaleway Object Storage (backup-dev-id) — secrets survive full cluster destroy/recreate
  • PostSync init Job handles first-time init + auto-unseal on every boot from S3 keys
  • External Secrets Operator (ESO) wired as the workload integration layer via ClusterSecretStore
  • CI pipeline validates the full destroy/recreate scenario against real Scaleway S3

Architecture

wave 0 — openbao (S3 backend, creds from scaleway-s3-credentials Secret)
wave 1 — external-secrets (ESO, provides ClusterSecretStore CRD)
wave 2 — openbao-init (PostSync Job: init/unseal from S3 + ESO ClusterSecretStore)

Test plan

  • helm-lint job: lint + render all charts
  • infisical-absent job: git grep -ri infisical returns no matches
  • secrets-restore job: write canary → destroy cluster → recreate → assert canary restored (SC-001)

Cross-repo dependency

The infra Terraform must create scaleway-s3-credentials Secret in the openbao namespace before ArgoCD first sync. Required keys: access_key, secret_key, bucket.

Spec

Full design in specs/001-replace-infisical-oss-secrets/ (spec, plan, research, data-model, contracts, quickstart, tasks).

🤖 Generated with Claude Code

https://claude.ai/code/session_01KoJ6zVHxYtUKtSNXinmct7

Deploys OpenBao (MPL 2.0) via ArgoCD app-of-apps with S3 state on
Scaleway Object Storage, so secrets survive full cluster destroy/recreate.

Key additions:
- platform/{local,scaleway}/openbao.yml  — OpenBao Helm chart (0.28.4),
  S3 backend pointing to backup-dev-id bucket, creds from K8s Secret
- platform/{local,scaleway}/external-secrets.yml  — ESO (2.6.0)
- apps/openbao-init/  — in-house Helm chart: PostSync init/unseal Job
  (reads/writes keys from S3), RBAC, per-app HCL policies, ESO
  ClusterSecretStore; idempotent across boots
- clusters/{local,scaleway}/templates/openbao-init.yaml  — ArgoCD
  Applications wiring the init chart into the app-of-apps tree
- Sync-wave order: wave 0 openbao → wave 1 ESO → wave 2 openbao-init
- .github/workflows/ci.yml  — 3 jobs: helm-lint, infisical-absent,
  secrets-restore (destroy/recreate canary test against real Scaleway S3)

Cross-repo dependency: infra Terraform must create scaleway-s3-credentials
Secret in openbao namespace before ArgoCD first sync.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KoJ6zVHxYtUKtSNXinmct7
@nbrieussel nbrieussel force-pushed the feat/001-replace-infisical-oss-secrets branch from 67fec5d to a458cd3 Compare July 15, 2026 12:47
@nbrieussel nbrieussel merged commit d02d4f5 into main Jul 15, 2026
2 checks passed
@nbrieussel nbrieussel deleted the feat/001-replace-infisical-oss-secrets branch July 15, 2026 12:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant