我正在尝试将CircleCi与gcloud Kubernetes引擎集成。
1.我创建了一个具有Kubernetes Engine Developer和Storage Admin角色的服务帐户。
1.创建CircleCi yaml文件并配置CI。
我的yaml文件的一部分包括:
docker:
- image: google/cloud-sdk
environment:
- PROJECT_NAME: 'my-project'
- GOOGLE_PROJECT_ID: 'my-project-112233'
- GOOGLE_COMPUTE_ZONE: 'us-central1-a'
- GOOGLE_CLUSTER_NAME: 'my-project-bed'
steps:
- checkout
- run:
name: Setup Google Cloud SDK
command: |
apt-get install -qq -y gettext
echo $GCLOUD_SERVICE_KEY > ${HOME}/gcloud-service-key.json
gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE}
gcloud --quiet container clusters get-credentials ${GOOGLE_CLUSTER_NAME}
一切都运行得很好,除了最后一个命令:
gcloud --quiet container clusters get-credentials ${GOOGLE_CLUSTER_NAME}
它一直失败,并出现错误:
ERROR: (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/my-project-112233/zones/us-central1-a/clusters/my-project-bed". See https://cloud.google.com/kubernetes-engine/docs/troubleshooting#gke_service_account_deleted for more info.
我试图给予ci帐户项目所有者的角色,但我仍然得到了那个错误。
我尝试禁用并重新启用Kubernetes服务,但没有帮助。
有办法解决吗?我花了4天时间来解决这个问题...
9条答案
按热度按时间vxqlmq5t1#
这是一个旧的线程,这是今天使用cloud build时处理此问题的方式:
授予GKE Cloud Build访问权限
要在Kubernetes集群中部署应用程序,Cloud Build需要Kubernetes Engine Developer Identity and Access Management Role。
获取项目编号:
添加IAM策略绑定:
更多信息可以在这里找到。
2exbekwf2#
我相信这不是CI服务帐户,而是用于管理GKE集群的k8s服务帐户,其电子邮件应该如下所示(一定是有人删除了它):
您可以重新创建它并给予它项目所有者权限。
owfi6suc3#
在我的情况下,这两个步骤解决了我的问题:
1.在命令中,
--project
应该具有projectID值,而不是项目名称1.在你的travis账户中,进入你的项目仓库->更多选项->设置->环境变量。现在确保你只有一组encrypted_iv和encrypted_key环境变量,如下所示:
如果您加密了不同的服务帐户(json密钥文件),这可能会添加多组encrypted_iv和encrypted_key环境变量。因此,删除所有这些变量并重新创建加密的密钥,可以使用
travis encrypt-file --pro yourServiceAccountJSONFile.json --add
wyyhbhjk4#
上述错误的详细信息在此帮助中心文章中进行了解释。
要添加Kubernetes Engine Service帐户(如果您没有),请运行以下命令,以正确地重新创建具有“Kubernetes Engine Service Agent”角色的Kubernetes Service帐户,
qnyhuwrf5#
步骤1:gcloud init
步骤2:选择[2]创建新配置
步骤3:输入配置名称。名称以小写字母开头,仅包含小写字母a-z、数字0-9和连字符'-':kubernetes-service-account
第4步:选择您要用于执行此配置操作的帐户:[2]使用新帐户登录
第5步:是否继续(Y/N)?y
第6步:复制粘贴链接到brwoser,并使用用于创建Google Cloud帐户的ID登录
第7步:复制登录后google提供的验证码,并粘贴到控制台。
第8步:选择要使用的云项目:用途:
第9步:是否要配置默认计算区域和分区?(是/否)是
第10步:请输入数字选项或文本值(必须与列表项完全匹配):8
您的Google Cloud SDK已配置完毕,可以使用了!
jv4diomz6#
我有这个问题使用gcloud与我的主要所有者帐户(!)
修复它的方法是在命令中包含
--zone
和--project
参数以获取kubectl凭据。suzh9iv87#
我在不同的情况下面临这个问题,下面列出它,希望它能帮助到别人。
ryevplcw8#
当我尝试连接到我新创建的集群时,我得到了相同的错误:
我尝试了几件事:
1.我启用了Kuberentes API -没有成功
1.我添加了一个密钥到服务帐户,并使用下载的密钥登录:
1.我跑:
1.然而,我在检索数据时遇到了问题,所有kubectl命令都给出了TLS握手超时,例如:
kubectl get namespace
出现错误:1.这是我再次尝试的时候:
和它的工作
t8e9dugd9#
我犯了这个错误。问题是,我已经用一个谷歌帐户配置了gloud,我正试图连接到我在另一个谷歌帐户上创建的集群。
解决方案:只需重置gcloud配置并添加新的google帐户即可。
做:
并按照您在终端中看到的步骤重置和添加新帐户。