在 Artifact Registry 中儲存 Helm 資訊套件

Helm 是 Kubernetes 的套件管理工具。使用圖表定義要部署的一組 Kubernetes 資源。

本快速入門導覽課程會說明完成下列作業的方法:

  • 在 Artifact Registry 中建立私人存放區
  • 建立範例圖表
  • 使用存放區進行驗證
  • 將圖表推送至存放區
  • 部署圖表

事前準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry, Google Kubernetes Engine APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Artifact Registry, Google Kubernetes Engine APIs.

    Enable the APIs

選擇殼層

如要完成本快速入門,請使用 Cloud Shell 或本機殼層。

Cloud Shell
Cloud Shell 是殼層環境,用於管理託管在 Google Cloud上的資源。這個環境已預先安裝 Docker、Helm 和 Google Cloud CLI,這是 Google Cloud的主要指令列介面。
本機殼層
如果您想要使用本機殼層,則必須在您的環境中安裝 Docker 和 gcloud CLI。

啟動 Cloud Shell

請執行下列步驟來啟動 Cloud Shell:

  1. 前往 Google Cloud 控制台。

    Google Cloud 主控台

  2. 按一下「Activate Cloud Shell」按鈕:

    此時 Cloud Shell 工作階段會在主控台底部的頁框中開啟,您可以使用這個殼層來執行 gcloud 指令。

  3. 安裝 Helm 3.8.0 以上版本。在 Helm 的舊版中,支援 OCI 格式的圖表是實驗功能。

    執行 helm version 來驗證版本。

設定本機 Shell

如要安裝 gcloud CLI 和 Helm,請執行下列步驟:

  1. 安裝 gcloud CLI。如要更新現有安裝項目,請執行 gcloud components update 指令。

  2. 安裝 Helm 3.8.0 以上版本。在 Helm 的舊版中,支援 OCI 格式的圖表是實驗功能。

    執行 helm version 來驗證版本。

建立存放區

建立 Docker 存放區,以便儲存本快速入門導覽課程的範例圖表。

主控台

  1. 在 Google Cloud 控制台中開啟「Repositories」頁面。

    開啟「存放區」頁面

  2. 點選 [Create Repository] (建立存放區)

  3. quickstart-helm-repo 指定為存放區名稱。

  4. 選擇 Docker 做為格式。

  5. 在「位置類型」下方,選取「區域」,然後選擇位置 us-west1

  6. 按一下 [建立]。

存放區會新增至存放區清單。

gcloud

  1. 執行下列指令,在 us-west1 位置中新建名為 quickstart-helm-repo 的 Docker 存放區,並將說明設為「docker repository」(Docker 存放區)。

    gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \
    --location=us-west1 --description="Helm repository"
    
  2. 執行下列指令,確認存放區已建立。

    gcloud artifacts repositories list
    

如要進一步瞭解 Artifact Registry 指令,請執行 gcloud artifacts 指令。

建立圖表

在本快速入門導覽課程中,您將建立名為 hello-chart 的範例圖表。

  1. 切換至要建立圖表的目錄。
  2. 執行下列指令建立圖表:

    helm create hello-chart
    

    Helm 會建立名為 hello-chart 的目錄,其中包含一組預設的圖表檔案。其中一個檔案是 Chart.yaml,其中包含圖表資訊。

  3. 將圖表封裝為封存檔。

    helm package hello-chart/
    

    Helm 會使用 Chart.yaml 中的圖表名稱和版本號碼,建立名為 hello-chart-0.1.0.tgz 的封存檔。

使用存放區進行驗證

在推送或安裝映像檔之前,Helm 必須先向 Artifact Registry 進行驗證。

Helm 可使用現有的登錄檔設定和 Docker 設定檔。如果您尚未將 Docker 設定為與 Artifact Registry 搭配使用,可以使用存取權存證來驗證此快速入門課程。

如要進一步瞭解驗證,請參閱「設定 Helm 的驗證」。

使用 Docker 設定進行驗證

根據預設,Helm 會支援 Docker 設定檔 config.json 中的登錄設定。Helm 會在預設位置或 DOCKER_CONFIG 環境變數指定的位置中尋找登錄設定。

如果您使用憑證輔助程式設定 Docker,以便透過 Artifact Registry 進行驗證,Helm 會使用您現有的 Artifact Registry Docker 存放區設定。

使用存取憑證驗證

如要使用存取權憑證進行驗證,請按照下列步驟操作:

  1. 使用 Helm 驗證 Artifact Registry 時,取得存取權杖做為憑證。

    Linux / macOS

    執行下列指令:

    gcloud auth print-access-token | helm registry login -u oauth2accesstoken \
    --password-stdin https://us-west1-docker.pkg.dev
    

    Windows

    執行下列指令:

    gcloud auth print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://us-west1-docker.pkg.dev/PROJECT-ID/REPOSITORY
    

    地點

    • oauth2accesstoken 是使用存取權杖進行驗證時使用的使用者名稱。
    • gcloud auth print-access-token 是取得存取權杖的 gcloud 指令。存取權存證是驗證密碼。

Helm 現在會透過 Artifact Registry 進行驗證。您可以將圖表推送至存放區。

將圖表推送至 Artifact Registry

建立圖表封存檔並驗證 Artifact Registry 存放區後,即可將圖表推送至存放區。

如要推送圖表,請執行下列指令:

helm push hello-chart-0.1.0.tgz oci://us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo

PROJECT 替換為您的 Google Cloud 專案 ID

Helm 會使用 Chart.yaml 的值來設定圖片:

  • 圖表名稱是圖片名稱:hello-chart
  • 圖表版本是圖片標記:0.1.0

Helm 會傳回類似以下範例的輸出內容:

Login Succeeded
Pushed: us-west1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart:0.1.0
Digest: sha256:67a72...

執行下列指令,確認圖表現在已儲存在存放區中:

gcloud artifacts docker images list us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo

指令輸出內容如下所示:

Listing items under project my-project, location us-west1, repository quickstart-helm-repo.

IMAGE: us-west1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart
DIGEST: sha256:67a72...
CREATE_TIME: 2021-11-08T22:59:57
UPDATE_TIME: 2021-11-08T22:59:57

您現在可以使用儲存在 Artifact Registry 中的圖表部署版本。

部署圖表

在 Helm 中,應用程式的已部署執行個體稱為版本。將存放區新增至 Helm 設定後,即可部署圖表的版本。

  1. 使用下列指令,為部署作業建立名為 chart-cluster 的叢集:

    gcloud container clusters create --zone us-west1-a chart-cluster
    

    建立叢集後,指令會傳回類似下列範例的摘要:

    kubeconfig entry generated for chart-cluster.
    NAME: chart-cluster
    LOCATION: us-west1-a
    MASTER_VERSION: 1.20.10-gke.1600
    MASTER_IP: 34.66.36.211
    MACHINE_TYPE: e2-medium
    NODE_VERSION: 1.20.10-gke.1600
    NUM_NODES: 3
    STATUS: RUNNING
    
  2. 取得叢集憑證,讓 kubectl 能夠存取叢集:

    gcloud container clusters get-credentials --zone us-west1-a chart-cluster
    
  3. 執行下列指令,使用本機擷取的圖表檔案部署 hello-chart 版本:

    helm install hello-chart oci://us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo/hello-chart --version 0.1.0
    

    指令會傳回部署摘要:

    NAME: hello-chart
    LAST DEPLOYED: Mon Nov  8 23:15:13 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    

您已成功使用自己建立並推送至 Artifact Registry 的圖表部署版本。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取您在本頁所用資源的費用,請按照下列步驟操作。

  1. 使用下列指令刪除您建立的存放區:

    gcloud artifacts repositories delete quickstart-helm-repo --location=us-west1
    
  2. 刪除您建立的叢集:

    gcloud container clusters delete --zone=us-west1-a chart-cluster
    

後續步驟