8.15. 从外部来源加载配置值
使用配置提供程序从外部来源加载配置数据。供应商独立于 AMQ Streams 运行。您可以使用它们为所有 Kafka 组件加载配置数据,包括制作者和消费者。您可以在组件的配置中引用外部源并提供访问权限。供应商在不需要重启 Kafka 组件或提取文件的情况下加载数据,即使引用新的外部源。例如,使用 provider 为 Kafka Connect 连接器配置提供凭证。该配置必须包含对外部源的任何访问权限。
8.15.1. 启用配置供应商 复制链接链接已复制到粘贴板!
您可以使用组件的 spec 配置中的 config.providers 属性启用一个或多个配置供应商。
启用配置供应商的示例配置
- KubernetesSecretConfigProvider
- 从 OpenShift 机密加载配置数据。您可以在存储配置数据的 secret 中指定 secret 的名称和密钥。此提供程序可用于存储敏感配置数据,如密码或其他用户凭据。
- KubernetesConfigMapConfigProvider
- 从 OpenShift 配置映射加载配置数据。您可以在保存配置数据的配置映射中指定配置映射的名称和密钥。此提供程序可用于存储非敏感配置数据。
- EnvVarConfigProvider
- 从环境变量加载配置数据。您可以指定存储数据的环境变量的名称。此提供程序可用于配置容器中运行的应用程序,例如从从 secret 映射的环境变量加载证书或 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 连接连接器的值挂载属性文件
- 将文件挂载到包含 TLS 信任存储的值和连接器使用的密钥存储值的目录中
在为连接器使用新的 Secret 或 ConfigMap 时,需要重启,这可能会破坏其他连接器。
8.15.2. 从 secret 或配置映射加载配置值 复制链接链接已复制到粘贴板!
使用 KubernetesSecretConfigProvider 从 secret 或 KubernetesConfigMapConfigProvider 提供配置属性,以便从配置映射中提供配置属性。
在此过程中,配置映射为连接器提供配置属性。属性指定为配置映射的键值。配置映射作为卷挂载到 Kafka Connect pod 中。
先决条件
- Kafka 集群正在运行。
- Cluster Operator 正在运行。
- 您有一个包含连接器配置的配置映射。
带有连接器属性的配置映射示例
流程
配置
KafkaConnect资源。-
启用
KubernetesConfigMapConfigProvider
此处显示的规格支持从配置映射和 secret 加载值。
使用配置映射和 secret 的 Kafka Connect 配置示例
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属性值。
8.15.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 中读取并提取环境变量值。
8.15.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 占位符结构是
文件:<path_and_file_name>:<property>。FileConfigProvider从挂载的 secret 中读取并提取数据库 username 和 password 属性值。
8.15.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 中读取并提取凭证。