5.2. Fuse on OpenShift でのアプリケーションの作成およびデプロイ
以下の OpenShift Source-to-Image (S2I) アプリケーション開発ワークフローの 1 つを使用してアプリケーションを作成し、OpenShift にデプロイして、Fuse on OpenShift の使用を開始することができます。
- S2I バイナリーワークフロー
- ビルド入力が バイナリーソース からの S2I です。このワークフローの特徴は、ビルドの一部が開発者自身のマシンで実行されることです。このワークフローはバイナリーパッケージをローカルでビルドした後、バイナリーパッケージを OpenShift に渡します。詳細は、OpenShift Container PlatformBuildsガイドの Binary Source を参照してください。
- S2I ソースワークフロー
- ビルド入力が Git ソース からの S2I です。このワークフローの特徴は、ビルドがすべて OpenShift サーバー上でビルドされることです。詳細は、OpenShift Container PlatformBuildsガイドの Git Source を参照してください。
5.2.1. S2I バイナリーを使用したアプリケーションの作成およびデプロイ
ここでは、OpenShift S2I バイナリーワークフローを使用して、Fuse on OpenShift プロジェクトを作成、ビルド、およびデプロイします。
- JDK11 を使用したクイックスタートの実行
- ランタイム時に JDK11 ベースのイメージを使用する場合は、コンパイル時に正しい JDK11 プロファイルを使用します。JDK11 を使用してクイックスタートをビルドおよびデプロイする場合は、ビルドマシンに JDK11 をインストールし、正しい JDK11 プロファイルを使用してクイックスタートをビルドするようにしてください。
手順
Maven の archetype を使用して、新しい Fuse on OpenShift プロジェクトを作成します。この例では、サンプル Spring Boot Camel プロジェクトを作成する archetype を使用します。新しいシェルプロンプトを開き、以下の Maven コマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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-sb2-790047-redhat-00004/archetypes-catalog-2.2.0.fuse-sb2-790047-redhat-00004-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-xml-archetype \ -DarchetypeVersion=2.2.0.fuse-sb2-790047-redhat-00004
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-sb2-790047-redhat-00004/archetypes-catalog-2.2.0.fuse-sb2-790047-redhat-00004-archetype-catalog.xml \ -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \ -DarchetypeArtifactId=spring-boot-camel-xml-archetype \ -DarchetypeVersion=2.2.0.fuse-sb2-790047-redhat-00004
archetype プラグインが対話モードに切り替わり、残りのフィールドの入力を要求されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse79-spring-boot Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': org.example.fis: : Confirm properties configuration: groupId: org.example.fis artifactId: fuse79-spring-boot version: 1.0-SNAPSHOT package: org.example.fis Y: : Y
Define value for property 'groupId': : org.example.fis Define value for property 'artifactId': : fuse79-spring-boot Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': org.example.fis: : Confirm properties configuration: groupId: org.example.fis artifactId: fuse79-spring-boot version: 1.0-SNAPSHOT package: org.example.fis Y: : Y
プロンプトが表示されたら、
org.example.fis
をgroupId
の値として入力し、fuse79-spring-boot
をartifactId
の値として入力します。残りのフィールドにはデフォルト値を使用します。-
前のコマンドが
BUILD SUCCESS
状態で終了した場合、fuse79-spring-boot
サブディレクトリー内に新しい Fuse on OpenShift プロジェクトが作成されているはずです。fuse79-spring-boot/src/main/resources/spring/camel-context.xml
ファイルの XML DSL コードを確認します。デモンストレーションコードは、乱数が含まれるメッセージを継続的にログに送信する、シンプルな Camel ルートを定義します。 Fuse on OpenShift プロジェクトのビルドおよびデプロイを準備するため、以下のように OpenShift サーバーにログインします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443
oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443
IP アドレスは常に同じではないため、
OPENSHIFT_IP_ADDR
は OpenShift サーバーの IP アドレスのプレースホルダーになります。この値を実際の IP アドレスに置き換えます。注記developer
パスワードを持つdeveloper
ユーザーは、CDK による仮想 OpenShift サーバーで自動作成される標準のアカウントです。リモートサーバーにアクセスする場合は、OpenShift 管理者が提供する URL とクレデンシャルを使用します。次のように、
openshift
プロジェクトに切り替えます (まだopenshift
プロジェクトにない場合)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc project openshift
oc project openshift
以下のコマンドを実行し、Fuse on OpenShift イメージおよびテンプレートがすでにインストールされ、アクセス可能であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get template -n openshift
oc get template -n openshift
イメージおよびテンプレートが事前にインストールされていない場合や、提供されたバージョンが古い場合は、Fuse on OpenShift イメージおよびテンプレートを手作業でインストール (または更新) します。Fuse on OpenShift イメージのインストール方法に関する詳細は、2章管理者向けの基本情報 を参照してください。
これで、
fuse79-spring-boot
プロジェクトをビルドおよびデプロイできるようになりました。OpenShift にログインしている状態で、fuse79-spring-boot
プロジェクトのディレクトリーに移動し、以下のようにプロジェクトをビルドおよびデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd fuse79-spring-boot mvn oc:deploy -Popenshift
cd fuse79-spring-boot mvn oc:deploy -Popenshift
ビルドに成功すると、以下のような出力が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... [INFO] OpenShift platform detected [INFO] Using project: openshift [INFO] Creating a Service from openshift.yml namespace openshift name fuse79-spring-boot [INFO] Created Service: target/jkube/applyJson/openshift/service-fuse79-spring-boot.json [INFO] Using project: openshift [INFO] Creating a DeploymentConfig from openshift.yml namespace openshift name fuse79-spring-boot [INFO] Created DeploymentConfig: target/jkube/applyJson/openshift/deploymentconfig-fuse79-spring-boot.json [INFO] Creating Route openshift:fuse79-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: 2020-12-04T12:15:06+05:30 [INFO] Final Memory: 63M/688M [INFO] ------------------------------------------------------------------------
... [INFO] OpenShift platform detected [INFO] Using project: openshift [INFO] Creating a Service from openshift.yml namespace openshift name fuse79-spring-boot [INFO] Created Service: target/jkube/applyJson/openshift/service-fuse79-spring-boot.json [INFO] Using project: openshift [INFO] Creating a DeploymentConfig from openshift.yml namespace openshift name fuse79-spring-boot [INFO] Created DeploymentConfig: target/jkube/applyJson/openshift/deploymentconfig-fuse79-spring-boot.json [INFO] Creating Route openshift:fuse79-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: 2020-12-04T12:15:06+05:30 [INFO] Final Memory: 63M/688M [INFO] ------------------------------------------------------------------------
注記このコマンドを初めて実行する場合、Maven は多くの依存関係をダウンロードする必要があるため、数分かかることがあります。2 回目からはビルドが速くなります。
-
ブラウザーで OpenShift コンソールに移動し、クレデンシャル (例: ユーザー名
developer
およびパスワードdeveloper
) を使用してコンソールにログインします。 -
左側のパネルで Home をデプロイメントし、Status をクリックして
openshift
プロジェクトの Project Status ページを表示します。 fuse79-spring-boot をクリックし、fuse79-spring-boot アプリケーションの概要情報ページを表示します。
- 左側のパネルで Workloads を展開します。
- Pods をクリックします。openshift プロジェクトで稼働している Pod すべてが表示されます。
Pod の Name (この例では
fuse79-spring-boot-xxxxx
) をクリックし、稼働中の Pod の詳細を表示します。Logs タブをクリックしてアプリケーションログを表示し、ログを下方向にスクロールして、Camel アプリケーションによって生成された乱数のログメッセージを見つけます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... 06:45:54.311 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 130 06:45:56.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 898 06:45:58.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 414 06:46:00.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 486 06:46:02.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 093 06:46:04.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 080
... 06:45:54.311 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 130 06:45:56.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 898 06:45:58.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 414 06:46:00.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 486 06:46:02.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 093 06:46:04.265 [Camel (MyCamel) thread #1 - timer://foo] INFO simple-route - >>> 080
稼働中の Pod を終了するには以下を行います。
-
openshift
プロジェクトの Project Status ページで、fuse79-spring-boot アプリケーション をクリックします。 - Overview タブをクリックし、アプリケーションの概要情報ページを表示します。
-
Desired Count の横にある
アイコンをクリックします。Edit Count ウインドウが表示されます。
- 下矢印を使用して値をゼロにし、Pod を停止します。
-
5.2.2. プロジェクトのアンデプロイおよび再デプロイ
以下のようにプロジェクトをアンデプロイまたは再デプロイできます。
手順
プロジェクトをアンデプロイするには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn oc:undeploy
mvn oc:undeploy
プロジェクトを再デプロイするには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn oc:undeploy mvn oc:deploy -Popenshift
mvn oc:undeploy mvn oc:deploy -Popenshift
5.2.3. S2I ソースワークフローを使用したアプリケーションの作成およびデプロイ
ここでは、OpenShift S2I ソースワークフローを使用して、テンプレートをベースとした Fuse on OpenShift アプリケーションをビルドおよびデプロイします。最初に、リモート Git リポジトリーに保存されたクイックスタートプロジェクトを使用します。OpenShift コンソールを使用すると、このクイックスタートプロジェクトを OpenShift サーバーでダウンロード、ビルド、およびデプロイできます。
手順
次のように、OpenShift サーバーにログインします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443
oc login -u developer -p developer https://OPENSHIFT_IP_ADDR:8443
IP アドレスは常に同じではないため、
OPENSHIFT_IP_ADDR
は OpenShift サーバーの IP アドレスのプレースホルダーになります。この値を実際の IP アドレスに置き換えます。注記developer
パスワードを持つdeveloper
ユーザーは、CDK による仮想 OpenShift サーバーで自動作成される標準のアカウントです。リモートサーバーにアクセスする場合は、OpenShift 管理者が提供する URL とクレデンシャルを使用します。次のように、
openshift
プロジェクトに切り替えます (まだopenshift
プロジェクトにない場合)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc project openshift
oc project openshift
以下のコマンドを実行し、Fuse on OpenShift テンプレートがすでにインストールされ、アクセス可能であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get template -n openshift
oc get template -n openshift
イメージおよびテンプレートが事前にインストールされていない場合や、提供されたバージョンが古い場合は、Fuse on OpenShift イメージおよびテンプレートを手作業でインストール (または更新) します。Fuse on OpenShift イメージのインストール方法に関する詳細は、2章管理者向けの基本情報 を参照してください。
以下のコマンドを入力し、Red Hat Fuse 7.9 Camel XML DSL with Spring Boot クイックスタートテンプレートの実行に必要なリソースを作成します。これにより、クイックスタートのデプロイメント設定およびビルド設定が作成されます。クイックスタートのデフォルトパラメーターや作成されたリソースの情報はターミナルに表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc new-app s2i-fuse7-spring-boot-camel-xml --> Deploying template "openshift/s2i-fuse7-spring-boot-camel-xml" to project openshift ... --> Creating resources ... imagestream.image.openshift.io "s2i-fuse7-spring-boot-camel-xml" created buildconfig.build.openshift.io "s2i-fuse7-spring-boot-camel-xml" created deploymentconfig.apps.openshift.io "s2i-fuse7-spring-boot-camel-xml" created --> Success Build scheduled, use 'oc logs -f bc/s2i-fuse7-spring-boot-camel-xml' to track its progress. Run 'oc status' to view your app.
oc new-app s2i-fuse7-spring-boot-camel-xml --> Deploying template "openshift/s2i-fuse7-spring-boot-camel-xml" to project openshift ... --> Creating resources ... imagestream.image.openshift.io "s2i-fuse7-spring-boot-camel-xml" created buildconfig.build.openshift.io "s2i-fuse7-spring-boot-camel-xml" created deploymentconfig.apps.openshift.io "s2i-fuse7-spring-boot-camel-xml" created --> Success Build scheduled, use 'oc logs -f bc/s2i-fuse7-spring-boot-camel-xml' to track its progress. Run 'oc status' to view your app.
- ブラウザーで https://OPENSHIFT_IP_ADDR の OpenShift Web コンソールに移動します (OPENSHIFT_IP_ADDR はクラスターの IP アドレスに置き換えます)。クレデンシャル (例: ユーザー名 developer、パスワード developer) を使用して、コンソールにログインします。
- 左側のパネルで Home をデプロイメントします。Status をクリックして Project Status ページを表示します。選択された namespace (例: openshift) の既存のアプリケーションがすべて表示されます。
s2i-fuse7-spring-boot-camel-xml
をクリックし、クイックスタートの Overview 情報ページを表示します。Resources タブをクリックした後に View logs をクリックし、アプリケーションのビルドログを表示します。
- 左側のパネルで Workloads を展開します。
Pods をクリックした後、
s2i-fuse7-spring-boot-camel-xml-xxxx
をクリックします。アプリケーションの Pod の詳細が表示されます。稼働中の Pod を終了するには以下を行います。
-
openshift
プロジェクトの Project Status ページで、s2i-fuse7-spring-boot-camel-xml-xxxx アプリケーションをクリックします。 - Overview タブをクリックし、アプリケーションの概要情報ページを表示します。
-
Desired Count の横にある
アイコンをクリックします。Edit Count ウインドウが表示されます。
- 下矢印を使用して値をゼロにし、Pod を停止します。
-