Skip to content

Control and Data Flows

Provisioning Flow

  1. Operator applies Terraform (terraform/libvirt) manually.
  2. Libvirt creates Talos VM definitions.
  3. KVM workers may be created in stopped state.
  4. Operator boots/bootstraps Talos and validates kubeconfig.

ARC Deployment Flow

  1. GitHub workflow joins tailnet.
  2. Workflow writes kubeconfig/talosconfig from secrets.
  3. k8s/arc/install.sh deploys:
    • ARC controller
    • container scale set
    • dind scale set
  4. Secrets for GitHub App auth are synced into cluster.

Workload Scheduling Flow

  1. Workflow job targets appropriate runner class.
  2. ARC provisions runner pod.
  3. Scheduler places pod based on nodeSelector and tolerations.
  4. DIND pods requiring /dev/kvm land only on tainted KVM nodes.

KVM Autoscaling Flow

  1. CronJob queries dind runner pods in namespace.
  2. Computes desired KVM VM count:
    • ceil(active_runner_pods / RUNNERS_PER_NODE)
    • bounded by MIN_KVM_NODES and MAX_KVM_NODES
  3. Starts VMs up to desired count.
  4. Shuts down remaining pre-provisioned VMs.