Red Hat OpenShift上でのJ2EEアプリケーションの実行の流れを以下に示します。
以下の手順を実施して、本製品に配備したJ2EEアプリケーションをRed Hat OpenShift上で実行します。
注意
本製品のJ2EEのDockerイメージの実行はroot権限が必要です。root権限でDockerイメージを実行できるようにRed Hat OpenShiftのユーザ、プロジェクトを設定してください。詳細は以下を参照してください。
Red Hat OpenShift Documentation (https://docs.openshift.com/) OpenShift Container Platform Cluster Administration Managing Security Context Constraints
Podを再起動すると、Dockerコンテナが削除され、Dockerイメージから新たなDockerコンテナが生成されます。
ユーザーアプリケーションが出力するログやシスログは永続ストレージを指定してください。詳細は以下を参照してください。
Red Hat OpenShift Documentation (https://docs.openshift.com/) OpenShift Container Platform Developer Guide Using Persistent Volumes
なお、Red Hat OpenShiftでは本製品が出力するログ(例えば、IJServerのコンテナログやコンテナ情報ログ)は永続ストレージを指定できません。
そのため、livenessProbeの設定は無効にすることを推奨します。livenessProbeを設定すると、Interstageサービスがダウンした場合にPodが再起動します。livenessProbeの設定については、「B.2 J2EE」を参照してください。
Red Hat OpenShiftからアクセス可能なリポジトリに、Dockerイメージを登録します。
本手順は、Dockerイメージ作成環境で実行します。
以下は、ローカルリポジトリ"docker-registry.aps.svc:5000"に、Dockerイメージ"j2eemyapp:1.0"を"docker-registry.aps.svc:5000/j2eemyapp1.0"として登録する例です。
# docker tag j2eemyapp:1.0 docker-registry.aps.svc:5000/j2eemyapp:1.0 # docker push docker-registry.aps.svc:5000/j2eemyapp:1.0
Red Hat OpenShiftにログインします。
oc new-appコマンドに-oオプションを指定して、J2EEのコンテナをRed Hat OpenShift上で作成するための設定ファイルをJ2EEアプリケーション配備済みDockerイメージから作成します。
以下は、J2EEのコンテナをRed Hat OpenShift上で作成するための設定ファイルを作成する例です。
# oc new-app --docker-image=docker-registry.aps.svc:5000/j2eemyapp:1.0 --name j2eemyapp -o yaml > j2eemyapp.yaml
上記例では、イメージ名"docker-registry.aps.svc:5000/j2eemyapp:1.0"のDockerイメージからファイル名"j2eemyapp.yaml"のyaml形式の設定ファイルを作成しています。
「手順3」で出力された設定ファイルを編集して、以下の設定を行います。
IPCパラメーターの設定
J2EEが動作するDockerコンテナを特権コンテナとして起動する設定
livenessProbeでJ2EEの生存状態を監視する設定
永続ボリュームを利用する設定
サービス定義の設定
設定ファイルのテンプレートの編集内容については、「B.2 J2EE」を参照してください。
「手順4」で編集した設定ファイルを使ってコンテナを起動します。
以下は、oc createコマンドを使用して、「手順4」で編集した設定ファイルからコンテナを起動する例です。
# oc create -f j2eemyapp.yaml
上記例は、設定ファイルのファイル名が"j2eemyapp.yaml"の場合の例です。
J2EEアプリケーションにアクセスするURLを外部へ公開するためのrouteを作成します。
システム要件に合わせて以下のいずれかを作成し、--hostnameオプションに指定したホスト名でサービスを公開します。
セキュリティ保護されていないroute
oc exposeコマンドを使用します。
以下は、ポート番号80をURL http://myapp.example.comで公開するrouteを作成する例です。アプリケーションには、http://myapp.example.com/<Webアプリケーション名>等でアクセスできるようになります。赤字の部分を適宜変更してください。
# oc expose deploymentconfigs/j2eemyapp --name=j2eemyapp --port=80 # oc expose svc/j2eemyapp --hostname=myapp.example.com
セキュリティ保護されたroute
oc createコマンドを使用します。
TLSでHTTP通信を暗号化する場合、routeの--hostnameオプションに指定したホスト名で証明書を作成します。
以下は、ポート番号80をURL https://myapp.example.comで公開するroute(Edge Termination)を作成する例です。アプリケーションには、https://myapp.example.com/<Webアプリケーション名>等でアクセスできるようになります。赤字の部分を適宜変更してください。
# oc expose deploymentconfigs/j2eemyapp --name=j2eemyapp --port=80 # oc create route edge --service=svc/j2eemyapp --hostname=myapp.example.com --key=myapp.key --cert=myapp.crt
注意
シングル・サインオンの業務サーバ機能を利用する場合は、routeに設定するポート番号とホスト名に業務システムの公開URLを設定してください。
業務システムの公開URLについては、Interstage 管理コンソールの[システム] > [セキュリティ] > [シングル・サインオン] > [業務システム]の[一覧]タブで確認できます。
WebサーバとIJServerを別Podで運用し、IJServerで要求を受け付けるWebサーバのIPアドレスを制限する場合は、以下のように設定してください。なお、Webサーバ用のPodやIJServer用のPodを再起動した場合は再設定が必要です。
Webサーバの連携設定の「ServletコンテナのIPアドレス」に、IJServerのPodのIPアドレスを設定する。
IJServerの「要求を受け付けるWebサーバのIPアドレス」に、WebサーバのPodのIPアドレスを設定する。
Webサーバの連携設定および「要求を受け付けるWebサーバのIPアドレス」については「J2EE ユーザーズガイド(旧版互換)」の「IJServerとWebサーバを分離して運用する場合の手順」を参照してください。
「手順6」で--hostnameオプションに指定したホスト名を名前解決できるようにします。
以下は、Linuxサーバ環境でhostsファイルを修正してホスト名(myapp.example.com)をIPアドレス(203.0.113.2)で名前解決するときの設定例です。
# cat /etc/hosts 203.0.113.2 myapp.example.com