The Disk-Pressure Incident That Taught Me to Always Set LimitRanges and Other Lessons from Mirroring EKS Locally. The article describes the process of mirroring a production EKS cluster locally on a Mac, focusing on integrating Vault for secret management. It explains how Vault's Kubernetes auth method allows pods to authenticate using service account JWTs, enabling secure retrieval of credentials without hard-coded secrets. The author emphasizes the importance of setting up LimitRanges and testing the full injection workflow locally to debug failures safely. Part 6 of 7 — The Mac Kubernetes Lab: A Production-Mirror Setup from Scratch. Previously in Part 5: We installed Istio with revision-based upgrades, MetalLB for LoadBalancer IPs, and practised traffic management with Gateways, VirtualServices, and fault injection. The cluster behaves. Now we wire up the last three pieces that turn it from “a working local cluster” into “a real mirror of our production EKS.” The cluster works. Istio is running. MetalLB is handing out IPs. But it’s still missing three layers that make the production parity actually meaningful: The LimitRange story is the most important of the three, so I’ll tell it properly when we get there. First, the auth layer. Vault’s Kubernetes auth method lets pods authenticate by presenting their service account JWT. Vault validates the token against the Kubernetes API server and exchanges it for a Vault token with the appropriate policies attached. On the production EKS clusters at work, this is how microservices retrieve database credentials, API keys, and TLS certificates: no hard-coded secrets, no secret sprawl, every issuance audit-logged in Vault. Setting it up locally means I can test the full injection workflow without a VPN, and debug failures on a cluster where the stakes are zero. We deploy just the Vault agent injector in the lab cluster. It points to the external Vault VM rather than running its own Vault server: 💻 Mac kubectx lab-cluster helm repo add hashicorp https://helm.releases.hashicorp.com helm repo update Get the vault VM IP - does not persist across sessions export VAULT IP=$ orb run -m vault hostname -I | awk '{print $1}' echo "VAULT IP=$VAULT IP" helm install vault hashicorp/vault \ --namespace vault --create-namespace \ --set "injector.externalVaultAddr=http://$VAULT IP:8200" kubectl get pods -n vault vault-agent-injector-xxx 1/1 Running 0 30s Run this on the vault VM, pointing Vault at the lab cluster’s API server: 🖥️ VM: vault Re-export - always required, doesn't persist across sessions export VAULT ADDR='http://127.0.0.1:8200' export VAULT ROOT TOKEN=$ grep 'Initial Root Token' ~/vault-init.txt | awk '{print $NF}' If Vault is sealed after a reboot: vault operator unseal $ grep 'Unseal Key 1' ~/vault-init.txt | awk '{print $NF}' vault login $VAULT ROOT TOKEN Get CP IP from the Mac terminal: orb run -m cp01 hostname -I | awk '{print $1}' export CP IP=