7.5. EAP Operator を使用した OpenShift での Java アプリケーションのデプロイ
EAP オペレーターは、OpenShift での Java アプリケーションのデプロイメントを自動化するのに役立ちます。EAP オペレーター API の詳細は、EAP Operator: API Information を参照してください。
前提条件
- EAP オペレーターがインストールされている。EAP オペレーターのインストールに関する詳細は、Installing EAP Operator Using the webconsole および CLI を使用した EAP Operator のインストール を参照してください。
- JBoss EAP for OpenShift Source-to-Image (S2I) ビルドイメージを使用して、ユーザーアプリケーションの Docker イメージを構築している。
-
OpenShift へのデプロイ後にアプリケーションの自動アップグレードを有効にする場合には、
eap-s2i-buildテンプレートのAPPLICATION_IMAGEパラメーターにイメージストリームがあります。eap-s2i-buildテンプレートを使用してアプリケーションイメージを構築する方法は、eap-s2i-build テンプレートを使用したアプリケーションイメージのビルド を参照してください。 -
アプリケーションの CustomResourceDefinition (CRD) ファイルが参照する場合は、
Secretオブジェクトを作成している。新しいSecretオブジェクト作成の詳細は Secret の作成 を参照してください。 -
アプリケーションの CRD ファイルが参照する場合は、
ConfigMapを作成している。ConfigMap作成の詳細は ConfigMap の作成 を参照してください。 -
必要であれば、
standalone.xmlファイルからConfigMapを作成している。standalone.xmlファイルからのConfigMapの作成の詳細は、standalone.xml ファイルからの ConfigMap の作成 を参照してください。
JBoss EAP 7 では、ConfigMap から standalone.xml ファイルを指定できません。
手順
- Web ブラウザーを開き、OperatorHub にログインします。
- Java アプリケーションに使用する Project または名前空間を選択します。
- Installed Operator に移動し、JBoss EAP オペレーターを選択します。
- Overview タブで、Create Instance リンクをクリックします。
アプリケーションイメージの詳細を指定します。
アプリケーションイメージは、Java アプリケーションが含まれる Docker イメージを指定します。イメージは JBoss EAP for OpenShift の Source-to-Image (S2I) ビルドイメージを使用してビルドする必要があります。
applicationImageフィールドがイメージストリームタグに対応している場合は、イメージへの変更により、アプリケーションの自動アップグレードがトリガーされます。JBoss EAP for OpenShift アプリケーションイメージの以下のリファレンスのいずれかを指定できます。
- イメージの名前: mycomp/myapp
- タグ: mycomp/myapp:1.0
- A digest: mycomp/myapp:@sha256:0af38bc38be93116b6a1d86a9c78bd14cd527121970899d719baf78e5dc7bfd2
- イメージストリームタグ: my-app:latest
アプリケーションのサイズを指定します。以下に例を示します。
spec: replicas:2env specを使用してアプリケーション環境を設定します。環境変数 は、POSTGRESQL_SERVICE_HOST などの値や POSTGRESQL_USER などのSecretオブジェクトから直接取得できます。以下に例を示します。spec: env: - name: POSTGRESQL_SERVICE_HOST value: postgresql - name: POSTGRESQL_SERVICE_PORT value: '5432' - name: POSTGRESQL_DATABASE valueFrom: secretKeyRef: key: database-name name: postgresql - name: POSTGRESQL_USER valueFrom: secretKeyRef: key: database-user name: postgresql - name: POSTGRESQL_PASSWORD valueFrom: secretKeyRef: key: database-password name: postgresqlアプリケーションのデプロイメントに関連する以下のオプションの設定を行います。
- サーバーデータディレクトリーのストレージ要件を指定します。詳細は、Configuring Persistent Storage for Applications を参照してください。
WildFlyServerSpecで作成したSecretの名前を指定し、アプリケーションを実行している Pod のボリュームとしてマウントします。以下に例を示します。spec: secrets: - my-secretSecretは/etc/secrets/<secret name>にマウントされ、それぞれのキー/ 値がファイルとして保存されます。ファイルの名前がキーに、コンテンツが値になります。Secretは pod 内のボリュームとしてマウントされます。以下の例は、キー値の検索に使用できるコマンドを示しています。$ ls /etc/secrets/my-secret/ my-key my-password $ cat /etc/secrets/my-secret/my-key devuser $ cat /etc/secrets/my-secret/my-password my-very-secure-pasword注記Secretオブジェクトを変更すると、プロジェクトの一貫性が失われることがあります。Red Hat では、既存のSecretオブジェクトを変更する代わりに、古いオブジェクトと同じコンテンツを持つ新規オブジェクトを作成することを推奨します。これで、必要に応じてコンテンツを更新し、オペレーターカスタムリソース (CR) の参照を更新できます。これは新しい CR 更新とみなされ、pod はリロードされます。WildFlyServerSpecで作成したConfigMapの名前を指定し、アプリケーションを実行している Pod のボリュームとしてマウントします。以下に例を示します。spec: configMaps: - my-configConfigMapは/etc/configmaps/<configmap name>にマウントされ、それぞれのキー/ 値はファイルとして保存されます。ファイルの名前がキーに、コンテンツが値になります。ConfigMapは pod 内のボリュームとしてマウントされます。キーの値を検索するには、次のコマンドを実行します。$ ls /etc/configmaps/my-config/ key1 key2 $ cat /etc/configmaps/my-config/key1 value1 $ cat /etc/configmaps/my-config/key2 value2注記ConfigMapを変更すると、プロジェクトの一貫性が失われることがあります。Red Hat では、既存のConfigMapオブジェクトを変更する代わりに、古いオブジェクトと同じコンテンツを持つ新しいConfigMapを作成することを推奨します。これで、必要に応じてコンテンツを更新し、オペレーターカスタムリソース (CR) の参照を更新できます。これは新しい CR 更新とみなされ、pod はリロードされます。独自のスタンドアロン
ConfigMapを選択する場合は、ConfigMapの名前とstandalone.xmlファイルのキーを指定します。standaloneConfigMap: name: clusterbench-config-map key: standalone-openshift.xml注記JBoss EAP 7 では、
standalone.xmlファイルからConfigMapを作成することはできません。OpenShift でデフォルトの HTTP ルートの作成を無効にする場合は、
disableHTTPRouteをtrueに設定します。spec: disableHTTPRoute: true
7.5.1. Secret の作成 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの CustomResourceDefinition (CRD) ファイルが Secret を参照する場合は、EAP オペレーターを使用してアプリケーションを OpenShift にデプロイする前に Secret を作成する必要があります。
手順
-
Secretを作成するには、以下を実行します。
$ oc create secret generic my-secret --from-literal=my-key=devuser --from-literal=my-password='my-very-secure-pasword'
7.5.2. ConfigMap の作成 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの CustomResourceDefinition (CRD) ファイルが spec.ConfigMaps フィールドの ConfigMap を参照する場合は、EAP オペレーターを使用してアプリケーションを OpenShift にデプロイする前に ConfigMap を作成する必要があります。
手順
- configmap を作成するには、以下を実行します。
$ oc create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
configmap/my-config created
7.5.3. standalone.xml ファイルからの ConfigMap の作成 リンクのコピーリンクがクリップボードにコピーされました!
JBoss EAP for OpenShift Source-to-Image (S2I) から提供されるアプリケーションイメージで使用する代わりに、独自の JBoss EAP スタンドアロン設定を作成できます。standalone.xml ファイルは、オペレーターからアクセスできる ConfigMap に配置する必要があります。
注記: JBoss EAP 7 では、ConfigMap から standalone.xml ファイルを指定することはできません。
手順
-
standalone.xmlファイルからConfigMapを作成するには、以下を実行します。
$ oc create configmap clusterbench-config-map --from-file examples/clustering/config/standalone-openshift.xml
configmap/clusterbench-config-map created
7.5.4. アプリケーションの永続ストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションが一部のデータについて永続ストレージを必要とする場合 (pod の再起動後も維持する必要のあるトランザクションログやメッセージングログなど) は、ストレージ仕様を設定します。ストレージ仕様が空の場合は、EmptyDir ボリュームはアプリケーションの各 pod によって使用されます。ただし、このボリュームは、対応する pod が停止した後は使用されなくなります。
手順
volumeClaimTemplateを指定し、リソース要件を設定して、JBoss EAP スタンドアロンデータディレクトリーを保存します。テンプレートの名前は JBoss EAP の名前から派生します。対応するボリュームはReadWriteOnceアクセスモードでマウントされます。spec: storage: volumeClaimTemplate: spec: resources: requests: storage: 3Giこのストレージ要件を満たす永続ボリュームは、
/eap/standalone/dataディレクトリーにマウントされます。