Skip to main content

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.
  • helm and kubectl configured 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

  1. 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.

  2. Copy the worked cloud overlay. infra/k8s/envs/eks/values.yaml is an annotated, non-deployed template. Copy it to your own environment directory, e.g. infra/k8s/envs/<your-cluster>/values.yaml.

  3. Customize the overlay. Fill in every placeholder: the ECR image URI, the IRSA role ARN (replace the placeholder account ID 123456789012), the namespace/region in env, and resource sizing. Read infra/k8s/envs/eks/CLAUDE.md — the single source of EKS guidance and the pre-deploy review checklist.

  4. 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
  5. 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 --install stage — 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-help and choose the EKS scope.
  • Review the chart/Tilt/ctlptl internals — see Kubernetes Infrastructure.