实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

使用 Artifact Registry

实验 35 分钟 universal_currency_alt 5 个点数 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1076

Google Cloud 自学实验的徽标

概览

作为 Container Registry 的下一代产品,Artifact Registry 让组织可以在一个位置管理容器映像及语言包(如 Maven 和 npm)。该产品可与 Google Cloud 的工具和运行时环境完全集成,并支持原生工件协议。因此,您可以轻松地将其与 CI/CD 工具集成,以设置自动化流水线。

在本实验中,您将了解 Artifact Registry 中提供的一些功能。

目标

在本实验中,您将学习如何完成以下操作:

  • 为容器和语言软件包创建仓库
  • 使用 Artifact Registry 管理容器映像
  • 将 Artifact Registry 与 Cloud Code 集成
  • 配置 Maven 以使用 Artifact Registry 获取 Java 依赖项

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 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 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

您必须等待实验预配完毕,然后才能对环境进行任何更改!当实验指示环境已准备就绪时,您就可以使用预配置的环境部分了。

任务 1. 准备实验环境

设置变量

  • 在 Cloud Shell 中,设置您的项目 ID 和项目编号。将这两者保存为 PROJECT_IDPROJECT_NUMBER 变量:
export PROJECT_ID=$(gcloud config get-value project) export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') export REGION={{{ project_0.default_region }}} gcloud config set compute/region $REGION

启用 Google 服务

  • 运行以下命令以启用必要的 Google 服务:
gcloud services enable \ cloudresourcemanager.googleapis.com \ container.googleapis.com \ artifactregistry.googleapis.com \ containerregistry.googleapis.com \ containerscanning.googleapis.com

获取源代码

本实验的源代码位于 GitHub 上的 GoogleCloudPlatform 组织中。

  • 使用以下命令克隆源代码,然后切换到该目录。
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/ cd ~/cloud-code-samples

预配本实验中使用的基础设施

在本实验中,您将把代码部署到 Kubernetes Engine (GKE)。

  • 运行下面的设置脚本,准备此基础架构:
gcloud container clusters create container-dev-cluster --zone={{{ project_0.default_zone | "ZONE" }}}

点击检查我的进度,验证已完成以下目标:

启用 Google 服务并创建 GKE 集群

任务 2. 使用容器映像

在 Artifact Registry 上创建 Docker 仓库

Artifact Registry 支持管理容器映像和语言包。不同类型的工件需要不同的规范。例如,Maven 依赖项的请求与 Node 依赖项的请求不同。

为了支持不同的 API 规范,Artifact Registry 需要知道您希望 API 响应遵循哪种格式。为此,您需要创建一个代码库,并传入 --repository-format 标志,指明所需的代码库类型。

  1. 在 Cloud Shell 中运行以下命令,为 Docker 映像创建一个代码库:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \ --location=$REGION \ --description="Docker repository for Container Dev Workshop"

如果出现 Cloud Shell 授权提示,请点击授权

  1. 在 Cloud 控制台中,前往 Artifact Registry > 代码库,并注意您新创建的 Docker 代码库,名为 container-dev-repo。点击该代码库,可以看到目前是空的。

点击检查我的进度,验证已完成以下目标:(验证可能需要一分钟的时间。如果您已成功完成,但系统未验证,请稍等片刻,然后重试。)

使用容器映像

配置 Docker 以向 Artifact Registry 进行身份验证

连接到 Artifact Registry 时,需要提供凭据才能授予访问权限。Docker 可以配置为无缝使用您的 gcloud 凭据,而无需设置单独的凭据。

  1. 在 Cloud Shell 中运行以下命令,将 Docker 配置为使用 Google Cloud CLI 对向 区域中的 Artifact Registry 发出的请求进行身份验证:
gcloud auth configure-docker {{{ project_0.default_region | "Filled in at lab start" }}}-docker.pkg.dev
  1. 该命令会提示您确认是否更改 Cloud Shell Docker 配置,请点击 ENTER

探索示例应用

您克隆的 Git 代码库中提供了一个示例应用。

  • 切换到 java 目录并查看应用代码:
cd ~/cloud-code-samples/java/java-hello-world

该文件夹包含一个示例 Java 应用,用于渲染一个简单的网页:除了与本实验无关的各种文件外,它还包含 src 文件夹下的源代码,以及您将用于在本地构建容器映像的 Dockerfile。

构建容器映像

在 Artifact Registry 中存储容器映像之前,您需要先创建一个。

  • 运行以下命令来构建容器映像并正确标记:
docker build -t {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-repo/java-hello-world:tag1 .

将容器映像推送到 Artifact Registry

  • 运行以下命令,将容器映像推送到您创建的代码库:
docker push {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-repo/java-hello-world:tag1

查看 Artifact Registry 中的映像

  1. Artifact Registry > 代码库中,点击 container-dev-repo 并检查 java-hello-world 映像是否在其中。

  2. 点击映像,并注意标记为 tag1 的映像。您可以看到漏洞扫描正在运行或已完成,并且可以看到检测到的漏洞数量。

Artifact Registry

点击漏洞数量,您将看到映像中检测到的漏洞列表,其中包含 CVE 公告名称和严重级别。点击列出的每个漏洞旁边的查看,了解更多详细信息:

CVE 报告

任务 3. 与 Cloud Code 集成

在本部分中,您将结合使用 Artifact Registry Docker 映像代码库和 Cloud Code

使用 Cloud Code 将应用部署到 GKE 集群

  1. java-hello-world 文件夹中运行以下命令,打开 Cloud Shell 编辑器并将应用文件夹添加到此工作区:
cd ~/cloud-code-samples/ cloudshell workspace .

Cloud Shell 编辑器将打开,并在应用文件夹中显示资源管理器。

  1. 在左侧菜单中,选择 Cloud Code,然后展开 COMPUTE ENGINE 选项,点击选择项目,并选择实验说明中提供的项目 ID。

Cloud Code 选择项目

另外,展开 KUBERNETES 选项。您将能够看到集群正在加载。

等待片刻,直到您看到集群同时列在 KUBERNETESCOMPUTE ENGINE 下。

  1. 在接下来的步骤中,您需要输入 Artifact Registry 代码库位置。位置的格式为:
{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-repo

在 Cloud Shell 编辑器“导航菜单”图标 中,点击 Navigation menu(导航菜单)> View > Command Palette...(视图 > 命令面板…),输入 Run on Kubernetes(在 Kubernetes 上运行),然后选择 Cloud Code: Run on Kubernetes(Cloud Code:在 Kubernetes 上运行)。

Cloud Code 状态

  1. 选择 cloud-code-samples/java/java-hello-world/skaffold.yaml,然后选择 dockerfile

  2. 如果系统提示您选择上下文,请选择以使用当前上下文。

  3. 在映像注册表的提示中,选择输入映像代码库的地址,输入您在下面找到的地址位置,然后按 Enter 键。

Cloud Code:选择映像代码库

{{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-repo
  1. 首次执行在 Kubernetes 上运行时,Cloud Code 会提示您输入目标映像代码库位置。提供后,代码库网址会存储在应用文件夹中创建的 .vscode/launch.json 文件中。

在输出窗格中,您会看到应用映像 java-hello-world 的构建已开始,该映像已上传到之前配置的 Artifact Registry 代码库。

  1. Artifact Registry > 代码库中,点击 container-dev-repo,检查 java-hello-world 映像,并注意标记为 latest 的新映像。

查看已部署的应用

  1. 返回 Cloud Shell 编辑器。部署完成后,Skaffold/Cloud Code 将输出公开的网址,服务已转发到该网址,点击链接 - Follow link(点击链接):

网址位置

在新浏览器窗口中,您会看到“Hello World”应用页面。

Hello World

更新应用代码

现在更新应用,看看更改是否立即在集群上的部署中实现:

  1. 点击 Cloud Shell 编辑器中的“导航菜单”图标 导航菜单,然后点击视图 > 命令面板…,打开 HelloWorldController.java,然后点击一次退格键,输入路径 src/main/java/cloudcode/helloworld/web,并点击以 Hello.. 开头的选项。

  2. 将第 20 行中的文本从“It's running!”(正在运行!)更改为“It's updated!”(已更新!)。您应该会看到构建和部署过程立即开始。

  3. 部署完成后,再次点击转发的网址,或刷新包含应用的浏览器窗口,以查看已部署的更改:

Hello World 已更新

  1. 在 Cloud 控制台中,依次前往导航菜单 > Artifact Registry > 代码库,然后点击 container-dev-repo,检查 java-hello-world 映像并记下新映像。

点击检查我的进度,验证已完成以下目标:

与 Cloud Code 集成

任务 4. 使用语言包

在本部分中,您将设置 Artifact Registry Java 代码库并向其中上传软件包,然后在不同的应用中利用这些软件包。

创建 Java 软件包代码库

  1. 在 Cloud Shell 中运行以下命令,为 Java 工件创建一个仓库:
gcloud artifacts repositories create container-dev-java-repo \ --repository-format=maven \ --location={{{ project_0.default_region | "REGION" }}} \ --description="Java package repository for Container Dev Workshop"
  1. 如果出现 Cloud Shell 授权提示,请点击“授权”

  2. 在 Cloud 控制台中,前往 Artifact Registry > 代码库,您会看到新创建的 Maven 代码库 container-dev-java-repo。点击该代码库,您会发现目前是空的。

点击检查我的进度,验证已完成以下目标:

创建 Java 软件包代码库

设置对 Artifact Repository 的身份验证

  • 使用以下命令,将应用默认凭据 (ADC) 的已知位置更新为您的用户账号凭据,以便 Artifact Registry 凭据帮助程序在连接到代码库时可以使用这些凭据进行身份验证:
gcloud auth login --update-adc

如果系统提示您进行身份验证:

  • 选择 Y
  • 将代码粘贴到浏览器窗口中。
  • 选择“Google 登录”,然后使用实验中提供的凭据登录。
  • 将浏览器中的身份验证代码复制回控制台,以完成身份验证。

为 Artifact Registry 配置 Maven

  1. 运行以下命令来输出要添加到 Java 项目的代码库配置。
gcloud artifacts print-settings mvn \ --repository=container-dev-java-repo \ --location={{{ project_0.default_region | "REGION" }}}
  1. 在 Cloud Shell Editor 中打开 pom.xml,并将返回的设置添加到文件中的相应部分:
  • 添加 distributionManagement 部分。
<distributionManagement> <snapshotRepository> <id>artifact-registry</id> <url>artifactregistry://{{{ project_0.default_region | "REGION" }}}-maven.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-java-repo</url> </snapshotRepository> <repository> <id>artifact-registry</id> <url>artifactregistry://{{{ project_0.default_region | "REGION" }}}-maven.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-java-repo</url> </repository> </distributionManagement>
  • 添加 repositories 部分。
<repositories> <repository> <id>artifact-registry</id> <url>artifactregistry://{{{ project_0.default_region | "REGION" }}}-maven.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-java-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
  • 更新构建部分中的扩展程序。
<extensions> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.1.0</version> </extension> </extensions>

以下是完整文件的示例,供您参考。

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>hello-world</artifactId> <packaging>jar</packaging> <name>Cloud Code Hello World</name> <description>Getting started with Cloud Code</description> <version>1.0.0</version> <distributionManagement> <snapshotRepository> <id>artifact-registry</id> <url>artifactregistry://{{{ project_0.default_region | "REGION" }}}-maven.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-java-repo</url> </snapshotRepository> <repository> <id>artifact-registry</id> <url>artifactregistry://{{{ project_0.default_region | "REGION" }}}-maven.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-java-repo</url> </repository> </distributionManagement> <repositories> <repository> <id>artifact-registry</id> <url>artifactregistry://{{{ project_0.default_region | "REGION" }}}-maven.pkg.dev/{{{ project_0.project_id | "PROJECT_ID" }}}/container-dev-java-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.3</version> </parent> <properties> <java.version>1.8</java.version> <checkstyle.config.location>./checkstyle.xml</checkstyle.config.location> </properties> <build> <plugins> <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.2.0</version> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <version>3.1.2</version> </plugin> </plugins> <extensions> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.1.0</version> </extension> </extensions> </build> <!-- The Spring Cloud GCP BOM will manage spring-cloud-gcp version numbers for you. --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-gcp-dependencies</artifactId> <version>1.2.8.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-gcp-starter-logging</artifactId> </dependency> </dependencies> </project>

将 Java 软件包上传到 Artifact Registry

在 Maven 中配置 Artifact Registry 后,您现在可以使用 Artifact Registry 存储 Java Jar,供组织中的其他项目使用。

  • 输入以下命令,切换到 java-hello-world 文件夹。
cd ~/cloud-code-samples/java/java-hello-world
  • 运行以下命令,将 Java 软件包上传到 Artifact Registry:
mvn deploy

检查 Artifact Registry 中的 Java 软件包

在 Cloud 控制台中,前往 Artifact Registry > 代码库,然后点击 container-dev-java-repo,检查 hello-world 二进制工件是否已存在:

Artifact Registry

恭喜!

在本实验中,您了解了 Artifact Registry 中提供的一些功能。您首先为容器和语言软件包创建了存储库。然后,您使用 Artifact Registry 管理容器映像,并将其与 Cloud Code 集成。最后,您配置了 Maven 以使用 Artifact Registry 来处理 Java 依赖项。现在,您已经对 Artifact Registry 中提供的功能有了扎实的了解。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 5 月 9 日

上次测试实验的时间:2024 年 5 月 9 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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