CI/CD Platform
Provide isolated, ephemeral Kubernetes environments for CI/CD pipelines. Each pipeline run gets its own tenant cluster. No shared state, no cross-pipeline interference, no cleanup scripts. Clusters are created on demand and deleted automatically after the job finishes.
Typical stack: Shared nodes, Platform, auto-sleep and auto-delete configured in templates. Pipelines create clusters through the CLI, Terraform, or the Platform API.
What makes this path different: Cluster lifetime is measured in minutes or hours, not weeks. The underlying architecture is shared nodes plus Platform, identical to the Internal Kubernetes Platform. What differs is what you are optimizing for. Here it is cluster lifecycle management at scale, not long-term governance.
If you are building an internal platform that includes both long-running team clusters and ephemeral CI clusters, start with the Internal Kubernetes Platform and extend it with the CI/CD patterns documented here.
Day 0: Design decisions​
| Decision | Read next | Outcome |
|---|---|---|
| Define cluster TTL and cleanup policy | Sleep mode, auto-delete | Set a default TTL for CI clusters. Decide between auto-delete after inactivity, after a fixed duration, or on pipeline completion via CLI. |
| Choose pipeline integration method | vCluster CLI, Terraform, Argo CD | Determine how pipelines provision and teardown clusters: CLI commands in workflow steps, Terraform in GitOps, or Platform API. |
| Define resource quotas | Quotas, resource quota | Cap how many concurrent CI clusters a project can run to prevent node saturation during peak pipeline load. |
| Plan image caching | Pull-through registry | Decide whether CI clusters pull images directly from registries or use a cache. Warm cache significantly reduces job time. |
Day 1: Stand up the platform​
Follow the Internal Kubernetes Platform Day 1 steps first (steps 1-5), then extend:
- Create a CI-specific template with auto-delete enabled after your target TTL:
sleep:autoDelete:afterInactivity: 3600
- Set project quotas on maximum concurrent CI clusters per team or pipeline.
- Configure your CI system to create clusters using the CLI or Terraform:
# Create a cluster at pipeline startvcluster create ci-${CI_JOB_ID} --namespace ci-${CI_JOB_ID} --template ci-cluster# Delete on pipeline completion (or let auto-delete handle it)vcluster delete ci-${CI_JOB_ID} --namespace ci-${CI_JOB_ID}
- Validate end-to-end: a pipeline run creates a cluster, deploys a test workload, and the cluster is deleted after the job finishes.
Day 2: Operate​
| Operation | Read next |
|---|---|
| Monitor concurrent cluster count and node utilization during peak load | Fleet monitoring |
| Audit orphaned clusters (jobs that exited without cleanup) | Sleep mode, auto-delete |
| Tune quotas as pipeline volume grows | Quotas |
| Upgrade Platform and cluster templates | Upgrade Platform, upgrade vCluster |