Kubernetes 为Gitlab runner指定K8s namesapce

Kubernetes 为Gitlab runner指定K8s namesapce,kubernetes,continuous-integration,gitlab,Kubernetes,Continuous Integration,Gitlab,我有一个使用K8s执行器的Gitlab runner。但是,当运行管道时,我得到了以下错误 Checking for jobs... received job=552009999 repo_url=https://gitlab.com/deadbug/rns.git runner=ZuT1t3BJ WARNING: Namespace is empty, therefore assuming 'default'. job=552009999 pro

我有一个使用K8s执行器的Gitlab runner。但是,当运行管道时,我得到了以下错误

Checking for jobs... received                       job=552009999 
repo_url=https://gitlab.com/deadbug/rns.git runner=ZuT1t3BJ
WARNING: Namespace is empty, therefore assuming 'default'.  job=552009999 project=18763260 
runner=ThT1t3BJ
ERROR: Job failed (system failure): secrets is forbidden: User "deadbug" cannot create resource 
"secrets" in API group "" in the namespace "default"  duration=548.0062ms job=552009999 
从错误消息中,我发现名称空间需要更新。我在Gitlab变量中指定了名称空间


但在此之后,管道也会失败,并显示上述错误消息。如何更改运行程序的命名空间?

这似乎与服务帐户的权限有关,而不是直接与命名空间有关。如果使用GitLab的Kubernetes集成,则不应重写名称空间,因为GitLab将为您创建一个名称空间

确保添加到GitLab的服务帐户具有正确的角色。发件人:

当GitLab创建集群时,会在默认命名空间中创建一个具有集群管理员权限的GitLab服务帐户来管理新创建的集群


你可能和我有同样的问题。我没有使用
helm install
将Gitlab Runner安装到现有的Kubernetes集群中,而是使用
helm template
和另一个管理器来安装它()。这破坏了Helm模板中的逻辑,该模板将名称空间指定为
Helm安装中使用的名称空间。这导致运行程序尝试在
default
名称空间中创建pod,而不是我创建的名称空间。我可以在我的
values.yml
文件中手动指定它,不过:

runners:
  namespace: my-namespace

是的,我完全同意。这是RBAC问题,而不是名称空间问题