10.5. Fabric8 Karaf Config 관리자 지원 추가
10.5.1. Fabric8 Karaf Config 관리자 지원 추가
사용자 지정 Karaf 배포에 Fabric8 Karaf Config 관리자 지원을 추가할 수 있습니다.
절차
프로젝트의
pom.xml
을 열고startupFeatures
섹션에fabric8-karaf-cm
를 추가합니다.pom.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <startupFeatures> ... <feature>fabric8-karaf-cm</feature> ... </startupFeatures>
<startupFeatures> ... <feature>fabric8-karaf-cm</feature> ... </startupFeatures>
10.5.2. ConfigMap 삽입 추가
fabric8-karaf-cm
는 Karaf의 ConfigAdmin
에 ConfigMap
값을 삽입하는 ConfigAdmin
브리지를 제공합니다.
절차
ConfigAdmin 브리지에서 추가하려면 ConfigMap에
karaf.pid
라는 레이블이 지정되어야 합니다.karaf.pid
값은 구성 요소의 pid에 해당합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 파일과 동일합니다. 예를 들면 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
플러그인으로 속성 대체를 활성화하려면 Java 속성 fabric8.config.plugin.enabled
를 true
로 설정해야 합니다. 예를 들어 Karaf 이미지의 JAVA_OPTIONS
환경 변수를 사용하여 이 속성을 설정할 수 있습니다.
JAVA_OPTIONS=-Dfabric8.config.plugin.enabled=true
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]
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>
<?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 Config 관리자 옵션
Fabric8 Karaf Config Admin은 다음 옵션을 지원합니다.
이름 | 기본 | 설명 |
---|---|---|
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 | 빈 | ConfigMap을 선택하려면 ConfigAdmin 브릿지에 대한 추가 조건을 정의합니다. 지원되는 구문은 다음과 같습니다.
예를 들어 -Dfabric8.pid.filters=appNames=appNames=A;B,database.name=my.oracle.datasource 와 같은 필터가 "give me all ConfigMaps that have a label appName with values A 또는 B and a label database.name equals to my.oracle.datasource"로 변환됩니다. |
ConfigurationPlugin
에는 Aries 블루프린트 CM 1.0.9
이상이 필요합니다.