在 AKS 上部署 Spring-Cloud-Data-Flow 时,如何指定使用外部托管的 Kafka 集群

When deploying Spring-Cloud-Data-Flow on AKS, how do I specify using externally hosted Kafka cluster

我尝试了基于 helm 的部署 (https://docs.spring.io/spring-cloud-dataflow-server-kubernetes/docs/current-SNAPSHOT/reference/htmlsingle/#_helm_installation) of SCDF and this can either use a RabbitMQ or Kafka based messaging system - both of which are options to be deployed within the Helm chart. However, my project already has its own Kafka instance running on the Confluent cloud that I'd like to use instead of the "internal" instance. I have also then tried the Kubectl deployment of SCDF (https://docs.spring.io/spring-cloud-dataflow-server-kubernetes/docs/current-SNAPSHOT/reference/htmlsingle/#_deploying_with_code_kubectl_code),发现我需要再次 运行 启动两个消息传递组件之一。我想知道配置 SCDF 以使用我自己的 Kafka 实例的最佳方法 - 任何人都可以阐明这一点吗?

您上面的文档参考已经很旧了,因此,您可能需要更新到最新的。

民防部队最新消息,请参考here 另外,还有一个SCDFmicrosite你也可以参考

为了回答您的具体问题,由于 Apache Kafka 在您的流应用程序中用作绑定程序,因此您有两个选项来设置外部 Kafka 集群配置:

  • 通过Skipper服务器配置设置为服务器级别属性(由于Skipper服务器负责SCDF中流应用的持续部署,因此需要在Skipper服务器配置中设置流应用相关配置)。

可以找到此配置的示例 here。您会注意到 environmentVariables K8s 部署程序 属性 如何用于配置 Kafka 特定属性。

data:
  application.yaml: |-
    spring:
      cloud:
        skipper:
          server:
            platform:
              kubernetes:
                accounts:
                  default:
                    environmentVariables: 'SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS=${KAFKA_SERVICE_HOST}:${KAFKA_SERVICE_PORT},SPRING_CLOUD_STREAM_KAFKA_BINDER_ZK_NODES=${KAFKA_ZK_SERVICE_HOST}:${KAFKA_ZK_SERVICE_PORT}'

  • 另一种选择是在流部署时将 Kafka 特定属性设置为应用程序部署属性。当您想在流部署期间覆盖 Kafka 配置时,这特别有用。

如果所有流的 Kafka 配置相同,则可以选择第一个选项并设置 Skipper ConfigMap 以将 Kafka 配置指定为 environmentVariables