在我处理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创建了带有一些参数和权限的命名空间(但我不知道确切的时间和方式),由于我的删除,现在丢失了。
有人知道如何解决此问题吗?
答案 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。
<块引用>清除缓存:
这可以避免丢失机密并可能影响其他应用程序。