2.2. コマンドラインを使用した OpenShift 4.x での Fuse Console のインストールおよびデプロイ

OpenShift 4.x では、次のデプロイメントオプションの 1 つを選択して、コマンドラインから Fuse Console をインストールおよびデプロイできます。

  • cluster - Fuse Console は、OpenShift クラスターで複数の namespace (プロジェクト) 全体にデプロイされた Fuse アプリケーションを検索し、接続することができます。このテンプレートをデプロイするには、OpenShift クラスターの管理者ロールが必要です。
  • ロールベースアクセス制御のあるクラスター - 設定可能なロールベースアクセス制御 (RBAC) のあるクラスターテンプレート。詳細は、OpenShift 4.x 上の Fuse Console のロールベースアクセス制御 を参照してください。
  • namespace - Fuse Console は特定の OpenShift プロジェクト (namespace) にアクセスできます。このテンプレートをデプロイするには、OpenShift プロジェクトの管理者ロールが必要です。
  • ロールベースアクセス制御のある namespace - 設定可能な RBAC のある namespace テンプレート。詳細は、OpenShift 4.x 上の Fuse Console のロールベースアクセス制御 を参照してください。

Fuse Console テンプレートのパラメーターリストを表示するには、以下の OpenShift コマンドを実行します。

oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-sb2-7_10_0-00015-redhat-00001/fuse-console-namespace-os4.json

前提条件

手順

  1. 以下のコマンドを実行してすべてのテンプレートのリストを取得し、Fuse Console イメージストリームがインストールされていることを確認します。

    oc get template -n openshift
  2. 任意で、すでにインストールされているイメージストリームを新しいリリースタグで更新する場合は、以下のコマンドを使用して openshift namespace に Fuse Console イメージをインポートします。

    oc import-image fuse7/fuse-console-rhel8:1.10 --from=registry.redhat.io/fuse7/fuse-console-rhel8:1.10 --confirm -n openshift
  3. 以下のコマンドを実行して、Fuse Console の APP_NAME の値を取得します。

    oc process --parameters -f TEMPLATE-FILENAME

    ここで、TEMPLATE-FILENAME は以下のテンプレートのいずれかになります。

  4. 以下のコマンドを使用して、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
  5. 以下のコマンドを実行して、ローカルにコピーされた Fuse Console テンプレートをベースとした新しいアプリケーションを作成します。コマンドの myproject は OpenShift プロジェクトの名前、mytemp は Fuse Console テンプレートが含まれるローカルディレクトリーへのパス、myhost は Fuse Console にアクセスするホストの名前に置き換えます。

    • クラスターテンプレートの場合:

      oc new-app -n myproject -f {templates-base-url}/fuse-console-cluster-os4.json  -p ROUTE_HOSTNAME=myhost”
    • RBAC テンプレートのあるクラスターの場合:

      oc new-app -n myproject -f {templates-base-url}/fuse-console-cluster-rbac.yml -p ROUTE_HOSTNAME=myhost”
    • Namespace テンプレートの場合:

      {templates-base-url}/fuse-console-namespace-os4.json
    • RBAC テンプレートのある namespace の場合:

      oc new-app -n myproject -f {templates-base-url}/fuse-console-namespace-rbac.yml
  6. OpenShift Web コンソールを開くように Fuse Console を設定するには、以下のコマンドを実行して OPENSHIFT_WEB_CONSOLE_URL 環境変数を設定します。

    oc set env dc/${APP_NAME} OPENSHIFT_WEB_CONSOLE_URL=`oc get -n openshift-config-managed cm console-public -o jsonpath={.data.consoleURL}`
  7. 以下のコマンドを実行して、Fuse Console デプロイメントの状態と URL を取得します。

    oc status
  8. ブラウザーから Fuse Console にアクセスするには、手順 7. で返される URL (例: https://fuse-console.192.168.64.12.nip.io) を使用します。

2.2.1. OpenShift 4.x で Fuse Console をセキュア化するための証明書の生成

OpenShift 4.x で、Fuse Console プロキシーと Jolokia エージェントとの間の接続をセキュアにするには、Fuse Console をデプロイする前にクライアント証明書を生成する必要があります。サービス署名認証局の秘密鍵を使用して、クライアント証明書を署名する必要があります。

この手順は、コマンドラインを使用して Fuse Console をインストールおよびデプロイしている場合に のみ 実行する必要があります。Fuse Console Operator を使用している場合は、Fuse Console Operator がこのタスクを処理します。

重要

各 OpenShift クラスターに別のクライアント証明書を生成し、署名する必要があります。複数のクラスターに同じ証明書を使用しないでください。

前提条件

  • OpenShift クラスターにアクセス可能な cluster admin 権限が必要です。
  • 複数の OpenShift クラスターの証明書を生成し、現在のディレクトリーに別のクラスターの証明書を生成している場合は、以下のいずれかを実行して、現在のクラスターに別の証明書を生成するようにします。

    • 現在のディレクトリーから既存の証明書ファイル (ca.crtca.key、および ca.srl) を削除します。
    • 別の作業ディレクトリーに移動します。たとえば、現在の作業ディレクトリーの名前が cluster1 の場合、新しい cluster2 ディレクトリーを作成し、作業ディレクトリーをそのディレクトリーに変更します。

      mkdir ../cluster2

      cd ../cluster2

手順

  1. cluster admin 権限を持つユーザーとして OpenShift にログインします。

    oc login -u <user_with_cluster_admin_role>
  2. 以下のコマンドを実行して、サービス署名認証局のキーを取得します。

    • 以下を実行して、証明書を取得します。

      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
  3. Kubernetes certificates administration の説明にしたがって、easyrsaopenssl、または cfssl を使用して、クライアント証明書を生成します。

    以下に、openssl を使用したコマンドの例を示します。

    1. 秘密鍵を生成します。

      openssl genrsa -out server.key 2048
    2. CSR 設定ファイルを作成します。

      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
      EOT

      ここでは、CN パラメーターの値はアプリケーション名とアプリケーションが使用する namespace を参照します。

    3. CSR を生成します。

      openssl req -new -key server.key -out server.csr -config csr.conf
    4. 署名済みの証明書を発行します。

      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 のシークレットを作成するには、この証明書が必要です。