【问题标题】:kubectl delete/create secret forbidden (Google cloud platform)kubectl delete/create secret 禁止(谷歌云平台)
【发布时间】:2018-10-05 12:08:41
【问题描述】:

我正在关注以下关于使用 gitlab 和 Kubernetes 进行持续集成的教程(在我的例子中是在谷歌云上):https://about.gitlab.com/2016/12/14/continuous-delivery-of-a-spring-boot-application-with-gitlab-ci-and-kubernetes/

在本教程的某些时候,您必须先删除然后为 Gitlab 的图像注册表创建一个秘密:

- kubectl delete secret registry.gitlab.com
- kubectl create secret docker-registry registry.gitlab.com --docker-server=https://registry.gitlab.com --docker-username=$REGISTRY_USERNAME --docker-password=$REGISTRY_PASSWD --docker-email=$EMAIL

这一步出了问题,我收到以下错误:

Error from server (Forbidden): secrets "registry.gitlab.com" is forbidden: User "client" cannot delete secrets in the namespace "default": Unknown user "client"
Error from server (Forbidden): secrets is forbidden: User "client" cannot create secrets in the namespace "default": Unknown user "client"

我在 Google Cloud Shell 中遇到了同样的错误:

添加以下行并没有真正帮助,我仍然收到创建错误(我也 100% 确定删除也会“崩溃”,但“2>/dev/null”只是使其移至创建步骤):

kubectl delete secret registry.gitlab.com 2>/dev/null || echo "secret does not exist"

我做错了什么?提前谢谢!

【问题讨论】:

    标签: docker kubernetes google-cloud-platform kubectl


    【解决方案1】:

    运行gcloud config unset container/use_client_certificate

    在此注销并登录之后。它应该工作。当您在集群设置中禁用旧版授权时会发生这种情况,因为您使用的客户端证书是旧版身份验证方法

    【讨论】:

    • 这是我在教程中的评论,如果我添加该行不会在删除时崩溃,但会在创建密钥时崩溃:'来自服务器的错误(禁止):禁止机密:用户“client”无法在命名空间“default”中创建机密:未知用户“client”'
    • 您使用什么类型的帐户来执行这些操作?您使用的是服务帐号吗?
    • 我创建了一个“Compute Engine 默认服务帐户”,如教程中所示。奇怪的是,在较旧的 git repo 中,创建和删除秘密是有效的。我重新创建了我的 git repo (maven --> gradle),现在我遇到了这种情况。
    • 这样做。不适用于生产级代码。因为这将使管理员可以访问所述服务帐户。 kubectl create clusterrolebinding serviceaccounts-cluster-admin--clusterrole=cluster-admin --group=system:serviceaccounts 这将确保您有权创建秘密。
    • 我收到“错误:必须指定集群角色”。我应该将 clusterrole 设置为什么?
    猜你喜欢
    • 2020-06-02
    • 2020-12-18
    • 2020-06-17
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2020-08-06
    • 2018-09-26
    • 1970-01-01
    相关资源
    最近更新 更多