Opinionated Kubernetes cluster deployment toolkit. Provides Terraform configurations with sensible defaults and YAML-based customization for EKS (AWS) and GKE (Google Cloud).
| Platform | Directory | Features |
|---|---|---|
| AWS (EKS) | provider/eks/ |
Multi-AZ, optional VPC CNI custom networking, self-managed nodes, CloudWatch |
| Google Cloud (GKE) | provider/gke/ |
Regional cluster, Workload Identity, Shielded Nodes, multi-NIC GPU networking for GPUDirect-TCPXO (a3-megagpu-8g) |
- Generate config (optional) -- run
initto create a starter YAML, or copy fromconfig/ - Discover versions (optional) -- find latest K8s versions and AMIs for your region
- Setup tenancy (one-time) -- bootstrap cloud account with state bucket and IAM credentials
- Apply -- deploy the cluster using the container image with your config and key
- Destroy -- set
deployment.destroy: truein config and re-run apply
See provider-specific guides for detailed steps: EKS | GKE
Self-contained actuator images with pre-mirrored Terraform providers. Multi-arch (amd64 + arm64) built on native runners.
| Platform | Image |
|---|---|
| EKS | ghcr.io/mchmarny/cluster/eks:<version> |
| GKE | ghcr.io/mchmarny/cluster/gke:<version> |
Check image version:
docker run --rm ghcr.io/mchmarny/cluster/gke:<version> --version
docker run --rm ghcr.io/mchmarny/cluster/eks:<version> --version| Command | Description |
|---|---|
init <path> |
Generate a starter configuration file (provider-aware: gke-* prefix generates GKE template) |
plan -c <config> |
Show Terraform plan output without applying |
apply -c <config> |
Deploy or destroy infrastructure via Terraform |
output -c <config> |
Retrieve Terraform outputs and save to state directory |
Destroy is triggered by setting deployment.destroy: true in the config and running apply.
| Method | Flag / Env Var | Description |
|---|---|---|
| File path | -c / CONFIG_PATH |
Path to YAML config file |
| Base64 content | CONFIG_CONTENT |
Base64-encoded YAML config |
| Base64 key | KEY_CONTENT |
Base64-encoded credentials (AWS key JSON or GCP ADC JSON) |
See docs/architecture.md for project layout, configuration design, security model, and image build details.
make qualify # All quality checks (Go + Terraform)
make go-qualify # Go: vet, fmt, lint, test, build
make tf-qualify # Terraform: validate, lint, fmt, trivy scan
make e2e # Full end-to-end (qualify + Docker build + smoke tests)
make tools-check # Verify tool versions match .settings.yamlMIT -- see LICENSE