4.2. Fuse on OpenShift でのアプリケーションの作成およびデプロイ
以下の OpenShift Source-to-Image (S2I) アプリケーション開発ワークフローの 1 つを使用してアプリケーションを作成し、OpenShift にデプロイして、Fuse on OpenShift の使用を開始することができます。
- S2I バイナリーワークフロー
- ビルド入力が バイナリーソース からの S2I です。このワークフローの特徴は、ビルドの一部が開発者自身のマシンで実行されることです。このワークフローはバイナリーパッケージをローカルでビルドした後、バイナリーパッケージを OpenShift に渡します。詳細はOpenShift 3.5 Developer Guideの Binary Source を参照してください。
- S2I ソースワークフロー
- ビルド入力が Git ソース からの S2I です。このワークフローの特徴は、ビルドがすべて OpenShift サーバー上でビルドされることです。詳細はOpenShift 3.5 Developer Guideの Git Source を参照してください。
4.2.1. S2I バイナリーワークフローを使用したプロジェクトの作成およびデプロイ
ここでは、OpenShift S2I バイナリーワークフローを使用して、Fuse on OpenShift プロジェクトを作成、ビルド、およびデプロイします。
手順
Maven の archetype を使用して、新しい Fuse on OpenShift プロジェクトを作成します。この例では、サンプル Spring Boot Camel プロジェクトを作成する archetype を使用します。新しいシェルプロンプトを開き、以下の Maven コマンドを入力します。
mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \ -DarchetypeCatalog=https://maven.repository.redhat.com/ga/io/fabric8/archetypes/archetypes-catalog/2.2.0.fuse-740017-redhat-00003/archetypes-catalog-2.2.0.fuse-740017-redhat-00003-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-xml-archetype \ -DarchetypeVersion=2.2.0.fuse-740017-redhat-00003
archetype プラグインが対話モードに切り替わり、残りのフィールドの入力を要求されます。
Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse74-spring-boot Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': org.example.fis: : [INFO] Using property: spring-boot-version = 1.5.17.RELEASE Confirm properties configuration: groupId: org.example.fis artifactId: fuse74-spring-boot version: 1.0-SNAPSHOT package: org.example.fis spring-boot-version: 1.5.17.RELEASE Y: :
プロンプトが表示されたら、
groupId
値にorg.example.fis
を入力し、artifactId
値にfuse74-Spring-boot を
入力します。残りのフィールドにはデフォルト値を使用します。-
前のコマンドが
BUILD SUCCESS
ステータスで終了した場合、fuse74-Spring-boot
サブディレクトリーの下に新しい Fuse on OpenShift プロジェクトが作成されているはずです。fuse74-Spring-boot/src/main/resources/spring/camel-context.xml
ファイル内の XML DSL コードを検査できます。デモンストレーションコードは、乱数が含まれるメッセージを継続的にログに送信する、シンプルな Camel ルートを定義します。 Fuse on OpenShift プロジェクトのビルドおよびデプロイを準備するため、以下のように OpenShift サーバーにログインします。
oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443
IP アドレスは常に同じではないため、
OPENSHIFT_IP_ADDR
は OpenShift サーバーの IP アドレスのプレースホルダーになります。この値を実際の IP アドレスに置き換えます。注記developer
パスワードを持つdeveloper
ユーザーは、CDK による仮想 OpenShift サーバーで自動作成される標準のアカウントです。リモートサーバーにアクセスする場合は、OpenShift 管理者が提供する URL とクレデンシャルを使用します。以下のコマンドを実行し、Fuse on OpenShift イメージおよびテンプレートがすでにインストールされ、アクセス可能であることを確認します。
oc get template -n openshift
イメージおよびテンプレートが事前にインストールされていない場合や、提供されたバージョンが古い場合は、Fuse on OpenShift イメージおよびテンプレートを手作業でインストール (または更新) します。Fuse on OpenShift イメージのインストール方法に関する詳細は、2章管理者向けの基本情報 を参照してください。
次のように、
test
という新しいプロジェクト名前空間を作成します (まだ存在していないと仮定します)。oc new-project test
テスト
プロジェクトの名前空間がすでに存在する場合は、次のコマンドを使用して切り替えることができます。oc project test
これで、
fuse74-Spring-boot
プロジェクトをビルドしてデプロイする準備が整いました。OpenShift にまだログインしていると仮定して、fuse74-Spring-boot
プロジェクトのディレクトリーに変更し、次のようにプロジェクトをビルドしてデプロイします。cd fuse74-spring-boot mvn fabric8:deploy -Popenshift
ビルドに成功すると、以下のような出力が表示されます。
... [INFO] OpenShift platform detected [INFO] Using project: test [INFO] Creating a Service from openshift.yml namespace test name fuse74-spring-boot [INFO] Created Service: target/fabric8/applyJson/test/service-fuse74-spring-boot.json [INFO] Using project: test [INFO] Creating a DeploymentConfig from openshift.yml namespace test name fuse74-spring-boot [INFO] Created DeploymentConfig: target/fabric8/applyJson/test/deploymentconfig-fuse74-spring-boot.json [INFO] Creating Route test:fuse74-spring-boot host: null [INFO] F8: HINT: Use the command `oc get pods -w` to watch your pods start up [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 05:38 min [INFO] Finished at: 2019-02-22T12:08:11+01:00 [INFO] Final Memory: 63M/272M [INFO] ------------------------------------------------------------------------
注記このコマンドを初めて実行する場合、Maven は多くの依存関係をダウンロードする必要があるため、数分かかることがあります。2 回目からはビルドが速くなります。
-
ブラウザーで OpenShift コンソールに移動し、クレデンシャル (例: ユーザー名
developer
およびパスワードdeveloper
) を使用してコンソールにログインします。 - OpenShift コンソールで下方向にスクロールし、test プロジェクト namespace を見つけます。test プロジェクトをクリックして、test プロジェクト namespace を開きます。test プロジェクトの Overview タブが開き、fuse74-spring-boot アプリケーションが表示されます。
fuse74-spring-boot デプロイメントの左にある矢印をクリックし、このデプロイメントの詳細をデプロイメントおよび表示します。
Pod アイコン (青い円) の中心をクリックし、fuse74-spring-boot の Pod のリストを表示します。
実行中の Pod の詳細を表示するには、Pod 名 (この例では
fuse74-Spring-boot-1-kxdjm
) をクリックします。Logs タブをクリックしてアプリケーションログを表示し、ログを下方向にスクロールして、Camel アプリケーションによって生成された乱数のログメッセージを見つけます。
... 07:30:32.406 [Camel (camel) thread #0 - timer://foo] INFO simple-route - >>> 985 07:30:34.405 [Camel (camel) thread #0 - timer://foo] INFO simple-route - >>> 741 07:30:36.409 [Camel (camel) thread #0 - timer://foo] INFO simple-route - >>> 796 07:30:38.409 [Camel (camel) thread #0 - timer://foo] INFO simple-route - >>> 211 07:30:40.411 [Camel (camel) thread #0 - timer://foo] INFO simple-route - >>> 511 07:30:42.411 [Camel (camel) thread #0 - timer://foo] INFO simple-route - >>> 942
-
左側のナビゲーションバーにある Overview をクリックし、
test
namespace のアプリケーション概要に戻ります。実行中の Pod をシャットダウンするには、Pod アイコンの横にある下矢印 をクリックします。Scale down deployment fuse74-spring-boot-1? というダイアログが表示されたら、Scale Down をクリックします。 (任意): CDK を使用している場合は、シェルプロンプトに戻り、以下のコマンドを入力すると、仮想 OpenShift サーバーを完全にシャットダウンすることができます。
minishift stop
4.2.2. プロジェクトのアンデプロイおよび再デプロイ
以下のようにプロジェクトをアンデプロイまたは再デプロイできます。
手順
プロジェクトをアンデプロイするには、以下のコマンドを入力します。
mvn fabric8:undeploy
プロジェクトを再デプロイするには、以下のコマンドを入力します。
mvn fabric8:undeploy mvn fabric8:deploy -Popenshift
4.2.3. OpenShift での Fuse Console の設定
OpenShift では、Fuse Console にアクセスする方法は 2 つあります。
- 実行している 1 つの Fuse コンテナーを監視できるように特定の Pod から設定します。
- 集約型 の Fuse Console カタログアイテムをプロジェクトに追加すると、プロジェクトで実行しているすべての Fuse コンテナーを監視できます。
OpenShift Console またはコマンドラインから Fuse Console をデプロイできます。
- OpenShift 4 では、Fuse Console で Fuse 7.4 サービスを管理する場合は、 Fuse 7.4 リリースノート の説明どおりにコミュニティーバージョン (Hawtio) をインストールする必要があります。
- Fuse Console のセキュリティーおよびユーザー管理は、OpenShift によって処理されます。
- Fuse Console のテンプレートは、デフォルトでエンドツーエンド暗号化を設定するため、Fuse Console のリクエストはブラウザーからクラスター内のサービスまでエンドツーエンドでセキュア化されます。
- ロールベースアクセス制御 (デプロイ後に Fuse Console にアクセスするユーザーの場合) は現在 Fuse on OpenShift では使用できません。
前提条件
- Fuse on OpenShift ガイド の説明にしたがって、Fuse Console の Fuse on OpenShift イメージストリームおよびテンプレートをインストールする必要があります。
- Fuse Console をクラスターモードで OpenShift Container Platform 環境にデプロイする場合、クラスター管理者ロールとクラスターモードテンプレートが必要です。以下のコマンドを実行します。
oc adm policy add-cluster-role-to-user cluster-admin system:serviceaccount:openshift-infra:template-instance-controller
クラスターモードテンプレートは、デフォルトでは OpenShift Container Platform の最新バージョンでのみ利用できます。OpenShift Online のデフォルトカタログでは提供されません。
4.2.3.1. Fuse Console からの単一 Fuse Pod の監視
OpenShift で実行している Fuse Pod の Fuse Console を開きます。
OpenShift プロジェクトの Applications
Pods ビューで、Pod 名をクリックし、実行している Fuse Pod の詳細を表示します。このページの右側に、コンテナーテンプレートの概要が表示されます。 このビューの Open Java Console リンクをクリックし、Fuse Console を開きます。
注記Pod ビューで Fuse Console へのリンクを表示するよう OpenShift を設定するには、Fuse on OpenShift イメージを実行している Pod が
jolokia
に設定された name 属性内で TCP ポートを宣言する必要があります。{ "kind": "Pod", [...] "spec": { "containers": [ { [...] "ports": [ { "name": "jolokia", "containerPort": 8778, "protocol": "TCP" }
4.2.3.2. OpenShift Console からの Fuse Console のデプロイ
OpenShift Console から OpenShift クラスターで Fuse Console をデプロイするには、以下の手順にしたがいます。
手順
- OpenShift コンソールで既存のプロジェクトを開くか、新しいプロジェクトを作成します。
Fuse Console を OpenShift プロジェクトに追加します。
Add to Project
Browse Catalog と選択します。 Select an item to add to the current project ページが開きます。
Search フィールドで Fuse Console を入力します。
Red Hat Fuse 7.x Console および Red Hat Fuse 7.x Console (cluster) アイテムが検索結果として表示されるはずです。
Red Hat Fuse Console アイテムが検索結果として表示されない場合や、表示されるアイテムが最新バージョンでない場合は、Fuse on OpenShift ガイド の OpenShift サーバーの準備セクションにある説明にしたがって、Fuse Console テンプレートを手作業でインストールすることができます。
Red Hat Fuse Console アイテムの 1 つをクリックします。
- Red Hat Fuse 7.x Console - このバージョンの Fuse Console は、現在の OpenShift プロジェクトにデプロイされた Fuse アプリケーションを検出し、接続します。
- Red Hat Fuse 7.x Console (cluster) - このバージョンの Fuse Console は、OpenShift クラスターの複数のプロジェクトにデプロイされた Fuse アプリケーションを検出し、接続します。
Red Hat Fuse Console ウィザードで Next をクリックします。ウィザードの Configuration ページが開きます。
任意で、設定パラメーターのデフォルト値を変更できます。
Create をクリックします。
ウィザードの Results ページに Red Hat Fuse Console が作成されたことが表示されます。
- Continue to the project overview をクリックし、Fuse Console アプリケーションがプロジェクトに追加されたことを確認します。
Fuse Console を開き、提供された URL をクリックした後にログインします。
ブラウザーに Authorize Access ページが表示され、必要なパーミッションが表示されます。
Allow selected permissions をクリックします。
ブラウザーで Fuse Console が開かれ、プロジェクトで実行されている Fuse の Pod が表示されます。
表示するアプリケーションの Connect をクリックします。
新しいブラウザーウィンドウが開かれ、Fuse Console にアプリケーションが表示されます。
4.2.3.3. コマンドラインからの Fuse Console のデプロイ
表4.1「Fuse Console テンプレート」 Fuse アプリケーションのデプロイメントのタイプに応じて、コマンドラインから Fuse Console にアクセスするために使用できる 2 つの OpenShift テンプレートについて説明します。
タイプ | 説明 |
---|---|
cluster | クラスター管理者ロールの作成を必要とする OAuth クライアントを使用します。Fuse Console は、複数の namespace またはプロジェクトにまたがってデプロイされた Fuse アプリケーションを検出し、接続することができます。 |
namespace | プロジェクトでの管理者ロールの作成のみを必要とする、サービスアカウントを OAuth クライアントとして使用します。これにより、Fuse Console のこの単一プロジェクトへのアクセスが制限されるため、単一テナントのデプロイメントとして動作します。 |
任意で、以下のコマンドを実行するとテンプレートパラメーターのリストを表示できます。
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-740025-redhat-00003/fis-console-namespace-template.json
手順
コマンドラインから Fuse Console をデプロイするには、以下を行います。
以下のコマンドの 1 つを実行して、Fuse Console テンプレートをベースとした新しいアプリケーションを作成します。コマンドの myproject はプロジェクトの名前に置き換えます。
Fuse Console の cluster テンプレートの場合は、以下のようになります。
myhost
は Fuse Console にアクセスするホストの名前になります。oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-740025-redhat-00003/fis-console-cluster-template.json -p ROUTE_HOSTNAME=myhost
Fuse Console の namespace テンプレートの場合は以下のようになります。
oc new-app -n myproject -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-740025-redhat-00003/fis-console-namespace-template.json
注記namespace テンプレートの route_hostname パラメーターは OpenShift によって自動的に生成されるため、省略することが可能です。
以下のコマンドを実行して、Fuse Console デプロイメントの状態と URL を取得します。
oc status
- ブラウザーから Fuse Console にアクセスするには、提供される URL (例: https://fuse-console.192.168.64.12.nip.io) を使用します。
4.2.3.4. Fuse Console でデータが正しく表示されるよう確認
Fuse Console のキューおよび接続の表示で、不足しているキューや接続があったり、一貫性のないアイコンが表示される場合は、Jolokia コレクションサイズパラメーターを調節します。このパラメーターは、Jolokia が応答でマーシャルするアレイの最大要素数を指定するものです。
手順
Fuse Console の右上隅にあるユーザーアイコンをクリックして、Preferences をクリックします。
- Maximum collection size オプションの値を大きくします (デフォルトは 50,000)。
- Close をクリックします。
4.2.4. S2I ソースワークフローを使用したプロジェクトの作成およびデプロイ
ここでは、OpenShift S2I ソースワークフローを使用して、テンプレートをベースとした Fuse on OpenShift プロジェクトをビルドおよびデプロイします。最初に、リモート Git リポジトリーに保存されたクイックスタートプロジェクトを使用します。OpenShift コンソールを使用すると、このクイックスタートプロジェクトを OpenShift サーバーでダウンロード、ビルド、およびデプロイできます。
手順
-
ブラウザーで https://OPENSHIFT_IP_ADDR:8443 の OpenShift コンソール (
OPENSHIFT_IP_ADDR
は CDK の場合に表示された IP アドレスに置き換えます) に移動し、クレデンシャル (たとえば、ユーザー名developer
とパスワードdeveloper
) を使用してコンソールにログインします。 カタログ検索フィールドに、検索文字列として
Red Hat Fuse 7.4 Camel XML
と入力し、Red Hat Fuse 7.4 Camel XML DSL with Spring Boot テンプレートを選択します。- テンプレートウィザードの Information ステップが開きます。Next をクリックします。
以下のように、テンプレートウィザードの Configuration ステップが開きます。Add to Project ドロップダウンメニューで My Project を選択します。
注記この例で新しいプロジェクトを作成したい場合は、上記の手順の代わりに Add to Project ドロップダウンメニューで Create Project を選択します。新規プロジェクトの名前を入力する Project Name フィールドが表示されます。
Configuration ステップの残りの設定では、デフォルトの値を使用します。Create をクリックします。
注記クイックスタートをそのまま実行せずに、アプリケーションコードを変更する場合は、元のクイックスタート Git リポジトリーをフォークし、Git Repository URL および Git Reference フィールドに適切な値を入力する必要があります。
- テンプレートウィザードの Results ステップが開きます。Close をクリックします。
- 右側の My Projects ペインで My Project をクリックします。My Project プロジェクトの Overview タブが開き、s2i-fuse74-spring-boot-camel-xml アプリケーションが表示されます。
s2i-fuse74-spring-boot-camel-xml デプロイメントの左にある矢印をクリックし、以下のようにこのデプロイメントの詳細をデプロイメントおよび表示します。
このビューにビルドログが表示されます。何らかの理由でビルドに失敗した場合は、ビルドログを参照して問題を診断します。
注記リモートの Maven リポジトリーから多くの依存関係をダウンロードする必要があるため、ビルドが完了するまで数分かかることがあります。ビルド時間を短縮するには、ローカルネットワークに Nexus サーバーをデプロイすることが推奨されます。
ビルドが正常に完了したら、Pod アイコンは 1 つの Pod が実行している青い円で表示されます。Pod アイコン (青い円) の中心をクリックし、s2i-fuse74-spring-boot-camel-xml の Pod のリストを表示します。
注記複数の Pod が実行されている場合、この時点では実行中の Pod のリストが表示されます。1 つの Pod のみが実行されている場合は、実行中の Pod の詳細ビューが表示されます。
Pod 詳細ビューが開きます。Logs タブをクリックしてアプリケーションログを表示し、ログを下方向にスクロールして、Camel アプリケーションによって生成されたログメッセージを見つけます。
-
左側のナビゲーションバーにある Overview をクリックし、
My Project
namespace のアプリケーション概要に戻ります。実行中の Pod をシャットダウンするには、Pod アイコンの横にある下矢印 をクリックします。Scale down deployment s2i-fuse74-spring-boot-camel-xml-1? というダイアログが表示されたら、Scale Down をクリックします。 (任意): CDK を使用している場合は、シェルプロンプトに戻り、以下のコマンドを入力すると、仮想 OpenShift サーバーを完全にシャットダウンすることができます。
minishift stop