You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tags are now pinned (redis, nginx, rabbitmq, exporter, kubectl), but tags are still mutable
— a registry re-push of redis:7.4-alpine silently changes what nodes pull. Application
images are deployed as TAG references without a digest, so a re-pushed CI tag would also
change the running binary.
Application images: propagate the digest from the CI build — TAG=registry/project:v1.2.3@sha256:... (the shopsys.image helper already passes full
references through; document the CI-side docker inspect --format='{{index .RepoDigests 0}}'
step in examples/).
Unify imagePullPolicy: IfNotPresent everywhere once digests guarantee identity.
Optional: document the private-mirror pattern for air-gapped clusters
(registry.company.com/mirror/... as a values override).
Context
Tags are now pinned (redis, nginx, rabbitmq, exporter, kubectl), but tags are still mutable
— a registry re-push of
redis:7.4-alpinesilently changes what nodes pull. Applicationimages are deployed as
TAGreferences without a digest, so a re-pushed CI tag would alsochange the running binary.
Proposal
tag@sha256:...digests in chart values (renovate — [ci] Dependabot for image tags and GitHub Actions #22 —keeps them fresh; its
helm-valuesmanager handles digest pinning natively).TAG=registry/project:v1.2.3@sha256:...(theshopsys.imagehelper already passes fullreferences through; document the CI-side
docker inspect --format='{{index .RepoDigests 0}}'step in examples/).
imagePullPolicy: IfNotPresenteverywhere once digests guarantee identity.(
registry.company.com/mirror/...as a values override).Tasks
Related: #22