- Go Template 61.3%
- PowerShell 38.7%
|
|
||
|---|---|---|
| .github/workflows | ||
| templates | ||
| app.yaml | ||
| Chart.yaml | ||
| package-push.ps1 | ||
| README.md | ||
| values.yaml | ||
Gitea ARM Runner Helm Chart
這是一個用於在 Kubernetes 上部署 Gitea ARM Runner (act_runner) 的 Helm Chart。它支援 Docker-in-Docker (dind) 模式,適合在 ARM 架構(如 Raspberry Pi 或其他 ARM 伺服器)上執行 CI/CD 任務。
前置作業
-
Gitea 實例:你需要一個運作中的 Gitea 實例。
-
註冊 Token:
- 在 Gitea 中前往「網站管理」 > 「Actions」 > 「Runners」。
- 點擊「Create new Runner」獲取註冊 Token。
-
建立 Kubernetes Secret: 在安裝 Chart 之前,建議先手動建立包含 Token 的 Secret(或者在
values.yaml中配置existingSecret):kubectl create secret generic gitea-arm-runner-secret --from-literal=token=YOUR_REGISTRATION_TOKEN
安裝方式
-
複製儲存庫:
git clone https://github.com/your-repo/arm-runner-git.git cd arm-runner-git -
配置
values.yaml: 修改values.yaml中的runner.instanceURL為你的 Gitea 地址。 -
使用 Helm 安裝:
helm install gitea-arm-runner . -n gitea
主要設定值
| 參數 | 描述 | 預設值 |
|---|---|---|
replicaCount |
Runner 數量,每個 replica 會取得獨立 PVC | 1 |
image.repository |
Runner 鏡像 | gitea/act_runner |
runner.instanceURL |
Gitea 實例的 URL | http://YOUR_GITEA_LOCAL_IP:3000 |
runner.existingSecret |
存放 Token 的 Secret 名稱 | gitea-arm-runner-secret |
runner.labels |
Runner 的標籤清單 | (包含多個 Docker 映像檔標籤) |
runner.nameFromPod |
以 Pod 名稱作為 Runner 名稱(多 replica 建議開啟) | false |
persistence.enabled |
是否啟用持久化存儲 | true |
persistence.size |
每個 replica 的持久化存儲大小 | 5Gi |
persistence.retentionPolicy.enabled |
控制 PVC 是否隨 Pod 刪除(K8s >= 1.27) | false |
dind.enabled |
是否啟用 Docker-in-Docker | false |
多 Runner(水平擴充)
Chart 使用 StatefulSet,因此每個 replica 都是獨立的 Runner,且各自擁有專屬的 PVC。
# 擴充到 3 個 Runner
helm upgrade gitea-arm-runner . -n gitea --set replicaCount=3
-
每個 replica 會產生一個 PVC,命名為
runner-data-gitea-arm-runner-<ordinal>(例如runner-data-gitea-arm-runner-0)。 -
persistence.size是每個 replica 的大小,總容量為replicaCount × size。 -
縮減 replica 時,多餘的 PVC 預設會保留(
Retain)。若要自動清除,設定:persistence: retentionPolicy: enabled: true whenScaled: Delete whenDeleted: Delete -
多 replica 時建議開啟
runner.nameFromPod: true,讓每個 Runner 使用 Pod 名稱註冊,避免同名互相覆蓋。 -
如果 Gitea 端不需要註冊多個 Runner 名稱,也可以在 Gitea 的 Runner 頁面分別確認每個 Runner 是否上線。
注意:若原本已安裝舊版(Deployment + 單一 PVC),升級時 Deployment 與舊 PVC 不會被自動移除,需要手動清理:
kubectl delete deployment gitea-arm-runner -n gitea kubectl delete pvc gitea-arm-runner-pvc -n gitea # 確認資料已不需要再刪除
卸載方式
helm uninstall gitea-arm-runner -n gitea
StatefulSet 產生的 PVC 預設不會隨
helm uninstall刪除,需手動清理:kubectl delete pvc -l app.kubernetes.io/instance=gitea-arm-runner -n gitea