8000 Pin Kube Lint image tags that block #220 by clee231 · Pull Request #223 · acm-uic/IaC · GitHub
[go: up one dir, main page]

Skip to content

Pin Kube Lint image tags that block #220 - #223

Open
clee231 wants to merge 1 commit into
mainfrom
ai/pin-kubelint-image-tags-127f
Open

clee231 wants to merge 1 commit into
mainfrom
ai/pin-kubelint-image-tags-127f

Conversation

@clee231
@clee231 clee231 commented Nov 6, 2026
Copy link
Copy Markdown
Contributor

Follow-up to #220. That PR's new AppProject files are clean, but Kube Lint (kubelint.yml, KubeLinter 0.8.3, .github/kubelintcfg.yml) scans all of kubernetes/ and fails on pre-existing manifests already on main. This pins the images that check flags and wires the dangling Plausible Service. Rules are unchanged, and no AppProject files from #220 are modified.

KubeLinter 0.8.3 against .github/kubelintcfg.yml goes from 7 findings to 1. The remaining finding is the private FreeRADIUS image, called out below.

Image pins

Each pin is the registry digest that the previous tag resolves to today, so a rollout keeps the same bytes.

Manifest Was Now Why
stump-the-profs.yml ghcr.io/acm-uic/stump-the-profs-website:latest 3b74d22 @ sha256:918819127c02b796c84991af9e070866743111468667b93acd2a82a873f7871b Commit 3b74d22 (2026-11-04) is main and the image :latest currently publishes. #216 floated :latest so website commits would not need an IaC PR; shipping a newer build means bumping this tag again, same as #215.
vaultwarden.yml vaultwarden/server:latest 1.37.5 @ sha256:4fe17f415f90087377d37c755e0ea3cf189dcc6794e49cdd2a9adbb4937d9e1f Current stable release (2026-11-01). Same digest as :latest. Debian variant, not 1.37.5-alpine.
openid-configuration-serve.yml nginx nginx (implicit 8000 :latest) 1.31.8 @ sha256:165ddde8751e75a1c907d24ef10d9f6deb08b57e0fe56caf67512486aff76d82 Untagged nginx is nginx:latest, which is mainline 1.31.8. Stable is 1.30.6 (nginx:stable); that would change the image, so this pin keeps mainline.
openid-configuration-serve.yml init bitnami/kubectl @sha256:8f59408f9e896fc8992a0660a56687545bd06751f26531b4a26fca6d5dc7562d Docker Hub has no version tags, only :latest. That digest is kubectl 1.37.2 (built 2026-11-04). The image contains /bin/sh (via bin -> usr/bin), jq, and kubectl on PATH, which the init script needs.
plausible/smtp.yml bytemark/smtp @sha256:9fd6ff05ac25141fe10ae4f9db0df361ad6139244ac280c398cc175bd2356a98 Digest of :latest (2018-07-17). The only other tag, stretch, is a different digest (sha256:438e9a88…), so it is not used.

Plausible Service

plausible/plausible.yml Service plausible had no namespace, so Kube Lint saw it in the default namespace and reported dangling-service (no pods with app.kubernetes.io/name=plausible). The Deployment in that file, the IngressRoute, and the Argo CD Application destination are all namespace plausible, and the selector already matches the Deployment labels. The Service now sets namespace: plausible.

Still red: FreeRADIUS

kubernetes/argocd/stacks/radius/radius.yml still uses acmuic.azurecr.io/acm-uic/freeradius-active-directory:latest. That is the only tag the image's CI publishes (both GHCR and ACR), from acm-uic/freeradius-active-directory commit adb1dc651e (2023-12-01). There are no recorded workflow runs, ACR is private, and this token cannot read the GHCR package, so the digest of the image that is actually running is not available here.

A guessed tag would fail the pull. Rebuilding would replace the 2023 image (FROM debian:stable) and also move :latest. Left unchanged on purpose.

Someone with registry access can finish it with:

crane digest acmuic.azurecr.io/acm-uic/freeradius-active-directory:latest

and replace :latest with @sha256:….

Not flagged, left alone

  • umpf.yml uses pathfinder:latest, but the Deployment sets kube-linter.io/ignore-all, so Kube Lint does not report it.
  • SparkHacks images use :main. That tag is not in the latest-tag block list.
  • ARC runner Helm values still say ghcr.io/actions/actions-runner:latest. They are not Deployment manifests, and Kube Lint does not flag them.
Open in Web Open in Cursor 

Kube Lint fails on main for unpinned images and a Plausible Service
with no namespace. Pin the public images to the digest currently
published as latest, and set the Service namespace so it selects the
existing Deployment.

Co-authored-by: Chase 李 <clee231@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0