arrow_back

借助 Gemini 实现持续交付

登录 加入
访问 700 多个实验和课程

借助 Gemini 实现持续交付

实验 1 小时 30 分钟 universal_currency_alt 5 个积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

概览

在本实验中,您将使用 Gemini(Google Cloud 中依托 AI 技术的协作工具)来调查日志并为 Google Kubernetes Engine (GKE) 中的一组微服务设置构建环境。

本实验面向在 DevOps 环境中工作的工程师,不限经验水平。

注意:Duet AI 已更名为 Gemini,这是我们的新一代模型。此实验已更新,以反映此变化。在按照实验说明操作时,界面或文档中任何提到 Duet AI 的地方都应视为指的是 Gemini。 注意:作为一项尚处于早期发展阶段的技术,Gemini 可能会生成看似合理但实际上不正确的输出。我们建议您先验证 Gemini 的所有输出,然后再使用。如需了解详情,请参阅适用于 Google Cloud 的 Gemini 和 Responsible AI

目标

在本实验中,您将学习如何执行以下任务:

  • 在 Gemini 的帮助下创建 GKE 集群。
  • 将一组微服务部署到 GKE 中。
  • 借助 Gemini 查找并理解应用日志。
  • 使用 Gemini 调查如何创建专用构建环境。

设置

对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单导航菜单图标

激活 Cloud Shell

Cloud Shell 是一种包含开发工具的虚拟机。它提供了一个 5 GB 的永久性主目录,并且在 Google Cloud 上运行。Cloud Shell 可让您通过命令行访问 Google Cloud 资源。gcloud 是 Google Cloud 的命令行工具。它会预先安装在 Cloud Shell 上,且支持 Tab 键自动补全功能。

  1. 在 Google Cloud Console 的导航窗格中,点击激活 Cloud Shell (Cloud Shell 图标)。

  2. 点击继续
    预配和连接到环境需要一些时间。若连接成功,也就表明您已通过身份验证,且相关项目的 ID 会被设为您的 PROJECT_ID。例如:

Cloud Shell 终端

命令示例

  • 列出有效的帐号名称:

gcloud auth list

(输出)

Credentialed accounts: - <myaccount>@<mydomain>.com (active)

(输出示例)

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 列出项目 ID:

gcloud config list project

(输出)

[core] project = <project_ID>

(输出示例)

[core] project = qwiklabs-gcp-44776a13dea667a6

任务 1. 针对 Gemini 配置您的环境和账号

  1. 使用您的实验凭据登录 Google Cloud 控制台,并打开 Cloud Shell 终端窗口。

  2. 如需设置项目 ID 和区域环境变量,请在 Cloud Shell 中运行以下命令:

    PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|set at lab start}}} echo "PROJECT_ID=${PROJECT_ID}" echo "REGION=${REGION}"
  3. 如需将已登录的 Google 用户账号存储到环境变量中,请运行以下命令:

    USER=$(gcloud config get-value account 2> /dev/null) echo "USER=${USER}"
  4. 启用 Cloud AI Companion API 以便使用 Gemini:

    gcloud services enable cloudaicompanion.googleapis.com --project ${PROJECT_ID}
  5. 如需使用 Gemini,请为您的 Google Cloud Qwiklabs 用户账号授予必要的 IAM 角色:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/cloudaicompanion.user gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/serviceusage.serviceUsageViewer

    添加这些角色后,用户即可开始使用 Gemini 助手。

如需验证是否已完成以下目标,请点击检查我的进度 启用相关 API 并授予必要的 IAM 角色。

任务 2. 配置 Google Kubernetes Engine

在此任务中,您需要启用 Google Kubernetes Engine (GKE) API,并授予自己管理 GKE 集群和创建集群所需的权限。

  1. 在 Cloud Shell 中,运行以下命令来启用 GKE API:

    gcloud services enable container.googleapis.com --project ${PROJECT_ID}
  2. 如需为用户授予 GKE 管理员权限,请运行以下命令:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} --member user:${USER} --role=roles/container.admin

    您可以创建一个可用区级 GKE 集群来运行微服务。Gemini 可以告诉您如何创建该集群。

  3. 在 Google Cloud 控制台中,如果您没有看到打开或关闭 Gemini AI 聊天 (Gemini 菜单) 菜单,请刷新页面。

  4. 要打开 Gemini 窗格,请在 Google Cloud 控制台顶部菜单中点击打开或关闭 Gemini AI 聊天 (Gemini 菜单),并在需要时点击启用

  5. 点击开始聊天

    注意:如果开始聊天按钮未启用,请刷新页面,然后再次打开 Gemini。
  6. 输入以下文本作为给 Gemini 的提示,然后点击发送提示 (Gemini“Send”(发送)):

    What's the gcloud command for creating a zonal GKE cluster with a custom number of nodes and custom machine type?(应使用什么 gcloud 命令来创建包含自定义节点数量和自定义机器类型的可用区级 GKE 集群?)

    Gemini 的回答应类似如下:

    gcloud container clusters create <CLUSTER_NAME> \ --project=PROJECT_ID \ --zone=COMPUTE_ZONE \ --num-nodes=NUM_NODES \ --machine-type=MACHINE_TYPE
  7. 如需创建可用区级 GKE 集群,请运行以下命令:

    gcloud container clusters create test \ --project={{{project_0.project_id | set at lab start}}} \ --zone={{{project_0.default_zone | set at lab start}}} \ --num-nodes=3 \ --machine-type=e2-standard-4

    创建集群需要几分钟的时间。请等待命令完成。

如需验证是否已完成以下目标,请点击检查我的进度 配置 Google Kubernetes Engine。

任务 3. 使用 kubectl 部署一组微服务

在此任务中,您要克隆一个代码库,其中包含构成了一款在线精品店应用的几个微服务的代码。您还需要使用 kubectl 将这些微服务部署到 GKE 集群。

下面是该应用的架构图:

应用架构图

  1. 在 Cloud Shell 中,运行以下命令来克隆此代码库:

    git clone --depth=1 https://github.com/GoogleCloudPlatform/microservices-demo

    此代码库包含该应用中每个微服务的源代码。

  2. 若要将微服务部署到 GKE,请运行以下命令:

    cd ~/microservices-demo kubectl apply -f ./release/kubernetes-manifests.yaml
  3. 若要检查部署状态,请运行以下命令并在需要时重复,直到每个微服务都可用:

    kubectl get deployments

    当各微服务可用时,其在“Available”列中的对应值将设置为 1。kubectl get deployments 命令应如下所示:

    NAME READY UP-TO-DATE AVAILABLE AGE adservice 1/1 1 1 94s cartservice 1/1 1 1 96s checkoutservice 1/1 1 1 97s currencyservice 1/1 1 1 95s emailservice 1/1 1 1 97s frontend 1/1 1 1 97s loadgenerator 1/1 1 1 95s paymentservice 1/1 1 1 96s productcatalogservice 1/1 1 1 96s recommendationservice 1/1 1 1 97s redis-cart 1/1 1 1 94s shippingservice 1/1 1 1 95s

    该应用可通过其外部 IP 地址来访问。

  4. 若要确定该应用的网址,请运行以下命令:

    echo "http://$(kubectl get service frontend-external -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')" 注意:外部 IP 地址可能需要一分钟的时间才可用。请运行此命令并耐心等待,直到网址中包含 IP 地址。
  5. 若要在浏览器标签页中打开该应用,请按住“Control”键(Windows 和 Linux 系统中)或“Command”键(macOS 中),然后点击 Cloud Shell 中的网址。

    该应用的首页将会打开。您可以试用该应用。

    注意:如果您看到连接不安全的弹出式窗口,请点击继续访问网站

如需验证是否已完成以下目标,请点击检查我的进度 使用 kubectl 部署一组微服务。

任务 4. 通过 Gemini 理解 GKE 中的工作负载日志信息

假设您是一名 DevOps 工程师,并接管了一组现有的微服务。这些微服务在 GKE 集群中运行。为了解该环境,您决定检查各个微服务的日志。

在此任务中,您将借助 Gemini 来设计一些查询,以便搜索特定日志并解释日志条目。

  1. 在 Google Cloud 控制台标题栏的搜索字段中输入 Logs Explorer,然后点击搜索结果中的 Logs Explorer

  2. 输入以下文本作为给 Gemini 的提示,然后点击发送提示 (Gemini“Send”(发送)):

    What is a Logs Explorer query to search for logs from Pods in a namespace called "default" in a GKE cluster named "test"?(在名为“test”的 GKE 集群中,要从名为“default”的命名空间的 Pod 中搜索日志,应使用什么 Logs Explorer 查询?)

    您应该会收到类似如下所示的响应,其中为您提供了一个查询:

    resource.type="k8s_container" resource.labels.cluster_name="test" resource.labels.namespace_name="default" 注意:如果 Gemini 提供的查询与上面的不同,您可以使用此处的查询。
  3. 将该查询粘贴到查询框中,然后点击运行查询

    现在日志消息已被过滤,将仅显示来自“test”GKE 集群的消息。您现在可以查看日志条目了。

  4. 如需详细了解某个日志条目,请将其展开,然后点击说明此日志条目

    例如,您为日志条目“GET /product/0PUK6V6EV0”点击了该说明按钮,则可能会从 Gemini 收到类似如下内容的响应:

    • This is a log entry from a Kubernetes container named main.(这是来自名为“main”的 Kubernetes 容器的日志条目。) • The container is part of a pod named loadgenerator-84cc74dcd-jf6dr in the default namespace.(此容器是“default”命名空间中名为“loadgenerator-84cc74dcd-jf6dr”的 pod 的一部分。) • The pod is running on cluster test in zone us-west1-a.(此 pod 在可用区 us-west1-a 中的“test”集群上运行。) • The log entry is an HTTP request to /product/0PUK6V6EV0 that took 49 milliseconds to process.(此日志条目是对 /product/0PUK6V6EV0 的 HTTP 请求,处理用时 49 毫秒。) • The request resulted in a 200 OK response and 40 bytes of data being sent back to the client.(此请求生成了 200 OK 响应,并向客户端返回了 40 个字节的数据。)

    在查看工作负载的日志解释后,您现在决定设置基础设施,以便在一组不接入互联网的专用工作器上为团队构建未来的容器映像。

任务 5. 使用 Gemini 为容器映像创建专用构建环境

在此任务中,您将使用 Gemini 帮您了解如何创建及运行专用构建环境。

您负责为一个敏感项目设置构建系统。您听说 Cloud Build 是一项用于在 Google Cloud 上执行构建的服务,并且 Cloud Build 使用工作器池来运行构建。

  1. Gemini 对话中,输入以下提示来了解有关工作器池的更多信息:

    What is a Cloud Build worker pool?(什么是 Cloud Build 工作器池?)

    Gemini 可能会提供类似如下内容的回答:

    A Cloud Build worker pool is a group of virtual machines that are dedicated to running your builds. (Cloud Build 工作器池是一组专门用于运行构建的虚拟机。)Worker pools are created in a specific region and zone, and they can be either private or public.(工作器池位于特定的区域和可用区内,可设置为专用池或公共池。) Private pools are only accessible to your project, and they offer a number of benefits, including: • Isolation: Your builds will run on dedicated machines, which means that they will not be affected by other workloads running in the same project.(专用池仅供您的项目访问,它们有许多优点,包括: • 隔离:您的构建将在专用机器上运行,也就是说,它们不会受同一项目中运行的其他工作负载的影响。) • Security: Private pools are more secure than public pools, as they are not accessible to other projects.(• 安全:专用池比公共池更安全,因为它们不允许其他项目访问。) • Performance: Private pools can offer better performance than public pools, as they are not shared with other projects.(• 性能:专用池的性能比公共池更出色,因为它们不会与其他项目进行共享。)

    专用工作器池具有出色的安全性,所以对您的项目可能是一个不错的选择。如果能够禁止构建作业访问公共互联网,那就更好了。

  2. Gemini 对话中,输入以下提示:

    Can you create a private worker pool that has no access to the public internet?(你可以创建无法访问公共互联网的专用工作器池吗?)

    Gemini 可能会提供类似如下的响应:

    Yes, you can create a private worker pool that has no access to the public internet. (是的,您可以创建无法访问公共互联网的专用工作器池。)This is known as a "private pool with no public egress".(这类工作器池称为“无公共出站流量的专用池”。) 如需创建无公共出站流量的专用池,您可以在创建池时使用“--no-public-egress”标志。

    很好,这应该就很安全了。您意识到,专用池中的工作器将无法访问 PyPI 等公共软件包仓库。这意味着您需要托管专用软件包,因此您想知道是否可以使用 Artifact Registry

  3. Gemini 对话中,输入以下提示:

    If I create a private pool with no public egress, can I use Artifact Registry to host my packages privately and access them from a private pool?(如果我创建的是无公共出站流量的专用池,是否可以使用 Artifact Registry 来专门托管我的软件包并从专用池访问它们?)

    Gemini 可能会提供类似如下的响应:

    Yes, you can use Artifact Registry to host your packages privately and access them from a private pool with no public egress.(是的,您可以使用 Artifact Registry 来专门托管您的软件包并从无公共出站流量的专用池访问它们。) To do this, you will need to create a private Artifact Registry repository and grant your private pool access to the repository.(为此,您需要创建一个专用的 Artifact Registry 制品库,并向您的专用池授予对该制品库的访问权限。) You can do this by adding the service account for your private pool as a member of the repository with the Artifact Registry Reader role.(您可以将专用池的服务账号添加为该制品库的成员,并授予其 Artifact Registry Reader 角色。) Once you have created the repository and granted your private pool access, you can push your packages to the repository and then pull them from your private pool.(创建此制品库并授予专用池访问权限之后,您就可以将您的软件包推送到此制品库中,然后再从专用池中拉取它们。)

    好了,下面让 Gemini 告诉我们创建专用池的 gcloud CLI 命令是什么。

  4. Gemini 对话中,输入以下提示:

    What is the gcloud command for creating a private worker pool with no public egress?(应使用什么 gcloud 命令来创建无公共出站流量的专用工作器池?)

    Gemini 可能会提供类似如下的命令:

    gcloud builds worker-pools create POOL_NAME \ --project=PROJECT_ID \ --region=REGION \ --no-public-egress
  5. 若要创建专用池,请运行以下命令:

    gcloud builds worker-pools create pool-test \ --project={{{project_0.project_id|set at lab start}}} \ --region={{{project_0.default_region|set at lab start}}} \ --no-public-egress

    实验环境可能会返回类似如下的错误消息:

    ERROR: (gcloud.builds.worker-pools.create) FAILED_PRECONDITION: project "{{{project_0.project_id|set at lab start}}}" is unable to use private pools

    在本实验中,您可以忽略此错误消息。

    注意:实验环境中目前停用了专用池。对于此实验环境以外的项目,用于创建专用池的命令应该会奏效。

    现在,我们来问问 Gemini 如何创建专用 Docker 仓库。

  6. Gemini 对话中,输入以下提示:

    How can I use gcloud to create a private Docker repository for container images in Artifact Registry?(我如何使用 gcloud 命令在 Artifact Registry 中为容器映像创建专用 Docker 仓库?)

    Gemini 可能会提供类似如下的响应,其中包含一条 gcloud CLI 命令:

    gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=REGION \ --description="DESCRIPTION" where: • REPOSITORY is the name of the private Docker repository to be created.(其中: • REPOSITORY 是指要创建的专用 Docker 仓库的名称。) • REGION is the region in which to create the private Docker repository.(• REGION 是指创建的专用 Docker 仓库所在的区域。) • DESCRIPTION is a description of the private Docker repository.(• DESCRIPTION 是对该专用 Docker 仓库的说明。)
  7. 若要创建该仓库,请运行以下命令:

    gcloud artifacts repositories create my-repo \ --repository-format=docker \ --location={{{project_0.default_region|set at lab start}}} \ --description="My private Docker repository"

    仓库创建完毕。

    如需验证是否已完成以下目标,请点击检查我的进度 创建一个仓库。

结束实验

完成实验后,请点击结束实验。Qwiklabs 会移除您使用过的资源并为您清理帐号。

系统会提示您为实验体验评分。请选择相应的评分星级,输入评论,然后点击提交

星级的含义如下:

  • 1 颗星 = 非常不满意
  • 2 颗星 = 不满意
  • 3 颗星 = 一般
  • 4 颗星 = 满意
  • 5 颗星 = 非常满意

如果您不想提供反馈,可以关闭该对话框。

如果要留言反馈、提出建议或做出更正,请使用支持标签页。

恭喜!

在本实验中,您学习了如何执行以下任务:

  • 在 Gemini 的帮助下创建 GKE 集群。
  • 将一组微服务部署到 GKE 中。
  • 借助 Gemini 查找并理解应用日志。
  • 使用 Gemini 调查如何创建专用构建环境。

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名称和产品名称可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。