12.5. 添加 Fabric8 Karaf 配置管理员支持
12.5.1. 添加 Fabric8 Karaf 配置管理员支持
您可以将 Fabric8 Karaf 配置管理员支持添加到自定义 Karaf 分发中。
步骤
打开项目的
pom.xml,并将fabric8-karaf-cm添加到startupFeatures部分。pom.xml
<startupFeatures> ... <feature>fabric8-karaf-cm</feature> ... </startupFeatures>
12.5.2. 添加 ConfigMap 注入
fabric8-karaf-cm 提供了一个 ConfigAdmin 网桥,可在 Karaf 的 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
12.5.3. 配置插件
fabric8-karaf-cm 提供了一个 ConfigurationPlugin,它解析配置属性占位符。
要启用使用 fabric8-karaf-cm 插件的属性替换,您必须将 Java 属性 fabric8.config.plugin.enabled 设置为 true。例如,您可以使用 Karaf 镜像中的 JAVA_OPTIONS 环境变量设置此属性,如下所示:
JAVA_OPTIONS=-Dfabric8.config.plugin.enabled=true
12.5.4. config Property Placeholders
配置属性占位符示例如下所示:
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>
12.5.5. Fabric8 Karaf Config Admin 选项
Fabric8 Karaf Config Admin 支持以下选项:
| 名称 | default | 描述 |
|---|---|---|
| fabric8.config.plugin.enabled | false | enable ConfigurationPlugin |
| fabric8.cm.bridge.enabled | true | 启用 ConfigAdmin 网桥 |
| fabric8.config.watch | true | 启用查看 ConfigMap 更改 |
| fabric8.config.merge | false | 在 ConfigAdmin 中启用合并 ConfigMap 值 |
| fabric8.config.meta | true | 在 ConfigAdmin 网桥中启用注入 ConfigMap meta |
| 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 )转换为 "give me all ConfigMaps,值为 A 或 B,标签 database.name 等于 my.oracle.datasource"。 |
ConfigurationPlugin 需要 Aries Blueprint CM 1.0.9 或更高版本。