Skip to main content
>_ supraj.dev
KUBERNETES

K8s Deprecation Radar

Cluster upgrades slip because nobody knows what will break. This loop answers that question the day a new minor goes GA — per team, per manifest, with the exact patch — so the upgrade window is a decision, not an investigation.

TRIGGER
EKS/GKE release feed: new minor GA
SCAN
live API usage per cluster vs removed/deprecated list
MAP
offending manifests → owning team via CODEOWNERS
ACT
one GitHub issue per team with exact manifest patches
01 — INSTALL
brew install supraj/tap/dep-radar
dep-radar init --contexts prod-eks,staging-eks,dev-eks
02 — CONFIGURE

Point it at your kube contexts and repo. No AI step here — this loop is fully deterministic.

# radar.yaml
trigger:
  feed: eks-release-notes
scan:
  contexts: [prod-eks, staging-eks, dev-eks]
  source: audit-log:30d   # what's actually called
map:
  owners: CODEOWNERS
act:
  issues: acme/platform
  label: k8s-upgrade
03 — HOW IT WORKS
01
Watches the EKS/GKE release feeds. On GA of a new minor, it diffs the deprecated-API list against 30 days of audit-log usage — not just manifests, actual calls.
02
Each offending resource is traced to its owning team through CODEOWNERS, so nobody gets a 400-line shared spreadsheet.
03
Issues include the exact apiVersion patch and a working kubectl-convert command. Close the issues, schedule the upgrade.
04 — EXAMPLE OUTPUT
$ dep-radar report --minor 1.34
cluster prod-eks: 7 deprecated usages
  team payments  → 3 (Ingress v1beta1)
  team ml-infra  → 4 (PodDisruptionBudget v1beta1)
issues filed: 2 · est. effort: ~1h each
clusters staging, dev: clean ✓