IBM Cloud Docs
Helm チャートの使用 Container Registry

Helm チャートの使用 Container Registry

Helm チャートを安全に保管し、IBM Cloud® Container Registry の他のユーザーと共有できます。

Helm チャートの OCI サポート

Open Container Initiative(OCI)は、2021年9月に Open Container Initiative Distribution Specification v1.0.0をリリースした。 この仕様は、コンテナー・イメージに加えて、他の成果物タイプもサポートします。 サポートされているアーティファクト・タイプのひとつに、 Helm チャートがある。

Helm v3.8.0 は、 Helm チャート・リポジトリーに代わるものとして、OCIレジストリーにチャートを保存し、作業するためのサポートを提供する。 詳しくは、 Helm Registriesのドキュメントを参照のこと。

名前空間への Helm チャートの追加

IBM Cloud Container Registry の ネームスペースにイメージをレジストリーに保管するリポジトリーのコレクション。 名前空間は、複数の名前空間を含めることができる IBM Cloud アカウントに関連付けられます。チャートを追加することで、 Helm のチャートを安全に保存し、他のユーザーと共有することができます。

名前空間に追加するすべての Helm チャートは、まずローカル・コンピューター上に存在している必要があります。 他のリポジトリからローカル・コンピューターにチャートをダウンロード(プル)するか、あるいは helm create コマンドを使うことができます。 名前空間にチャートを追加するには、ローカル・チャートを IBM Cloud Container Registry 内の名前空間にアップロード (プッシュ) する必要があります。

チャート (例えば、名前空間名や説明フィールド) やチャートまたはチャート構成データ (例えば、チャート名やチャート表示名など) に個人情報を含めないでください。

別のレジストリーまたは Helm リポジトリーからのチャートのプル

プライベートまたはパブリックの レジストリ・ソースコンテナーの作成に使用されるパブリック・イメージまたはプライベート・イメージを含むストレージおよび配布サービス。や Helm リポジトリからチャートをコンピュータに取り込み(ダウンロード)、後で IBM Cloud Container Registry で使用するためにタグ付けすることができます。

プライベートまたはパブリックのレジストリや Helm リポジトリからコンピュータにチャートを取り込む。
別のレジストリからチャートを引き出す

始める前に、以下の作業を実行します。

  1. Helm チャートをローカル・コンピューターにダウンロードします。

    • OCIレジストリから Helm チャートをダウンロードする:

      helm pull oci://REGISTRY/MY_NAMESPACE/CHART_NAME --version CHART_VERSION
      

      例えば、REGISTRYlocalhost:5000MY_NAMESPACEhelm-chartsCHART_NAMEmychartCHART_VERSION0.1.0 です。

      helm pull oci://localhost:5000/helm-charts/mychart --version 0.1.0
      
    • Helm リポジトリから Helm チャートをダウンロードする:

      helm pull [CHART_URL | REPO/CHART_NAME] --version CHART_VERSION
      

      例えば、REPO/CHART_NAMEibm-charts/ibm-istioCHART_VERSION1.2.2 です。

      レポのエイリアスを追加するには helm repo add コマンドで追加できます。

      helm pull ibm-charts/ibm-istio  --version 1.2.2
      

    unauthorized: authentication required または denied: requested access to the resource is denied メッセージが表示された場合は、ibmcloud cr login コマンドを実行します。

名前空間のチャートをプルすると、ローカル・コンピューターから名前空間にチャートをアップロード (プッシュ) できます。

名前空間への Helm チャートのプッシュ

コンピュータから IBM Cloud Container Registry のネームスペースにチャートをプッシュ(アップロード)して保存し、他のユーザーと共有することができます。

コンピュータから IBM Cloud Container Registry にチャートをプッシュする。
チャートをネームスペースにプッシュする

始める前に、以下の作業を実行します。

チャートをアップロード (プッシュ) するには、以下のステップを実行します。

  1. 以下のコマンドを実行してCLIにログインする。 DOMAIN はドメイン名で、ユーザー名(-u)は iamapikey に設定されている。 ドメイン名の詳細については、 リージョンを 参照のこと。

    helm registry login DOMAIN -u iamapikey
    

    コマンドは次に、IAM APIキーであるパスワードを入力するよう求める。

    プライベート IBM Cloud Container Registry からチャートをプルする場合は、ログインする必要があります。

  2. アカウントで使用可能なすべての名前空間を表示するには、ibmcloud cr namespace-list コマンドを実行します。

  3. チャートを名前空間にアップロードします。

    helm push MY_CHART_PACKAGE oci://REGION.icr.io/MY_NAMESPACE
    

    例えば、MY_CHART_PACKAGEmychart-0.1.0.tgzREGIONukMY_NAMESPACEhelm-chartsです。

    helm push mychart-0.1.0.tgz oci://uk.icr.io/helm-charts
    

    unauthorized: authentication required」または「denied: requested access to the resource is denied」というメッセージを受け取った場合は、ibmcloud cr login コマンドを実行してください。

チャートを IBM Cloud Container Registry にプッシュすると、Helm チャートをクラスター (IBM Cloud Kubernetes Service 内) にインストールできます。

レジストリー間でのチャートのコピー

ある地域のレジストリからチャートを引き出し、それを別の地域のレジストリにプッシュすることで、レジストリ間でチャートをコピーし、両方の地域のユーザーとチャートを共有することができます。

レジストリ間でチャートをコピーする
レジストリー間でのチャートのコピー

始める前に、以下の作業を実行します。

2 つのレジストリー間でチャートをコピーするには、以下のステップを実行します。

  1. レジストリーからチャートをプルします
  2. チャートを別のレジストリにプッシュします。 ターゲットとする新しい地域に適したドメイン名を使用していることを確認してください。

チャートをコピーすると、IBM Cloud Kubernetes Service 内のクラスターに Helm チャートをインストールできます。

クラスターへの Helm チャートのインストール

レジストリーから直接、IBM Cloud Kubernetes Service 内のクラスターに Helm チャートをインストールできます。 Helm チャート README の指示に従い、インストールするチャートとチャートのバージョンに対する完全なレジストリーのリファレンスを使用します。

helm install RELEASE_NAME oci://REGION.icr.io/MY_NAMESPACE/CHART_NAME --version CHART_VERSION

例えば、RELEASE_NAMEmyreleaseREGIONukMY_NAMESPACEhelm-chartsCHART_NAMEmychartCHART_VERSION0.1.0 です。

helm install myrelease oci://uk.icr.io/helm-charts/mychart --version 0.1.0

プライベート・リポジトリーからのチャートの削除

IBM Cloud コンソールまたは CLI を使用して、リポジトリー (IBM Cloud) から削除することができます。

プライベート・リポジトリーとその関連チャートを削除する場合は、プライベート・リポジトリーと関連チャートの削除を参照してください。

既存のデプロイメントで使用されているチャートを削除すると、Helm のアップグレード、ロールバック、または削除が失敗する可能性があります。

削除したチャートを復元するには、ibmcloud cr trash-list コマンドを実行してごみ箱の内容をリストすると、ibmcloud cr image-restore コマンドを実行して選択したチャートを復元します。 Helm チャートは OCI でサポートされる成果物タイプであるため、これらのコマンドを使用できます。

リポジトリ内で同じチャートダイジェストに複数の タグが1 つのアカウントに含まれるリソースのグループに結び付いているユーザー定義識別子。 タグはアカウント全体で表示されます。存在する場合、 ibmcloud cr image-rm コマンドは、基になるチャートとそのすべてのタグを削除します。 同じチャートが別のリポジトリやネームスペースに存在する場合、そのチャートのコピーは削除されません。

タグは常にチャートのセマンティック・バージョンと一致しなければならない。つまり、 latest タグは使用されない。

CLI でのプライベート・リポジトリーからのチャートの削除

CLI を使用して、不要なチャートとそれらのすべてのタグをプライベート IBM Cloud リポジトリーから削除できます。

既存のデプロイメントで使用されているチャートを削除すると、Helm のアップグレード、ロールバック、または削除が失敗する可能性があります。

削除したチャートを復元するには、ibmcloud cr trash-list コマンドを実行してごみ箱の内容をリストすると、ibmcloud cr image-restore コマンドを実行して選択したチャートを復元します。

CLI を使用してチャートを削除するには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. チャートを削除するには、以下のコマンドを実行します。CHART は、削除するチャートの名前 (repository@digest または repository:tag の形式) です。 イメージとは異なり、 タグは常にチャートの語義バージョンと一致する必要があるため、latest タグは存在しないため指定する必要があります。 複数のチャートを削除するには、コマンド内の各プライベート IBM Cloud レジストリー・パスを、各パスの間にスペースを入れてリストします。

    ibmcloud cr image-rm CHART
    

    チャートの名前を見つけるには、ibmcloud cr image-list を実行します。 レジストリーには、Helm チャートおよびコンテナー・イメージを含むさまざまな成果物タイプが保管されます。 Repository 列の内容 (repository) と Tag 列の内容 (tag) をコロン (:) で区切って連結し、repository:tag 形式のイメージ名を作成します。 ダイジェストを使用してチャートを確認するには、ibmcloud cr image-digests コマンドを実行します。 「Repository」 列の内容 (repository) と 「Digest」 列の内容 (digest) をアットマーク (@) で区切って連結し、repository@digest 形式のイメージ名を作成します。

  3. 以下のコマンドを実行して、チャートが削除されたことを確認し、チャートがリストに表示されていないことを確認します。

    ibmcloud cr image-list
    

コンソールでのプライベート・リポジトリーからのチャートの削除

IBM Cloud コンソールを使用して、不要なチャートとそのすべてのタグをプライベート IBM Cloud リポジトリーから削除できます。

既存のデプロイメントで使用されているチャートを削除すると、Helm のアップグレード、ロールバック、または削除が失敗する可能性があります。

削除したチャートを復元するには、ibmcloud cr trash-list コマンドを実行してごみ箱の内容をリストすると、ibmcloud cr image-restore コマンドを実行して選択したチャートを復元します。

IBM Cloud コンソールを使用してチャートを削除するには、以下の手順を実行します。

  1. IBM Cloud コンソールにログインする。 https://cloud.ibm.com/loginIBMid でログインする。
  2. 複数の IBM Cloud アカウントを持っている場合は、使用したいアカウントおよびリージョンをアカウント・メニューから選択します。
  3. 「ナビゲーション・メニュー」 アイコンをクリックして、 「コンテナー・レジストリー」 をクリックします。
  4. 「イメージ」 をクリックします。 チャート (および存在する場合はイメージ) のリストが表示されます。 レジストリーには、Helm チャートおよびコンテナー・イメージを含むさまざまな成果物タイプが保管されます。
  5. 削除するグラフを含む行で、チェック・ボックスを選択します。
  6. 「イメージの削除」 をクリックします。

削除するチャートを含む行で、チェック・ボックスを選択します。

ごみ箱に含まれている削除済みチャートをリストして、期限切れになる時期を確認することができます。

ibmcloud cr trash-list コマンドを使用して、ごみ箱に含まれているチャートを確認できます。 チャートはごみ箱に 30 日間保管されます。

ごみ箱内のチャートをリストするには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. 以下のコマンドを実行すれば、ゴミ箱の中のチャートを一覧表示できる。

    ibmcloud cr trash-list
    
  3. 以下のコマンドを実行すれば、関心のあるネームスペースのゴミ箱にあるチャートだけをリストアップできる。 NAMESPACE はネームスペース。

    ibmcloud cr trash-list --restrict NAMESPACE
    

チャートの復元

ゴミ箱からチャートを復元できる。 削除されたチャートは、ごみ箱に 30 日間保管されます。

ibmcloud cr image-restore コマンドを実行して、ごみ箱からチャートを復元できます。 ごみ箱に含まれているチャートを調べるには、ibmcloud cr trash-list コマンドを実行します。

チャートを復元するには ibmcloud cr image-restore コマンドを実行する。 以下のオプションを使用できます。

ダイジェストによるチャートの復元

ダイジェストを使用してチャートを復元すると、そのダイジェストがごみ箱からライブ・リポジトリーに移動され、リポジトリーにある、そのダイジェストのすべてのタグが復元されます。

ごみ箱からダイジェストでチャートを復元するには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. 以下のコマンドを実行して、ごみ箱内のチャートをリストします。

    ibmcloud cr trash-list
    

    ごみ箱の中のアイテムを示す表が表示されます。 表には、ダイジェスト、期限切れになるまでの日数、およびそのダイジェストのタグが表示されます。

  3. 復元するチャートのダイジェストをメモします。

  4. 以下のコマンドを実行して、チャートをリポジトリーに復元します。 DNS はドメイン名、NAMESPACE は名前空間、REPO はリポジトリー、DIGEST は復元するチャートのダイジェストです。

    ibmcloud cr image-restore DNS/NAMESPACE/REPO@DIGEST
    

    一部のタグが復元されない場合は、「 ダイジェストで復元したときにすべてのタグが復元されないのはなぜですか?

    ライブ・リポジトリーでは、ダイジェストによってチャートをプルできます。 ibmcloud cr image-digests コマンドを実行すると、チャートが出力に表示されます。

タグによるチャートの復元

タグを使用してチャートを復元すると、その特定のタグのみがごみ箱からライブ・リポジトリーに移動されます。

ごみ箱からタグを使用してチャートを復元するには、以下の手順を実行します。

  1. ibmcloud login コマンドを実行して IBM Cloud にログインします。

  2. 以下のコマンドを実行して、ごみ箱内のチャートをリストします。

    ibmcloud cr trash-list
    

    ごみ箱の中のアイテムを示す表が表示されます。 表には、ダイジェスト、期限切れになるまでの日数、およびそのダイジェストのタグが表示されます。

  3. 復元するチャートを、アットマーク (@) のところまで (ただし、@ は含まない) をメモします。 この部分のダイジェストはDNS/NAMESPACE/REPOに相当します。DNS はドメイン名、NAMESPACE は名前空間、REPO はリポジトリーです。

  4. 復元したいチャートについて、タグ TAG をメモしておく。

  5. 以下のコマンドを実行して、チャートをリポジトリーに復元します。DNS/NAMESPACE/REPO は復元するチャートの名前、TAG はタグです。

    ibmcloud cr image-restore DNS/NAMESPACE/REPO:TAG
    

    ライブ・リポジトリーでは、タグを使用してチャートをプルできます。

    ibmcloud cr trash-list コマンドを実行すると、対応するダイジェストおよび他のタグはすべて出力に表示されますが、このタグは表示されなくなります。

プライベート・リポジトリーと関連チャートの削除

IBM Cloud コンソールを使用して、不要になったプライベート・リポジトリー、および関連するチャートを削除できます。

リポジトリーを削除すると、そのリポジトリー内のすべてのチャートが削除されます。 このアクションは元に戻すことができません。

始める前に、保持するチャートをすべてバックアップする必要があります。

IBM Cloud コンソールを使用してプライベート・リポジトリーを削除するには、以下の手順を実行します。

  1. IBM Cloud コンソールにログインする。 https://cloud.ibm.com/loginIBMid でログインする。

  2. 複数の IBM Cloud アカウントを持っている場合は、使用したいアカウントおよびリージョンをアカウント・メニューから選択します。

  3. 「ナビゲーション・メニュー」 アイコンをクリックして、 「コンテナー・レジストリー」 をクリックします。

  4. 「リポジトリー」 をクリックします。 プライベート・リポジトリーのリストが表示されます。

  5. 削除しようとしているプライベート・リポジトリーを含む行で、チェック・ボックスを選択します。

    この操作は元に戻せないので、正しいリポジトリーを選択したことを確認してください。

  6. 「リポジトリーの削除」 をクリックします。