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

保护容器构建的安全

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

GSP1185

Google Cloud 自学实验

概览

借助 Artifact Registry,您可以存储不同的制品类型;在单个项目中创建多个制品库,并将某个特定区域或多区域位置与每个制品库相关联。制品库模式有多种。每种模式用途不同。下图展示了在不同模式下组合使用多个制品库的其中一种可行方案。该图显示了跨两个 Google Cloud 项目的工作流。在开发项目中,开发者构建了一个 Java 应用。在一个单独的运行时项目中,另一个构建会创建一个包含该应用的容器映像,以便部署到 Google Kubernetes Engine。

模式图

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

  • 使用标准制品库部署私有软件包
  • 使用远程制品库缓存 Maven Central 软件包
  • 使用虚拟制品库在一个配置中合并多个上游制品库

设置和要求

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

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 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”图标

如果您连接成功,即表示您已通过身份验证,且项目 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 概览指南

Workspace 设置

  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)')
  1. 启用 Artifact Registry API:
gcloud services enable artifactregistry.googleapis.com
  1. 克隆本实验所需的制品库,然后前往 container-analysis 目录:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples cd java-docs-samples/container-registry/container-analysis

任务 1. 标准制品库

标准制品库提供了一种存储专用软件包并在其他应用中共享这些软件包的方式

  1. 运行以下命令,为 Java 制品创建标准 Maven 制品库:
gcloud artifacts repositories create container-dev-java-repo \ --repository-format=maven \ --location=us-central1 \ --description="Java package repository for Container Dev Workshop"

如果看到 Cloud Shell 授权提示,请点击授权

  1. 在 Cloud 控制台中,前往“Artifact Registry”>“制品库”,您会发现新创建的 Maven 制品库,名为 container-dev-java-repo。点击该制品库,可以看到它目前是空的。

  2. 在终端中查看制品库:

gcloud artifacts repositories describe container-dev-java-repo \ --location=us-central1

应返回类似如下所示的响应

Encryption: Google-managed key Repository Size: 0.000MB createTime: '2023-03-21T19:01:45.461589Z' description: Java package repository for Container Dev Workshop format: MAVEN mavenConfig: {} mode: STANDARD_REPOSITORY name: projects/qwiklabs-gcp-03-4304110dc461/locations/us-central1/repositories/container-dev-java-repo updateTime: '2023-03-21T19:01:45.461589Z'

点击“检查我的进度”,验证已完成以下目标: 创建标准 Maven 制品库

任务 2. 为 Artifact Registry 配置 Maven

  1. 运行以下命令,输出要添加到 Java 项目的制品库配置。
gcloud artifacts print-settings mvn \ --repository=container-dev-java-repo \ --location=us-central1

上述命令会返回要添加到项目 pom.xml 中的 xml。

  • repositories 部分用于指定 Maven 可以从何处下载远程制品以供当前项目使用。
  • distributionManagement 部分用于指定项目在部署时将推送到哪个远程制品库。
  • extensions 部分添加了 artifactregistry-maven-wagon,用于启用连接到 Artifact Registry 所需的身份验证和传输层
  • 注意:Extensions(扩展程序)可以存在于 pom.xml 或 extensions.xml 中。如果项目依赖于父项目,则在加载 pom.xml 中的其余条目之前,系统会先访问这些依赖项。为确保父项目有权访问扩展程序,可将扩展程序放置在 extensions.xml 文件中,该文件会在 pom.xml 之前加载,从而使其可供父级依赖项使用。
  1. 在 Cloud Shell 中运行以下命令,以在当前目录中打开编辑器:
cloudshell workspace .
  1. 复制这三个部分,然后在 Cloud Shell 编辑器中打开 pom.xml,并将返回的设置添加到文件底部,刚好在 project 结束标记之前。

示例:(您的网址中的项目名称会有所不同)

... <distributionManagement> <snapshotRepository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url> </snapshotRepository> <repository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url> </repository> </distributionManagement> <repositories> <repository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <extensions> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.2.0</version> </extension> </extensions> </build> </project>

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

  1. 运行以下命令,将 Java 软件包上传到 Artifact Registry:
mvn deploy -DskipTests

如果您想再次运行此命令,请务必提升 pom.xml 中的版本。

  1. 在 Cloud 控制台中,前往 Artifact Registry > 制品库,然后点击 container-dev-java-repo,检查 hello-world 二进制制品已存在:
Artifact Registry 制品库详细信息

任务 3. 远程制品库

远程制品库可用于缓存第三方软件包,以提高可靠性和安全性。

  1. 运行以下命令,为 Maven Central 制品创建远程制品库:
gcloud artifacts repositories create maven-central-cache \ --project=$PROJECT_ID \ --repository-format=maven \ --location=us-central1 \ --description="Remote repository for Maven Central caching" \ --mode=remote-repository \ --remote-repo-config-desc="Maven Central" \ --remote-mvn-repo=MAVEN-CENTRAL
  1. 在 Cloud 控制台中,前往 Artifact Registry > 制品库。点击进入 maven-central-cache,您会发现它已创建,但目前为空。

点击“检查我的进度”,验证已完成以下目标: 创建远程制品库

  1. 在终端中查看制品库:
gcloud artifacts repositories describe maven-central-cache \ --location=us-central1
  1. 运行以下命令,输出要添加到 Java 项目的制品库配置。
gcloud artifacts print-settings mvn \ --repository=maven-central-cache \ --location=us-central1
  1. 将制品库部分添加到您的 pom.xml 中。确保不要复制输出中的外层 <repositories> 标记。

  2. 将新添加的制品库的 ID 更改为“central”,以确保每个制品库条目都有唯一的 ID。

示例:(您的网址中的项目名称会有所不同)

... <distributionManagement> <snapshotRepository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url> </snapshotRepository> <repository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url> </repository> </distributionManagement> <repositories> <repository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>central</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/maven-central-cache</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <extensions> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.2.0</version> </extension> </extensions> </build> </project>
  1. 在终端中运行以下命令,为项目创建 extensions.xml,以使用核心扩展程序机制,确保 Maven 能够解析来自 Artifact Registry 的父级或插件依赖项。
mkdir .mvn cat > .mvn/extensions.xml << EOF <extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd"> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.2.0</version> </extension> </extensions> EOF
  1. 运行以下命令,使用远程制品库编译应用:
rm -rf ~/.m2/repository mvn compile
  1. 在 Cloud 控制台中,前往 Artifact Registry > 制品库。点击进入 maven-central-cache,确认二进制制品缓存在该处:
Artifact Registry 制品库详细信息

任务 4. 虚拟制品库

虚拟制品库起着接口作用,以便通过单个配置访问多个制品库。这可简化制品使用者的客户端配置,并通过缓解依赖项混淆攻击来提高安全性。

  1. 创建政策文件
cat > ./policy.json << EOF [ { "id": "private", "repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/container-dev-java-repo", "priority": 100 }, { "id": "central", "repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/maven-central-cache", "priority": 80 } ] EOF
  1. 创建虚拟制品库
gcloud artifacts repositories create virtual-maven-repo \ --project=${PROJECT_ID} \ --repository-format=maven \ --mode=virtual-repository \ --location=us-central1 \ --description="Virtual Maven Repo" \ --upstream-policy-file=./policy.json

点击“检查我的进度”,验证已完成以下目标: 创建虚拟制品库

  1. 运行以下命令,输出要添加到 Java 项目的制品库配置。
gcloud artifacts print-settings mvn \ --repository=virtual-maven-repo \ --location=us-central1
  1. 将 pom 中的整个 repositories 部分替换为输出中的一个虚拟制品库部分。

示例:(您的网址中的项目名称会有所不同)

... <distributionManagement> <snapshotRepository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url> </snapshotRepository> <repository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url> </repository> </distributionManagement> <repositories> <repository> <id>artifact-registry</id> <url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/virtual-maven-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <extensions> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.2.0</version> </extension> </extensions> </build> </project>

从虚拟制品库拉取依赖项

由于虚拟制品库只是直通通道,并不存储任何实际软件包,为了清楚地演示该流程,您将删除之前创建的 maven-central-cache 制品库并重新创建,以便从空制品库重新开始

  1. 运行以下命令以重新创建缓存制品库
gcloud artifacts repositories delete maven-central-cache \ --project=$PROJECT_ID \ --location=us-central1 \ --quiet gcloud artifacts repositories create maven-central-cache \ --project=$PROJECT_ID \ --repository-format=maven \ --location=us-central1 \ --description="Remote repository for Maven Central caching" \ --mode=remote-repository \ --remote-repo-config-desc="Maven Central" \ --remote-mvn-repo=MAVEN-CENTRAL
  1. 您可以在控制台中查看空制品库。Cloud 控制台 > Artifact Registry > 制品库

  2. 现在,运行以下命令来构建项目,以练习使用虚拟制品库:

rm -rf ~/.m2/repository mvn compile
  1. 在控制台中查看软件包。Cloud 控制台 > Artifact Registry > 制品库。点击 maven-central-cache,确认二进制制品配置为从虚拟制品库拉取,但最终是从 maven-central-cache 拉取。
Artifact Registry 制品库详细信息

恭喜!

您学习了如何使用多种制品库模式,以及这些制品库的各种用途。

后续步骤/了解详情

  • 如需详细了解身份验证和配置,请参阅产品文档

Google Cloud 培训和认证

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

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

上次测试实验的时间:2023 年 12 月 6 日

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

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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