Artifact Registry に Helm チャートを保存する
Helm は Kubernetes のパッケージ マネージャーです。デプロイする一連の Kubernetes リソースを定義するチャートを使用します。
このクイックスタートでは、次の方法について説明します。
- Artifact Registry でプライベート リポジトリを作成する
- サンプル チャートの作成
- リポジトリを使用して認証する
- チャートをリポジトリに push する
- チャートをデプロイする
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Google Kubernetes Engine APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Google Kubernetes Engine APIs.
シェルを選択する
このクイックスタートをすべて実行するためには、Cloud Shell またはローカルシェルを使用します。
- Cloud Shell
- Cloud Shell は、Google Cloud でホストされているリソースを管理するためのシェル環境です。Docker、Helm と Google Cloud CLI(Google Cloud の主要なコマンドライン インターフェース)がプリインストールされています。
- ローカルシェル
- ローカルシェルを使用する場合は、ご利用の環境に Docker と gcloud CLI をインストールする必要があります。
Cloud Shell の起動
Cloud Shell を起動するには、次の手順に従います。
Google Cloud Console に移動します。
[Cloud Shell をアクティブにする]()ボタンをクリックします。
コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルで
gcloud
コマンドを実行します。Helm 3.8.0 以降をインストールします。以前のバージョンの Helm では、OCI 形式のチャートに対するサポートは試験運用版です。
helm version
を実行してバージョンを確認します。
ローカルシェルの設定
gcloud CLI と Helm をインストールするには、次の手順を実行します。
gcloud CLI をインストールします。既存のインストールを更新するには、
gcloud components update
コマンドを実行します。Helm 3.8.0 以降をインストールします。以前のバージョンの Helm では、OCI 形式のチャートに対するサポートは試験運用版です。
helm version
を実行してバージョンを確認します。
リポジトリを作成する
このクイックスタートのサンプル チャートを保存する Docker リポジトリを作成します。
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
[リポジトリを作成] をクリックします。
リポジトリ名として
quickstart-helm-repo
を指定します。形式として Docker を選択します。
[ロケーション タイプ] で、[リージョン] を選択し、ロケーション
us-central1
を選択します。[作成] をクリックします。
このリポジトリがリポジトリ リストに追加されます。
gcloud
次のコマンドを実行して、場所
us-central1
に「docker repository」という説明の付いたquickstart-helm-repo
という新しい Docker リポジトリを作成します。gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \ --location=us-central1 --description="Helm repository"
次のコマンドを実行して、リポジトリが作成されたことを確認します。
gcloud artifacts repositories list
Artifact Registry コマンドの詳細については、gcloud artifacts
コマンドを実行してください。
チャートを作成する
このクイックスタートでは、hello-chart
という名前のサンプル チャートを作成します。
- チャートを作成するディレクトリに移動します。
次のコマンドを実行してチャートを作成します。
helm create hello-chart
Helm は、チャート ファイルのデフォルト セットを含む
hello-chart
という名前のディレクトリを作成します。ファイルの 1 つである Chart.yaml に、チャートに関する情報が含まれています。チャートをアーカイブにパッケージ化します。
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 リポジトリの既存の構成を使用します。
アクセス トークンによる認証
アクセス トークンにより認証する手順は、次のとおりです。
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 構成に追加したら、チャートのリリースをデプロイできます。
次のコマンドを使用して、デプロイ用に
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
kubectl
がクラスタにアクセスできるように、クラスタの認証情報を取得します。gcloud container clusters get-credentials --zone us-central1-a chart-cluster
次のコマンドを実行し、ローカルに抽出されたチャート ファイルを使用して
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 アカウントに課金されないようにするには、次の手順を行います。
次のコマンドを使用して、作成したリポジトリを削除します。
gcloud artifacts repositories delete quickstart-helm-repo --location=us-central1
作成したクラスタを削除します。
gcloud container clusters delete --zone=us-central1-a chart-cluster
次のステップ
- チャートの操作の詳細を学習する。
- Helm の詳細を学習する。
- DevOps に関するリソースを読む。また、研究プログラムについて確認する。