第 3 章 从外部来源加载配置值


使用配置提供程序插件从外部来源加载配置数据。供应商独立于 AMQ Streams 进行操作。您可以使用它们来加载所有 Kafka 组件的配置数据,包括生成者和消费者。例如,使用它们为 Kafka Connect 连接器配置提供凭证。

OpenShift 配置提供程序

OpenShift Configuration Provider 插件从 OpenShift 机密或 ConfigMap 加载配置数据。

假设您在 Kafka 命名空间或 Kafka 集群外部管理的 Secret 对象。OpenShift 配置提供程序允许您在配置中引用 secret 的值,而无需提取文件。您只需告诉供应商要使用哪些 secret 并提供访问权限。供应商在不需要重启 Kafka 组件的情况下加载数据,即使使用新的 SecretConfigMap 对象。当 Kafka Connect 实例托管多个连接器时,此功能可以避免中断。

环境变量配置提供程序

Environment Variables Configuration Provider 插件从环境变量加载配置数据。

环境变量的值可以从 secret 或 ConfigMap 中映射。您可以使用 Environment Variables Configuration Provider,例如从 OpenShift 机密映射的环境变量加载证书或 JAAS 配置。

注意

OpenShift 配置提供程序无法使用挂载的文件。例如,它无法加载需要信任存储或密钥存储的位置。相反,您可以将 ConfigMap 或 secret 挂载到 Kafka Connect pod 中,作为环境变量或卷。您可以使用 Environment Variables Configuration Provider 来加载环境变量的值。您可以使用 KafkaConnect.spec 中的 externalConfiguration 属性添加配置。您不需要使用此方法设置访问权限。但是,当为连接器使用新的 SecretConfigMap 时,Kafka Connect 将需要重启。这会导致所有 Kafka Connect 实例连接器中断。

3.1. 从 ConfigMap 加载配置值

此流程演示了如何使用 OpenShift 配置提供程序插件。

在此过程中,外部 ConfigMap 对象为连接器提供配置属性。

先决条件

  • 一个 OpenShift 集群可用。
  • Kafka 集群正在运行。
  • Cluster Operator 正在运行。

流程

  1. 创建包含配置属性的 ConfigMapSecret

    在本例中,名为 my-connector-configurationConfigMap 对象包含连接器属性:

    带有连接器属性的 ConfigMap 示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-connector-configuration
    data:
      option1: value1
      option2: value2

  2. 在 Kafka Connect 配置中指定 OpenShift Configuration Provider。

    此处所示的规格支持从 secret 和 ConfigMap 中加载值。

    启用 OpenShift 配置供应商的 Kafka 连接配置示例

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnect
    metadata:
      name: my-connect
      annotations:
        strimzi.io/use-connector-resources: "true"
    spec:
      # ...
      config:
        # ...
        config.providers: secrets,configmaps 
    1
    
        config.providers.secrets.class: io.strimzi.kafka.KubernetesSecretConfigProvider 
    2
    
        config.providers.configmaps.class: io.strimzi.kafka.KubernetesConfigMapConfigProvider 
    3
    
      # ...

    1
    配置提供程序的别名用于定义其他配置参数。provider 参数使用 config.providers 中的别名,格式为 config.providers.${alias}.class
    2
    KubernetesSecretConfigProvider 提供来自 secret 的值。
    3
    KubernetesConfigMapConfigProvider 提供配置映射的值。
  3. 创建或更新资源以启用该提供程序。

    oc apply -f <kafka_connect_configuration_file>
  4. 创建允许访问外部配置映射中的值的角色。

    访问配置映射的值的角色示例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: connector-configuration-role
    rules:
    - apiGroups: [""]
      resources: ["configmaps"]
      resourceNames: ["my-connector-configuration"]
      verbs: ["get"]
    # ...

    该规则授予角色访问 my-connector-configuration 配置映射的权限。

  5. 创建角色绑定,以允许访问包含配置映射的命名空间。

    访问包含配置映射的命名空间的角色绑定示例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: connector-configuration-role-binding
    subjects:
    - kind: ServiceAccount
      name: my-connect-connect
      namespace: my-project
    roleRef:
      kind: Role
      name: connector-configuration-role
      apiGroup: rbac.authorization.k8s.io
    # ...

    角色绑定授予角色访问权限来访问 my-project 命名空间。

    服务帐户必须是 Kafka Connect 部署使用的相同。服务帐户名称格式为 < cluster_name>-connect,其中 < cluster_name > 是 KafkaConnect 自定义资源的名称。

  6. 在连接器配置中引用配置映射。

    引用配置映射的连接器配置示例

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnector
    metadata:
      name: my-connector
      labels:
        strimzi.io/cluster: my-connect
    spec:
      # ...
      config:
        option: ${configmaps:my-project/my-connector-configuration:option1}
        # ...
    # ...

    配置映射中属性值的占位符在连接器配置中被引用。占位符结构是 configmaps: <path_and_file_name> : & lt;property>KubernetesConfigMapConfigProvider 从外部配置映射读取并提取 option1 属性值。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部