You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自托管GitLab CI连接Kubernetes集群报Forbidden错误如何解决?

问题1:最初的secret访问禁止+空kubeconfig原因

  1. 空kubeconfig属于正常现象:GitLab集成Kubernetes集群后,会将访问凭证直接注入CI Job的环境变量中,不会写入默认的~/.kube/config路径,因此直接执行kubectl config view会返回空配置,不影响kubectl正常调用。
  2. secret访问禁止的核心原因:报错显示请求使用的是gitlab命名空间下的default服务账户,Kubernetes默认创建的服务账户没有任何API操作权限,必须通过RBAC配置为其分配对应资源的访问权限,才可以执行相关操作。

问题2:配置RBAC后仍无法创建Namespace的原因

你当前的RBAC配置存在两处核心问题:

  • 权限范围不足:你定义的ClusterRole中只开放了secrets资源的操作权限,并没有包含namespaces资源的相关权限,自然无法完成Namespace的创建、查询操作。
  • 冗余配置:ClusterRole属于集群级资源,不需要在metadata中指定namespace字段,该配置不会生效,属于多余项。

修正方案

只需修改ClusterRole配置,新增namespaces资源的权限即可,原有ClusterRoleBinding无需改动:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: gitlab-deploy
rules:
- apiGroups: [""] # 核心API组
  resources: ["secrets", "namespaces"] # 新增namespaces资源权限
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

应用该配置后即可正常创建Namespace。如果后续需要操作Deployment、Service等其他资源,只需在resources数组中添加对应资源类型即可。

内容的提问来源于stack exchange,提问作者user3142695

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:36:00