当我在玩 K8s 部署和 Gitlab CI 时,我的部署陷入了状态 ContainerStarting
.
为了重置它,我使用 kubectl delete namespaces my-namespace
删除了 K8s 命名空间。 .
现在我的 Gitlab 运行者向我展示了
$ ensure_namespace
Checking namespace [MASKED]-docker-3
error: the server doesn't have a resource type "namespace"
error: You must be logged in to the server (Unauthorized)
我认为这与 RBAC 有关系,而且很可能 Gitlab 使用一些参数和权限创建了该命名空间(但我不知道确切的时间和方式),由于我的删除,这些现在丢失了。
有人知道如何解决这个问题吗?
最佳答案
就我而言,我不得不删除 Gitlab 数据库中的命名空间,因此 gitlab 会读取服务帐户和命名空间:
在 gitlab 机器或任务运行器上输入 PostgreSQL 控制台:
gitlab-rails dbconsole -p
然后选择数据库:
\c gitlabhq_production
下一步是找到被删除的命名空间:
SELECT id, namespace FROM clusters_kubernetes_namespaces;
取命名空间的 id 删除它:
DELETE FROM clusters_kubernetes_namespaces WHERE id IN (6,7);
现在您可以重新启动管道,命名空间和服务帐户将被读取。
关于kubernetes - 如何在 gitlab ci 中修复 k8s 命名空间权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56603234/