No description
  • Go Template 61.3%
  • PowerShell 38.7%
Find a file
Pikacnu ec71a6ccac
Some checks failed
Publish Helm Chart / publish (push) Failing after 46m54s
fix: remove invalid amd64 label from publish workflow and format README
2026-09-29 00:58:23 +08:00
.github/workflows fix: remove invalid amd64 label from publish workflow and format README 2026-09-29 00:58:23 +08:00
templates feat: migrate runner from Deployment to StatefulSet with per-replica PVCs 2026-09-29 00:56:33 +08:00
app.yaml fix: update targetRevision to allow for patch version matching in Helm chart 2026-01-11 07:34:00 +08:00
Chart.yaml feat: migrate runner from Deployment to StatefulSet with per-replica PVCs 2026-09-29 00:56:33 +08:00
package-push.ps1 feat: add initial Helm chart configuration and package-push script 2026-01-11 07:33:44 +08:00
README.md fix: remove invalid amd64 label from publish workflow and format README 2026-09-29 00:58:23 +08:00
values.yaml feat: migrate runner from Deployment to StatefulSet with per-replica PVCs 2026-09-29 00:56:33 +08:00

Gitea ARM Runner Helm Chart

這是一個用於在 Kubernetes 上部署 Gitea ARM Runner (act_runner) 的 Helm Chart。它支援 Docker-in-Docker (dind) 模式,適合在 ARM 架構(如 Raspberry Pi 或其他 ARM 伺服器)上執行 CI/CD 任務。

前置作業

  1. Gitea 實例:你需要一個運作中的 Gitea 實例。

  2. 註冊 Token:

    • 在 Gitea 中前往「網站管理」 > 「Actions」 > 「Runners」。
    • 點擊「Create new Runner」獲取註冊 Token。
  3. 建立 Kubernetes Secret: 在安裝 Chart 之前,建議先手動建立包含 Token 的 Secret(或者在 values.yaml 中配置 existingSecret):

    kubectl create secret generic gitea-arm-runner-secret --from-literal=token=YOUR_REGISTRATION_TOKEN
    

安裝方式

  1. 複製儲存庫:

    git clone https://github.com/your-repo/arm-runner-git.git
    cd arm-runner-git
    
  2. 配置 values.yaml: 修改 values.yaml 中的 runner.instanceURL 為你的 Gitea 地址。

  3. 使用 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