4.2. Fuse on OpenShift でのアプリケーションの作成およびデプロイ


以下の OpenShift Source-to-Image (S2I) アプリケーション開発ワークフローの 1 つを使用してアプリケーションを作成し、OpenShift にデプロイして、Fuse on OpenShift の使用を開始することができます。

S2I バイナリーワークフロー
ビルド入力が バイナリーソース からの S2I です。このワークフローの特徴は、ビルドの一部が開発者自身のマシンで実行されることです。このワークフローはバイナリーパッケージをローカルでビルドした後、バイナリーパッケージを OpenShift に渡します。詳細はOpenShift 3.5 Developer GuideBinary Source を参照してください。
S2I ソースワークフロー
ビルド入力が Git ソース からの S2I です。このワークフローの特徴は、ビルドがすべて OpenShift サーバー上でビルドされることです。詳細はOpenShift 3.5 Developer GuideGit Source を参照してください。

4.2.1. S2I バイナリーワークフローを使用したプロジェクトの作成およびデプロイ

ここでは、OpenShift S2I バイナリーワークフローを使用して、Fuse on OpenShift プロジェクトを作成、ビルド、およびデプロイします。

手順

  1. 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 を 入力します。残りのフィールドにはデフォルト値を使用します。

  2. 前のコマンドが BUILD SUCCESS ステータスで終了した場合、fuse74-Spring-boot サブディレクトリーの下に新しい Fuse on OpenShift プロジェクトが作成されているはずです。fuse74-Spring-boot/src/main/resources/spring/camel-context.xml ファイル内の XML DSL コードを検査できます。デモンストレーションコードは、乱数が含まれるメッセージを継続的にログに送信する、シンプルな Camel ルートを定義します。
  3. 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 とクレデンシャルを使用します。

  4. 以下のコマンドを実行し、Fuse on OpenShift イメージおよびテンプレートがすでにインストールされ、アクセス可能であることを確認します。

    oc get template -n openshift

    イメージおよびテンプレートが事前にインストールされていない場合や、提供されたバージョンが古い場合は、Fuse on OpenShift イメージおよびテンプレートを手作業でインストール (または更新) します。Fuse on OpenShift イメージのインストール方法に関する詳細は、2章管理者向けの基本情報 を参照してください。

  5. 次のように、test という新しいプロジェクト名前空間を作成します (まだ存在していないと仮定します)。

    oc new-project test

    テスト プロジェクトの名前空間がすでに存在する場合は、次のコマンドを使用して切り替えることができます。

    oc project test
  6. これで、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 回目からはビルドが速くなります。

  7. ブラウザーで OpenShift コンソールに移動し、クレデンシャル (例: ユーザー名 developer およびパスワード developer) を使用してコンソールにログインします。
  8. OpenShift コンソールで下方向にスクロールし、test プロジェクト namespace を見つけます。test プロジェクトをクリックして、test プロジェクト namespace を開きます。test プロジェクトの Overview タブが開き、fuse74-spring-boot アプリケーションが表示されます。
  9. fuse74-spring-boot デプロイメントの左にある矢印をクリックし、このデプロイメントの詳細をデプロイメントおよび表示します。

    OpenShift console test namespace overview showing fuse74-spring-boot application and associated pods

  10. Pod アイコン (青い円) の中心をクリックし、fuse74-spring-boot の Pod のリストを表示します。

    List of pods associated with the fuse74-spring-boot service

  11. 実行中の Pod の詳細を表示するには、Pod (この例では fuse74-Spring-boot-1-kxdjm) をクリックします。

    Detail view of the running pod for fuse74-spring-boot

  12. 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
  13. 左側のナビゲーションバーにある Overview をクリックし、test namespace のアプリケーション概要に戻ります。実行中の Pod をシャットダウンするには、Pod アイコンの横にある下矢印 get started s2i binary 05 をクリックします。Scale down deployment fuse74-spring-boot-1? というダイアログが表示されたら、Scale Down をクリックします。
  14. (任意): 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 を開きます。

  1. OpenShift プロジェクトの Applications Pods ビューで、Pod 名をクリックし、実行している Fuse Pod の詳細を表示します。このページの右側に、コンテナーテンプレートの概要が表示されます。

    Container Template View

  2. このビューの Open Java Console リンクをクリックし、Fuse Console を開きます。

    Fuse Console view

    注記

    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 をデプロイするには、以下の手順にしたがいます。

手順

  1. OpenShift コンソールで既存のプロジェクトを開くか、新しいプロジェクトを作成します。
  2. Fuse Console を OpenShift プロジェクトに追加します。

    1. Add to Project Browse Catalog と選択します。

      Select an item to add to the current project ページが開きます。

    2. 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 テンプレートを手作業でインストールすることができます。

  1. 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 アプリケーションを検出し、接続します。
  2. Red Hat Fuse Console ウィザードで Next をクリックします。ウィザードの Configuration ページが開きます。

    任意で、設定パラメーターのデフォルト値を変更できます。

    1. Create をクリックします。

      ウィザードの Results ページに Red Hat Fuse Console が作成されたことが表示されます。

    2. Continue to the project overview をクリックし、Fuse Console アプリケーションがプロジェクトに追加されたことを確認します。
    3. Fuse Console を開き、提供された URL をクリックした後にログインします。

      ブラウザーに Authorize Access ページが表示され、必要なパーミッションが表示されます。

    4. Allow selected permissions をクリックします。

      ブラウザーで Fuse Console が開かれ、プロジェクトで実行されている Fuse の Pod が表示されます。

    5. 表示するアプリケーションの Connect をクリックします。

      新しいブラウザーウィンドウが開かれ、Fuse Console にアプリケーションが表示されます。

4.2.3.3. コマンドラインからの Fuse Console のデプロイ

表4.1「Fuse Console テンプレート」 Fuse アプリケーションのデプロイメントのタイプに応じて、コマンドラインから Fuse Console にアクセスするために使用できる 2 つの OpenShift テンプレートについて説明します。

表4.1 Fuse Console テンプレート
タイプ説明

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. 以下のコマンドの 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 によって自動的に生成されるため、省略することが可能です。

  2. 以下のコマンドを実行して、Fuse Console デプロイメントの状態と URL を取得します。

    oc status
  3. ブラウザーから Fuse Console にアクセスするには、提供される URL (例: https://fuse-console.192.168.64.12.nip.io) を使用します。

4.2.3.4. Fuse Console でデータが正しく表示されるよう確認

Fuse Console のキューおよび接続の表示で、不足しているキューや接続があったり、一貫性のないアイコンが表示される場合は、Jolokia コレクションサイズパラメーターを調節します。このパラメーターは、Jolokia が応答でマーシャルするアレイの最大要素数を指定するものです。

手順

  1. Fuse Console の右上隅にあるユーザーアイコンをクリックして、Preferences をクリックします。

    mf preferences

  2. Maximum collection size オプションの値を大きくします (デフォルトは 50,000)。
  3. Close をクリックします。

4.2.4. S2I ソースワークフローを使用したプロジェクトの作成およびデプロイ

ここでは、OpenShift S2I ソースワークフローを使用して、テンプレートをベースとした Fuse on OpenShift プロジェクトをビルドおよびデプロイします。最初に、リモート Git リポジトリーに保存されたクイックスタートプロジェクトを使用します。OpenShift コンソールを使用すると、このクイックスタートプロジェクトを OpenShift サーバーでダウンロード、ビルド、およびデプロイできます。

手順

  1. ブラウザーで https://OPENSHIFT_IP_ADDR:8443 の OpenShift コンソール (OPENSHIFT_IP_ADDR は CDK の場合に表示された IP アドレスに置き換えます) に移動し、クレデンシャル (たとえば、ユーザー名 developer とパスワード developer) を使用してコンソールにログインします。
  2. カタログ検索フィールドに、検索文字列として Red Hat Fuse 7.4 Camel XML と入力し、Red Hat Fuse 7.4 Camel XML DSL with Spring Boot テンプレートを選択します。

    get started s2i source 01

  3. テンプレートウィザードの Information ステップが開きます。Next をクリックします。
  4. 以下のように、テンプレートウィザードの Configuration ステップが開きます。Add to Project ドロップダウンメニューで My Project を選択します。

    注記

    この例で新しいプロジェクトを作成したい場合は、上記の手順の代わりに Add to Project ドロップダウンメニューで Create Project を選択します。新規プロジェクトの名前を入力する Project Name フィールドが表示されます。

  5. Configuration ステップの残りの設定では、デフォルトの値を使用します。Create をクリックします。

    get started s2i source 02

    注記

    クイックスタートをそのまま実行せずに、アプリケーションコードを変更する場合は、元のクイックスタート Git リポジトリーをフォークし、Git Repository URL および Git Reference フィールドに適切な値を入力する必要があります。

  6. テンプレートウィザードの Results ステップが開きます。Close をクリックします。
  7. 右側の My Projects ペインで My Project をクリックします。My Project プロジェクトの Overview タブが開き、s2i-fuse74-spring-boot-camel-xml アプリケーションが表示されます。
  8. s2i-fuse74-spring-boot-camel-xml デプロイメントの左にある矢印をクリックし、以下のようにこのデプロイメントの詳細をデプロイメントおよび表示します。

    get started s2i source 03

  9. このビューにビルドログが表示されます。何らかの理由でビルドに失敗した場合は、ビルドログを参照して問題を診断します。

    注記

    リモートの Maven リポジトリーから多くの依存関係をダウンロードする必要があるため、ビルドが完了するまで数分かかることがあります。ビルド時間を短縮するには、ローカルネットワークに Nexus サーバーをデプロイすることが推奨されます。

  10. ビルドが正常に完了したら、Pod アイコンは 1 つの Pod が実行している青い円で表示されます。Pod アイコン (青い円) の中心をクリックし、s2i-fuse74-spring-boot-camel-xml の Pod のリストを表示します。

    注記

    複数の Pod が実行されている場合、この時点では実行中の Pod のリストが表示されます。1 つの Pod のみが実行されている場合は、実行中の Pod の詳細ビューが表示されます。

  11. Pod 詳細ビューが開きます。Logs タブをクリックしてアプリケーションログを表示し、ログを下方向にスクロールして、Camel アプリケーションによって生成されたログメッセージを見つけます。

    Details view of the running pod

  12. 左側のナビゲーションバーにある Overview をクリックし、My Project namespace のアプリケーション概要に戻ります。実行中の Pod をシャットダウンするには、Pod アイコンの横にある下矢印 get started s2i binary 05 をクリックします。Scale down deployment s2i-fuse74-spring-boot-camel-xml-1? というダイアログが表示されたら、Scale Down をクリックします。
  13. (任意): CDK を使用している場合は、シェルプロンプトに戻り、以下のコマンドを入力すると、仮想 OpenShift サーバーを完全にシャットダウンすることができます。

    minishift stop
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.