10.5. Fabric8 Karaf Config 管理サポートの追加

10.5.1. Fabric8 Karaf Config 管理サポートの追加

カスタムの Karaf ディストリビューションに Fabric8 Karaf Config 管理サポートを追加できます。

手順

  • プロジェクトの pom.xml ファイルを開き、fabric8-karaf-cmstartupFeatures セクションに追加します。

    pom.xml

    <startupFeatures>
      ...
      <feature>fabric8-karaf-cm</feature>
      ...
    </startupFeatures>

10.5.2. ConfigMap インジェクションの追加

fabric8-karaf-cm は、Karaf の ConfigAdminConfigMap の値をインジェクトする ConfigAdmin ブリッジを提供します。

手順

  1. ConfigMap が ConfigAdmin ブリッジによって追加されるようにするには、ConfigMap に karaf.pid をラベル付けする必要があります。karaf.pid の値はコンポーネントの pid に対応します。以下に例を示します。

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: myconfig
      labels:
        karaf.pid: com.mycompany.bundle
    data:
      example.property.1: my property one
      example.property.2: my property two
  2. 設定を定義するには、単一のプロパティー名を使用できます。ほとんどの場合で個別のプロパティーは動作します。これは karaf/etc の pid ファイルと同じです。以下に例を示します。

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: myconfig
      labels:
        karaf.pid: com.mycompany.bundle
    data:
      com.mycompany.bundle.cfg: |
        example.property.1: my property one
        example.property.2: my property two

10.5.3. 設定プラグイン

fabric8-karaf-cm は、設定プロパティープレースホルダーを解決する ConfigurationPlugin を提供します。

fabric8-karaf-cm プラグインでプロパティーの置き換えを有効にするには、fabric8.config.plugin.enabled Java プロパティーを true に設定する必要があります。たとえば、以下のように Karaf イメージで JAVA_OPTIONS 環境変数を使用して、このプロパティーを設定することができます。

JAVA_OPTIONS=-Dfabric8.config.plugin.enabled=true

10.5.4. 設定プロパティープレースホルダー

以下に設定プロパティープレースホルダーの例を示します。

my.service.cfg

    amq.usr = $[k8s:secret:$[env:ACTIVEMQ_SERVICE_NAME]/username]
    amq.pwd = $[k8s:secret:$[env:ACTIVEMQ_SERVICE_NAME]/password]
    amq.url = tcp://$[env+service:ACTIVEMQ_SERVICE_NAME]

my-service.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
               xsi:schemaLocation="
                 http://www.osgi.org/xmlns/blueprint/v1.0.0
                 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
                 http://camel.apache.org/schema/blueprint
                 http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">

      <cm:property-placeholder persistent-id="my.service" id="my.service" update-strategy="reload"/>

      <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
         <property name="userName"  value="${amq.usr}"/>
         <property name="password"  value="${amq.pwd}"/>
         <property name="brokerURL" value="${amq.url}"/>
      </bean>
    </blueprint>

10.5.5. Fabric8 Karaf 設定管理オプション

Fabric8 Karaf 設定管理は以下のオプションをサポートします。

名前デフォルト説明

fabric8.config.plugin.enabled

false

ConfigurationPlugin を有効にします。

fabric8.cm.bridge.enabled

true

ConfigAdmin ブリッジを有効にします。

fabric8.config.watch

true

ConfigMap の変更の監視を有効にします。

fabric8.config.merge

false

ConfigAdmin での ConfigMap 値のマージを有効にします。

fabric8.config.meta

true

ConfigAdmin ブリッジでの ConfigMap のインジェクトを有効にします。

fabric8.pid.label

karaf.pid

ConfigAdmin ブリッジが検索するラベルを定義します (よって、選択する必要のある ConfigMap にそのラベルが存在する必要があり、その値で PID の関連付けが判断されます)。

fabric8.pid.filters

empty

ConfigAdmin ブリッジの追加の条件を定義し、ConfigMap を選択します。サポートされる構文は以下のとおりです。

  • 異なるラベルの条件はコンマ (,) で区切られ、ラベルの間の AND として解釈されます。
  • ラベル内のセミコロン (;) は OR として解釈され、ラベル値で条件の区切り文字として使用できます。

たとえば、-Dfabric8.pid.filters=appName=A;B,database.name=my.oracle.datasource のようなフィルターの場合、A または B の値を持つラベル appName と、my.oracle.datasource と同等のラベル database.name の両方を持つすべての ConfigMap を提供します。

重要

ConfigurationPlugin には Aries Blueprint CM 1.0.9 以上が必要です。