10.17.5. 디렉터리 내에서 여러 파일에서 구성 값 로드
DirectoryConfigProvider 를 사용하여 디렉터리 내의 여러 파일에서 구성 속성을 제공합니다. 파일은 구성 맵 또는 시크릿일 수 있습니다.
이 절차에서 시크릿은 커넥터에 대한 TLS 키 저장소 및 신뢰 저장소 사용자 인증 정보를 제공합니다. 자격 증명은 별도의 파일에 있습니다. 시크릿은 Kafka Connect Pod에 볼륨으로 마운트됩니다. 볼륨은 경로 /mnt/<volume-name> 에 마운트됩니다.
사전 요구 사항
- Kafka 클러스터가 실행 중입니다.
- Cluster Operator가 실행 중입니다.
- 사용자 인증 정보가 포함된 시크릿이 있습니다.
사용자 인증 정보가 있는 시크릿 예
apiVersion: v1
kind: Secret
metadata:
name: my-user
labels:
strimzi.io/kind: KafkaUser
strimzi.io/cluster: my-cluster
type: Opaque
data:
ca.crt: <public_key> # Public key of the clients CA used to sign this user certificate
user.crt: <user_certificate> # Public key of the user
user.key: <user_private_key> # Private key of the user
user.p12: <store> # PKCS #12 store for user certificates and keys
user.password: <password_for_store> # Protects the PKCS #12 store
my-user 시크릿은 커넥터에 대한 키 저장소 인증 정보(user.crt 및 user.key)를 제공합니다.
Kafka 클러스터를 배포할 때 생성된 < cluster_name>-cluster-ca-cert 시크릿은 클러스터 CA 인증서를 신뢰 저장소 인증 정보(ca.crt)로 제공합니다.
프로세스
KafkaConnect리소스를 구성합니다.-
DirectoryConfigProvider활성화 -
template속성을 사용하여 추가 볼륨을 지정합니다.
외부 속성 파일을 사용하는 Kafka Connect 구성의 예
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect spec: # ... config: config.providers: directory1 config.providers.directory.class: org.apache.kafka.common.config.provider.DirectoryConfigProvider2 #... template: pod: volumes: - name: my-user-volume3 secret: secretName: my-user4 - name: cluster-ca-volume secret: secretName: my-cluster-cluster-ca-cert connectContainer: volumeMounts: - name: my-user-volume5 mountPath: /mnt/my-user6 - name: cluster-ca-volume mountPath: /mnt/cluster-ca-
공급자를 활성화하도록 리소스를 생성하거나 업데이트합니다.
oc apply -f <kafka_connect_configuration_file>커넥터 구성의 파일 속성을 자리 표시자로 참조합니다.
파일을 참조하는 커넥터 구성의 예
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnector metadata: name: my-source-connector labels: strimzi.io/cluster: my-connect-cluster spec: class: io.debezium.connector.mysql.MySqlConnector tasksMax: 2 config: # ... database.history.producer.security.protocol: SSL database.history.producer.ssl.truststore.type: PEM database.history.producer.ssl.truststore.certificates: "${directory:/mtn/cluster-ca:ca.crt}" database.history.producer.ssl.keystore.type: PEM database.history.producer.ssl.keystore.certificate.chain: "${directory:/mnt/my-user:user.crt}" database.history.producer.ssl.keystore.key: "${directory:/mnt/my-user:user.key}" #...자리 표시자 구조는
directory:<path>:<file_name>입니다.DirectoryConfigProvider는 마운트된 보안에서 인증 정보를 읽고 추출합니다.