启用 Runner 无中断滚动更新
yaml / yaml (pull_request) Successful in 29s

This commit is contained in:
2026-09-21 06:39:11 +00:00
parent e5e2ab1b89
commit dfc55e1d9e
3 changed files with 11 additions and 5 deletions
+5 -2
View File
@@ -21,10 +21,13 @@ OpenSandbox chart 所有权边界。
## Canary 安全边界 ## Canary 安全边界
- Deployment 为单副本,滚动策略固定 `maxSurge: 0`、`maxUnavailable: 1`,避免两个 - Deployment 为单副本,滚动策略固定 `maxSurge: 1`、`maxUnavailable: 0`,保证新
scheduler 共享同一个 Gitea runner 身份。 facade Ready 后才终止旧实例。scheduler 必须通过 Kubernetes Lease 保持单 leader,
不能依赖 Recreate 避免重复领取。
- controller 的 single-flight gate 只允许一个已领取 task 运行;Gitea 接受终态 - controller 的 single-flight gate 只允许一个已领取 task 运行;Gitea 接受终态
`UpdateTask` 后才领取下一条。`POD_CAPACITY=1` 同时限制 worker 创建并发。 `UpdateTask` 后才领取下一条。`POD_CAPACITY=1` 同时限制 worker 创建并发。
- rollout 重叠期间只有持有 `Lease/dynamic-runner-scheduler` 的 controller 执行
`FetchTask`;所有 Ready 实例都可通过 backend metadata 恢复 claim 并服务 facade。
- executor 镜像使用 digest;Pod 以 UID 2000 运行,SPIRE `ClusterStaticEntry` 同时绑定 - executor 镜像使用 digest;Pod 以 UID 2000 运行,SPIRE `ClusterStaticEntry` 同时绑定
具体 Pod UID 与 `unix:uid:2000`。 具体 Pod UID 与 `unix:uid:2000`。
- facade 只有 ClusterIP,executor 通过 - facade 只有 ClusterIP,executor 通过
+3 -3
View File
@@ -8,8 +8,8 @@ spec:
strategy: strategy:
type: RollingUpdate type: RollingUpdate
rollingUpdate: rollingUpdate:
maxSurge: 0 maxSurge: 1
maxUnavailable: 1 maxUnavailable: 0
selector: selector:
matchLabels: matchLabels:
app.kubernetes.io/name: dynamic-runner-controller app.kubernetes.io/name: dynamic-runner-controller
@@ -38,7 +38,7 @@ spec:
mountPath: /trust mountPath: /trust
containers: containers:
- name: controller - name: controller
image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-controller@sha256:efbe44fdb13cf24f83f92d703c7051d3106cfc7d3bed9ee5debddd1d27db9dec image: zot.ad.ddupan.top/panxiao81/gitea-dynamic-runner-controller@sha256:c165a0ec950fb5972acb9f4010c0a9cb1b89fb6c9f95c78b36cc0cbdf6f482b7
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
args: [controller] args: [controller]
env: env:
+3
View File
@@ -19,6 +19,9 @@ rules:
- apiGroups: [""] - apiGroups: [""]
resources: [pods] resources: [pods]
verbs: [create, get, list, watch, patch, delete] verbs: [create, get, list, watch, patch, delete]
- apiGroups: [coordination.k8s.io]
resources: [leases]
verbs: [create, get, list, watch, update, patch]
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding kind: RoleBinding