Skip to content

Commit d12e251

Browse files
authored
Merge pull request #32 from cncf/ora-arm-runners
adds 16cpu-64gb runner to new oci cluster
2 parents 21ee7c0 + 995eba8 commit d12e251

File tree

2 files changed

+255
-0
lines changed

2 files changed

+255
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: argoproj.io/v1alpha1
2+
kind: Application
3+
metadata:
4+
name: oci-16cpu-64gb
5+
namespace: argocd
6+
spec:
7+
project: default
8+
sources:
9+
- chart: gha-runner-scale-set
10+
repoURL: ghcr.io/actions/actions-runner-controller-charts
11+
targetRevision: 0.10.1
12+
helm:
13+
releaseName: oci-16cpu-64gb
14+
valueFiles:
15+
- $values/ci/cluster/oci/runners/16cpu-64gb/values.yaml
16+
- repoURL: 'https://github.com/cncf/automation.git'
17+
targetRevision: main
18+
ref: values
19+
destination:
20+
server: "https://kubernetes.default.svc"
21+
namespace: arc-systems
22+
syncPolicy:
23+
automated:
24+
prune: true
25+
syncOptions:
26+
- CreateNamespace=true
27+
- ServerSideApply=true
Lines changed: 228 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,228 @@
1+
## githubConfigUrl is the GitHub url for where you want to configure runners
2+
## ex: https://github.com/myorg/myrepo or https://github.com/myorg
3+
githubConfigUrl: https://github.com/enterprises/cncf
4+
5+
## githubConfigSecret is the k8s secrets to use when auth with GitHub API.
6+
## You can choose to use GitHub App or a PAT token
7+
githubConfigSecret: github-arc-secret
8+
9+
controllerServiceAccount:
10+
namespace: arc-systems
11+
name: cncf-gha-controller-gha-rs-controller
12+
13+
## maxRunners is the max number of runners the autoscaling runner set will scale up to.
14+
maxRunners: 100
15+
16+
## minRunners is the min number of idle runners. The target number of runners created will be
17+
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
18+
minRunners: 1
19+
20+
# runnerGroup: "default"
21+
22+
## name of the runner scale set to create. Defaults to the helm release name
23+
# runnerScaleSetName: ""
24+
25+
## A self-signed CA certificate for communication with the GitHub server can be
26+
## provided using a config map key selector. If `runnerMountPath` is set, for
27+
## each runner pod ARC will:
28+
## - create a `github-server-tls-cert` volume containing the certificate
29+
## specified in `certificateFrom`
30+
## - mount that volume on path `runnerMountPath`/{certificate name}
31+
## - set NODE_EXTRA_CA_CERTS environment variable to that same path
32+
## - set RUNNER_UPDATE_CA_CERTS environment variable to "1" (as of version
33+
## 2.303.0 this will instruct the runner to reload certificates on the host)
34+
##
35+
## If any of the above had already been set by the user in the runner pod
36+
## template, ARC will observe those and not overwrite them.
37+
## Example configuration:
38+
#
39+
# githubServerTLS:
40+
# certificateFrom:
41+
# configMapKeyRef:
42+
# name: config-map-name
43+
# key: ca.crt
44+
# runnerMountPath: /usr/local/share/ca-certificates/
45+
46+
## Container mode is an object that provides out-of-box configuration
47+
## for dind and kubernetes mode. Template will be modified as documented under the
48+
## template object.
49+
##
50+
## If any customization is required for dind or kubernetes mode, containerMode should remain
51+
## empty, and configuration should be applied to the template.
52+
containerMode:
53+
type: "dind" ## type can be set to dind or kubernetes
54+
# ## the following is required when containerMode.type=kubernetes
55+
# kubernetesModeWorkVolumeClaim:
56+
# accessModes: ["ReadWriteOnce"]
57+
# # For local testing, use https://github.com/openebs/dynamic-localpv-provisioner/blob/develop/docs/quickstart.md to provide dynamic provision volume with storageClassName: openebs-hostpath
58+
# storageClassName: "dynamic-blob-storage"
59+
# resources:
60+
# requests:
61+
# storage: 1Gi
62+
# kubernetesModeServiceAccount:
63+
# annotations:
64+
65+
## template is the PodSpec for each listener Pod
66+
## For reference: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec
67+
listenerTemplate:
68+
spec:
69+
tolerations:
70+
- effect: NoSchedule
71+
key: node-role.kubernetes.io/control-plane
72+
# Node affinity is used to force cluster-autoscaler to stick
73+
# to the master node. This allows the cluster to reliably downscale
74+
# to zero worker nodes when needed.
75+
affinity:
76+
nodeAffinity:
77+
requiredDuringSchedulingIgnoredDuringExecution:
78+
nodeSelectorTerms:
79+
- matchExpressions:
80+
- key: node-role.kubernetes.io/control-plane
81+
operator: Exists
82+
containers:
83+
- name: listener
84+
securityContext:
85+
runAsUser: 1000
86+
# containers:
87+
# # Use this section to append additional configuration to the listener container.
88+
# # If you change the name of the container, the configuration will not be applied to the listener,
89+
# # and it will be treated as a side-car container.
90+
# - name: listener
91+
# securityContext:
92+
# runAsUser: 1000
93+
# # Use this section to add the configuration of a side-car container.
94+
# # Comment it out or remove it if you don't need it.
95+
# # Spec for this container will be applied as is without any modifications.
96+
# - name: side-car
97+
# image: example-sidecar
98+
99+
## template is the PodSpec for each runner Pod
100+
## For reference: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec
101+
template:
102+
## template.spec will be modified if you change the container mode
103+
## with containerMode.type=dind, we will populate the template.spec with following pod spec
104+
## template:
105+
## spec:
106+
## initContainers:
107+
## - name: init-dind-externals
108+
## image: ghcr.io/actions/actions-runner:latest
109+
## command: ["cp", "-r", "-v", "/home/runner/externals/.", "/home/runner/tmpDir/"]
110+
## volumeMounts:
111+
## - name: dind-externals
112+
## mountPath: /home/runner/tmpDir
113+
## containers:
114+
## - name: runner
115+
## image: ghcr.io/actions/actions-runner:latest
116+
## command: ["/home/runner/run.sh"]
117+
## env:
118+
## - name: DOCKER_HOST
119+
## value: unix:///run/docker/docker.sock
120+
## volumeMounts:
121+
## - name: work
122+
## mountPath: /home/runner/_work
123+
## - name: dind-sock
124+
## mountPath: /run/docker
125+
## readOnly: true
126+
## - name: dind
127+
## image: docker:dind
128+
## args:
129+
## - dockerd
130+
## - --host=unix:///run/docker/docker.sock
131+
## - --group=$(DOCKER_GROUP_GID)
132+
## env:
133+
## - name: DOCKER_GROUP_GID
134+
## value: "123"
135+
## securityContext:
136+
## privileged: true
137+
## volumeMounts:
138+
## - name: work
139+
## mountPath: /home/runner/_work
140+
## - name: dind-sock
141+
## mountPath: /run/docker
142+
## - name: dind-externals
143+
## mountPath: /home/runner/externals
144+
## volumes:
145+
## - name: work
146+
## emptyDir: {}
147+
## - name: dind-sock
148+
## emptyDir: {}
149+
## - name: dind-externals
150+
## emptyDir: {}
151+
######################################################################################################
152+
## with containerMode.type=kubernetes, we will populate the template.spec with following pod spec
153+
## template:
154+
## spec:
155+
## containers:
156+
## - name: runner
157+
## image: ghcr.io/actions/actions-runner:latest
158+
## command: ["/home/runner/run.sh"]
159+
## env:
160+
## - name: ACTIONS_RUNNER_CONTAINER_HOOKS
161+
## value: /home/runner/k8s/index.js
162+
## - name: ACTIONS_RUNNER_POD_NAME
163+
## valueFrom:
164+
## fieldRef:
165+
## fieldPath: metadata.name
166+
## - name: ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
167+
## value: "true"
168+
## volumeMounts:
169+
## - name: work
170+
## mountPath: /home/runner/_work
171+
## volumes:
172+
## - name: work
173+
## ephemeral:
174+
## volumeClaimTemplate:
175+
## spec:
176+
## accessModes: [ "ReadWriteOnce" ]
177+
## storageClassName: "local-path"
178+
## resources:
179+
## requests:
180+
## storage: 1Gi
181+
spec:
182+
containers:
183+
- name: runner
184+
image: ghcr.io/cncf/external-gha-runner:main
185+
imagePullPolicy: Always
186+
command: ["/home/runner/run.sh"]
187+
resources:
188+
requests:
189+
memory: 56Gi
190+
cpu: 16
191+
limits:
192+
memory: 60Gi
193+
cpu: 20
194+
- name: dind
195+
image: docker:dind
196+
args:
197+
- dockerd
198+
- --host=unix:///run/docker/docker.sock
199+
- --group=$(DOCKER_GROUP_GID)
200+
- --mtu=1400
201+
- --default-network-opt=bridge=com.docker.network.driver.mtu=1400
202+
env:
203+
- name: DOCKER_GROUP_GID
204+
value: "123"
205+
securityContext:
206+
privileged: true
207+
volumeMounts:
208+
- name: work
209+
mountPath: /home/runner/_work
210+
- name: dind-sock
211+
mountPath: /run/docker
212+
- name: dind-externals
213+
mountPath: /home/runner/externals
214+
volumes:
215+
- name: work
216+
emptyDir: {}
217+
# We need to assume the DIND socket volumes are being provided
218+
# This is because Helm + Argo is busted :) The previous values won't work properly
219+
220+
## Optional controller service account that needs to have required Role and RoleBinding
221+
## to operate this gha-runner-scale-set installation.
222+
## The helm chart will try to find the controller deployment and its service account at installation time.
223+
## In case the helm chart can't find the right service account, you can explicitly pass in the following value
224+
## to help it finish RoleBinding with the right service account.
225+
## Note: if your controller is installed to only watch a single namespace, you have to pass these values explicitly.
226+
# controllerServiceAccount:
227+
# namespace: arc-system
228+
# name: test-arc-gha-runner-scale-set-controller

0 commit comments

Comments
 (0)