kubernetes - 如何在 gitlab ci 中修复 k8s 命名空间权限

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

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

最佳答案

就我而言,我不得不删除 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/

相关文章:

kubernetes - 具有服务帐户 token 的Kubernetes kubeconfig

docker - 带有多容器 kubernetes pod 的 GitLab CI 管道

terraform - 如何从命令行获取 Gitlab 运行者注册 token ?

kubernetes - 如何在 kubernetes 中部署 docker 镜像的特定标签

docker - Kubernetes:代码变化没有出现,有同步的方法吗?

heroku - Gitlab CI/CD env var availabel only on master

GitLab CI 如何使用此处的文档将 JSON 数据发布到 CI 作业中的 url?

gitlab - 在 gitlab-ci 中停止启动的后台服务(phantomjs)

kubernetes - Kubernetes集群从Google Container Engine中消失了

spring - 如何在 kubernetes 中连接 headless Mongo Service