13.2.70.2. 卷
使用卷将 ConfigMap 或 Secret 挂载到 Kafka Connect pod。
在以下情况下,使用卷而不是环境变量会很有用:
- 挂载用来配置 Kafka Connect 连接器的属性文件
- 使用 TLS 证书挂载信任存储或密钥存储
卷挂载到 Kafka Connect 容器中,路径 /opt/kafka/external-configuration/<volume-name>
。例如,名为 connector -config
的卷中的文件将显示在 /opt/kafka/external-configuration/connector-config
目录中。
配置 提供程序 从配置外部加载值。使用供应商机制避免通过 Kafka Connect REST 接口传递受限信息。
-
FileConfigProvider
从文件中的属性加载配置值。 -
DirectoryConfigProvider
从目录结构中的独立文件加载配置值。
如果要添加多个供应商(包括自定义供应商),请使用以逗号分隔的列表。您可以使用自定义供应商从其他文件位置加载值。
使用 FileConfigProvider
加载属性值
在本例中,名为 mysecret
的 Secret 包含指定数据库名称和密码的连接器属性:
带有数据库属性的 Secret 示例
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque stringData: connector.properties: |- 1 dbUsername: my-username 2 dbPassword: my-password
Secret 和 FileConfigProvider
配置供应商在 Kafka Connect 配置中指定。
-
Secret 被挂载到名为 connector
-config
的卷。 -
为 fileConfigProvider
指定别名文件
。
外部卷示例设置为来自 Secret 的值
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect spec: # ... config: config.providers: file 1 config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider 2 #... externalConfiguration: volumes: - name: connector-config 3 secret: secretName: mysecret 4
在连接器配置中引用 Secret 中属性值的占位符。占位符结构为 file:PATH-AND-FILE-NAME:PROPERTY
。FileConfigProvider
在连接器配置中读取并提取挂载的 Secret 中的数据库 用户名和密码 属性值。
显示外部值占位符的连接器配置示例
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.hostname: 192.168.99.1 database.port: "3306" database.user: "${file:/opt/kafka/external-configuration/connector-config/mysecret:dbUsername}" database.password: "${file:/opt/kafka/external-configuration/connector-config/mysecret:dbPassword}" database.server.id: "184054" #...
使用 DirectoryConfigProvider
从单独的文件中加载属性值
在本例中,Secret
在单独的文件中包含 TLS 信任存储和密钥存储用户凭证。
带有用户凭证的 Secret 示例
apiVersion: v1
kind: Secret
metadata:
name: mysecret
labels:
strimzi.io/kind: KafkaUser
strimzi.io/cluster: my-cluster
type: Opaque
data: 1
ca.crt: # Public key of the client CA
user.crt: # User certificate that contains the public key of the user
user.key: # Private key of the user
user.p12: # PKCS #12 archive file for storing certificates and keys
user.password: # Password for protecting the PKCS #12 archive file
Secret 和 DirectoryConfigProvider
配置供应商在 Kafka Connect 配置中指定。
-
Secret 被挂载到名为 connector
-config
的卷。 -
DirectoryConfigProvider
被授予别名目录
。
为用户凭证文件设置的外部卷示例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect
spec:
# ...
config:
config.providers: directory
config.providers.directory.class: org.apache.kafka.common.config.provider.DirectoryConfigProvider 1
#...
externalConfiguration:
volumes:
- name: connector-config
secret:
secretName: mysecret
凭据的占位符在连接器配置中引用。占位符结构为 directory:PATH:FILE-NAME
。DirectoryConfigProvider
在连接器配置中读取并提取挂载的 Secret 中的凭证。
显示外部值占位符的连接器配置示例
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: security.protocol: SSL ssl.truststore.type: PEM ssl.truststore.location: "${directory:/opt/kafka/external-configuration/connector-config:ca.crt}" ssl.keystore.type: PEM ssl.keystore.location: ${directory:/opt/kafka/external-configuration/connector-config:user.key}" #...