在 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 console

  2. 按一下「Activate Cloud Shell」(啟用 Cloud Shell) 按鈕:

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

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

    執行 helm version 來驗證版本。

設定本機殼層

如要安裝 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
    

後續步驟