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