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 がインストールされている。

手順

  1. 新規プロジェクトを作成します。

    $ oc new-project vault
  2. Helm チャートのリポジトリーをローカルの Helm クライアントに追加します。

    $ helm repo add openshift-helm-charts https://charts.openshift.io/

    出力例

    "openshift-helm-charts" has been added to your repositories

  3. リポジトリーを更新します。

    $ helm repo update
  4. サンプルの 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!

  5. チャートが正常にインストールされたことを確認します。

    $ 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 コンソールまたは CLI コンソールの Developer パースペクティブを使用して、Developer Catalog にリスト表示されている Helm チャートからチャートを選択し、インストールできます。Helm チャートをインストールして Helm リリースを作成し、Web コンソールの Developer パースペクティブに表示できます。

前提条件

手順

Developer Catalog で提供される Helm チャートから Helm リリースを作成するには、以下を実行します。

  1. Developer パースペクティブで、+Add ビューに移動し、プロジェクトを選択します。次に、Helm Chart オプションをクリックし、Developer Catalog にすべての Helm チャートを表示します。
  2. チャートを選択し、チャートの説明、README、チャートについてのその他の詳細を確認します。
  3. Install Helm Chart をクリックします。

    図7.1 Developer カタログの Helm チャート

    odc helm chart devcatalog
  4. Install Helm Chart ページで以下を行います。

    1. リリースの固有の名前を Release Name フィールドに入力します。
    2. Chart Version ドロップダウンリストから必要なチャートのバージョンを選択します。
    3. Form View または YAML View を使用して Helm チャートを設定します。

      注記

      利用可能な場合は、YAML ViewForm View 間で切り替えることができます。ビューの切り替え時に、データは永続化されます。

    4. Install をクリックして Helm リリースを作成します。リリースが表示される Topology ビューにリダイレクトされます。Helm チャートにリリースノートがある場合、チャートは事前に選択され、右側のパネルにそのリリースのリリースノートが表示されます。
    5. Helm Releases ページで、新しく作成された Helm リリースを表示します。

サイドパネルで Actions ボタンを使用するか、Helm リリースを右クリックして Helm リリースのアップグレード、ロールバック、またはアンインストールを実行できます。

7.3.3. Web 端末での Helm の使用

Web コンソールの Developer パースペクティブで Web ターミナルにアクセス すると、Helm を使用できます。

7.3.4. OpenShift Container Platform でのカスタム Helm チャートの作成

手順

  1. 新規プロジェクトを作成します。

    $ oc new-project nodejs-ex-k
  2. OpenShift Container Platform オブジェクトが含まれる Node.js チャートのサンプルをダウンロードします。

    $ git clone https://github.com/redhat-developer/redhat-helm-charts
  3. サンプルチャートを含むディレクトリーに移動します。

    $ cd redhat-helm-charts/alpha/nodejs-ex-k/
  4. 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
    1
    チャート API バージョン。これは、Helm 3 以上を必要とする Helm チャートの場合は v2 である必要があります。
    2
    チャートの名前。
    3
    チャートの説明。
    4
    アイコンとして使用するイメージへの URL。
    5
    Semantic Versioning (SemVer) 2.0.0 仕様に準拠したチャートのバージョン。
  5. チャートが適切にフォーマットされていることを確認します。

    $ helm lint

    出力例

    [INFO] Chart.yaml: icon is recommended
    
    1 chart(s) linted, 0 chart(s) failed

  6. 直前のディレクトリーレベルに移動します。

    $ cd ..
  7. チャートをインストールします。

    $ helm install nodejs-chart nodejs-ex-k
  8. チャートが正常にインストールされたことを確認します。

    $ 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 チャートへのアクセスを有効にできます。

手順

  1. 新規の 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
  2. Web コンソールで Developer Catalog に移動し、チャートリポジトリーの Helm チャートが表示されることを確認します。

    たとえば、Chart リポジトリー フィルターを使用して、リポジトリーから Helm チャートを検索します。

    図7.2 チャートリポジトリーのフィルター

    odc helm chart repo filter
    注記

    クラスター管理者がすべてのチャートリポジトリーを削除する場合は、+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 チャートへのアクセスを有効にできます。

手順

  1. 新規の 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

  2. Web コンソールで Developer Catalog に移動し、チャートリポジトリーの Helm チャートが my-namespace namespace に表示されることを確認します。

    たとえば、Chart リポジトリー フィルターを使用して、リポジトリーから Helm チャートを検索します。

    図7.3 namespace のチャートリポジトリーフィルター

    odc namespace helm chart repo filter

    あるいは、以下のコマンドを実行します。

    $ 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 チャートリポジトリーを追加します。

  1. 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
  2. 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 キーに保存される必要があります。

  3. 以下のように 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 への接続に使用されます。

  4. デフォルトでは、認証されたユーザーはすべて設定済みのチャートにアクセスできます。ただし、証明書が必要なチャートリポジトリーの場合は、以下のように 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 チャートをフィルターできます。

手順

  1. Developer パースペクティブで、+Add ビューに移動し、プロジェクトを選択します。
  2. Developer Catalog タイルから、Helm Chart オプションを選択して Developer Catalog ですべての Helm チャートを表示します。
  3. Helm チャートのリストの左側にあるフィルターを使用して、必要なチャートをフィルターします。

    • Chart Repositories フィルターを使用して、Red Hat Certification Charts または OpenShift Helm Charts が提供したチャートをフィルターします。
    • Source フィルターを使用して、PartnersCommunity または Red Hat から提供されるチャートをフィルターします。認定チャートはアイコン ( odc verified icon ) で表示されます。
注記

プロバイダータイプが 1 つしかない場合は、Source フィルターは表示されません。

必要なチャートを選択してインストールできるようになりました。

7.3.9. Helm チャートリポジトリーの無効化

HelmChartRepositorydisabled プロパティーを 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 チャートリポジトリーを無効にするには、以下を実行します。

    1. Custom Resource Definitions に移動し、 HelmChartRepository カスタムリソースを検索します。
    2. Instances に移動し、無効にするリポジトリーを見つけ、その名前をクリックします。
    3. YAML タブに移動し、spec セクションに disabled: true フラグを追加し、Save をクリックします。

      spec:
        connectionConfig:
          url: <url-of-the-repositoru-to-be-disabled>
        disabled: true

      リポジトリーは無効にされ、カタログには表示されなくなります。