【问题标题】:How to deploy an application in GKE from a public CI server如何从公共 CI 服务器在 GKE 中部署应用程序
【发布时间】:2017-05-28 08:38:06
【问题描述】:

我正在尝试在运行 ContainerOS 的 GKE 1.6.2 集群中部署应用程序,但网站/k8s 上的说明不再准确。

我得到的错误是:

Error from server (Forbidden): User "circleci@gophers-slack-bot.iam.gserviceaccount.com"
cannot get deployments.extensions in the namespace "gopher-slack-bot".:
"No policy matched.\nRequired \"container.deployments.get\" permission." 
(get deployments.extensions gopher-slack-bot)

该应用程序的存储库可在此处获得 available here

谢谢。

【问题讨论】:

    标签: kubernetes google-kubernetes-engine


    【解决方案1】:

    过去,我在使用 gcloud 工具向集群验证 kubectl 时进行了一些重大更改,因此我最终弄清楚了如何将 kubectl 验证到独立于 GKE 的特定命名空间。这对我有用:

    在 CircleCI 上:

    setup_kubectl() {
    echo "$KUBE_CA_PEM" | base64 --decode > kube_ca.pem
    kubectl config set-cluster default-cluster --server=$KUBE_URL --certificate-authority="$(pwd)/kube_ca.pem"
    kubectl config set-credentials default-admin --token=$KUBE_TOKEN
    kubectl config set-context default-system --cluster=default-cluster --user=default-admin --namespace default
    kubectl config use-context default-system
    }
    

    以下是我从 kubectl 获取每个环境变量的方法。

    kubectl get serviceaccounts $namespace -o json
    

    服务帐户将包含其密码的名称。在我的例子中,使用默认命名空间,它是

    "secrets": [
        {
            "name": "default-token-655ls"
        }
    ] 
    

    使用名字,我得到了秘密的内容

    kubectl get secrets $secret_name -o json
    

    秘密将包含ca.crttoken 字段,它们与上面的shell 脚本中的$KUBE_CA_PEM$KUBE_TOKEN 匹配。

    最后,使用kubectl cluster-info 获取$KUBE_URL 值。

    在 CI 上运行 setup_kubectl 后,您的 kubectl 实用程序将通过您要部署到的命名空间的身份验证。

    【讨论】:

    • 这解决了它。正如@aronchick 指出的那样,我确信有更多的阅读内容,但现在它可以工作。非常感谢。
    • 我必须向我的服务用户添加“Kubernetes Engine Admin”权限,以允许 kubectl 获取此权限;否则 => 没有匹配的策略。\n需要 \"container.secrets.get\" 权限。"
    【解决方案2】:

    在 Kubernetes 1.6 和 GKE 中,我们引入了基于角色的进程控制。您的作者需要让服务帐户能够获得部署(可能还有很多其他帐户)来创建帐户。

    https://kubernetes.io/docs/admin/authorization/rbac/

    【讨论】:

      猜你喜欢
      • 2020-08-05
      • 1970-01-01
      • 2018-08-03
      • 2011-02-13
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      相关资源
      最近更新 更多