Helm チャートの管理

このページでは、OCI コンテナ イメージとして保存された Helm 3 チャートの管理方法について説明します。チャートの push(アップロード)、pull(ダウンロード)、一覧表示、タグ付け、削除などについて説明します。

始める前に

  1. ターゲット リポジトリが存在しない場合は、新しいリポジトリを作成します。リポジトリ形式として Docker を選択します。
  2. リポジトリに必要な権限が付与されていることを確認します。
  3. (省略可)Google Cloud CLI コマンドのデフォルトを構成します。
  4. Helm 3.8.0 以降をインストールします。以前のバージョンの Helm では、OCI 形式のチャートに対するサポートは試験運用版です。

    helm version を実行してバージョンを確認します。

  5. Artifact Registry で認証するように Helm を構成します。

グラフの作成または取得

このドキュメントはグラフ イメージの管理に焦点を当てており、既存のグラフがある、またはグラフの作成に慣れていることを前提としています。Artifact Hub でのグラフの作成または一般公開されて入手可能なグラフの取得の詳細については、Helm ドキュメントの次の情報をご覧ください。

  • Helm の使用では、一般公開の Artifact Hub からグラフを取得し、インストール前にグラフをカスタマイズする方法が説明されています。
  • グラフ では、グラフとグラフの作成について説明します。
  • グラフのベスト プラクティス ガイドでは、慣習とベスト プラクティスについて説明しています。

グラフのパッケージング

グラフを Artifact Registry に push する前に、グラフのアーカイブとしてパッケージ化する必要があります。

  1. グラフが含まれているディレクトリに変更します。

  2. グラフをパッケージ化します。

    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

次の値を置き換えます。

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 するには:

  1. 次のコマンドを実行して、グラフ アーカイブを 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 リポジトリに保存すると、両方のアーティファクト タイプがリストに表示されます。

コンソール

リポジトリ内のイメージを表示するには:

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

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

  2. コンテナ イメージのあるリポジトリをクリックします。

  3. イメージをクリックすると、そのバージョンが表示されます。

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 に保存されているイメージを削除するには:

コンソール

  1. Google Cloud コンソールで [リポジトリ] ページを開きます。

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

  2. イメージ名をクリックすると、そのイメージのバージョンが表示されます。

  3. 削除するバージョンを指定します。

  4. [削除] をクリックします。

  5. 確認のダイアログ ボックスで、[削除] をクリックします。

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 つのタグを含むイメージ ダイジェストを指定した。

次のステップ