使用Jenkins的GKE / Kubernetes CI / CD管道:部署阶段的Gcloud身份验证问题

时间:2017-07-11 17:19:22

标签: jenkins kubernetes gcloud

作为Jenkins管道构建和部署应用程序到Google的Kubernetes服务(GKE)的一部分,我创建了一个脚本来执行以下部署到GKE:

  • 结帐代码
  • 设置身份验证到gcloud和
  • 使用kubectl创建部署和服务:

脚本实施的详细步骤如下:

a) Create the docker registry authentication file (.json)
b) login to the google docker registry using the authentication file
c) initialise a git repo in the current directory
d) add the remote origin in prep for code pull
e) pull the source code for the microservice container
f) Create a kubectl configurtion file and directory to authenticate to the kubernetes cluster in Gcloud
g) Create a keyfile for a Gcloud service account that needs to authenticate to the container service
h) Activate the service account
i) Get the credentials for the container cluster from Gcloud
j) Run kubectl apply to create the kubernetes services

完整且经过测试的脚本:https://pastebin.com/sZPrQuzD

如果我将这一系列步骤放在AWS EC2实例上的脚本中并手动运行它就可以了。但是,在调用kubectl来运行服务时,Jenkins构建步骤失败,并出现以下错误:

gcloud container clusters get-credentials jenkins-cd --zone europe-west1-b --project noon-prod
Fetching cluster endpoint and auth data.
ERROR: (gcloud.container.clusters.get-credentials) ResponseError:   code=403, message=Request had insufficient authentication scopes.
Build step 'Execute shell' marked build as failure

Jenkins运行的完整错误转储如下:

https://pastebin.com/pSWPQ5Ei

我的问题:

a)如何解决这个问题?当然,从詹金斯那里获得认证是不是很难?

b)这是从Jenkins系统验证gcloud容器服务的正确方法吗?Jenkins系统根本不在Gcloud基础设施上?

非常感谢您的任何帮助! 特拉亚诺

1 个答案:

答案 0 :(得分:1)

我们正在开发一个名为Jenkins X的开源项目,该项目是Jenkins基金会的一个拟议子项目,旨在使用Jenkins和GitOps进行促销,自动化Kubernetes上的CI / CD。

我们通过在kubernetes集群中运行Jenkins管道来解决您遇到的一些问题;因此无需使用GKE进行身份验证。

当您将更改合并到主分支时,Jenkins X会为您的应用创建一个新的语义版本分发(pom.xml,jar,docker image,helm chart)。然后,管道自动生成Pull请求,以通过GitOps在所有环境中推广您的应用程序。

使用Spring Boot和nodejs应用程序(但我们支持多种语言+框架),环境和Pull请求预览环境之间的升级a demo of how to automate CI/CD with multiple environments on Kubernetes using GitOps