blumeops/containers/kube-state-metrics/default.nix
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

59 lines
1.4 KiB
Nix

# Nix-built kube-state-metrics
# Builds v2.18.0 from forge mirror
# Built with dockerTools.buildLayeredImage for efficient layer caching
{ pkgs ? import <nixpkgs> { } }:
let
version = "2.18.0";
src = pkgs.fetchgit {
url = "https://forge.ops.eblu.me/mirrors/kube-state-metrics.git";
rev = "v${version}";
hash = "sha256-oLkIjc6VC3hTrFg9LmgSUtwt4ek0dT7h2u2DfNRx5Gg=";
};
kube-state-metrics = pkgs.buildGoModule {
inherit src version;
pname = "kube-state-metrics";
vendorHash = "sha256-ccP34lywpQnIx3R5IyGURuvb4ijNfCu2VVAeVjBrN0w=";
doCheck = false;
subPackages = [ "." ];
ldflags = [
"-s"
"-w"
"-X k8s.io/kube-state-metrics/v2/pkg/version.Version=v${version}"
];
meta = with pkgs.lib; {
description = "Generates metrics about the state of Kubernetes objects";
homepage = "https://github.com/kubernetes/kube-state-metrics";
license = licenses.asl20;
mainProgram = "kube-state-metrics";
};
};
in
pkgs.dockerTools.buildLayeredImage {
name = "blumeops/kube-state-metrics";
contents = [
kube-state-metrics
pkgs.cacert
pkgs.tzdata
];
config = {
Entrypoint = [ "${kube-state-metrics}/bin/kube-state-metrics" ];
Env = [
"SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
"TZDIR=${pkgs.tzdata}/share/zoneinfo"
];
ExposedPorts = {
"8080/tcp" = { };
"8081/tcp" = { };
};
User = "65534";
};
}