blumeops/containers/kube-state-metrics/Dockerfile
Erich Blume f59f8859dc
All checks were successful
Build Container / detect (push) Successful in 2s
Build Container / build-dockerfile (kube-state-metrics) (push) Successful in 5s
Build Container / build-nix (kube-state-metrics) (push) Successful in 7s
Localize kube-state-metrics container (Dockerfile + nix) (#327)
## Summary

- Build kube-state-metrics v2.18.0 locally from forge mirror, replacing upstream `registry.k8s.io` image
- Dockerfile (two-stage Go build) for indri/minikube
- default.nix (buildGoModule + buildLayeredImage) for ringtail/k3s
- Both kustomization files updated with `newName` pointing to local registry

## Verification

- [x] Nix build succeeded on ringtail (`nix-build` → 10-layer image)
- [x] Dockerfile build succeeded locally (`dagger call build` → ~2min)
- [x] `container-version-check --all-files` passes (2.18.0 consistent across Dockerfile, nix, service-versions.yaml)
- [ ] CI builds container images from this branch
- [ ] Update kustomization `newTag` with SHA-tagged version from CI
- [ ] ArgoCD sync on both clusters

## Test plan

- Trigger CI build: `mise run container-build-and-release kube-state-metrics`
- Verify tags: `mise run container-list kube-state-metrics`
- Update newTag in kustomization files with CI-produced tag
- Sync ArgoCD on indri: `argocd app sync kube-state-metrics`
- Sync ArgoCD on ringtail: `argocd app sync kube-state-metrics --context=k3s-ringtail` (note: argocd uses its own auth, not kubectl context)
- Verify metrics still flowing to Prometheus

Reviewed-on: #327
2026-04-07 16:09:25 -07:00

44 lines
1.3 KiB
Docker

# kube-state-metrics — Kubernetes state metrics exporter
# Two-stage build: Go binary, Alpine runtime
ARG CONTAINER_APP_VERSION=2.18.0
ARG KSM_VERSION=v${CONTAINER_APP_VERSION}
ARG KSM_COMMIT=ab562f78ebf4cb97cc2f87c1235e457076035d16
FROM golang:alpine3.22 AS build
ARG KSM_VERSION
ARG KSM_COMMIT
RUN apk add --no-cache build-base git
RUN mkdir /app && cd /app \
&& git init \
&& git remote add origin https://forge.ops.eblu.me/mirrors/kube-state-metrics.git \
&& git fetch --depth 1 origin ${KSM_COMMIT} \
&& git checkout FETCH_HEAD
WORKDIR /app
ENV CGO_ENABLED=0
RUN go build \
-o /kube-state-metrics \
-ldflags "-s -w -X k8s.io/kube-state-metrics/v2/pkg/version.Version=${KSM_VERSION}"
FROM alpine:3.22
ARG CONTAINER_APP_VERSION
LABEL org.opencontainers.image.title="kube-state-metrics"
LABEL org.opencontainers.image.description="Generates metrics about the state of Kubernetes objects"
LABEL org.opencontainers.image.version="${CONTAINER_APP_VERSION}"
LABEL org.opencontainers.image.source="https://forge.eblu.me/eblume/blumeops"
LABEL org.opencontainers.image.vendor="blumeops"
RUN apk --no-cache add ca-certificates tzdata
COPY --from=build /kube-state-metrics /usr/bin/kube-state-metrics
EXPOSE 8080 8081
USER 65534
ENTRYPOINT ["/usr/bin/kube-state-metrics"]