interview-prep

Situation: I was running a multi-node bare-metal Kubernetes cluster at home as a learning environment, but the upgrade process was painful — manual changelog reading, manual deprecated-API checks, manual fixes for things like Cilium version compatibility. Each minor version upgrade took most of a weekend.

Task: I wanted to automate the entire upgrade lifecycle: detection, planning, execution, validation, and post-upgrade diagnosis.

Action: I built a GitHub Actions pipeline that detects new Kubernetes minor versions weekly and triggers a planned upgrade with manual approval. The pipeline runs Ansible playbooks for the actual upgrade work, takes etcd snapshots and PKI backups before starting, runs smoke tests after each node, and has a separate rollback playbook if anything fails. I integrated the Claude Code CLI into the CI pipeline for changelog reading, deprecated-API scanning, and post-upgrade diagnosis sent to Discord.

Result: The pipeline executed four consecutive minor version upgrades from v1.31 to v1.35 in a single day, fully automated, including a pre-upgrade fix for a Cilium v1.16 to v1.17 incompatibility that the AI agent identified and patched before I'd noticed it.

Preventative action: The pipeline now runs as a continuous concern. New deprecated APIs are flagged weeks before they break anything in production. The pattern is something I'd bring to a commercial environment for upgrade discipline.


My notes