Overview
The kit includes a complete local development environment using:- KinD - Kubernetes in Docker for a local multi-node cluster
- Tilt - Live development environment with hot reloading
- mirrord - Remote debugging by intercepting pod traffic
Prerequisites
Ensure you have:- A container runtime (Docker, Podman, or OrbStack)
- mise installed with tools (
mise installfrom Repository Setup)
Quick Start
1
Create the local cluster
2
Start the LoadBalancer provider
In a separate terminal (requires sudo):This enables LoadBalancer services to get IPs in the
172.20.0.0/16 range.3
Start Tilt
4
Access your services
http://go-backend-kustomize.172-20-0-100.sslip.iohttp://go-backend-helm.172-20-0-100.sslip.iohttp://go-backend-timoni.172-20-0-100.sslip.io
What Gets Deployed
Tilt deploys a subset of infrastructure and all demo services:Infrastructure Components
| Component | Purpose |
|---|---|
| cert-manager | TLS certificates (using self-signed ClusterIssuer locally) |
| cloudnative-pg | PostgreSQL operator for in-cluster databases |
| traefik | Ingress controller |
Demo Services
The kit includes three variants ofgo-backend, each demonstrating a different Kubernetes templating approach:
| Service | Templating | Description |
|---|---|---|
| go-backend | Kustomize | Uses overlays for environment-specific configuration |
| go-backend-helm | Helm | Traditional Helm chart with values files |
| go-backend-timoni | Timoni | CUE-based configuration with type safety |
- PostgreSQL database (via CloudNativePG)
- Database migrations (via Atlas, run as Kubernetes Job)
- Ingress for external access
Cluster Configuration
KinD Cluster
The cluster is configured inlocal/kind/cluster-config.yaml:
- 3 nodes for realistic scheduling
- Local registry on
localhost:5001 - Stable Docker network (
172.20.0.0/16) for predictable IPs
Local Registry
Thecreate-cluster task creates a local Docker registry:
Tilt Configuration
Tiltfile Structure
Infrastructure Tiltfile
Deploys cluster components in order:values.local.yaml).
Services Tiltfile
For each service:- Builds the Docker image
- Waits for CloudNativePG to be ready
- Creates a PostgreSQL Cluster CR
- Runs database migrations
- Deploys the application
Customizing Tilt Behavior
Edit the values files for local overrides:Developing Outside the Container with mirrord
While Tilt runs your services inside containers in the KinD cluster, mirrord lets you run a service directly on your host machine while staying connected to the cluster. This is ideal when you want to iterate on application code without waiting for container rebuilds:- Skip container builds: Just recompile and restart, no Docker builds or image pushes
- Use your local tools: Run with your IDE, debugger, profiler, or any host-native tooling
- Access cluster resources: Your local process can reach cluster-internal services (databases, APIs)
- Inherit pod environment: Environment variables and secrets from the target pod are available locally
Configuration
The mirrord config is inservices/go-backend/.mirrord/mirrord.json:
- Steals incoming traffic from the
go-backenddeployment in the KinD cluster - Enables outgoing connections to cluster resources (database, etc.)
- Uses local filesystem
- Mirrors pod environment variables to your local process
Using mirrord
1
Ensure the KinD cluster is running
The service must be deployed in the local cluster (via Tilt) before mirrord can intercept its traffic.
2
Run your service with mirrord
3
Debug as usual
Use your IDE’s debugger, add print statements, or modify code. Changes take effect immediately without rebuilding containers.
Comparison: Local vs Production
| Aspect | Local (KinD + Tilt) | Production (EKS + ArgoCD) |
|---|---|---|
| Cluster | KinD (Docker) | EKS (AWS) |
| Registry | localhost:5001 | ECR |
| Ingress | sslip.io | Route53 + real domain |
| TLS | Self-signed | Let’s Encrypt |
| Secrets | Local values | AWS Secrets Manager |
| Database | CloudNativePG | CloudNativePG (or RDS) |
| Deployment | Tilt (live reload) | ArgoCD (GitOps) |
Next Steps
With local development set up, you’re ready to start building! See the Operations guides for:- Updating 1st Party Applications - Modify and deploy your services
- Bootstrapping a New Service - Add a new application
- Database Operations - Manage migrations and databases