Production-grade platform engineering handbook — Kubernetes, Terraform, Flux CD, GitHub Actions, AWS, and more.
67
84%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Status: Beta
Two side-by-side models for automating container image updates with Flux CD:
| Model | How it works | Best for |
|---|---|---|
| Git-based | Flux commits updated image tag to Git; normal reconciliation follows | PR-gated promotion, Git as canonical version record |
| Gitless | CI pushes OCI artifact with new tag; ResourceSetInputProvider picks it up; no Git commit | Flux Operator deployments, fleet management, no bot credentials |
ImageRepository — polls a container registry for available tagsImagePolicy — selects the tag to deploy (semver, alphabetical, numerical)ImageUpdateAutomation — commits the selected tag back to the GitOps branchimage-automation/
└── git-based/
├── imagerepository.yaml
├── imagepolicy.yaml
└── imageupdateautomation.yamlApply the resources:
kubectl apply -f git-based/Mark the image field in your Deployment:
containers:
- name: my-app
image: ghcr.io/my-org/my-app:1.0.0 # {"$imagepolicy": "flux-system:my-app"}Verify the policy selected a tag:
kubectl -n flux-system get imagepolicy my-app \
-o jsonpath='{.status.latestImage}'push.branch to a staging branch — not main — for staging clusterssemver ranges, not :latestResourceSetInputProvider (type: OCIArtifactTag) — polls OCI registry for new tagsResourceSet — generates Kustomizations with << inputs.tag >> substitutedimage-automation/
└── gitless/
├── resourcesetinputprovider.yaml
└── resourceset.yamlghcr.io/my-org/my-app:1.4.2ResourceSetInputProvider detects the new tag (polls every 5m or via webhook)ResourceSet regenerates the Kustomization with APP_IMAGE_TAG: 1.4.2# Check the input provider is polling
kubectl describe resourcesetinputprovider app-image-tag -n flux-system
# Check the ResourceSet generated the Kustomization
kubectl get kustomization -l resourceset.fluxcd.io/name=my-app -A
# Check the generated Kustomization status
flux get kustomization my-app -n flux-system| Symptom | Cause | Fix |
|---|---|---|
ImageRepository not ready, auth error | Registry credentials wrong or expired | Recreate registry-credentials Secret |
ImagePolicy shows no latestImage | No tags match the semver range | Verify pushed tags with crane ls <image> |
| No Git commit despite policy selecting a tag | Missing # {"$imagepolicy": ...} marker | Add marker comment on same line as image: |
ImageUpdateAutomation failing to push | Deploy key lacks write access | Rotate deploy key with write permission |
ResourceSetInputProvider not detecting new tag | Wrong semver filter or auth issue | Check provider status and registry credentials |
.claude-plugin
.github
commands
docs
examples
agent-self-improve
argocd
awesome-docs
aws
cloudfront
functions
lambda-edge
functions
azure
compliance
conventional-commits
datadog
llm-observability
demo
documentation
dora
dynatrace
fluxcd
github-actions
composite-actions
configure-cloud
db-migrate
docker-build-push
k8s-deploy
notify-slack
pr-comment
release-tag
security-scan
setup-env
setup-terraform
terraform-plan
helm
web-service
templates
kubernetes
kyverno
mcp
observability
openshift
pr-review
ownership
runtime-security
supply-chain
terraform
references
scripts
skills
platform-skills
tests