Zeabur Builderv1alpha1
推送 commit,拿到镜像 digest
Zeabur Builder 是用 BuildKit 从 Git 构建镜像的 Kubernetes Operator。每个新 commit 构建一次,推送到镜像仓库,再把镜像写进 status.latestImage,交给你的部署工具。
只负责构建,部署交给你原来的工具
- dockerfile · railpack
两种构建方式
dockerfile 用你的 Dockerfile。没有 Dockerfile 的仓库改用 Railpack 规划构建,镜像以 uid 1000 运行,能在 Pod Security restricted 下启动。
- buildkitd
每个 Namespace 一个 buildkitd
各自有缓存、证书颁发机构和镜像仓库路径。缓存在构建之间保留,空闲 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,不需要特权。
推送
镜像推送到镜像仓库,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 注解,重新构建当前 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