Artifact Registry に Helm チャートを保存する

Helm は Kubernetes のパッケージ管理システムです。デプロイする一連の Kubernetes リソースを定義するチャートを使用します。

このクイックスタートでは、次の方法について説明します。

  • Artifact Registry でプライベート リポジトリを作成する
  • サンプル チャートの作成
  • リポジトリで認証する
  • チャートをリポジトリに push する
  • チャートをデプロイする

始める前に

  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 Console に移動します。

    Google Cloud Console

  2. [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 コンソールで [リポジトリ] ページを開きます。

    [リポジトリ] ページを開く

  2. [リポジトリを作成] をクリックします。

  3. リポジトリ名として quickstart-helm-repo を指定します。

  4. 形式として Docker を選択します。

  5. [ロケーション タイプ] で、[リージョン] を選択し、ロケーション us-west1 を選択します。

  6. [作成] をクリックします。

このリポジトリがリポジトリ リストに追加されます。

gcloud

  1. 次のコマンドを実行して、場所 us-west1 に「docker repository」という説明の付いた quickstart-helm-repo という新しい 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 という名前のディレクトリを作成します。ファイルの 1 つである Chart.yaml に、チャートに関する情報が含まれています。

  3. チャートをアーカイブにパッケージ化します。

    helm package hello-chart/
    

    Helm は Chart.yaml のチャート名とバージョン番号を使用して hello-chart-0.1.0.tgz という名前のアーカイブを作成します。

リポジトリで認証する

イメージを push またはインストールするには、Helm で Artifact Registry に対する認証を行う必要があります。

Helm は、Docker 構成ファイルの既存のレジストリ設定を使用できます。Artifact Registry で使用するように Docker をまだ構成していない場合は、このクイックスタートでアクセス トークンで認証できます。

認証の詳細については、Helm に対する認証の設定をご覧ください。

Docker 構成で認証する

デフォルトでは、Helm は Docker 構成ファイル config.json のレジストリ設定をサポートしています。Helm は、デフォルトの場所または DOCKER_CONFIG 環境変数で指定された場所でレジストリ設定を検索します。

Artifact Registry で認証するための認証情報ヘルパーを使用して Docker を構成した場合、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 で認証されるようになりました。チャートをリポジトリに push する準備ができました。

チャートを Artifact Registry に push する

チャート アーカイブを作成し、Artifact Registry リポジトリに対して認証した後、チャートをリポジトリに push できます。

チャートを push するには、次のコマンドを実行します。

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 に push したチャートを使用して、リリースが正常にデプロイされました。

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. 次のコマンドを使用して、作成したリポジトリを削除します。

    gcloud artifacts repositories delete quickstart-helm-repo --location=us-west1
    
  2. 作成したクラスタを削除します。

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

次のステップ