Control and Data Flows
Provisioning Flow
- Operator applies Terraform (
terraform/libvirt) manually. - Libvirt creates Talos VM definitions.
- KVM workers may be created in stopped state.
- Operator boots/bootstraps Talos and validates kubeconfig.
ARC Deployment Flow
- GitHub workflow joins tailnet.
- Workflow writes kubeconfig/talosconfig from secrets.
k8s/arc/install.shdeploys:- ARC controller
- container scale set
- dind scale set
- Secrets for GitHub App auth are synced into cluster.
Workload Scheduling Flow
- Workflow job targets appropriate runner class.
- ARC provisions runner pod.
- Scheduler places pod based on nodeSelector and tolerations.
- DIND pods requiring
/dev/kvmland only on tainted KVM nodes.
KVM Autoscaling Flow
- CronJob queries dind runner pods in namespace.
- Computes desired KVM VM count:
ceil(active_runner_pods / RUNNERS_PER_NODE)- bounded by
MIN_KVM_NODESandMAX_KVM_NODES
- Starts VMs up to desired count.
- Shuts down remaining pre-provisioned VMs.