Skip to main content
Version: v0.34 Stable

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​

DecisionRead nextOutcome
Define cluster TTL and cleanup policySleep mode, auto-deleteSet 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 methodvCluster CLI, Terraform, Argo CDDetermine how pipelines provision and teardown clusters: CLI commands in workflow steps, Terraform in GitOps, or Platform API.
Define resource quotasQuotas, resource quotaCap how many concurrent CI clusters a project can run to prevent node saturation during peak pipeline load.
Plan image cachingPull-through registryDecide 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:

  1. Create a CI-specific template with auto-delete enabled after your target TTL:
    sleep:
    autoDelete:
    afterInactivity: 3600
  2. Set project quotas on maximum concurrent CI clusters per team or pipeline.
  3. Configure your CI system to create clusters using the CLI or Terraform:
    # Create a cluster at pipeline start
    vcluster 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}
  4. 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​

OperationRead next
Monitor concurrent cluster count and node utilization during peak loadFleet monitoring
Audit orphaned clusters (jobs that exited without cleanup)Sleep mode, auto-delete
Tune quotas as pipeline volume growsQuotas
Upgrade Platform and cluster templatesUpgrade Platform, upgrade vCluster