部署 Pod/VM 动态 Runner 控制器 #67

Merged
panxiao81 merged 2 commits from feat/dynamic-runner-controller into main 2026-09-16 15:00:04 +00:00
Owner

变更

  • 部署 webhook controller 与 Pod worker
  • 投影 NATS producer/worker、webhook 与现有 Gitea runner registration token
  • 增加 controller Pod 管理 RBAC 和无 API 权限的 job ServiceAccount
  • 增加按实际任务绑定的 ClusterSPIFFEID
  • 一次性 runner Pod 使用 privileged namespace,Docker/kind 由 pipeline 自行 setup
  • CI stream subject 扩展为 ci.runner.> 以承载 binding 消息

Bootstrap

controller 与 runner 镜像已导入当前唯一的 k3s 节点 laptop,清单使用 imagePullPolicy: Never。OCI 发布链路打通后改为 Zot digest。

验证

  • k3s kubectl kustomize platform/microvm-runner
  • 完整清单 kubectl apply --dry-run=client
  • ClusterSPIFFEID 已通过 API server dry-run
  • 两个 bootstrap 镜像已在 k3s containerd 中按精确 tag 验证
## 变更 - 部署 webhook controller 与 Pod worker - 投影 NATS producer/worker、webhook 与现有 Gitea runner registration token - 增加 controller Pod 管理 RBAC 和无 API 权限的 job ServiceAccount - 增加按实际任务绑定的 `ClusterSPIFFEID` - 一次性 runner Pod 使用 privileged namespace,Docker/kind 由 pipeline 自行 setup - CI stream subject 扩展为 `ci.runner.>` 以承载 binding 消息 ## Bootstrap controller 与 runner 镜像已导入当前唯一的 k3s 节点 `laptop`,清单使用 `imagePullPolicy: Never`。OCI 发布链路打通后改为 Zot digest。 ## 验证 - `k3s kubectl kustomize platform/microvm-runner` - 完整清单 `kubectl apply --dry-run=client` - `ClusterSPIFFEID` 已通过 API server dry-run - 两个 bootstrap 镜像已在 k3s containerd 中按精确 tag 验证
panxiao81 added 1 commit 2026-09-16 14:35:20 +00:00
部署动态 Pod Runner 控制器
yaml / yaml (pull_request) Successful in 12s
246b5023e7
@@ -0,0 +89,4 @@
mountPath: /run/trust
readOnly: true
- name: pod-worker
image: gitea-microvm-runner-controller:0.3.0-bootstrap
Author
Owner

worker是不是应该分开另一个deployment啊,另外为了有权限访问集群,需要给他serviceaccount。job可以创建在当前namespace下,另外这是什么worker?pod还是microvm?microvm这样调度运行没问题?

worker是不是应该分开另一个deployment啊,另外为了有权限访问集群,需要给他serviceaccount。job可以创建在当前namespace下,另外这是什么worker?pod还是microvm?microvm这样调度运行没问题?
@@ -0,0 +135,4 @@
- name: trust
mountPath: /run/trust
readOnly: true
nodeSelector:
Author
Owner

没必要写

没必要写
panxiao81 added 1 commit 2026-09-16 14:53:45 +00:00
按执行职责拆分动态 Runner 组件
yaml / yaml (pull_request) Successful in 10s
c4f425e9ea
Author
Owner

已按 review 更新:

  • Pod worker 拆为独立 Deployment
  • controller 使用独立 ServiceAccount 且关闭 token 自动挂载
  • 只有 dynamic-runner-pod-worker ServiceAccount 具备 namespace 内 Pod CRUD
  • job Pod 使用无 Kubernetes API 权限的 gitea-dynamic-runner ServiceAccount
  • 删除单节点下多余的 nodeSelector
  • platform、namespace、Flux Kustomization、Service 与镜像统一改为 dynamic runner 命名
  • microVM worker 不在本 Deployment 中,仍由虚拟化宿主机独立运行

更新后的 API server/client dry-run 与 CI run #309 均通过。

已按 review 更新: - Pod worker 拆为独立 Deployment - controller 使用独立 ServiceAccount 且关闭 token 自动挂载 - 只有 `dynamic-runner-pod-worker` ServiceAccount 具备 namespace 内 Pod CRUD - job Pod 使用无 Kubernetes API 权限的 `gitea-dynamic-runner` ServiceAccount - 删除单节点下多余的 `nodeSelector` - platform、namespace、Flux Kustomization、Service 与镜像统一改为 dynamic runner 命名 - microVM worker 不在本 Deployment 中,仍由虚拟化宿主机独立运行 更新后的 API server/client dry-run 与 CI run #309 均通过。
panxiao81 merged commit eb68e9f0c5 into main 2026-09-16 15:00:04 +00:00
panxiao81 deleted branch feat/dynamic-runner-controller 2026-09-16 15:00:04 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: panxiao81/homelab-infra#67