第7章 サンプルワークフロー: Red Hat JBoss BRMS アプリケーションの Realtime Decision Server for OpenShift でのデプロイ

このチュートリアルでは、Red Hat JBoss BRMS アプリケーションを Realtime Decision Server for OpenShift としてデプロイできるように準備します。Red Hat JBoss BRMS アプリケーションでは、変更をイメージとしてデプロイすることが必要になる場合があります。

アプリケーションの準備
Red Hat JBoss BRMS プロジェクトはステートレスなナレッジセッションを持ち、リモートリポジトリーを使用し、KIE コンテナーのデプロイメントを定義するよう設定される必要があります。
これらのタスクの詳細については、『Red Hat JBoss BRMS User Guide』を参照してください。

  1. Red Hat JBoss BRMS コンソールにログインし、Project Explorer でプロジェクト設定を編集します。
  2. Open Project Editor をクリックして Project Settings を開きます。

    1. Knowledge bases and sessions の下で、Knowledge SessionStateless に設定されていることを確認します。OpenShift は KIE サーバーでのステートフルセッションをサポートしません。
    2. Repository View を使用して、以下のように xml を組み込み、pom.xml をリモートリポジトリーを使用するように設定します。

      ...
      <distributionManagement>
        <repository>
          <id>deployment</id>
          <name>OpenShift Maven repo</name>
          <url>http://maven.example/content/repo/deployments/</url>
        </repository>
      
        <snapshotRepository>
          <id>deployment</id>
          <name>OpenShift Maven repo</name>
          <url>http://maven.example.xas/content/repo/snapshots/</url>
        </snapshotRepository>
      </distributionManagement>
      ...

      詳細は、『Red Hat JBoss BRMS Administration and Configuration Guide』を参照してください。

  3. アプリケーションのリポジトリーで、settings.xml および .s2i/environment ファイルが Maven リポジトリーと KIE コンテナーのデプロイメントのそれぞれを定義していることを確認します。

    1. Maven リポジトリーは、OpenShift がアプリケーションのアーティファクトをダウンロードできるように settings.xml に設定する必要があります。以下のような xml が必要です。

      ...
      <profiles>
        <profile>
          <id>openshift-mirror-repositories</id>
          <repositories>
            <repository>
              <id>openshift-mirror</id>
              <url>http://maven.example/content/group/public/</url>
            </repository>
          </repositories>
      
          <pluginRepositories>
            <pluginRepository>
              <id>openshift-mirror</id>
              <url>http://maven.example/content/group/public/</url>
            </pluginRepository>
          </pluginRepositories>
        </profile>
      </profiles>
      ...

      詳細は、『Red Hat JBoss BRMS Installation Guide』を参照してください。

    2. .s2i/environment ファイルでは、使用する KIE jar やそれらを取得する場所を含む、KIE コンテナーのデプロイメントを定義する必要があります。Pod 名は、この例では DemoContainer として定義されているデプロイメントのエイリアスに派生する名前になります。

      KIE_CONTAINER_DEPLOYMENT_OVERRIDE=DemoContainer=com.example.openshift:example_workflow:1.0

7.1. Decision Server デプロイメントの準備

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

    $ oc new-project rds-app-demo
  2. Decision Server アプリケーションのデプロイメントに使用されるサービスアカウントを作成します。

    $ oc create serviceaccount rds-service-account
  3. 表示 (view) ロールをサービスアカウントに追加します。これにより、サービスアカウントを使って、rds-app-demo 名前空間にあるすべてのリソースを表示できます。これは、クラスターの管理に必要です。

    $ oc policy add-role-to-user view system:serviceaccount:rds-app-demo:rds-service-account
  4. Decision Server テンプレートには SSL キーストアおよび JGroups キーストアが必要です。
    これらのキーストアは、アプリケーションが https を使用しない場合にも使用されることが予想されます。
    この例では、Java Development Kit に含まれるパッケージ「keytool」を使用して、これらのキーストアの自己署名型の証明書を生成します。以下のコマンドはパスワードを求めるプロンプトを出します。

    1. SSL キーストアのセキュアな鍵を生成します。

      $ keytool -genkeypair -alias https -storetype JKS -keystore keystore.jks
    2. JGroups キーストアのセキュアな鍵を生成します。

      $ keytool -genseckey -alias jgroups -storetype JCEKS -keystore jgroups.jceks
  5. SSL および JGroup キーストアファイルを使用してプロジェクトのシークレットを作成します。

    $ oc create secret generic rds-app-secret --from-file=jgroups.jceks --from-file=keystore.jks
  6. シークレットを先に作成したサービスアカウントに追加します。

    $ oc secret add sa/rds-service-account secret/rds-app-secret

7.2. デプロイメント

  1. OpenShift web コンソールにログインし、rds-app-demo プロジェクトスペースを選択します。
  2. Add to Project をクリックして、すべてのデフォルトのイメージストリームおよびテンプレートを一覧表示します。
  3. Filter by keyword 検索バーを使用して一覧を decisionserver に一致する項目に制限します。See all をクリックして必要なアプリケーションテンプレートを表示する必要があります。
  4. 必要なテンプレートを選択し、設定して Deploy をクリックします。

ビルド時に Maven リポジトリーはダウンロードされ、コンテナーにビルドされるため、追加のパッケージまたは依存関係はランタイム時にダウンロードされません。

いったん Pod が実行されると、アプリケーションは利用可能になります。Decision Server web コンソールに接続するには、Pod に移動し、Open Java Console ボタンをクリックします。