bb-apps-source repository and want Flux to install the Bitnami Sealed Secrets Helm chart from the Bitnami Labs Helm repository.
Key topics covered:
- Registering the Bitnami Helm repository with Flux
- Creating a Flux Kustomization to install Sealed Secrets
- Verifying the Sealed Secrets controller
- Installing the
kubesealCLI and obtaining the controller public certificate - Sealing secrets locally and committing sealed manifests to Git
- Flux: https://fluxcd.io/
- Bitnami Sealed Secrets (GitHub): https://github.com/bitnami-labs/sealed-secrets
- kubeseal releases: https://github.com/bitnami-labs/sealed-secrets/releases
- Kubernetes docs: https://kubernetes.io/docs/
1. Checkout the infrastructure branch
Switch to theinfrastructure branch in your bb-app-source repository:
2. HelmRepository (Bitnami Sealed Secrets)
In your infrastructure Git repo, create aHelmRepository that points at the Bitnami Sealed Secrets Helm chart index. Example HelmRepository YAML:
bitnami-sealed-secrets folder inside the infrastructure branch and put the YAML there).
Quick mapping of repository layout (example):
3. Create a Flux Kustomization in the cluster repo
In the repository that holds your Flux cluster configuration (for exampleblock-buster/flux-clusters/dev-cluster) create a Kustomization that tells Flux to pull the bitnami-sealed-secrets path from the infra-source-git GitRepository you previously configured.
Example Kustomization YAML (exported from flux create kustomization):
infra-source-git repository and apply manifests under ./bitnami-sealed-secrets.
4. Reconcile Flux sources (optional manual reconcile)
After committing and pushing the Kustomization to your cluster repo, you can manually reconcile the Git source to accelerate propagation into the cluster:5. Confirm the Sealed Secrets controller is installed
The Helm chart will install the Sealed Secrets controller, commonly into thekube-system namespace (depending on chart values). Verify the controller deployment, service and pods:
Secret containing its TLS private key and public certificate—these are used for sealing/unsealing operations.
6. Install kubeseal CLI locally
To create sealed secrets locally you need thekubeseal CLI. Download, extract and place it on your PATH. Example (Linux, using v0.19.5—use the latest stable release in production):
If you prefer a package manager, use Homebrew, apt, or your platform’s package manager to install
kubeseal and avoid manual downloads.7. Obtain the controller public certificate
To encrypt (seal) secrets you only need the Sealed Secrets controller’s public certificate. You can fetch it directly withkubeseal (recommended) or extract it from the controller Secret.
Recommended approach — fetch the PEM certificate with kubeseal:
sealed-secret.pub. Keep this file; use it locally to create sealed secrets for this cluster.
Alternative: extract the certificate from the controller secret manually:
Important: Do not expose the controller private key (
tls.key). Only the public certificate (tls.crt) is required for sealing secrets. The private key must remain secret to prevent unsealing compromise.8. What’s next
With the public certificate downloaded (sealed-secret.pub) and kubeseal installed you can:
- Create plaintext Kubernetes Secret manifests (or use
kubectl create secretto make them). - Use
kubeseal --cert sealed-secret.pubto convert those secrets into SealedSecret manifests. - Commit the sealed-secret YAML files to your infrastructure Git repo under the
bitnami-sealed-secretspath so Flux will apply them to the cluster.
secret.yaml into sealed-secret.yaml):