Menu Close

11.2. ConfigMap プロパティーソースのチュートリアルの実行

以下のチュートリアルでは、Kubernetes の Secret および ConfigMap の設定を試すことができます。「Kubernetes インテグレーションでの Spring Boot の有効化」の説明どおりに、Spring Cloud Kubernetes プラグインを有効にして、Kubernetes 設定オブジェクトを Spring Boot 外部化設定と統合します。

11.2.1. Spring Boot Camel Config クイックスタートの実行

以下のチュートリアルは、Kubernetes の Secret と ConfigMap の設定を可能にする spring-boot-camel-config-archetype Maven archetype を基にしています。

手順

  1. 新しいシェルプロンプトを開き、以下の Maven コマンドを入力して簡単な Camel Spring Boot プロジェクトを作成します。

    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-780040-redhat-00002/archetypes-catalog-2.2.0.fuse-sb2-780040-redhat-00002-archetype-catalog.xml \
      -DarchetypeGroupId=org.jboss.fuse.fis.archetypes \
      -DarchetypeArtifactId=spring-boot-camel-config-archetype \
      -DarchetypeVersion=2.2.0.fuse-sb2-780040-redhat-00002

    archetype プラグインは対話モードに切り替わり、残りのフィールドを追加するよう要求します。

    Define value for property 'groupId': : org.example.fis
    Define value for property 'artifactId': : fuse78-configmap
    Define value for property 'version':  1.0-SNAPSHOT: :
    Define value for property 'package':  org.example.fis: :
    Confirm properties configuration:
    groupId: org.example.fis
    artifactId: fuse78-configmap
    version: 1.0-SNAPSHOT
    package: org.example.fis
    Y: : Y

    プロンプトが表示されたら、groupId の値には org.example.fisartifactId の値には fuse78-configmap を入力します。残りのフィールドにはデフォルト値を使用します。

  2. OpenShift にログインし、アプリケーションをデプロイする OpenShift プロジェクトに切り替えます。たとえば、developer ユーザーとしてログインし、openshift プロジェクトにデプロイする場合は、以下のコマンドを入力します。

    oc login -u developer -p developer
    oc project openshift
  3. コマンドラインで、新しい fuse78-configmap プロジェクトのディレクトリーに移動し、このアプリケーションの Secret オブジェクトを作成します。

    cd fuse78-configmap
    oc create -f sample-secret.yml
    注記

    アプリケーションをデプロイする に Secret オブジェクトを作成する必要があります。そうでないと、Secret が利用できるようになるまでデプロイされたコンテナーが待機状態になります。続けて Secret を作成すると、コンテナーは待機状態ではなくなります。Secret オブジェクトの設定方法に関する詳細は「Secret の設定」を参照してください。

  4. クイックスタートアプリケーションをビルドおよびデプロイします。fuse78-configmap プロジェクトのトップレベルで以下を入力します。

    mvn fabric8:deploy -Popenshift
  5. 次のようにアプリケーションログを確認します。

    1. ブラウザーで https://OPENSHIFT_IP_ADDR の OpenShift Web コンソールに移動します (OPENSHIFT_IP_ADDR はクラスターの IP アドレスに置き換えます)。クレデンシャル (例: ユーザー名 developer、パスワード developer) を使用して、コンソールにログインします。
    2. 左側のパネルで Home を展開します。Status をクリックして Project Status ページを表示します。選択された namespace (例: openshift) の既存のアプリケーションがすべて表示されます。
    3. fuse78-configmap をクリックし、クイックスタートの Overview 情報ページを表示します。
    4. 左側のパネルで Workloads を展開します。
    5. Pods をクリックした後、fuse78-configmap-xxxx をクリックします。アプリケーションの Pod の詳細が表示されます。
    6. Logs タブをクリックし、アプリケーションのログを表示します。
  6. src/main/resources/application.properties で設定されるデフォルトの受信者リストは、生成されたメッセージを 2 つのダミーエンドポイントである direct:async-queue および direct:file に送信します。これにより、以下のようなメッセージがアプリケーションログに書き込まれます。

    5:44:57.377 [Camel (camel) thread #0 - timer://order] INFO  generate-order-route - Generating message message-44, sending to the recipient list
    15:44:57.378 [Camel (camel) thread #0 - timer://order] INFO  target-route-queue - ----> message-44 pushed to an async queue (simulation)
    15:44:57.379 [Camel (camel) thread #0 - timer://order] INFO  target-route-queue - ----> Using username 'myuser' for the async queue
    15:44:57.380 [Camel (camel) thread #0 - timer://order] INFO  target-route--file - ----> message-44 written to a file
  7. ConfigMap オブジェクトを使用して fuse78-configmap アプリケーションの設定を更新する前に、OpenShift ApiServer からデータを確認するパーミッションを fuse78-configmap アプリケーションに付与する必要があります。以下のコマンドを入力し、fuse78-configmap アプリケーションのサービスアカウントに view パーミッションを付与します。

    oc policy add-role-to-user view system:serviceaccount:openshift:qs-camel-config
    注記

    構文 system:serviceaccount:PROJECT_NAME:SERVICE_ACCOUNT_NAME を使用してサービスアカウントが指定されます。fis-config デプロイメント記述子は、SERVICE_ACCOUNT_NAMEqs-camel-config に定義します。

  8. ライブリロード機能の動作を確認するには、以下のように ConfigMap オブジェクトを作成します。

    oc create -f sample-configmap.yml

    新しい ConfigMap は、実行中のアプリケーションにある Camel ルートの受信者リストをオーバーライドし、生成されたメッセージを 3 つ のダミーエンドポイントである direct:async-queuedirect:file、および direct:mail に送信するよう設定します。ConfigMap オブジェクトの詳細は、「ConfigMap の設定」を参照してください。これにより、以下のようなメッセージがアプリケーションログに書き込まれます。

    16:25:24.121 [Camel (camel) thread #0 - timer://order] INFO  generate-order-route - Generating message message-9, sending to the recipient list
    16:25:24.124 [Camel (camel) thread #0 - timer://order] INFO  target-route-queue - ----> message-9 pushed to an async queue (simulation)
    16:25:24.125 [Camel (camel) thread #0 - timer://order] INFO  target-route-queue - ----> Using username 'myuser' for the async queue
    16:25:24.125 [Camel (camel) thread #0 - timer://order] INFO  target-route--file - ----> message-9 written to a file (simulation)
    16:25:24.126 [Camel (camel) thread #0 - timer://order] INFO  target-route--mail - ----> message-9 sent via mail