1.2. OpenShift 4.x での Fuse Console の設定
OpenShift 4.x では、Fuse Console の設定に、セキュリティーのセキュア化、インストール、およびデプロイが必要になります。
まず、クライアント証明書を生成して、「OpenShift 4.x で Fuse Console をセキュア化するための証明書を生成」 の説明どおりに Fuse Console をセキュア化できるようにします。
クライアント証明書を生成した後、OpenShift クラスターの複数の namespace または特定の namespace にある Fuse アプリケーションにアクセスするために、コマンドラインと Fuse Console テンプレートの 1 つを使用して Fuse Console をインストールおよびデプロイします。
- Fuse Console のユーザー管理は、OpenShift によって処理されます。
- ロールベースアクセス制御 (デプロイ後に Fuse Console にアクセスするユーザーの場合) は現在 Fuse on OpenShift では使用できません。
1.2.1. OpenShift 4.x で Fuse Console をセキュア化するための証明書を生成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift 4.x で、Fuse Console プロキシーと Jolokia エージェントとの間の接続をセキュアにするには、Fuse Console をデプロイする前にクライアント証明書を生成する必要があります。サービス署名認証局の秘密鍵を使用して、クライアント証明書を署名する必要があります。
各 OpenShift クラスターに別のクライアント証明書を生成し、署名する必要があります。複数のクラスターに同じ証明書を使用しないでください。
前提条件
-
OpenShift クラスターにアクセス可能な
cluster admin権限がある。 複数の OpenShift クラスターの証明書を生成し、現在のディレクトリーに別のクラスターの証明書を生成している場合は、以下のいずれかを実行して、現在のクラスターに別の証明書を生成するようにします。
-
現在のディレクトリーから既存の証明書ファイル (
ca.crt、ca.key、およびca.srl) を削除します。 別の作業ディレクトリーに移動します。たとえば、現在の作業ディレクトリーの名前が
cluster1の場合、新しいcluster2ディレクトリーを作成し、作業ディレクトリーをそのディレクトリーに変更します。mkdir ../cluster2cd ../cluster2
-
現在のディレクトリーから既存の証明書ファイル (
手順
cluster admin 権限を持つユーザーとして OpenShift にログインします。
oc login -u <user_with_cluster_admin_role>以下のコマンドを実行して、サービス署名認証局のキーを取得します。
以下を実行して、証明書を取得します。
oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.crt']}" | base64 --decode > ca.crt以下を実行して、秘密鍵を取得します。
oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.key']}" | base64 --decode > ca.key
Kubernetes certificates administration の説明にしたがって、
easyrsa、openssl、またはcfsslを使用して、クライアント証明書を生成します。以下に、openssl を使用したコマンドの例を示します。
秘密鍵を生成します。
openssl genrsa -out server.key 2048CSR 設定ファイルを作成します。
cat <<EOT >> csr.conf [ req ] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [ dn ] CN = fuse-console.fuse.svc [ v3_ext ] authorityKeyIdentifier=keyid,issuer:always keyUsage=keyEncipherment,dataEncipherment,digitalSignature extendedKeyUsage=serverAuth,clientAuth EOTCSR を生成します。
openssl req -new -key server.key -out server.csr -config csr.conf署名済みの証明書を発行します。
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf
次のステップ
コマンドラインを使用した OpenShift 4.x での Fuse Console のインストールおよびデプロイ で説明されているように、Fuse Console のシークレットを作成するには、この証明書が必要です。
1.2.2. コマンドラインを使用した OpenShift 4.x での Fuse Console のインストールおよびデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift 4.x では、次のデプロイメントオプションの 1 つを選択して、コマンドラインから Fuse Console をインストールおよびデプロイできます。
- cluster - Fuse Console は、OpenShift クラスターで複数の namespace (プロジェクト) 全体にデプロイされた Fuse アプリケーションを検索し、接続することができます。このテンプレートをデプロイするには、OpenShift クラスターの管理者ロールが必要です。
- namespace - Fuse Console は特定の OpenShift プロジェクト (namespace) にアクセスできます。このテンプレートをデプロイするには、OpenShift プロジェクトの管理者ロールが必要です。
Fuse Console テンプレートのパラメーターリストを表示するには、以下の OpenShift コマンドを実行します。
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-750056-redhat-00006/fuse-console-namespace-os4.json
前提条件
- Fuse Console をインストールおよびデプロイする前に、OpenShift 4.x で Fuse Console をセキュア化するための証明書の生成 の説明どおりに、サービス署名認証局で署名されたクライアント証明書を生成する必要があります。
-
OpenShift クラスターの
cluster adminロールが必要です。 - OpenShift 4.x サーバーでの Fuse イメージストリームおよびテンプレートのインストール の説明どおりに Fuse Console イメージストリーム (およびその他の Fuse イメージストリーム) がインストールされている必要があります。
手順
以下のコマンドを実行してすべてのテンプレートのリストを取得し、Fuse Console イメージストリームがインストールされていることを確認します。
oc get template -n openshift任意で、すでにインストールされているイメージストリームを新しいリリースタグで更新する場合は、以下のコマンドを使用して openshift namespace に Fuse Console イメージをインポートします。
oc import-image fuse7/fuse7-console:1.5 --from=registry.redhat.io/fuse7/fuse-console:1.5 --confirm -n openshift以下の Fuse Console テンプレートの 1 つを、raw 形式の
https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-750056-redhat-00006から任意のローカルディレクトリーにダウンロードします(例: mytemp)。-
クラスターテンプレート:
fuse-console-cluster-os4.json -
namespace テンプレート:
fuse-console-namespace-os4.json
-
クラスターテンプレート:
namespace テンプレートの場合は、次のステップに進みます。
クラスターテンプレートの場合、任意のエディターで
fuse-console-cluster-os4.jsonファイルのローカルコピーを編集し、"grantMethod": "auto"属性をOAuthClientセクションに追加します。{ "kind": "OAuthClient", "apiVersion": "v1", "metadata": { "name": "${APP_NAME}-oauth-client" }, "grantMethod": "auto", "redirectURIs": [ "https://${ROUTE_HOSTNAME}" ] }以下のコマンドを実行して、Fuse Console の APP_NAME の値を取得します。コマンドの mytemp は、Fuse Console テンプレートが含まれるローカルディレクトリーのパスに置き換えます。
クラスターテンプレートの場合:
oc process --parameters -f mytemp/fuse-console-cluster-os4.jsonNamespace テンプレートの場合:
oc process --parameters -f mytemp/fuse-console-namespace-os4.json
以下のコマンドを使用して、OpenShift 4.x で Fuse Console をセキュア化するための証明書の生成 で生成した証明書からシークレットを作成し、Fuse Console にマウントします。コマンドの APP_NAME は、Fuse Console アプリケーションの名前に置き換えます。
oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key以下のコマンドを実行して、ローカルにコピーされた Fuse Console テンプレートをベースとした新しいアプリケーションを作成します。コマンドの myproject は OpenShift プロジェクトの名前、mytemp は Fuse Console テンプレートが含まれるローカルディレクトリーへのパス、myhost は Fuse Console にアクセスするホストの名前に置き換えます。
クラスターテンプレートの場合:
oc new-app -n myproject -f mytemp/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=myhostNamespace テンプレートの場合:
oc new-app -n myproject -f mytemp/fuse-console-namespace-os4.json
以下のコマンドを実行して、Fuse Console デプロイメントの状態と URL を取得します。
oc status- ブラウザーから Fuse Console にアクセスするには、6. で返される URL (例: https://fuse-console.192.168.64.12.nip.io) を使用します。
1.2.3. OpenShift 4.x での Fuse Console のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift 4.x では、Red Hat Fuse Operator などの Operator の更新が処理されます。詳細は、OpenShift ドキュメントの Operator を参照してください。
また、Operator の更新によってアプリケーションのアップグレードがトリガーされる可能性があります。アプリケーションのアップグレードの実行方法は、アプリケーションの設定によって異なります。
Fuse Console アプリケーションでは、アプリケーションカスタムリソース定義の .spec.version フィールドを編集して、これらのアプリケーションへのアップグレードをトリガーするタイミングを指定できます。
前提条件
- OpenShift クラスターの管理者権限が必要です。
手順
Fuse Console アプリケーションをアップグレードするには、以下を行います。
ターミナルウィンドウで、以下のコマンドを使用してアプリケーションカスタムリソース定義の
.spec.versionフィールドを変更します。oc patch <project-name> <custom-resource-name> --type='merge' -p '{"spec":{"version":"1.7.1"}}'以下に例を示します。
oc patch myproject example-fuseconsole --type='merge' -p '{"spec":{"version":"1.7.1"}}'アプリケーションの状態が更新されたことを確認します。
oc get myproject応答には、バージョン番号などのアプリケーションに関する情報が表示されます。
NAME AGE URL IMAGE example-fuseconsole 1m https://fuseconsole.192.168.64.38.nip.io docker.io/fuseconsole/online:1.7.1.spec.versionフィールドの値を変更すると、OpenShift によってアプリケーションが自動的に再デプロイされます。バージョンの変更によってトリガーされた再デプロイの状態をチェックするには、以下を実行します。
oc rollout status deployment.v1.apps/example-fuseconsole正常にデプロイされた場合は以下の応答が表示されます。
deployment "example-fuseconsole" successfully rolled out