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. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Artifact Registry, Google Kubernetes Engine API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Artifact Registry, Google Kubernetes Engine API を有効にします。

    API を有効にする

シェルを選択する

このクイックスタートをすべて実行するためには、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-central1 を選択します。

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

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

gcloud

  1. 次のコマンドを実行して、場所 us-central1 に「docker repository」という説明の付いた quickstart-helm-repo という新しい Docker リポジトリを作成します。

    gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \
    --location=us-central1 --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-central1-docker.pkg.dev
    

    Windows

    次のコマンドを実行します。

    gcloud auth print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://us-central1-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-central1-docker.pkg.dev/PROJECT/quickstart-helm-repo

PROJECT は、実際の Google Cloud プロジェクト ID に置き換えます。

Helm は、Chart.yaml の値をイメージに使用します。

  • チャート名はイメージ名です。hello-chart
  • チャートのバージョンはイメージタグです。0.1.0

Helm は、次の例のような出力を返します。

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

次のコマンドを実行して、チャートがリポジトリに保存されていることを確認します。

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

コマンド出力は次の例のようになります。

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

IMAGE: us-central1-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-central1-a chart-cluster
    

    クラスタが作成されると、コマンドは次の例のような概要を返します。

    kubeconfig entry generated for chart-cluster.
    NAME: chart-cluster
    LOCATION: us-central1-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-central1-a chart-cluster
    
  3. 次のコマンドを実行し、ローカルに抽出されたチャート ファイルを使用して hello-chart のリリースをデプロイします。

    helm install hello-chart oci://us-central1-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-central1
    
  2. 作成したクラスタを削除します。

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

次のステップ