forked from actions/act_runner
在 Kubernetes 中使用 act_runner
部署 Docker-in-Docker(DinD)
注意:Docker-in-Docker(DinD)在 Kubernetes 中需要提升权限。目前的实现方式是将 Pod 的 SecurityContext
(安全上下文)设置为 privileged
(特权模式)。请注意这存在潜在安全风险,恶意应用可能突破容器隔离上下文。
本目录包含文件:
-
dind-docker.yaml
用于在 Kubernetes 中创建作为运行器的 Deployment(部署)和 Persistent Volume(持久卷)。Docker 凭证会在每次 Pod 连接时重新生成,无需持久化存储。 -
rootless-docker.yaml
用于在 Kubernetes 中创建 rootless(非特权)模式的 Deployment 和 Persistent Volume 作为运行器。Docker 凭证会在每次 Pod 连接时重新生成,无需持久化存储。
关键术语说明:
- privileged 模式:容器获得与宿主机 root 用户几乎相同的权限
- SecurityContext:Kubernetes 中定义 Pod/容器权限和安全配置的对象
- rootless 模式:以非特权用户身份运行 Docker 守护进程,安全性更高
- act_runner:Gitea 的 CI/CD 运行器组件
安全建议:在生产环境中,建议优先考虑 rootless 模式,若必须使用 DinD,建议通过 Pod 安全策略、网络策略和审计日志加强安全监控。