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

保障容器建構安全

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

GSP1185

Google Cloud 自修研究室

總覽

Artifact Registry 可讓您儲存不同類型的構件、在單一專案中建立多個存放區,並將特定區域或多個區域與每個存放區建立關聯。系統提供多種存放區模式,每種模式的用途各異。下圖展示了存放區多種應用方式之一,說明如何搭配使用不同模式的存放區,當中的工作流程橫跨兩個 Google Cloud 專案。在開發專案中,開發人員會建構 Java 應用程式。在另一個執行階段專案中,另一個建構作業會建立含有應用程式的容器映像檔,用於部署到 Google Kubernetes Engine。

模式圖

在本實驗室中,您將瞭解如何執行下列工作:

  • 使用標準存放區部署私人套件
  • 使用遠端存放區快取 Maven Central 套件
  • 使用虛擬存放區,將多個上游存放區合併到一個設定中

設定和需求

實驗室活動開跑須知

請詳閱以下操作說明。實驗室活動會計時,中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正雲端環境中完成實作,而不是在模擬或示範環境。因此,我們會提供新的臨時憑證,讓您在實驗室活動期間登入及存取 Google Cloud。

如要順利完成這個實驗室活動,請先確認:

  • 可以使用標準的網路瀏覽器 (Chrome 瀏覽器為佳)。
注意:請使用無痕模式或私密瀏覽視窗執行本實驗室,防止個人帳戶和學生帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 該來完成實驗室活動了!別忘了,活動開始後就無法暫停。
注意:如果您擁有個人 Google Cloud 帳戶或專案,請勿用於本研究室,以免產生額外費用。

如何開始實驗室及登入 Google Cloud 控制台

  1. 按一下「Start Lab」按鈕。如果實驗室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個實驗室使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也可以按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源並開啟另一個分頁,當中顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:頁面中顯示「選擇帳戶」對話方塊時,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username

  4. 點按「Next」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要查看列出 Google Cloud 產品和服務的選單,請點選左上角的「導覽選單」「導覽選單」圖示

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

連線建立完成即代表通過驗證,而且專案已設為您的 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"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 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」>「存放區」,即可看到新建立的 container-dev-repo Maven 存放區。點選後,您會發現存放區目前是空的。

  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'

點選「Check my progress」,確認目標已達成。 建立標準 Maven 存放區

工作 2:設定 Maven 以搭配 Artifact Registry 使用

  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 所需的驗證和傳輸層
  • 注意:擴充功能可放在 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,會發現這個存放區已建立,但目前是空的。

點選「Check my progress」,確認目標已達成。 建立遠端存放區

  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 中新增「repository」區段。請勿從輸出內容複製外部 <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

點選「Check my progress」,確認目標已達成。 建立虛擬存放區

  1. 執行下列指令,顯示要新增至 Java 專案的存放區設定:
gcloud artifacts print-settings mvn \ --repository=virtual-maven-repo \ --location=us-central1
  1. 將 pom 中的整個「repositories」區段,替換為輸出內容中的「virtual 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 日

Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,所有其他公司和產品名稱可能是其關聯公司的商標。

准备工作

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

使用无痕浏览模式

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

登录控制台

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

此内容目前不可用

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

太好了!

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

一次一个实验

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

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

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