首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从公共CI服务器在GKE中部署应用程序

如何从公共CI服务器在GKE中部署应用程序
EN

Stack Overflow用户
提问于 2017-05-27 21:30:23
回答 2查看 793关注 0票数 2

我试图在运行ContainerOS的GKE1.6.2集群中部署一个应用程序,但是网站/ k8s上的说明已经不准确了。

我得到的错误是:

代码语言:javascript
复制
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)

应用程序的存储库在这里可用,可在这里找到

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-28 00:38:06

过去,我通过使用gcloud工具对kubectl进行集群身份验证而发生了一些重大变化,因此我最终想出了如何将kubectl独立于GKE的特定命名空间。下面是对我有用的东西:

在CircleCI上:

代码语言:javascript
复制
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
}

这是我如何从库贝克尔得到每个敌人的方法。

代码语言:javascript
复制
kubectl get serviceaccounts $namespace -o json

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

代码语言:javascript
复制
"secrets": [
    {
        "name": "default-token-655ls"
    }
] 

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

代码语言:javascript
复制
kubectl get secrets $secret_name -o json

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

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

在CI上运行setup_kubectl之后,您的kubectl实用程序将被验证到要部署到的名称空间。

票数 2
EN

Stack Overflow用户

发布于 2017-05-27 23:11:19

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44221785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档