如何在gitlab ci中修复k8s名称空间权限

时间:2019-06-14 18:08:48

标签: kubernetes gitlab-ci

在我处理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创建了带有一些参数和权限的命名空间(但我不知道确切的时间和方式),由于我的删除,现在丢失了。

有人知道如何解决此问题吗?

4 个答案:

答案 0 :(得分:1)

手动删除名称空间会导致从Gitlab删除必要的秘密。看来它们是在有史以来的首次部署中自动创建的,不可能重复该过程。

我必须创建一个新的仓库并进行推送。现在一切正常。

答案 1 :(得分:1)

在我的情况下,我必须删除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);

现在您可以重新启动管道,并且名称空间和服务帐户将被读取。

答案 2 :(得分:0)

另一种解决方案是从Gitlab中删除集群(在仓库中的操作/ kubernetes下)并重新添加。

答案 3 :(得分:0)

从 GitLab 12.6 开始,您只需clear the cluster cache

<块引用>

清除缓存:

  1. 导航到您项目的操作 > Kubernetes 页面,然后选择您的集群。
  2. 展开高级设置部分。
  3. 点击清除集群缓存。

这可以避免丢失机密并可能影响其他应用程序。