Skip to content

Runner Pool

ImpVMRunnerPool manages a pool of ImpVM instances for executing CI/CD jobs — currently GitHub Actions self-hosted runners.

Sections

How it Works

The pool controller creates and destroys ImpVM objects to match runner demand. Each VM registers as a GitHub Actions self-hosted runner, picks up a job, and is replaced on completion.

GitHub Actions Visibility

GitHub only sees capacity after runners register. The pool keeps minIdle pre-registered runners available for fast job pickup. Monitor both the Kubernetes side (pool status, ImpVM count) and the GitHub side (runner inventory).

Minimal Example

yaml
apiVersion: imp.dev/v1alpha1
kind: ImpVMRunnerPool
metadata:
  name: ci-pool
  namespace: default
spec:
  classRef:
    name: standard
  image: ghcr.io/syscode-labs/imp-runner:latest
  platform:
    type: github
    github:
      org: my-org
      secretRef:
        name: github-runner-token
  scaling:
    mode: hybrid
    minIdle: 2
    maxConcurrent: 10
    scaleUpStep: 2
    cooldownSeconds: 60