K3s: 兩個 YAML 教你設定 GitHub Actions Controller

在 K3s 當中,我們有 Helm Controller 可以使用,因此我們不需要手動 helm 安裝 ARC

Diagram showing ARC's autoscaling runner ScaleSet mode.

首先,對於想要手動練習的同學這邊有幾個注意事項:

  1. ARC 安裝請看 GitHub Docs 最新文件的 Quickstart for Actions Runner Controller 章節,ARC 的 README 都給你 Legacy 文件。
  2. 官方 Quickstart 預設安裝的沒有啟用 Docker 模式,因此你無法在 GitHub Action 當中做 Docker Build,我們底下會告訴你怎麼啟用。
  3. Helm Controller 是支援 OCI-based registries 的,只是 HelmChart 裡面的寫法不一樣,可以參考 Allow to pull charts from OCI registry #81 這個 Issue 或者我們的範例。
  4. 對於想要使用 GitHub App for authentication 不想使用 PAT 的可以參考 Using a GitHub App for authentication 這個章節。

請參考以下 HelmChart YAML:

apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: arc-runner-set
namespace: kube-system
spec:
chart: oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
set:
githubConfigUrl: "https://github.com/<your_enterprise/org/repo>"
githubConfigSecret.github_token: "<PAT>"
containerMode.type: dind
targetNamespace: arc-runners
createNamespace: true
status:
jobName: helm-install-arc-runner-set
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: arc
namespace: kube-system
spec:
chart: oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
targetNamespace: arc-systems
createNamespace: true
status:
jobName: helm-install-arc

簡單幾個說明:

  1. 要先 Apply arc.helmchart.yaml 再 Apply arc-runner-set.helmchart.yaml
  2. 上面提到要支援 Docker Build 可以看到在 YAML 當中有設定 containerMode.type 為 dind 模式,可以參考說明文件的 Using Docker-in-Docker mode 章節

另外,如果不希望明文 Personal Access Token (PAT) 寫在 YAML 可以參考 Authenticating ARC with a personal access token (classic) 章節

這當中會跟你說可以先建立一個 PAT 的 secret

kubectl create secret generic pre-defined-secret \

   --namespace=arc-runners \

   --from-literal=github_token='YOUR-PAT'

並且在 HelmChart 當中把 githubConfigSecret.github_token: "<PAT>" 替換成 githubConfigSecret: pre-defined-secret 就可以了。



留言

本月最夯

偷用電腦,怎知?事件檢視器全記錄!(開機時間、啟動項時間...)