このページでは、OCI コンテナ イメージとして保存された Helm 3 チャートの管理方法について説明します。チャートの push(アップロード)、pull(ダウンロード)、一覧表示、タグ付け、削除などについて説明します。
始める前に
- ターゲット リポジトリが存在しない場合は、新しいリポジトリを作成します。リポジトリ形式として Docker を選択します。
- リポジトリに必要な権限が付与されていることを確認します。
- (省略可)Google Cloud CLI コマンドのデフォルトを構成します。
Helm 3.8.0 以降をインストールします。以前のバージョンの Helm では、OCI 形式のチャートに対するサポートは試験運用版です。
helm version
を実行してバージョンを確認します。Artifact Registry でauthenticateするように Helm を構成します。
グラフの作成または取得
このドキュメントはグラフ イメージの管理に焦点を当てており、既存のグラフがある、またはグラフの作成に慣れていることを前提としています。Artifact Hub でのグラフの作成または一般公開されて入手可能なグラフの取得の詳細については、Helm ドキュメントの次の情報をご覧ください。
- Helm の使用では、一般公開の Artifact Hub からグラフを取得し、インストール前にグラフをカスタマイズする方法が説明されています。
- グラフ では、グラフとグラフの作成について説明します。
- グラフのベスト プラクティス ガイドでは、慣習とベスト プラクティスについて説明しています。
グラフのパッケージング
グラフを Artifact Registry に push する前に、グラフのアーカイブとしてパッケージ化する必要があります。
グラフが含まれているディレクトリに変更します。
グラフをパッケージ化します。
helm package CHART-PATH
CHART-PATH は、
Chart.yaml
ファイルを含むディレクトリのパスに置き換えます。
Helm は、アーカイブ ファイル名にチャート名とバージョンを使用します。たとえば、my-chart
という名前でバージョン番号が 0.1.0
グラフがある場合、パッケージ名は my-chart-0.1.0.tgz
です。
これで、グラフを Artifact Registry に push できるようになりました。
グラフの push
グラフをパッケージ化したら、Artifact Registry に push できます。
チャートを push するには、次のコマンドを実行します。
helm push my-chart-0.1.0.tgz oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY
次の値を置き換えます。
- LOCATION は、リポジトリのリージョンまたはマルチリージョン ロケーションです。
- PROJECT は、Google Cloud プロジェクト ID です。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
- REPOSITORY はリポジトリの名前です。
Helm は、Chart.yaml
からの情報を OCI コンテナ イメージ名とタグに使用します。次のコマンド例をご覧ください。
helm push my-chart-0.1.0.tgz oci://us-west1-docker.pkg.dev/my-project/my-repo
Helm は、チャート アーカイブをイメージ my-chart
としてタグ 0.1.0
でアップロードします。
push 操作が成功したことを確認するには、リポジトリ内のイメージを一覧表示します。
gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY
グラフの pull
グラフを pull するには:
次のコマンドを実行して、グラフ アーカイブを pull します。
helm pull oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \ --version VERSION
グラフ アーカイブをプルしてその内容を抽出する場合は、
--untar
フラグを追加します。helm pull oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \ --version VERSION \ --untar
次の値を置き換えます。
- LOCATION は、リポジトリのリージョンまたはマルチリージョン ロケーションです。
- PROJECT は、Google Cloud プロジェクト ID です。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
- REPOSITORY は、イメージが保存されるリポジトリの名前です。
- IMAGE は、リポジトリ内のイメージの名前です。
- VERSION iは、グラフのセマンティック バージョンです。このフラグは必須です。Helm では、タグを使用したグラフの pull はサポートされていません。
グラフのインストール
helm install コマンドを使用して、Artifact Registry に保存されたグラフをインストールします。
helm install RELEASE \
oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
--version VERSION
次の例では、グラフ us-west1-docker.pkg.dev/nyap-test/helm-repo/my-chart
のバージョン 0.1.0
を使用して、release1
という名前のリリースをインストールします。
helm install release1 oci://us-west1-docker.pkg.dev/nyap-test/helm-repo/my-chart --version 0.1.0
グラフのリスティング
グラフを一覧表示するには、Google Cloud コンソール またはコマンドラインを使用します。コンテナ イメージとグラフを同じ Docker リポジトリに保存すると、両方のアーティファクト タイプがリストに表示されます。
コンソール
リポジトリ内のイメージを表示するには:
Google Cloud コンソールで [リポジトリ] ページを開きます。
コンテナ イメージのあるリポジトリをクリックします。
イメージをクリックすると、そのバージョンが表示されます。
gcloud
デフォルト値が構成されている場合にデフォルトのプロジェクト、リポジトリ、ロケーションのすべてのイメージを一覧表示するには次のようにします。
gcloud artifacts docker images list
特定の場所にあるリポジトリ内のイメージを一覧表示するには、次のコマンドを実行します。
gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY
特定のイメージのすべてのダイジェストとタグを一覧表示するには、次のコマンドを実行します。
gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
--include-tags
次の値を置き換えます。
- LOCATION は、リポジトリのリージョンまたはマルチリージョンロケーションです。
- PROJECT は、Google Cloud プロジェクト ID です。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
- REPOSITORY は、イメージが保存されるリポジトリの名前です。
- IMAGE は、リポジトリ内のイメージの名前です。
--include-tags
は、ダイジェストとタグを含む、イメージのすべてのバージョンを表示します。このフラグを省略すると、返されるリストには最上位のコンテナ イメージのみが含まれます。
たとえば、次のような特性を持つイメージについて考えてみましょう。
- リポジトリの場所:
us-west1
- リポジトリ名:
my-repo
- プロジェクト ID:
my-project
- イメージ名:
my-image
完全な URL は次の通りです。
us-west1-docker.pkg.dev/my-project/my-repo
完全なイメージ名は次のとおりです。
us-west1-docker.pkg.dev/my-project/my-repo/my-image
イメージ名の形式の詳細については、リポジトリとイメージ名をご覧ください。
ファイルのリスティング
リポジトリ内のファイル、指定したコンテナ イメージのすべてのバージョン内のファイル、またはイメージの特定のバージョン内のファイルを一覧表示できます。
次のすべてのコマンドについては、コマンドに --limit
フラグを追加することで、返されるファイルの最大数を設定できます。
デフォルト値が構成されている場合にデフォルトのプロジェクト、リポジトリ、ロケーションのすべてのファイルを一覧表示するには次のようにします。
gcloud artifacts files list
指定したプロジェクト、リポジトリ、ロケーション内のファイルを一覧表示するには、次のコマンドを実行します。
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION
特定のコンテナ イメージのすべてのバージョンのファイルを一覧表示するには:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE
特定のコンテナ イメージ バージョンのファイルを一覧表示するには:
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE \
--version=VERSION
gcloud artifacts files list \
--project=PROJECT \
--repository=REPOSITORY \
--location=LOCATION \
--package=PACKAGE \
--tag=TAG
次の値を置き換えます。
LOCATION
: リポジトリのリージョンまたはマルチリージョンロケーション。PROJECT
: Google Cloud プロジェクト ID。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。REPOSITORY
: イメージが保存されるリポジトリの名前。PACKAGE
: イメージの名前。VERSION
: イメージ ダイジェスト(sha256:
で始まる文字列)TAG
: コンテナ イメージに関連付けられたタグ。
画像の削除
Artifact Registry リポジトリでは、コンテナ イメージ全体を削除するか、タグまたはダイジェストに関連付けられている特定のイメージ バージョンを削除できます。イメージを削除すると、操作を元に戻すことはできません。
Artifact Registry に保存されているイメージを削除するには:
コンソール
Google Cloud コンソールで [リポジトリ] ページを開きます。
イメージ名をクリックすると、そのイメージのバージョンが表示されます。
削除するバージョンを指定します。
[削除] をクリックします。
確認のダイアログ ボックスで、[削除] をクリックします。
gcloud
イメージとそのすべてのタグを削除するには、次のコマンドを実行します。
gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE --delete-tags
特定のイメージ バージョンを削除するには、次のいずれかのコマンドを使用します。
gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG [--delete-tags]
または
gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE@IMAGE-DIGEST [--delete-tags]
ここでは
- LOCATION は、リポジトリのリージョンまたはマルチリージョン ロケーションです。
- PROJECT は、Google Cloud プロジェクト ID です。 プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
- REPOSITORY は、イメージが保存されるリポジトリの名前です。
- IMAGE は、リポジトリ内のイメージの名前です。
- TAG は削除するバージョンのタグです。複数のタグが同じイメージのバージョンに関連付けられている場合、最初にタグを削除せずにイメージのバージョンを削除するには、
--delete-tags
を含める必要があります。 - IMAGE-DIGEST は、削除するバージョンの sha256 ハッシュ値です。タグがイメージ ダイジェストに関連付けられている場合、最初にタグを削除せずにイメージ バージョンを削除するには、
--delete-tags
を含める必要があります。 --delete-tags
は、イメージ バージョンに適用されたすべてのタグを削除します。このフラグを使用すると、次の場合にイメージ バージョンを強制的に削除できます。:- タグは指定したものの、イメージ バージョンに関連付けられた他のタグが存在する。
- 少なくとも 1 つのタグを含むイメージ ダイジェストを指定した。
次のステップ
- Docker イメージの管理について確認する
- Helm コマンドを使用せずにリポジトリから個々のファイルをダウンロードする。