
准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create the lab resources
/ 20
Create the Cloud Build Triggers
/ 20
Deploy the first versions of the application
/ 20
Deploy the second versions of the application
/ 20
Roll back the production deployment
/ 20
在实验室挑战赛中,我们会为您提供一个场景和一系列任务。您将使用从课程的各个实验中学到的技能自行确定如何完成这些任务,而不是按照分步说明进行操作。自动评分系统(显示在本页面中)会提供有关您是否已正确完成任务的反馈。
在您参加实验室挑战赛期间,我们不会再教授新的 Google Cloud 概念知识。您需要拓展所学的技能,例如通过更改默认值和查看并研究错误消息来更正您自己所犯的错误。
要想获得满分,您必须在该时间段内成功完成所有任务!
我们建议已报名参加在 Google Cloud 中实施 DevOps 工作流课程的学员参加此实验室挑战赛。准备好接受挑战了吗?
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
需要有 GitHub 账号方可完成此实验。如果您已经有账号,可以使用该账号。如果没有,则需要创建 GitHub 账号
几个月前,您加入了 Cymbal Superstore,成为一名 DevOps 工程师。现在,您已了解该公司运营其电子商务网站的各个方面。公司的 DevOps 团队正在开发一个大规模 CI/CD 流水线,他们希望您协助完成构建工作。这样,公司就可以为开发者提供帮助,实现任务自动化、与其他团队进行更有效的协作以及更频繁、更可靠地发布软件。由于 Cymbal Superstore 希望在其流水线中使用所有原生 Google Cloud 服务,因此您在 GitHub、Artifact Registry、Docker 和 Cloud Build 方面的经验有很大的帮助。
在您开始此项目之前,DevOps 团队希望您展示一下自己的新技能。在此展示过程中,他们会列出一系列任务,并要求您在沙盒环境中于分配的时间内完成。
您的任务包括:
总的来说,您将使用 GitHub 代码库、Artifact Registry 和 Cloud Build 来创建一个简单的 CI/CD 流水线。
在本部分中,您将为展示环境初始化 Google Cloud 项目。您需要执行以下操作:启用所需的 API、在 Cloud Shell 中配置 Git、创建 Artifact Registry Docker 仓库和一个 GKE 集群来运行生产和开发应用。
在 Cloud Shell 中运行以下命令,配置 Git 和 GitHub:
成功登录后,您的 GitHub 用户名会显示在 Cloud Shell 的输出中。
在
创建名为 hello-cluster
并采用以下配置的 GKE Standard 集群:
设置 | 值 |
---|---|
可用区 | |
发布渠道 | 常规 |
集群版本 |
1.29 或更高版本
|
集群自动扩缩程序 | 已启用 |
节点数 | 3 |
节点数下限 | 2 |
节点数上限 | 6 |
prod
和 dev
命名空间。点击“检查我的进度”以验证是否完成了以下目标:
在此任务中,您将在 GitHub 代码库中创建一个代码库 sample-app,并使用一些示例代码对其进行初始化。此代码库用于存储您的 Go 应用代码,是触发 build 的主要来源。
在 GitHub 代码库中创建一个名为 sample-app 的空代码库。
在 Cloud Shell 中克隆 GitHub 代码库 sample-app。
使用以下命令将示例代码复制到 sample-app
目录中:
cloudbuild-dev.yaml
和 cloudbuild.yaml
文件中的 <your-region>
和 <your-zone>
占位符替换为您项目的已分配区域和可用区:创建一个名为 sample-app
的 GitHub 代码库
创建代码库后,使用添加到 sample-app
目录中的示例代码进行首次提交,然后将更改推送到 master 分支。
创建一个名为 dev 的分支。使用添加到 sample-app
目录中的示例代码进行提交,然后将更改推送到 dev 分支。
验证您已将示例代码和分支存储在 GitHub 代码库中。
您刚刚克隆的代码包含一个简单的 Go 应用,该应用有两个入口点:Red 和 Blue。每个入口点都会在网页上显示一个简单的彩色方块,具体取决于您前往的入口点。
在本部分中,您将创建两个 Cloud Build 触发器。
第一个触发器用于监听 master
分支上的更改,构建应用的 Docker 映像并将其推送到 Google Artifact Registry,然后将该映像的最新版本部署到 GKE 集群中的 prod 命名空间。
第二个触发器用于监听 dev
分支上的更改,构建应用的 Docker 映像并将其推送到 Google Artifact Registry,然后将该映像的最新版本部署到 GKE 集群中的 dev 命名空间。
创建名为 sample-app-prod-deploy 并采用以下配置的 Cloud Build 触发器:
GitHub(Cloud Build GitHub 应用)
sample-app
^master$
cloudbuild.yaml
创建名为 sample-app-dev-deploy 并采用以下配置的 Cloud Build 触发器:
sample-app
^dev$
cloudbuild-dev.yaml
设置触发器后,对分支所做的任何更改都会触发相应的 Cloud Build 流水线,该流水线会按照 cloudbuild.yaml
文件中指定的方式构建和部署应用。
点击“检查我的进度”以验证是否完成了以下目标:
在本部分中,您将构建生产应用和开发应用的第一个版本。
在 Cloud Shell 中,检查位于 sample-app 目录中的 cloudbuild-dev.yaml
文件,查看构建流程中的各个步骤。在 cloudbuild-dev.yaml
文件中,将第 9 行和第 13 行的 <version>
替换为 v1.0
。
找到 dev/deployment.yaml
文件,并使用正确的容器映像名称更新第 17 行中的 <todo>
。此外,将容器映像名称中的 PROJECT_ID
变量替换为实际的项目 ID。
提交您对 dev
分支的更改,并推送更改以触发 sample-app-dev-deploy 构建作业。
在 Cloud Build 历史记录页面中验证您的 build 已成功执行,并验证 development-deployment 应用已部署到集群的 dev
命名空间。
在端口 8080 上将 development-deployment 部署公开给名为 dev-deployment-service
的 LoadBalancer 服务,并将容器的目标端口设置为 Dockerfile 中指定的端口。
找到服务的负载均衡器 IP,然后在网址末尾添加 /blue
入口点,以验证应用已启动并正常运行。修改后的网址应该类似于以下内容:http://34.135.97.199:8080/blue
。
切换到 master
分支。检查位于 sample-app 目录中的 cloudbuild.yaml
文件,查看构建流程中的各个步骤。在 cloudbuild.yaml
文件中,将第 11 行和第 16 行中的 <version>
替换为 v1.0
。
找到 prod/deployment.yaml
文件,并使用正确的容器映像名称更新第 17 行中的 <todo>
。此外,将容器映像名称中的 PROJECT_ID
变量替换为实际的项目 ID。
提交您对 master
分支的更改,并推送更改以触发 sample-app-prod-deploy 构建作业。
在 Cloud Build 历史记录页面中验证您的 build 已成功执行,并验证 production-deployment 应用已部署到集群的 prod
命名空间。
在端口 8080 上将 prod
命名空间中的 production-deployment 部署公开给名为 prod-deployment-service
的 LoadBalancer 服务,并将容器的目标端口设置为 Dockerfile 中指定的端口。
找到服务的负载均衡器 IP,然后在网址末尾添加 /blue
入口点,以验证应用已启动并正常运行。修改后的网址应该类似于以下内容:http://34.135.245.19:8080/blue
。
点击“检查我的进度”以验证是否完成了以下目标:
在本部分中,您将构建生产应用和开发应用的第二个版本。
dev
分支。main.go
文件中,将 main()
函数更新为以下内容:main.go
文件中添加以下函数:检查 cloudbuild-dev.yaml
文件,查看构建流程中的各个步骤。将 Docker 映像的版本更新为 v2.0
。
找到 dev/deployment.yaml
文件,并将容器映像名称更新为新版本 (v2.0
)。
提交您对 dev
分支的更改,并推送更改以触发 sample-app-dev-deploy 构建作业。
在 Cloud Build 历史记录页面中验证您的 build 已成功执行,并验证 development-deployment 应用已部署到集群的 dev
命名空间且正在使用 v2.0
映像。
找到服务的负载均衡器 IP,然后在网址末尾添加 /red
入口点,以验证应用已启动并正常运行。修改后的网址应类似于以下内容:http://34.135.97.199:8080/red
。
master
分支。main.go
文件中,将 main()
函数更新为以下内容:main.go
文件中添加以下函数:检查 cloudbuild.yaml
文件,查看构建流程中的各个步骤。将 Docker 映像的版本更新为 v2.0
。
找到 prod/deployment.yaml
文件,并将容器映像名称更新为新版本 (v2.0
)。
提交您对 master
分支的更改,并推送更改以触发 sample-app-prod-deploy 构建作业。
在 Cloud Build 历史记录页面中验证您的 build 已成功执行,并验证 production-deployment 应用已部署到集群的 prod
命名空间且正在使用 v2.0
映像。
找到服务的负载均衡器 IP,然后在网址末尾添加 /red
入口点,以验证应用已启动并正常运行。修改后的网址应该类似于以下内容:http://34.135.245.19:8080/red
。
太棒了!您已成功创建能够正常运行的生产和开发 CI/CD 流水线。
点击“检查我的进度”以验证是否完成了以下目标:
在本部分中,您需要将生产部署回滚到之前的版本。
v1.0
版本。/red
入口点,页面上的响应应为 404
。点击“检查我的进度”以验证是否完成了以下目标:
恭喜!在本挑战赛中,您证明了自己在 Google Cloud 中实施 DevOps 工作流的技能。您首先创建了一个 GKE 集群来运行您的应用,并创建了一个 Git 代码库来托管您的代码库。然后,您创建了 Cloud Build 触发器,修改了代码和模板,并将更新推送到创建了您的第一个开发和生产应用 build 的代码库。接下来,您将更新推送到应用以创建新 build,并将生产应用回滚到之前的版本。现在,您可以开始在自己的环境中开展 DevOps 工作了!
本自学实验是在 Google Cloud 中实施 DevOps 工作流课程的组成部分。完成此技能徽章课程可赢得上面的徽章,以表彰您取得的成就。您可以在简历和社交平台中分享自己的徽章,并使用 #GoogleCloudBadge 让大家知道您取得的这一成就。
此技能徽章课程是 Google Cloud 的云 DevOps 工程师学习路线的组成部分。您可以报名参加使用 Google Cloud Observability 进行监控和记录课程,以继续深入学习。
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册的最后更新时间:2024 年 6 月 26 日
本实验的最后测试时间:2024 年 6 月 26 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验