Zeabur Builderv1alpha1
推送 commit,拿到映像檔 digest
Zeabur Builder 是用 BuildKit 從 Git 建置映像檔的 Kubernetes operator。每個新 commit 建置一次,推到 registry,再把映像檔寫進 status.latestImage,交給你的部署工具。
只負責建置,部署交給你原本的工具
- dockerfile · railpack
兩種建置方式
dockerfile 用你的 Dockerfile。沒有 Dockerfile 的儲存庫改用 Railpack 規劃建置,映像檔以 uid 1000 執行,能在 Pod Security restricted 下啟動。
- buildkitd
每個 Namespace 一個 buildkitd
各自有快取、憑證授權和 registry 路徑。快取在建置之間保留,閒置 10 分鐘後縮到零。
- tags
排得出先後的標籤
例如 main-1761058800-3e1a9c2:分支、Unix 時間和 commit。Flux、Argo CD Image Updater 和 Keel 都能依此更新部署。
從 ref 到 digest,每一步都是 Kubernetes 物件
解析 ref
controller 透過 Git 的 smart HTTP 或 SSH,把 Build 的 ref 解析成 commit。
建置
新的 commit 會建立一個 BuildRun 和一個 Job。Job 對同一個 Namespace 的 buildkitd 執行 buildctl,不需要特權。
推送
映像檔推上 registry,digest 和標籤寫進 BuildRun 和 Build。
什麼時候會建置
| 觸發方式 | 怎麼運作 | 需要設定 |
|---|---|---|
| 輪詢 | controller 每分鐘向 Git 伺服器查詢一次 ref | 不用設定,spec.triggers.pollInterval 可調整 |
| Push webhook | GitHub、GitLab、Gitea、Forgejo、Bitbucket 和 Standard Webhooks | 在 chart 啟用 webhooks,每個 Build 一個 secret |
| GitHub App | 私有儲存庫用短效的 installation token,每個 commit 都有 commit status | 叢集管理員建立一次 App |
| 手動 | 改 builder.zeabur.com/rebuild annotation 重新建置目前的 commit | spec.suspend 可停止自動建置 |
apiVersion: builder.zeabur.com/v1alpha1
kind: Build
metadata: {name: whoami, namespace: team-a}
spec:
source: {git: {url: https://github.com/traefik/whoami}}
builderRef: dockerfile