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
或更高版本。