1.2. OpenShift 4.x での Fuse Console の設定

OpenShift 4.x では、Fuse Console の設定に、セキュリティーのセキュア化、インストール、およびデプロイが必要になります。

まず、クライアント証明書を生成して、「OpenShift 4.x で Fuse Console をセキュア化するための証明書を生成」 の説明どおりに Fuse Console をセキュア化できるようにします。

クライアント証明書を生成した後に 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.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
    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

次のステップ

Fuse Console のインストール方法に応じて、以下のセクションの説明どおりに Fuse Console のシークレットを作成するには、この証明書が必要です。

1.2.2. OperatorHub を使用した OpenShift 4.x での Fuse Console のインストールおよびデプロイ

OpenShift 4.x に Fuse Console をインストールするには、OpenShift OperatorHub で提供される Fuse Console Operator を使用します。Fuse Console をデプロイするには、インストールされた Operator のインスタンスを作成します。

前提条件

手順

Fuse Console をインストールおよびデプロイするには、以下を行います。

  1. Web ブラウザーで、cluster admin 権限を持つユーザーとして OpenShift コンソールにログインします。
  2. Home > Projects と選択し、Fuse Console を追加するプロジェクトを選択します。
  3. Operators をクリックした後、OperatorHub をクリックします。
  4. 検索フィールドウインドウに Fuse Console と入力し、Operator のリストを絞り込みます。
  5. Fuse Console Operator をクリックします。
  6. Fuse Console Operator インストールウィンドウで Install をクリックします。

    Create Operator Subscription フォームが表示されます。

    • Install mode で、Fuse Console Operator を固有の namespace (現在の OpenShift プロジェクト) にインストールします。

      operator のインストール後に、Fuse Console をデプロイして、クラスター上の全 namespace でアプリケーションを監視するか、Fuse Console operator がインストールされた namespace だけでアプリケーションを監視するかを選択できる点に注意してください。

    • Approval Strategy では、Automatic または Manual を選択し、Fuse Console の更新が OpenShift によってどのように対処されるかを設定します。

      • Automatic (自動) 更新を選択した場合、新しいバージョンの Fuse Console Operator が使用できるようになると、人的な介入なしで OpenShfit Operator Lifecycle Manager (OLM) によって、Fuse Console の稼働中のインスタンスが自動的にアップグレードされます。
      • Manual (手動) 更新を選択した場合、Operator の新しいバージョンが使用できるようになると、OLM によって更新リクエストが作成されます。クラスター管理者は、更新リクエストを手動で承認して、Fuse Console Operator を新しいバージョンに更新する必要があります。
  7. Subscribe をクリックします。

    OpenShift によって、Fuse Console Operator が現在の namespace にインストールされます。

  8. インストールを確認するには、Operators をクリックした後、Installed Operators をクリックします。Operator のリストに Fuse Console が表示されます。
  9. ターミナルウインドウで以下のコマンドを使用して、OpenShift 4.x で Fuse Console をセキュア化するための証明書の生成 で生成した証明書を使用してシークレットを作成し、Fuse Console にマウントします。コマンドの APP_NAME は、Fuse Console Deployment (例: fuse-console) の名前に置き換えます。

    oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key

    たとえば、Fuse Console アプリケーションの名前が fuse-console の場合は、以下のコマンドを入力します。

    oc create secret tls fuse-console-tls-proxying --cert server.crt --key server.key

    コマンドの実行に成功すると、シークレットの作成を確認する以下のような応答が返されます。

    secret/fuse-console-operator-tls-proxying created
  10. OpenShift Web コンソールで Fuse Console をデプロイするには、以下を行います。

    1. Installed Operators のリストで、Name 列の Fuse Console をクリックします。
    2. Provided APIsOverview ページで、Create Instance をクリックします。新しいカスタムリソース定義 (CRD) ファイルが表示されます。

      デフォルトでは、Fuse Console は現在の namespace にデプロイされます。

    3. Fuse Console をデプロイして現在の namespace でアプリケーションを検出して管理する場合には、次の手順に進んでください。

      オプションで Fuse Console をデプロイしてクラスター上の (またはユーザー認証が済んでいる) 全 namespace でアプリケーションを検出して管理する場合には、namespace から clusterspec.type フィールドの値を変更して、CRD ファイルを編集します。

    4. Create をクリックします。

      Fuse Console CRD ページが開き、新しい Fuse Console サービスが表示されます。

  11. Fuse Console を開くには以下を行います。

    1. Fuse Console の URL を取得します。

      • OpenShift Web コンソールから Networking > Routes の順に選択します。
      • コマンドラインで oc get routes コマンドを入力します。
    2. Web ブラウザーで、Fuse Console URL を開き、コンソールにログインします。

      ブラウザーに Authorize Access ページが表示され、必要なパーミッションが表示されます。

    3. Allow selected permissions をクリックします。

      Fuse Console がブラウザーで開き、アクセス権限のある Fuse アプリケーション Pod が表示されます。

  12. 表示するアプリケーションの Connect をクリックします。

    新しいブラウザーウィンドウが開かれ、Fuse Console にアプリケーションが表示されます。

1.2.3. コマンドラインを使用した 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.0.fuse-760043-redhat-00003/fuse-console-namespace-os4.json

前提条件

手順

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

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

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

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

      oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-760043-redhat-00003/fuse-console-cluster-os4.json
    • Namespace テンプレートの場合:

      oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.0.fuse-760043-redhat-00003/fuse-console-namespace-os4.json
  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. 以下のコマンドを実行して、新しいアプリケーションを作成します。ここで、$project は OpenShift プロジェクトの名前、$APP_NAME は上記の手順で取得したアプリケーションの名前、$DOMAIN_NAME は Fuse Console にアクセスするためのホスト名に置き換えます。

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

      oc new-app -n $project -f {templates-base-url}/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=$APP_NAME.$DOMAIN_NAME -p APP_NAME=$APP_NAME
    • Namespace テンプレートの場合:

      oc new-app -n myproject -f {templates-base-url}/fuse-console-namespace-os4.json
  6. 以下のコマンドを実行して、Fuse Console デプロイメントの状態と URL を取得します。

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

1.2.4. 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 アプリケーションをアップグレードするには、以下を行います。

  1. ターミナルウィンドウで、以下のコマンドを使用してアプリケーションカスタムリソース定義の .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"}}'
  2. アプリケーションの状態が更新されたことを確認します。

     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 によってアプリケーションが自動的に再デプロイされます。

  3. バージョンの変更によってトリガーされた再デプロイの状態をチェックするには、以下を実行します。

    oc rollout status deployment.v1.apps/example-fuseconsole

    正常にデプロイされた場合は以下の応答が表示されます。

    deployment "example-fuseconsole" successfully rolled out