kubernetes - 如何在 gitlab ci 中修复 k8s 命名空间权限
问题描述
当我在玩 K8s 部署和 Gitlab CI 时,我的部署陷入了状态ContainerStarting
。
为了重置它,我删除了 K8s 命名空间,使用kubectl delete namespaces my-namespace
.
现在我的 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);
现在您可以重新启动管道,并将读取命名空间和服务帐户。
推荐阅读
- php - 在 laravel 中获取每个用户的页面浏览量的最佳方法是什么
- c# - 如何在元素字符串上编写和编辑稍后的字符串
- game-maker-language - 在 GameMaker Studio 2 中,从另一个房间检索非持久对象
- wordpress - 在 Wordpress 中注册后自动将用户添加到组
- flutter - 嵌套滚动条问题:NestedScrollView、SliverAppBar、SliverPersistentHeader、TabBarView 和 PageView
- html - Bootsrap 4 响应式列并隐藏在移动设备上
- ios - 在没有 Xcode 的情况下将 Unity 项目构建到 iOS 中
- javascript - 如何在一个标签Ext.tab.Panel 中输出两个Ext.grid.Panel。extjs
- javascript - chart.js - 用户添加线的最后一点
- node.js - 不抛出超时错误的 Node.js 托管服务提供商