No description
- Python 100%
|
|
||
|---|---|---|
| .gitea/workflows | ||
| bootstrap | ||
| infra | ||
| .gitignore | ||
| .python-version | ||
| __main__.py | ||
| CLAUDE.md | ||
| Pulumi.prod.yaml | ||
| Pulumi.staging.yaml | ||
| Pulumi.yaml | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
canpute-infra
Pulumi (Python) infrastructure for the Canpute platform. Provisions Civo K8s clusters and bootstraps them with platform components.
What it deploys
Infrastructure: Civo managed Kubernetes cluster (k3s, flannel CNI, no Traefik)
Bootstrap (Helm releases onto the cluster):
- ArgoCD — syncs app manifests from the canpute repo (
releasebranch) - ArgoCD Image Updater — watches the container registry and triggers rollouts when images change
- cert-manager — TLS via Let's Encrypt
- ingress-nginx — ingress controller
- Doppler operator — syncs secrets into K8s
Stacks
| Stack | Node Size | Nodes | Overlay |
|---|---|---|---|
| staging | g4s.kube.xsmall | 1 | deploy/overlays/stg |
| prod | g4s.kube.medium | 2 | deploy/overlays/prod |
Prerequisites
- Pulumi CLI (
curl -fsSL https://get.pulumi.com | sh) - uv
Setup
# Install Python dependencies
uv sync
# Generate Civo SDK from Terraform provider
pulumi package add terraform-provider civo/civo
# Initialize stacks
pulumi stack init staging
pulumi stack init prod
# Set secrets per stack
pulumi config set --secret civo:token <your-civo-token>
pulumi config set --secret doppler_token <your-doppler-service-token>
pulumi config set registry_user <your-registry-user>
pulumi config set --secret registry_token <your-registry-token>
Usage
pulumi stack select <staging|prod>
pulumi preview
pulumi up