10.5. Fabric8 Karaf Config 管理サポートの追加
10.5.1. Fabric8 Karaf Config 管理サポートの追加
カスタムの Karaf ディストリビューションに Fabric8 Karaf Config 管理サポートを追加できます。
手順
プロジェクトの
pom.xml
ファイルを開き、fabric8-karaf-cm
をstartupFeatures
セクションに追加します。pom.xml
<startupFeatures> ... <feature>fabric8-karaf-cm</feature> ... </startupFeatures>
10.5.2. ConfigMap インジェクションの追加
fabric8-karaf-cm
は、Karaf の ConfigAdmin
で ConfigMap
の値をインジェクトする ConfigAdmin
ブリッジを提供します。
手順
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
設定を定義するには、単一のプロパティー名を使用できます。ほとんどの場合で個別のプロパティーは動作します。これは
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 を選択します。サポートされる構文は以下のとおりです。
たとえば、-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
以上が必要です。