- Repository:
bb-app-source - Branch:
10-demo - Manifests folder:
manifests/(contains namespace, service, deployment YAMLs) - Deployment image version used in the demo:
7.10.0
Step-by-step
- Log in to GitHub Container Registry (GHCR) via Docker
- Create and push an OCI artifact with Flux
manifests/ folder as an OCI artifact. The example below uses a git-substituted short commit hash to create a unique tag:
- Sign the pushed artifact with Cosign
../cosign.key):
.sig artifact and/or visible in the registry UI.
- Inspect the pushed signature (optional)
- Verify the artifact locally with the public key
Cosign uploads entries to a public transparency log (Rekor). For private repositories, Cosign will prompt you to consent to uploading the entry. Rekor entries are public and immutable; they contain metadata about the signature and the signing identity or key material (for example, certificate claims when signing with a certificate).
- Configure Flux to fetch and verify the OCI artifact
OCIRepository resource that points to the OCI package and references a Cosign public key stored as a Kubernetes Secret. Flux will fetch the artifact and verify signatures using the configured public key.
Example OCIRepository:
flux CLI:
ghcr-auth secret (Docker config JSON) and the Cosign public key secret (cosign-pub) exist in the flux-system namespace:
- Create a Kustomization to deploy the pulled manifests
Kustomization that references the OCIRepository source so Flux applies the manifests after the artifact is pulled and verified.
Example Kustomization:
flux CLI:
- Reconcile and verify Flux source and Kustomization status
OCIRepository resource to confirm verification details and conditions:
SourceVerified condition like:
SourceVerified will be false and Flux will not apply the unverified artifact.
- Confirm application deployment
10-demo) and verify the application is running:
7.10.0).

- Flux: https://fluxcd.io/
- Flux Source OCI docs: https://fluxcd.io/docs/components/source/oci/
- Cosign (Sigstore): https://docs.sigstore.dev/cosign/
- Rekor transparency log: https://rekor.sigstore.dev