在 Gitlab 中连接到 Kubernetes API for Kubernetes Executor

Connecting to the kubernetes API for Kubernetes Executor in Gitlab

根据 https://docs.gitlab.com/runner/executors/kubernetes.html#connecting-to-the-kubernetes-api,我可以从我当前的 Gitlab runner 连接到另一个 K8s 集群,但问题是它们没有提供任何关于你做什么或你需要在哪里指定这些的信息选项。

编辑:最终设法在 config.toml 中指定了这些选项,但现在任何时候我的 Gitlab-runner 得到一份工作都会失败,如下所示:

ERROR: Job failed (system failure): User "system:serviceaccount:test-djg:default" cannot create secrets in project "gitlab" job=17304 project=3128 runner=c36ccf98

有什么想法吗?

您收到此错误是因为在集群中启用 RBAC 时执行程序 pod 没有 运行 的必要权限。您应该根据您的设置创建 RoleRoleBinding,也许还有 ServiceAccount

gitlab-runner 项目中有一个 pending merge request 记录了必要的许可和一些关于 RBAC 的其他信息。

但是现在,如果您想要快速设置,可以使用以下代码段允许对命名空间的完全访问。请注意,您需要进行修改以匹配您的设置。

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: gitlab
  name: gitlab-admin
rules:
  - apiGroups: [""] # The API group "" indicates the core API Group.
    resources: ["*"]
    verbs: ["*"]

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: gitlab-admin
  namespace: gitlab
subjects:
  - kind: ServiceAccount # May be "User", "Group" or "ServiceAccount"
    name: default
    namespace: gitlab
roleRef:
  kind: Role
  name: gitlab-admin
  apiGroup: rbac.authorization.k8s.io