4.3. クラスターへのプラグインのデプロイ
プラグインを Red Hat OpenShift Service on AWS にデプロイできます。
4.3.1. Docker を使用したイメージのビルド
クラスターにプラグインをデプロイするには、まずイメージをビルドし、それをイメージレジストリーにプッシュする必要があります。
手順
以下のコマンドでイメージをビルドします。
$ docker build -t quay.io/my-repositroy/my-plugin:latest .
オプション: イメージをテストする場合は、以下のコマンドを実行します。
$ docker run -it --rm -d -p 9001:80 quay.io/my-repository/my-plugin:latest
以下のコマンドを実行してイメージをプッシュします。
$ docker push quay.io/my-repository/my-plugin:latest
4.3.2. クラスターへのプラグインのデプロイ
変更を加えたイメージをレジストリーにプッシュした後、Helm チャートを使用してプラグインをクラスターにデプロイできます。
前提条件
以前にプッシュしたプラグインを含むイメージの場所が用意されている。
注記プラグインのニーズに応じて追加のパラメーターを指定できます。
values.yaml
ファイルに、サポートされているパラメーターがすべて含まれています。
手順
プラグインをクラスターにデプロイするには、プラグインの名前を Helm リリース名として Helm チャートを、新しい namespace または
-n
コマンドラインオプションで指定された既存の namespace にインストールします。次のコマンドを使用して、plugin.image
パラメーター内のイメージの場所を指定します。$ helm upgrade -i my-plugin charts/openshift-console-plugin -n my-plugin-namespace --create-namespace --set plugin.image=my-plugin-image-location
ここでは、以下のようになります。
n <my-plugin-namespace>
- プラグインをデプロイする既存の namespace を指定します。
--create-namespace
- オプション: 新しい namespace にデプロイする場合は、このパラメーターを使用します。
--set plugin.image=my-plugin-image-location
-
plugin.image
パラメーター内のイメージの場所を指定します。
注記Red Hat OpenShift Service on AWS 4.10 以降にデプロイする場合は、パラメーター
--set plugin.securityContext.enabled=false
を追加して、Pod セキュリティーに関連する設定を除外することを推奨します。オプション:
charts/openshift-console-plugin/values.yaml
ファイルでサポートされている一連のパラメーターを使用して、追加のパラメーターを指定できます。plugin: name: "" description: "" image: "" imagePullPolicy: IfNotPresent replicas: 2 port: 9443 securityContext: enabled: true podSecurityContext: enabled: true runAsNonRoot: true seccompProfile: type: RuntimeDefault containerSecurityContext: enabled: true allowPrivilegeEscalation: false capabilities: drop: - ALL resources: requests: cpu: 10m memory: 50Mi basePath: / certificateSecretName: "" serviceAccount: create: true annotations: {} name: "" patcherServiceAccount: create: true annotations: {} name: "" jobs: patchConsoles: enabled: true image: "registry.redhat.io/openshift4/ose-tools-rhel8@sha256:e44074f21e0cca6464e50cb6ff934747e0bd11162ea01d522433a1a1ae116103" podSecurityContext: enabled: true runAsNonRoot: true seccompProfile: type: RuntimeDefault containerSecurityContext: enabled: true allowPrivilegeEscalation: false capabilities: drop: - ALL resources: requests: cpu: 10m memory: 50Mi
検証
-
有効なプラグインのリストを表示するには、Administration
Cluster Settings Configuration Console operator.openshift.io
Console plugins に移動するか、Overview ページにアクセスします。
新しいプラグイン設定が表示されるまで数分かかる場合があります。最近プラグインを有効にしたにもかかわらず、プラグインが表示されない場合は、ブラウザを更新する必要が生じる可能性があります。実行時にエラーが発生した場合は、ブラウザー開発者ツールの JS コンソールをチェックして、プラグインコードにエラーがないか調べてください。
4.3.3. プラグインサービスプロキシー
プラグインからクラスター内のサービスに HTTP リクエストを送信する必要がある場合は、spec.proxy
配列フィールドを使用して、ConsolePlugin
リソースでサービスプロキシーを宣言できます。コンソールバックエンドは、プラグインとサービス間の通信をプロキシーするために、/api/proxy/plugin/<plugin-name>/<proxy-alias>/<request-path>?<optional-query-parameters>
エンドポイントを公開します。プロキシーされたリクエストは、デフォルトで サービス CA バンドル を使用します。このサービスは HTTPS を使用する必要があります。
プラグインは、JavaScript コードからリクエストを行うために consolefetch
API を使用する必要があります。そうしないと、一部のリクエストが失敗する可能性があります。詳細は、「動的プラグイン API」を参照してください。
エントリーごとに、endpoint
and alias
フィールドでプロキシーのエンドポイントとエイリアスを指定する必要があります。Service プロキシータイプの場合、エンドポイント type
フィールドを Service
に設定し、service
に name
、namespace
、および port
フィールドの値を含める必要があります。たとえば、/api/proxy/plugin/helm/helm-charts/releases?limit=10
は、10 個の Helm リリースをリストする helm-charts
サービスが含まれる helm
プラグインからのプロキシー要求パスです。
サービスプロキシーの例
apiVersion: console.openshift.io/v1 kind: ConsolePlugin metadata: name:<plugin-name> spec: proxy: - alias: helm-charts 1 authorization: UserToken 2 caCertificate: '-----BEGIN CERTIFICATE-----\nMIID....'en 3 endpoint: 4 service: name: <service-name> namespace: <service-namespace> port: <service-port> type: Service
- 1
- プロキシーのエイリアス。
- 2
- サービスプロキシー要求にログインしたユーザーの Red Hat OpenShift Service on AWS アクセストークンを含める必要がある場合は、authorization フィールドを
UserToken
に設定する必要があります。注記サービスプロキシーリクエストにログインユーザーの Red Hat OpenShift Service on AWS アクセストークンが含まれていない場合は、authorization フィールドを
None
に設定します。 - 3
- サービスがカスタムサービス CA を使用する場合、
caCertificate
フィールドに証明書バンドルが含まれている必要があります。 - 4
- プロキシーのエンドポイント。
4.3.4. ブラウザーでのプラグインの無効化
コンソールユーザーは、disable-plugins
クエリーパラメーターを使用して、通常ランタイム時にロードされる特定またはすべての動的プラグインを無効にすることができます。
手順
- 特定のプラグインを無効にするには、プラグイン名のコンマ区切りリストから無効にするプラグインを削除します。
-
すべてのプラグインを無効にするには、
disable-plugins
クエリーパラメーターを空の文字列のままにします。
クラスター管理者は、Web コンソールの Cluster Settings ページでプラグインを無効にできます。