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 で使用するためにタグ付けすることができます。
始める前に、以下の作業を実行します。
- 名前空間で動作する CLI をインストールします。
- IBM Cloud Container Registry に独自の名前空間をセットアップします。
- チャートを操作するために、 Helm CLI の最新リリースをインストールしてください。
-
Helm チャートをローカル・コンピューターにダウンロードします。
-
OCIレジストリから Helm チャートをダウンロードする:
helm pull oci://REGISTRY/MY_NAMESPACE/CHART_NAME --version CHART_VERSION
例えば、
REGISTRY
はlocalhost:5000
、MY_NAMESPACE
はhelm-charts
、CHART_NAME
はmychart
、CHART_VERSION
は0.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_NAME
はibm-charts/ibm-istio
、CHART_VERSION
は1.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 のネームスペースにチャートをプッシュ(アップロード)して保存し、他のユーザーと共有することができます。
始める前に、以下の作業を実行します。
- 名前空間で動作する CLI をインストールします。
- IBM Cloud Container Registry に独自の名前空間をセットアップします。
- チャートを操作するために、 Helm CLI の最新リリースをインストールしてください。
- ローカル・コンピューターからチャートを 引き出すか、 作成する。 チャートを作成したら、そのチャートをアーカイブとして保存する必要があります。
helm package
コマンドを使ってアーカイブとして保存しなければならない。
チャートをアップロード (プッシュ) するには、以下のステップを実行します。
-
以下のコマンドを実行してCLIにログインする。
DOMAIN
はドメイン名で、ユーザー名(-u
)はiamapikey
に設定されている。 ドメイン名の詳細については、 リージョンを 参照のこと。helm registry login DOMAIN -u iamapikey
コマンドは次に、IAM APIキーであるパスワードを入力するよう求める。
プライベート IBM Cloud Container Registry からチャートをプルする場合は、ログインする必要があります。
-
アカウントで使用可能なすべての名前空間を表示するには、
ibmcloud cr namespace-list
コマンドを実行します。 -
チャートを名前空間にアップロードします。
helm push MY_CHART_PACKAGE oci://REGION.icr.io/MY_NAMESPACE
例えば、
MY_CHART_PACKAGE
はmychart-0.1.0.tgz
、REGION
はuk
、MY_NAMESPACE
はhelm-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 内) にインストールできます。
レジストリー間でのチャートのコピー
ある地域のレジストリからチャートを引き出し、それを別の地域のレジストリにプッシュすることで、レジストリ間でチャートをコピーし、両方の地域のユーザーとチャートを共有することができます。
始める前に、以下の作業を実行します。
- 名前空間で動作する CLI をインストールします。
- IBM Cloud Container Registry に独自の名前空間をセットアップします。
- チャートを操作するために、 Helm CLI の最新リリースをインストールしてください。
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_NAME
は myrelease
、REGION
は uk
、MY_NAMESPACE
は helm-charts
、CHART_NAME
は mychart
、CHART_VERSION
は 0.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 を使用してチャートを削除するには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
チャートを削除するには、以下のコマンドを実行します。
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
形式のイメージ名を作成します。 -
以下のコマンドを実行して、チャートが削除されたことを確認し、チャートがリストに表示されていないことを確認します。
ibmcloud cr image-list
コンソールでのプライベート・リポジトリーからのチャートの削除
IBM Cloud コンソールを使用して、不要なチャートとそのすべてのタグをプライベート IBM Cloud リポジトリーから削除できます。
既存のデプロイメントで使用されているチャートを削除すると、Helm のアップグレード、ロールバック、または削除が失敗する可能性があります。
削除したチャートを復元するには、ibmcloud cr trash-list
コマンドを実行してごみ箱の内容をリストすると、ibmcloud cr image-restore
コマンドを実行して選択したチャートを復元します。
IBM Cloud コンソールを使用してチャートを削除するには、以下の手順を実行します。
- IBM Cloud コンソールにログインする。 https://cloud.ibm.com/loginIBMid でログインする。
- 複数の IBM Cloud アカウントを持っている場合は、使用したいアカウントおよびリージョンをアカウント・メニューから選択します。
- 「ナビゲーション・メニュー」 アイコンをクリックして、 「コンテナー・レジストリー」 をクリックします。
- 「イメージ」 をクリックします。 チャート (および存在する場合はイメージ) のリストが表示されます。 レジストリーには、Helm チャートおよびコンテナー・イメージを含むさまざまな成果物タイプが保管されます。
- 削除するグラフを含む行で、チェック・ボックスを選択します。
- 「イメージの削除」 をクリックします。
削除するチャートを含む行で、チェック・ボックスを選択します。
ごみ箱に含まれている削除済みチャートをリストして、期限切れになる時期を確認することができます。
ibmcloud cr trash-list
コマンドを使用して、ごみ箱に含まれているチャートを確認できます。 チャートはごみ箱に 30 日間保管されます。
ごみ箱内のチャートをリストするには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
以下のコマンドを実行すれば、ゴミ箱の中のチャートを一覧表示できる。
ibmcloud cr trash-list
-
以下のコマンドを実行すれば、関心のあるネームスペースのゴミ箱にあるチャートだけをリストアップできる。
NAMESPACE
はネームスペース。ibmcloud cr trash-list --restrict NAMESPACE
チャートの復元
ゴミ箱からチャートを復元できる。 削除されたチャートは、ごみ箱に 30 日間保管されます。
ibmcloud cr image-restore
コマンドを実行して、ごみ箱からチャートを復元できます。 ごみ箱に含まれているチャートを調べるには、ibmcloud cr trash-list
コマンドを実行します。
チャートを復元するには ibmcloud cr image-restore
コマンドを実行する。 以下のオプションを使用できます。
REPO@DIGEST
ダイジェストと、ライブリポジトリにまだないリポジトリ内のすべてのタグをリストアします。 ダイジェストによるチャートのリストアを 参照してください。REPO:TAG
タグのリストアについては、 タグによるチャートのリストアを 参照。
ダイジェストによるチャートの復元
ダイジェストを使用してチャートを復元すると、そのダイジェストがごみ箱からライブ・リポジトリーに移動され、リポジトリーにある、そのダイジェストのすべてのタグが復元されます。
ごみ箱からダイジェストでチャートを復元するには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
以下のコマンドを実行して、ごみ箱内のチャートをリストします。
ibmcloud cr trash-list
ごみ箱の中のアイテムを示す表が表示されます。 表には、ダイジェスト、期限切れになるまでの日数、およびそのダイジェストのタグが表示されます。
-
復元するチャートのダイジェストをメモします。
-
以下のコマンドを実行して、チャートをリポジトリーに復元します。
DNS
はドメイン名、NAMESPACE
は名前空間、REPO
はリポジトリー、DIGEST
は復元するチャートのダイジェストです。ibmcloud cr image-restore DNS/NAMESPACE/REPO@DIGEST
一部のタグが復元されない場合は、「 ダイジェストで復元したときにすべてのタグが復元されないのはなぜですか?
ライブ・リポジトリーでは、ダイジェストによってチャートをプルできます。
ibmcloud cr image-digests
コマンドを実行すると、チャートが出力に表示されます。
タグによるチャートの復元
タグを使用してチャートを復元すると、その特定のタグのみがごみ箱からライブ・リポジトリーに移動されます。
ごみ箱からタグを使用してチャートを復元するには、以下の手順を実行します。
-
ibmcloud login
コマンドを実行して IBM Cloud にログインします。 -
以下のコマンドを実行して、ごみ箱内のチャートをリストします。
ibmcloud cr trash-list
ごみ箱の中のアイテムを示す表が表示されます。 表には、ダイジェスト、期限切れになるまでの日数、およびそのダイジェストのタグが表示されます。
-
復元するチャートを、アットマーク (
@
) のところまで (ただし、@ は含まない) をメモします。 この部分のダイジェストはDNS/NAMESPACE/REPO
に相当します。DNS
はドメイン名、NAMESPACE
は名前空間、REPO
はリポジトリーです。 -
復元したいチャートについて、タグ
TAG
をメモしておく。 -
以下のコマンドを実行して、チャートをリポジトリーに復元します。
DNS/NAMESPACE/REPO
は復元するチャートの名前、TAG
はタグです。ibmcloud cr image-restore DNS/NAMESPACE/REPO:TAG
ライブ・リポジトリーでは、タグを使用してチャートをプルできます。
ibmcloud cr trash-list
コマンドを実行すると、対応するダイジェストおよび他のタグはすべて出力に表示されますが、このタグは表示されなくなります。
プライベート・リポジトリーと関連チャートの削除
IBM Cloud コンソールを使用して、不要になったプライベート・リポジトリー、および関連するチャートを削除できます。
リポジトリーを削除すると、そのリポジトリー内のすべてのチャートが削除されます。 このアクションは元に戻すことができません。
始める前に、保持するチャートをすべてバックアップする必要があります。
IBM Cloud コンソールを使用してプライベート・リポジトリーを削除するには、以下の手順を実行します。
-
IBM Cloud コンソールにログインする。 https://cloud.ibm.com/loginIBMid でログインする。
-
複数の IBM Cloud アカウントを持っている場合は、使用したいアカウントおよびリージョンをアカウント・メニューから選択します。
-
「ナビゲーション・メニュー」 アイコンをクリックして、 「コンテナー・レジストリー」 をクリックします。
-
「リポジトリー」 をクリックします。 プライベート・リポジトリーのリストが表示されます。
-
削除しようとしているプライベート・リポジトリーを含む行で、チェック・ボックスを選択します。
この操作は元に戻せないので、正しいリポジトリーを選択したことを確認してください。
-
「リポジトリーの削除」 をクリックします。