9.18. 从外部来源加载配置值
使用配置提供程序从外部来源加载配置数据。供应商独立于 Apache Kafka 的 Streams 操作。您可以使用它们为所有 Kafka 组件加载配置数据,包括生成者和消费者。您可以在组件的配置中引用外部源并提供访问权限。供应商在不重启 Kafka 组件或提取文件的情况下加载数据,即使引用新的外部源也是如此。例如,使用供应商提供 Kafka Connect 连接器配置的凭证。配置必须包含对外部源的任何访问权限。
9.18.1. 启用配置供应商 复制链接链接已复制到粘贴板!
您可以使用组件的 spec 配置中的 config.providers 属性启用一个或多个配置供应商。
启用配置供应商的配置示例
- KubernetesSecretConfigProvider
- 从 OpenShift 机密加载配置数据。您可以在存储配置数据的 secret 中指定 secret 和密钥。此提供程序可用于存储敏感配置数据,如密码或其他用户凭据。
- KubernetesConfigMapConfigProvider
- 从 OpenShift 配置映射加载配置数据。您可以在存储配置数据的配置映射中指定配置映射的名称和键。此提供程序可用于存储非敏感配置数据。
- EnvVarConfigProvider
- 从环境变量加载配置数据。您可以指定保存配置数据的环境变量的名称。此提供程序可用于配置容器中运行的应用,例如从机密映射的环境变量加载证书或 JAAS 配置。
- FileConfigProvider
- 从文件加载配置数据。您可以指定保存配置数据的文件的路径。此提供程序可用于从挂载到容器中的文件中加载配置数据。
- DirectoryConfigProvider
- 从目录中的文件加载配置数据。您可以指定存储配置文件的目录的路径。此提供程序可用于加载多个配置文件和将配置数据组织到单独的文件中。
要使用作为 OpenShift Configuration Provider 插件一部分的 KubernetesSecretConfigProvider 和 KubernetesConfigMapConfigProvider,您必须为包含配置文件的命名空间设置访问权限。
您可以在不设置访问权限的情况下使用其他供应商。您可以通过执行以下操作来为 Kafka Connect 或 MirrorMaker 2 提供连接器配置:
- 将配置映射或 secret 挂载到 Kafka Connect pod 中作为环境变量或卷中
-
在 Kafka Connect 或 MirrorMaker 2 配置中启用
EnvVarConfigProvider,FileConfigProvider, 或DirectoryConfigProvider -
使用
KafkaConnect或KafkaMirrorMaker2资源的spec中的externalConfiguration属性传递连接器配置
使用供应商有助于防止通过 Kafka Connect REST 接口传递受限信息。在以下情况下可以使用这个方法:
- 使用连接器用来连接和数据源通信的值挂载环境变量
- 使用配置 Kafka Connect 连接器的值挂载属性文件
- 在目录中挂载文件,其中包含连接器使用的 TLS 信任存储和密钥存储的值
将新的 Secret 或 ConfigMap 用于连接器时需要重启,这可能会破坏其他连接器。
9.18.2. 从 secret 或配置映射加载配置值 复制链接链接已复制到粘贴板!
使用 KubernetesSecretConfigProvider 从 secret 或 KubernetesConfigMapConfigProvider 提供配置属性,从配置映射提供配置属性。
在此过程中,配置映射为连接器提供配置属性。属性指定为配置映射的键值。配置映射作为卷挂载到 Kafka Connect pod 中。
先决条件
- Kafka 集群正在运行。
- Cluster Operator 正在运行。
- 您有一个包含连接器配置的配置映射。
使用连接器属性的配置映射示例
流程
配置
KafkaConnect资源。-
启用
KubernetesConfigMapConfigProvider
此处显示的规格支持从配置映射和 secret 加载值。
使用配置映射和 secret 的 Kafka 连接配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
启用
创建或更新资源以启用提供程序。
oc apply -f <kafka_connect_configuration_file>
oc apply -f <kafka_connect_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个允许访问外部配置映射中值的角色。
要从配置映射中访问值的角色示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该规则授予角色权限来访问
my-connector-configuration配置映射。创建一个角色绑定,允许访问包含配置映射的命名空间。
访问包含配置映射的命名空间的角色绑定示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 角色绑定授予角色访问
my-project命名空间的权限。服务帐户必须是 Kafka Connect 部署使用的相同。服务帐户名称是 <
cluster_name>-connect,其中 <cluster_name> 是KafkaConnect自定义资源的名称。在连接器配置中引用配置映射。
引用配置映射的连接器配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 占位符结构是
configmaps:<path_and_file_name>:<property>。KubernetesConfigMapConfigProvider从外部配置映射读取和提取option1属性值。
9.18.3. 从环境变量加载配置值 复制链接链接已复制到粘贴板!
使用 EnvVarConfigProvider 提供配置属性作为环境变量。环境变量可以包含来自配置映射或 secret 的值。
在此过程中,环境变量为连接器提供配置属性,以便与 Amazon AWS 通信。连接器必须能够读取 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。环境变量的值派生自挂载到 Kafka Connect pod 的 secret。
用户定义的环境变量的名称不能以 KAFKA_ 或 STRIMZI_ 开头。
先决条件
- Kafka 集群正在运行。
- Cluster Operator 正在运行。
- 您有一个包含连接器配置的 secret。
带有环境变量值的 secret 示例
流程
配置
KafkaConnect资源。-
启用
EnvVarConfigProvider -
使用
externalConfiguration属性指定环境变量。
使用外部环境变量的 Kafka 连接配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意secretKeyRef属性引用 secret 中的键。如果您使用配置映射而不是 secret,请使用configMapKeyRef属性。-
启用
创建或更新资源以启用提供程序。
oc apply -f <kafka_connect_configuration_file>
oc apply -f <kafka_connect_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在连接器配置中引用环境变量。
引用环境变量的连接器配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 占位符结构是
env:<environment_variable_name>。EnvVarConfigProvider从挂载的 secret 中读取并提取环境变量值。
9.18.4. 从目录中的文件载入配置值 复制链接链接已复制到粘贴板!
使用 FileConfigProvider 从目录中的文件提供配置属性。文件可以是配置映射或 secret。
在此过程中,文件为连接器提供配置属性。数据库名称和密码被指定为 secret 的属性。secret 作为一个卷挂载到 Kafka Connect pod。卷挂载到路径 /opt/kafka/external-configuration/<volume-name > 上。
先决条件
- Kafka 集群正在运行。
- Cluster Operator 正在运行。
- 您有一个包含连接器配置的 secret。
带有数据库属性的 secret 示例
流程
配置
KafkaConnect资源。-
启用
FileConfigProvider -
使用
externalConfiguration属性指定文件。
使用外部属性文件的 Kafka 连接配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
启用
创建或更新资源以启用提供程序。
oc apply -f <kafka_connect_configuration_file>
oc apply -f <kafka_connect_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将连接器配置中的文件属性引用为占位符。
引用该文件的连接器配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 占位符结构是
file:<path_and_file_name>:<property>。FileConfigProvider从挂载的 secret 读取并提取数据库 username 和 password 属性值。
9.18.5. 从目录中的多个文件载入配置值 复制链接链接已复制到粘贴板!
使用 DirectoryConfigProvider 从目录中的多个文件提供配置属性。文件可以是配置映射或 secret。
在此过程中,secret 为连接器提供 TLS 密钥存储和信任存储用户凭证。凭据位于单独的文件中。secret 作为卷挂载到 Kafka Connect pod 中。卷挂载到路径 /opt/kafka/external-configuration/<volume-name > 上。
先决条件
- Kafka 集群正在运行。
- Cluster Operator 正在运行。
- 您有一个包含用户凭证的 secret。
使用用户凭证的 secret 示例
my-user secret 为连接器提供密钥存储凭证(user.crt 和 user.key)。
在部署 Kafka 集群时生成的 <cluster_name>-cluster-ca-cert secret 将集群 CA 证书提供为信任存储凭证(ca.crt)。
流程
配置
KafkaConnect资源。-
启用
DirectoryConfigProvider -
使用
externalConfiguration属性指定文件。
使用外部属性文件的 Kafka 连接配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
启用
创建或更新资源以启用提供程序。
oc apply -f <kafka_connect_configuration_file>
oc apply -f <kafka_connect_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将连接器配置中的文件属性引用为占位符。
引用文件的连接器配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 占位符结构是
directory:<path>:<file_name>。DirectoryConfigProvider从挂载的 secret 读取并提取凭证。