Overview
This guide addresses compatibility issues between Actions Runner Controller and ArgoCD, prepared in response to requirements from this PR:
https://github.com/actions/actions-runner-controller/pull/3575#issuecomment-2594906700
1. Create a kind Cluster
kind create cluster --image mirror.gcr.io/kindest/node:v1.32.0
2. Install ArgoCD
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Note: To access the UI, use port forwarding:
kubectl port-forward svc/argocd-server -n argocd 8080:443
3. Create GitHub PAT Secret
Execute the following after the namespace is automatically created via ArgoCD Application syncOptions:
kubectl create secret generic github-pat-secret \ -n default \ --from-literal=github_token='<YOUR_PAT>'
Note: Replace <YOUR_PAT>
with your actual Personal Access Token.
4. ArgoCD Application: gha-runner-scale-set-controller
Save the following content as gha-runner-scale-set-controller-app.yaml
.
This uses Helm Chart version 0.10.1, specifies the image.repository while using the default tag, and adds excludeLabelPropagationPrefixes array settings:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: gha-runner-scale-set-controller namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default source: repoURL: "ghcr.io/actions/actions-runner-controller-charts" chart: "gha-runner-scale-set-controller" targetRevision: "0.10.1" helm: parameters: - name: image.repository value: "quay.io/kahirokunn/gha-runner-scale-set" - name: githubConfigSecret value: "github-pat-secret" - name: serviceAccount.name value: "gha-runner-scale-set-controller" - name: flags.excludeLabelPropagationPrefixes[0] value: "argocd.argoproj.io/instance" - name: flags.excludeLabelPropagationPrefixes[1] value: "app.kubernetes.io/component" - name: flags.excludeLabelPropagationPrefixes[2] value: "app.kubernetes.io/instance" - name: flags.excludeLabelPropagationPrefixes[3] value: "app.kubernetes.io/managed-by" - name: flags.excludeLabelPropagationPrefixes[4] value: "app.kubernetes.io/name" - name: flags.excludeLabelPropagationPrefixes[5] value: "app.kubernetes.io/part-of" - name: flags.excludeLabelPropagationPrefixes[6] value: "app.kubernetes.io/version" destination: server: "https://kubernetes.default.svc" namespace: arc-systems syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true - ServerSideApply=true
After applying, it will look like this:
5. ArgoCD Application: demo (Runner Scale Set)
Save the following content as gha-runner-scale-set-app.yaml
(filename is arbitrary):
This uses Helm Chart version 0.10.1, sets minimum runners to 1, and configures the following Helm parameters:
- controllerServiceAccount.name:
"gha-runner-scale-set-controller"
- controllerServiceAccount.namespace:
"arc-systems"
- githubConfigSecret:
"github-pat-secret"
- githubConfigUrl:
"https://github.com/kahirokunn/actions-runner-controller"
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: demo namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default source: repoURL: "ghcr.io/actions/actions-runner-controller-charts" chart: "gha-runner-scale-set" targetRevision: "0.10.1" helm: parameters: - name: minRunners value: "1" - name: controllerServiceAccount.name value: "gha-runner-scale-set-controller" - name: controllerServiceAccount.namespace value: "arc-systems" - name: githubConfigSecret value: "github-pat-secret" - name: githubConfigUrl value: "https://github.com/kahirokunn/actions-runner-controller" destination: server: "https://kubernetes.default.svc" namespace: default syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true - ServerSideApply=true
Top comments (0)