Artifact Registry に Helm チャートを保存する
Helm は Kubernetes のパッケージ管理システムです。デプロイする一連の Kubernetes リソースを定義するチャートを使用します。
このクイックスタートでは、次の方法について説明します。
- Artifact Registry でプライベート リポジトリを作成する
- サンプル チャートの作成
- リポジトリで認証する
- チャートをリポジトリに push する
- チャートをデプロイする
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Google Kubernetes Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Google Kubernetes Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
必要なロール
Artifact Registry Docker パッケージ リポジトリで Helm チャートを作成して管理するために必要な権限を取得するには、管理者にプロジェクトに対するArtifact Registry 管理者 (roles/artifactregistry.admin)IAM ロールの付与を依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
シェルを選択する
このクイックスタートをすべて実行するためには、Cloud Shell またはローカルシェルを使用します。
- Cloud Shell
- Cloud Shell は 、 でホストされているリソースを管理するためのシェル環境です Google Cloud。Docker、Helm と Google Cloud CLI( の主要な コマンドライン インターフェース Google Cloud)がプリインストールされています。
- ローカルシェル
- ローカルシェルを使用する場合は、ご利用の環境に Docker と gcloud CLI をインストールする必要があります。
Cloud Shell の起動
Cloud Shell を起動するには、次の手順に従います。
コンソールに移動します。 Google Cloud
[Activate 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-west1を選択します。[作成] をクリックします。
このリポジトリがリポジトリ リストに追加されます。
gcloud
次のコマンドを実行して、場所
us-west1に「docker repository」という説明の付いたquickstart-helm-repoという新しい Docker リポジトリを作成します。gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \ --location=us-west1 --description="Helm repository"次のコマンドを実行して、リポジトリが作成されたことを確認します。
gcloud artifacts repositories list
Artifact Registry コマンドの詳細については、gcloud artifacts コマンドを実行してください。
チャートを作成する
このクイックスタートでは、hello-chart という名前のサンプル チャートを作成します。
- チャートを作成するディレクトリに移動します。
次のコマンドを実行してチャートを作成します。
helm create hello-chartHelm は、チャート ファイルのデフォルト セットを含む
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-west1-docker.pkg.devWindows
次のコマンドを実行します。
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 構成に追加したら、チャートのリリースをデプロイできます。
次のコマンドを使用して、デプロイ用に
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: RUNNINGkubectlがクラスタにアクセスできるように、クラスタの認証情報を取得します。gcloud container clusters get-credentials --zone us-west1-a chart-cluster次のコマンドを実行し、ローカルに抽出されたチャート ファイルを使用して
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 アカウントに課金されないようにするには、 次の手順を実施します。
次のコマンドを使用して、作成したリポジトリを削除します。
gcloud artifacts repositories delete quickstart-helm-repo --location=us-west1作成したクラスタを削除します。
gcloud container clusters delete --zone=us-west1-a chart-cluster
次のステップ
- チャートの操作の詳細を学習する。
- Helm の詳細を学習する。
- DevOps に関するリソースを読む。また、研究プログラムについて確認する。