我试图在运行ContainerOS的GKE1.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)应用程序的存储库在这里可用,可在这里找到。
谢谢。
发布于 2017-05-28 00:38:06
过去,我通过使用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 get serviceaccounts $namespace -o json服务帐户将包含其秘密的名称。在我的例子中,对于默认的命名空间,它是
"secrets": [
{
"name": "default-token-655ls"
}
] 用这个名字,我得到了秘密的内容
kubectl get secrets $secret_name -o json秘密将包含ca.crt和token字段,它们与上面的shell脚本中的$KUBE_CA_PEM和$KUBE_TOKEN匹配。
最后,使用kubectl cluster-info获取$KUBE_URL值。
在CI上运行setup_kubectl之后,您的kubectl实用程序将被验证到要部署到的名称空间。
发布于 2017-05-27 23:11:19
在Kubernetes 1.6和GKE中,我们引入了基于角色的进程控制。您的作者需要让服务帐户能够获得部署(可能还有其他几个)来创建它的帐户。
https://stackoverflow.com/questions/44221785
复制相似问题