7.3. カスタム Helm チャートリポジトリーの設定
以下の方法を使用して、OpenShift Container Platform クラスターで Helm リリースを作成できます。
- CLI
- Web コンソールの Developer パースペクティブ。
Web コンソールの Developer パースペクティブの Developer Catalog には、クラスターで利用可能な Helm チャートが表示されます。デフォルトで、これは Red Hat Helm チャートリポジトリーの OpenShift Helm チャートのリストを表示します。チャートの一覧は、Red Hat Helm インデックス
ファイルを参照してください。
クラスター管理者は、デフォルトのクラスタースコープの Helm リポジトリーとは別に、複数のクラスタースコープおよび namespace スコープの Helm チャートリポジトリーを追加し、Developer Catalog でこれらのリポジトリーから Helm チャートを表示できます。
適切なロールベースアクセス制御 (RBAC) パーミッションを持つ通常のユーザーまたはプロジェクトメンバーとして、デフォルトのクラスタースコープの Helm リポジトリーとは別に、複数の namespace スコープの Helm チャートリポジトリーを追加し、Developer Catalog でこれらのリポジトリーから Helm チャートを表示できます。
Web コンソールの Developer パースペクティブでは、Helm ページを使用して次のことができます。
- 作成 ボタンを使用して、Helm リリースとリポジトリーを作成します。
- クラスタースコープまたは namespace スコープの Helm チャートリポジトリーを作成、更新、または削除します。
- リポジトリータブで既存の Helm チャートリポジトリーのリストを表示します。これも、クラスタースコープまたは namespace スコープのいずれかとして簡単に区別できます。
7.3.1. OpenShift Container Platform クラスターでの Helm チャートのインストール
前提条件
- 実行中の OpenShift Container Platform クラスターがあり、ログインしている。
- Helm がインストールされている。
手順
新規プロジェクトを作成します。
$ oc new-project vault
Helm チャートのリポジトリーをローカルの Helm クライアントに追加します。
$ helm repo add openshift-helm-charts https://charts.openshift.io/
出力例
"openshift-helm-charts" has been added to your repositories
リポジトリーを更新します。
$ helm repo update
サンプルの HashiCorp Vault をインストールします。
$ helm install example-vault openshift-helm-charts/hashicorp-vault
出力例
NAME: example-vault LAST DEPLOYED: Fri Mar 11 12:02:12 2022 NAMESPACE: vault STATUS: deployed REVISION: 1 NOTES: Thank you for installing HashiCorp Vault!
チャートが正常にインストールされたことを確認します。
$ helm list
出力例
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION example-vault vault 1 2022-03-11 12:02:12.296226673 +0530 IST deployed vault-0.19.0 1.9.2
7.3.2. 開発者パースペクティブを使用した Helm リリースの作成
Web コンソールの Developer パースペクティブまたは CLI を使用して、Developer Catalog にリストされている Helm チャートからリリースを選択して作成できます。Helm チャートをインストールして Helm リリースを作成し、Web コンソールの Developer パースペクティブに表示できます。
前提条件
- Web コンソールにログイン しており、Developer パースペクティブ に切り替えている。
手順
Developer Catalog で提供される Helm チャートから Helm リリースを作成するには、以下を実行します。
- Developer パースペクティブで、+Add ビューに移動し、プロジェクトを選択します。次に、Helm Chart オプションをクリックし、Developer Catalog にすべての Helm チャートを表示します。
- チャートを選択し、チャートの説明、README、チャートに関するその他の詳細を確認します。
Create をクリックします。
図7.1 Developer カタログの Helm チャート
Create Helm Release ページで:
- リリースの固有の名前を Release Name フィールドに入力します。
- Chart Version ドロップダウンリストから必要なチャートのバージョンを選択します。
Form View または YAML View を使用して Helm チャートを設定します。
注記利用可能な場合は、YAML View と Form View 間で切り替えることができます。ビューの切り替え時に、データは永続化されます。
Create をクリックして Helm リリースを作成します。Web コンソールは、Topology ビューに新しいリリースを表示します。
Helm チャートにリリースノートがある場合は、Web コンソールに表示されます。
Helm チャートがワークロードを作成する場合、Web コンソールはそれらを Topology または Helm リリース詳細 ページに表示します。ワークロードは、
DaemonSet
、CronJob
、Pod
、Deployment
、およびDeploymentConfig
です。- Helm Releases ページで、新しく作成された Helm リリースを表示します。
サイドパネルの Actions ボタンを使用するか、Helm リリースを右クリックして、Helm リリースをアップグレード、ロールバック、または削除できます。
7.3.3. Web 端末での Helm の使用
Web コンソールの Developer パースペクティブで Web ターミナルにアクセスする と、Helm を使用できます。
7.3.4. OpenShift Container Platform でのカスタム Helm チャートの作成
手順
新規プロジェクトを作成します。
$ oc new-project nodejs-ex-k
OpenShift Container Platform オブジェクトが含まれる Node.js チャートのサンプルをダウンロードします。
$ git clone https://github.com/redhat-developer/redhat-helm-charts
サンプルチャートを含むディレクトリーに移動します。
$ cd redhat-helm-charts/alpha/nodejs-ex-k/
Chart.yaml
ファイルを編集し、チャートの説明を追加します。apiVersion: v2 1 name: nodejs-ex-k 2 description: A Helm chart for OpenShift 3 icon: https://static.redhat.com/libs/redhat/brand-assets/latest/corp/logo.svg 4 version: 0.2.1 5
チャートが適切にフォーマットされていることを確認します。
$ helm lint
出力例
[INFO] Chart.yaml: icon is recommended 1 chart(s) linted, 0 chart(s) failed
直前のディレクトリーレベルに移動します。
$ cd ..
チャートをインストールします。
$ helm install nodejs-chart nodejs-ex-k
チャートが正常にインストールされたことを確認します。
$ helm list
出力例
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION nodejs-chart nodejs-ex-k 1 2019-12-05 15:06:51.379134163 -0500 EST deployed nodejs-0.1.0 1.16.0
7.3.5. カスタム Helm チャートリポジトリーの追加
クラスター管理者は、カスタムの Helm チャートリポジトリーをクラスターに追加し、Developer Catalog のこれらのリポジトリーから Helm チャートへのアクセスを有効にできます。
手順
新規の Helm Chart リポジトリーを追加するには、Helm Chart Repository カスタムリソース (CR) をクラスターに追加する必要があります。
Helm チャートリポジトリー CR のサンプル
apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: <name> spec: # optional name that might be used by console # name: <chart-display-name> connectionConfig: url: <helm-chart-repository-url>
たとえば、Azure サンプルチャートリポジトリーを追加するには、以下を実行します。
$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: azure-sample-repo spec: name: azure-sample-repo connectionConfig: url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs EOF
Web コンソールで Developer Catalog に移動し、チャートリポジトリーの Helm チャートが表示されることを確認します。
たとえば、Chart リポジトリー フィルターを使用して、リポジトリーから Helm チャートを検索します。
図7.2 チャートリポジトリーのフィルター
注記クラスター管理者がすべてのチャートリポジトリーを削除する場合は、+Add ビュー、Developer Catalog、および左側のナビゲーションパネルで Helm オプションを表示できません。
7.3.6. namespace スコープのカスタム Helm チャートリポジトリーの追加
Helm リポジトリーのクラスタースコープの HelmChartRepository
カスタムリソース定義 (CRD) は、管理者が Helm リポジトリーをカスタムリソースとして追加できるようにします。namespace スコープの ProjectHelmChartRepository
CRD により、適切なロールベースアクセス制御 (RBAC) パーミッションのあるプロジェクトメンバーは、任意の、ただし固有の namespace スコープの Helm リポジトリーリソースを作成できます。このようなプロジェクトメンバーは、クラスタースコープと namespace スコープ両方の Helm リポジトリーリソースからチャートを表示できます。
- 管理者は、ユーザーが namespace スコープの Helm リポジトリーリソースを作成するのを制限できます。ユーザーを制限することで、管理者はクラスターロールではなく namespace ロールを使用して RBAC を柔軟に制御できます。これにより、ユーザーの不要なパーミッション昇格を回避し、承認されていないサービスまたはアプリケーションへのアクセスを防ぎます。
- namespace スコープの Helm リポジトリーを追加しても、既存のクラスタースコープの Helm リポジトリーの動作には影響を及ぼしません。
適切な RBAC パーミッションを持つ通常のユーザーまたはプロジェクトメンバーとして、カスタムの namespace スコープの Helm チャートリポジトリーをクラスターに追加し、Developer Catalog でこれらのリポジトリーから Helm チャートへのアクセスを有効にできます。
手順
新規の namespace スコープの Helm Chart Repository を追加するには、Helm Chart Repository カスタムリソース (CR) を namespace に追加する必要があります。
namespace スコープの Helm Chart Repository CR のサンプル
apiVersion: helm.openshift.io/v1beta1 kind: ProjectHelmChartRepository metadata: name: <name> spec: url: https://my.chart-repo.org/stable # optional name that might be used by console name: <chart-repo-display-name> # optional and only needed for UI purposes description: <My private chart repo> # required: chart repository URL connectionConfig: url: <helm-chart-repository-url>
たとえば、
my-namespace
namespace スコープの Azure サンプルチャートリポジトリーを追加するには、以下を実行します。$ cat <<EOF | oc apply --namespace my-namespace -f - apiVersion: helm.openshift.io/v1beta1 kind: ProjectHelmChartRepository metadata: name: azure-sample-repo spec: name: azure-sample-repo connectionConfig: url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs EOF
この出力から、namespace スコープの Helm Chart Repository CR が作成されていることが分かります。
出力例
projecthelmchartrepository.helm.openshift.io/azure-sample-repo created
Web コンソールで Developer Catalog に移動し、チャートリポジトリーの Helm チャートが
my-namespace
namespace に表示されることを確認します。たとえば、Chart リポジトリー フィルターを使用して、リポジトリーから Helm チャートを検索します。
図7.3 namespace のチャートリポジトリーフィルター
あるいは、以下のコマンドを実行します。
$ oc get projecthelmchartrepositories --namespace my-namespace
出力例
NAME AGE azure-sample-repo 1m
注記クラスター管理者または適切な RBAC パーミッションを持つ通常ユーザーが特定の namespace のすべてのチャートリポジトリーを削除すると、その特定の namespace の +Add ビュー、Developer Catalog、および左側のナビゲーションパネルで Helm オプションを表示することはできません。
7.3.7. Helm チャートリポジトリーを追加するための認証情報および CA 証明書の作成
一部の Helm チャートリポジトリーに接続するには、認証情報とカスタム認証局 (CA) 証明書が必要です。Web コンソールと CLI を使用して認証情報と証明書を追加することができます。
手順
認証情報と証明書を設定し、CLI を使用して Helm チャートリポジトリーを追加します。
openshift-config
namespace で、PEM でエンコードされた形式のカスタム CA 証明書でConfigMap
を作成し、これを設定マップ内のca-bundle.crt
キーに保存します。$ oc create configmap helm-ca-cert \ --from-file=ca-bundle.crt=/path/to/certs/ca.crt \ -n openshift-config
openshift-config
namespace で、クライアント TLS 設定を追加するためにSecret
オブジェクトを作成します。$ oc create secret tls helm-tls-configs \ --cert=/path/to/certs/client.crt \ --key=/path/to/certs/client.key \ -n openshift-config
クライアント証明書とキーは PEM でエンコードされた形式であり、それぞれ
tls.crt
およびtls.key
キーに保存される必要があります。以下のように Helm リポジトリーを追加します。
$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: <helm-repository> spec: name: <helm-repository> connectionConfig: url: <URL for the Helm repository> tlsConfig: name: helm-tls-configs ca: name: helm-ca-cert EOF
ConfigMap
およびSecret
は、tlsConfig
およびca
フィールドを使用して HelmChartRepository CR で使用されます。これらの証明書は、Helm リポジトリー URL への接続に使用されます。デフォルトでは、認証されたユーザーはすべて設定済みのチャートにアクセスできます。ただし、証明書が必要なチャートリポジトリーの場合は、以下のように
openshift-config
namespace でhelm-ca-cert
設定マップおよびhelm-tls-configs
シークレットへの読み取りアクセスを提供する必要があります。$ cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: openshift-config name: helm-chartrepos-tls-conf-viewer rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["helm-ca-cert"] verbs: ["get"] - apiGroups: [""] resources: ["secrets"] resourceNames: ["helm-tls-configs"] verbs: ["get"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: openshift-config name: helm-chartrepos-tls-conf-viewer subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: 'system:authenticated' roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: helm-chartrepos-tls-conf-viewer EOF
7.3.8. 証明書レベルでの Helm チャートのフィルタリング
Developer Catalog の認定レベルに基づいて Helm チャートをフィルターできます。
手順
- Developer パースペクティブで、+Add ビューに移動し、プロジェクトを選択します。
- Developer Catalog タイルから、Helm Chart オプションを選択して Developer Catalog ですべての Helm チャートを表示します。
Helm チャートのリストの左側にあるフィルターを使用して、必要なチャートをフィルターします。
- Chart Repositories フィルターを使用して、Red Hat Certification Charts または OpenShift Helm Charts が提供したチャートをフィルターします。
- Source フィルターを使用して、Partners、Community または Red Hat から提供されるチャートをフィルターします。認定チャートはアイコン ( ) で表示されます。
プロバイダータイプが 1 つしかない場合は、Source フィルターは表示されません。
必要なチャートを選択してインストールできるようになりました。
7.3.9. Helm チャートリポジトリーの無効化
HelmChartRepository
の disabled
プロパティーを true
に設定して、カタログにある特定の Helm チャートリポジトリーからの Helm チャートを無効にできます。
手順
CLI を使用して Helm チャートリポジトリーを無効にするには、
disabled: true
フラグをカスタムリソースに追加します。たとえば、Azure サンプルチャートリポジトリーを削除するには、以下を実行します。$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: azure-sample-repo spec: connectionConfig: url:https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs disabled: true EOF
Web コンソールを使用して、最近追加された Helm チャートリポジトリーを無効にするには、以下を実行します。
-
Custom Resource Definitions に移動し、
HelmChartRepository
カスタムリソースを検索します。 - Instances に移動し、無効にするリポジトリーを見つけ、その名前をクリックします。
YAML タブに移動し、
spec
セクションにdisabled: true
フラグを追加し、Save
をクリックします。例
spec: connectionConfig: url: <url-of-the-repositoru-to-be-disabled> disabled: true
リポジトリーは無効にされ、カタログには表示されなくなります。
-
Custom Resource Definitions に移動し、