Skip to content

Commit 65666d9

Browse files
authored
feat(arc): replace dind runner with arc-tf scale set on tfroot-runner (#25)
## Summary Single GitHub Actions runner-set running the rebuilt tfroot-runner image (based on \`ghcr.io/actions/actions-runner\`). No docker-in-docker, no nested \`container:\` blocks in caller workflows. Consumers move to \`runs-on: arc-tf\`. ### Removed (legacy summerwind ARC + dind plumbing) - \`operators/arc/dind-application.yaml\` — summerwind controller install - \`operators/arc/github-token-secret.yaml\` — its \`arc-dind-systems\` token - \`operators/arc/namespace.yaml\` — \`arc-dind-systems\` ns - \`operators/arc/ksops-arc-secrets.yaml\` — only listed the deleted token - \`workloads/arc/runner-application.yaml\` — old runner-set with \`docker:dind\` sidecar - \`workloads/arc/docker-daemon-config.yaml\` — dind registry-mirror config - \`workloads/arc/registry.yaml\` — internal docker-registry ns + SA + RB - \`workloads/arc/rbac.yaml\` — \`system:openshift:scc:privileged\` binding (the SCC ClusterRole doesn't exist on k3s) ### Added - \`workloads/arc/arc-tf-application.yaml\` — \`gha-runner-scale-set\` Helm Application, \`releaseName / runnerScaleSetName: arc-tf\`, \`image: ghcr.io/makeitworkcloud/tfroot-runner:latest\`. \`ignoreDifferences\` for the controller-mutated listener resources (same fix that was applied to the old generic runner-set in #11). ### Tidied - \`workloads/apps/arc-app.yaml\` — drop the OpenShift ImageStream \`ignoreDifferences\` block. - Both \`operators/arc/\` and \`workloads/arc/\` \`kustomization.yaml\` files trimmed to the surviving resources. ### Kept - \`operators/arc/arcsystem.yaml\` — the \`gha-runner-scale-set-controller\` Application (the new arc-tf runner-set depends on it). - \`workloads/arc/namespace.yaml\` — \`arc-runners\` ns reused for the new runner-set. - \`workloads/arc/github-token-secret.yaml\` + \`ksops-arc-secrets.yaml\` — \`arc-runner-github-token\` Secret reused as \`githubConfigSecret\`. ## Pairs with - images PR #6 (merged) — tfroot-runner image rebased onto \`ghcr.io/actions/actions-runner\`. - shared-workflows (incoming) — drop the nested \`container:\` block; default \`runs-on: arc-tf\`. - tfroot-libvirt (incoming) — caller switches from \`runs-on: arc-dind\` + \`container:\` to plain \`runs-on: arc-tf\`. ## Test plan - [x] After merge: \`kubectl -n arc-runners get autoscalingrunnerset arc-tf\` exists; listener pod registers with GitHub - [x] After merge: GitHub org → Actions → Runners shows an \`arc-tf\` runner set - [x] After merge: a job with \`runs-on: arc-tf\` spawns an ephemeral pod in arc-runners, runs to completion, pod terminates - [x] After merge: legacy \`arc-dind\` Application is pruned by gitops-operators; \`arc-dind-systems\` ns gone - [x] After merge: \`docker-registry\` ns gone (pruned) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1 parent d460fc0 commit 65666d9

12 files changed

Lines changed: 57 additions & 391 deletions

operators/arc/dind-application.yaml

Lines changed: 0 additions & 46 deletions
This file was deleted.

operators/arc/github-token-secret.yaml

Lines changed: 0 additions & 26 deletions
This file was deleted.

operators/arc/ksops-arc-secrets.yaml

Lines changed: 0 additions & 10 deletions
This file was deleted.

operators/arc/kustomization.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1
33
kind: Kustomization
44
resources:
55
- arcsystem.yaml
6-
- namespace.yaml
7-
- dind-application.yaml
8-
generators:
9-
- ksops-arc-secrets.yaml

operators/arc/namespace.yaml

Lines changed: 0 additions & 6 deletions
This file was deleted.

workloads/apps/arc-app.yaml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,6 @@ spec:
1414
targetRevision: main
1515
destination:
1616
server: https://kubernetes.default.svc
17-
# Ignore fields that OpenShift mutates on ImageStreams after import
18-
ignoreDifferences:
19-
- group: image.openshift.io
20-
kind: ImageStream
21-
jqPathExpressions:
22-
- .spec.lookupPolicy
23-
- .spec.tags[].generation
24-
- .spec.tags[].importPolicy.importMode
25-
- .spec.tags[].referencePolicy
26-
- .spec.tags[].annotations
2717
syncPolicy:
2818
automated:
2919
prune: true
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# GitHub Actions runner scale set running the tfroot-runner image.
2+
# Jobs labeled `runs-on: arc-tf` execute directly in this pod — no nested
3+
# `container:` block, no docker-in-docker. Replaces the legacy summerwind
4+
# arc-dind controller and the arc-runners-with-dind-sidecar pattern.
5+
apiVersion: argoproj.io/v1alpha1
6+
kind: Application
7+
metadata:
8+
name: arc-tf
9+
namespace: argocd
10+
annotations:
11+
argocd.argoproj.io/sync-wave: "1"
12+
spec:
13+
destination:
14+
namespace: arc-runners
15+
server: https://kubernetes.default.svc
16+
project: default
17+
source:
18+
chart: gha-runner-scale-set
19+
repoURL: ghcr.io/actions/actions-runner-controller-charts
20+
targetRevision: 0.13.1
21+
helm:
22+
releaseName: arc-tf
23+
valuesObject:
24+
runnerScaleSetName: arc-tf
25+
controllerServiceAccount:
26+
name: arc-gha-rs-controller
27+
namespace: arc-systems
28+
githubConfigSecret: arc-runner-github-token
29+
githubConfigUrl: https://github.com/makeitworkcloud
30+
maxRunners: 3
31+
minRunners: 0
32+
template:
33+
spec:
34+
containers:
35+
- name: runner
36+
image: ghcr.io/makeitworkcloud/tfroot-runner:latest
37+
command: ["/home/runner/run.sh"]
38+
# The gha-runner-scale-set controller mutates listener resources at runtime
39+
# (hash annotations, autoscaling spec). Ignore those drifts.
40+
ignoreDifferences:
41+
- group: actions.github.com
42+
kind: AutoscalingListener
43+
jsonPointers:
44+
- /metadata/annotations
45+
- /spec
46+
- group: actions.github.com
47+
kind: AutoscalingRunnerSet
48+
jsonPointers:
49+
- /metadata/annotations
50+
- /spec/template
51+
syncPolicy:
52+
automated:
53+
prune: true
54+
selfHeal: true
55+
syncOptions:
56+
- RespectIgnoreDifferences=true

workloads/arc/docker-daemon-config.yaml

Lines changed: 0 additions & 9 deletions
This file was deleted.

workloads/arc/kustomization.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22
apiVersion: kustomize.config.k8s.io/v1beta1
33
kind: Kustomization
44
resources:
5-
- registry.yaml
65
- namespace.yaml
7-
- docker-daemon-config.yaml
8-
- runner-application.yaml
9-
- rbac.yaml
6+
- arc-tf-application.yaml
107
generators:
118
- ksops-arc-secrets.yaml

workloads/arc/rbac.yaml

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)