Phase 3 warm-up batch per kubernetes/MIGRATION-sops-openbao.md. Values are already in OpenBao KV (verified: bao kv list homelab/infrastructure shows all 5). This PR swaps the manifests:
sops file (deleted)
ExternalSecret target (unchanged name)
KV key
external-dns-unifi/secret.sops.yaml
external-dns-unifi-secret (apps)
infrastructure/external-dns-unifi
netbird-ingress/secret.sops.yaml
netbird-ingress-setup-key (ingress)
infrastructure/netbird-ingress
velero/secret.sops.yaml
cloud-credentials (velero)
infrastructure/velero
velero/hetzner-creds.sops.yaml
cloud-credentials-hetzner (velero)
infrastructure/velero-hetzner
post-crds/cloudflare-secret.sops.yaml
cloudflare-api-token (cert-manager)
infrastructure/cloudflare
Also drops the now-dead decryption blocks from the infrastructure and infrastructure-crds Kustomizations (both paths sops-free) and ticks the doc checklist.
On merge Flux prunes the old Secrets and ESO recreates them within seconds from OpenBao — same names, consumers unaffected. Rollback for any single file is a plain git revert while the age key lives. I'll verify all 5 ExternalSecrets go SecretSynced and spot-check velero backups + cert-manager after merge.
Phase 3 warm-up batch per kubernetes/MIGRATION-sops-openbao.md. Values are **already in OpenBao KV** (verified: `bao kv list homelab/infrastructure` shows all 5). This PR swaps the manifests:
| sops file (deleted) | ExternalSecret target (unchanged name) | KV key |
|---|---|---|
| external-dns-unifi/secret.sops.yaml | `external-dns-unifi-secret` (apps) | infrastructure/external-dns-unifi |
| netbird-ingress/secret.sops.yaml | `netbird-ingress-setup-key` (ingress) | infrastructure/netbird-ingress |
| velero/secret.sops.yaml | `cloud-credentials` (velero) | infrastructure/velero |
| velero/hetzner-creds.sops.yaml | `cloud-credentials-hetzner` (velero) | infrastructure/velero-hetzner |
| post-crds/cloudflare-secret.sops.yaml | `cloudflare-api-token` (cert-manager) | infrastructure/cloudflare |
Also drops the now-dead `decryption` blocks from the `infrastructure` and `infrastructure-crds` Kustomizations (both paths sops-free) and ticks the doc checklist.
On merge Flux prunes the old Secrets and ESO recreates them within seconds from OpenBao — same names, consumers unaffected. Rollback for any single file is a plain git revert while the age key lives. I'll verify all 5 ExternalSecrets go SecretSynced and spot-check velero backups + cert-manager after merge.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01CRgBFn9m8a2ncFMLusikH6
external-dns-unifi, netbird-ingress, velero (both), cloudflare-api-token:
values live in OpenBao KV (homelab/infrastructure/*, loaded 2026-07-13),
manifests become ExternalSecrets targeting the same Secret names so
consumers see no change. Both infra KS paths are now sops-free, so their
decryption blocks go too. Rollback per file = git revert (age key still
active until phase 4).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CRgBFn9m8a2ncFMLusikH6
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase 3 warm-up batch per kubernetes/MIGRATION-sops-openbao.md. Values are already in OpenBao KV (verified:
bao kv list homelab/infrastructureshows all 5). This PR swaps the manifests:external-dns-unifi-secret(apps)netbird-ingress-setup-key(ingress)cloud-credentials(velero)cloud-credentials-hetzner(velero)cloudflare-api-token(cert-manager)Also drops the now-dead
decryptionblocks from theinfrastructureandinfrastructure-crdsKustomizations (both paths sops-free) and ticks the doc checklist.On merge Flux prunes the old Secrets and ESO recreates them within seconds from OpenBao — same names, consumers unaffected. Rollback for any single file is a plain git revert while the age key lives. I'll verify all 5 ExternalSecrets go SecretSynced and spot-check velero backups + cert-manager after merge.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CRgBFn9m8a2ncFMLusikH6