Kubernetes Path to Production
Overview
This guide explains how a customer takes the app-lib Helm chart to a real
Kubernetes cluster. By the end, you understand the chart as a handoff artifact,
how to write a cloud values overlay, and exactly which parts of the cloud path
IPA accelerates this round (the review) and which remain the customer's work
(the apply).
When to Use This Guide
Use this guide when an engagement is moving the local Kubernetes loop toward a real cluster (EKS or otherwise), or when preparing the chart for customer handoff. For the local inner-dev loop, see Kubernetes Local Development.
Before You Start
- A working local loop is the best starting point — see Kubernetes Local Development.
- For a real deploy, the customer needs: a Kubernetes cluster, a container registry (e.g. ECR) with the image pushed, and — for AWS access — an IRSA IAM role with a scoped DynamoDB policy. IPA provisions none of these this round.
helmandkubectlconfigured against the target cluster.
Before / Target State
Before: The chart is deployed locally only, against a k3d cluster, using a host credential mount.
Target: The customer understands how to deploy the same chart to their own
cluster with their own values overlay and helm alone — no IPA, no Claude Code.
Steps
-
Take the chart as the handoff artifact. The chart at
infra/k8s/helm/app-lib/is cloud-ready: image, environment, replicas, resources, and the ServiceAccount's IRSA annotation are all values-overridable. No chart edit is needed to target a cluster. -
Copy the worked cloud overlay.
infra/k8s/envs/eks/values.yamlis an annotated, non-deployed template. Copy it to your own environment directory, e.g.infra/k8s/envs/<your-cluster>/values.yaml. -
Customize the overlay. Fill in every placeholder: the ECR image URI, the IRSA role ARN (replace the placeholder account ID
123456789012), the namespace/region inenv, and resource sizing. Readinfra/k8s/envs/eks/CLAUDE.md— the single source of EKS guidance and the pre-deploy review checklist. -
Render to inspect (this does not deploy anything):
helm template app-lib infra/k8s/helm/app-lib -f infra/k8s/envs/<your-cluster>/values.yaml -
Deploy on your own terms (the customer runs this):
helm upgrade --install app-lib infra/k8s/helm/app-lib \-f infra/k8s/envs/<your-cluster>/values.yaml
Verification
kubectl get pods -l app.kubernetes.io/name=app-lib
kubectl port-forward svc/app-lib 8000:8000
curl -s localhost:8000/health # -> {"status":"ok"}
The chart deploying with helm alone — no IPA tooling — is the proof of
cloud-readiness.
Future Work (not implemented)
IPA does not automate the cloud deploy this round. The following are
deliberately deferred and recorded here and in infra/k8s/README.md:
- Cluster provisioning — CFN/Terraform to stand up EKS (or AKS), node groups, and the OIDC provider for IRSA.
- ECR wiring — a repository for the image and an automated push.
- IRSA role creation — the scoped IAM role and OIDC trust the chart's ServiceAccount annotation binds to.
- CodePipeline
helm upgrade --installstage — a pipeline stage that applies the chart on each change. - Local IRSA — scoped per-pod credentials locally, replacing the host-mount.
- Ingress templates — cluster exposure (ALB Ingress, Gateway API).
The framing for this round: IPA accelerates the review, not the apply. You get a cloud-ready chart, an annotated overlay, and a review checklist so the path to a cluster is short and well-understood — but standing up the cluster and applying the chart remain the customer's work.
Next Steps
- Walk the overlay and validate cloud pre-conditions interactively — run
/ipa-k8s-helpand choose the EKS scope. - Review the chart/Tilt/ctlptl internals — see Kubernetes Infrastructure.