本教程介绍如何在 Google Kubernetes Engine (GKE) 上设置 Jenkins 以帮助编排您的软件交付流水线。
目标
- 使用 GKE 创建 Kubernetes 集群。
- 使用 Helm 安装 Jenkins。
- 连接到 Jenkins。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
- Google Kubernetes Engine
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the GKE APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the GKE APIs.
准备环境
首先,准备部署环境。
激活 Cloud Shell。Cloud Shell 让您能够使用 Google Cloud 控制台中的命令行,并且还包含进行 Google Cloud 开发所需的 gcloud CLI 及其他工具。Cloud Shell 可能需要几分钟才能完成预配。
完成此过程后,您将看到以下输出:
Welcome to Cloud Shell! Type "help" to get started.
克隆示例代码:
git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git
Git 代码库包含要用于部署 Jenkins 的 Kubernetes 清单。要了解这些清单及其设置,请参阅为 GKE 配置 Jenkins。
导航到示例代码目录:
cd continuous-deployment-on-kubernetes
创建 GKE 集群
预配 GKE 集群。此步骤可能需要几分钟才能完成。
gcloud container clusters create jenkins-cd \ --zone us-east1-d --scopes cloud-platform
cloud-platform
范围使 Jenkins 能够访问 Cloud Source Repositories 和 Container Registry。确认您可以连接到集群。
kubectl cluster-info
如果能够成功连接到集群,则输出类似以下内容:
Kubernetes control plane is running at https://35.196.84.95 GLBCDefaultBackend is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy KubeDNS is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy Metrics-server is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
将自己添加为集群的 RBAC 集群管理员,以便能在集群中授予 Jenkins 权限:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin --user=$(gcloud config get-value account)
安装 Jenkins
使用 Helm 通过代码库部署 Jenkins。
添加 Jenkins Helm 图表代码库:
helm repo add jenkinsci https://charts.jenkins.io helm repo update
您使用自定义值文件来配置 Jenkins 安装。如需详细了解配置,请查看 jenkins/values.yaml
文件。
使用 Helm CLI 通过您的配置集来部署图表:
helm install cd-jenkins -f jenkins/values.yaml jenkinsci/jenkins --wait
如需详细了解如何配置 Jenkins 安装,请参阅 Jenkins 图表的文档页面。
确保 Jenkins pod 变为
Running
状态且容器处于READY
状态:kubectl get pods
您将在
READY
列中看到2/2
,在STATUS
列中看到Running
。Jenkins 可能需要几分钟才能完成初始化。NAME READY STATUS RESTARTS AGE cd-jenkins-0 2/2 Running 0 6m30s
检查已正确创建 Kubernetes 服务。
kubectl get svc
输出类似以下内容:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE cd-jenkins 10.35.249.67 <none> 8080/TCP 3h cd-jenkins-agent 10.35.248.1 <none> 50000/TCP 3h kubernetes 10.35.240.1 <none> 443/TCP 9h
Jenkins 安装项要使用 Kubernetes 插件来创建构建器代理。当 Jenkins 主节点需要运行构建项时,系统将根据需要自动启动这些代理。操作完成后,它们将自动终止且其资源将重新添加到集群的资源池。
连接到 Jenkins
通过 Cloud Shell 设置转发到 Jenkins 界面的端口:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=jenkins-master" -l "app.kubernetes.io/instance=cd-jenkins" -o jsonpath="{.items[0].metadata.name}") kubectl port-forward $POD_NAME 8080:8080 >> /dev/null 2>&1 &
要打开 Jenkins 用户界面,请点击 Cloud Shell 中的网页预览,然后点击在端口 8080 上预览 (Preview on port 8080)。
您现在可以访问 Jenkins 和 GKE。如需更进一步使用此解决方案,您可以在持续交付流水线中使用这些组件。
清除数据
完成本教程后,请清理在 GCP 上创建的资源,避免日后再为这些资源付费。
删除项目
为了避免产生费用,最简单的方法是删除您为本教程创建的项目。
如需删除项目,请执行以下操作:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
删除 GKE 集群
- 删除 GKE 集群:
gcloud container clusters delete jenkins-cd --zone us-east1-d
后续步骤
详细了解 GKE 上的 Jenkins 的最佳做法。
了解如何为 GKE 配置 Jenkins。
探索有关 Google Cloud 的参考架构、图表、教程和最佳做法。查看我们的 Cloud Architecture Center。