【问题标题】:How configure the application.server dynamically for Kafka Streams remote interactive queries on a spring boot app running on Kubernetes如何在 Kubernetes 上运行的 Spring Boot 应用程序上为 Kafka Streams 远程交互式查询动态配置 application.server
【发布时间】:2020-12-02 13:28:49
【问题描述】:

我们有一个运行三个 pod 的 Kubernetes 集群,我想知道我们需要在 application.server 中提供哪些 RPC 端点来进行交互式查询。

所以我们有一个用例,我们需要使用 gRPC 服务器 查询状态存储。 在创建 gRPC 服务器时,我们将 50052 作为端口..

但我无法获得 application.server 的值,因为它需要 Host:Port

对于主机,我们是否需要将每个 pod 的端点 ip 和端口指定为 50052?

例如以下:

$>kubectl get ep
NAME                    ENDPOINTS                       AGE
myapp   10.8.2.85:8080,10.8.2.88:8080   10d


Pod1 -> 10.8.2.85:8080
Pod2 -> 10.8.2.88:8080

那么application.server的值会是什么呢?

 1. 10.8.2.85:50052 (port is what i am giving in gRPC server)
 2. 10.8.2.88:50052 (port is what i am giving in gRPC server)

如果上面的 application.server 值是正确的,那么如何动态获取这个 POD IP?

【问题讨论】:

标签: kubernetes apache-kafka grpc apache-kafka-streams grpc-java


【解决方案1】:

您可以将您的 pod IP 地址作为环境变量使用,然后在 application.yml 中引用该环境变量

见:https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/

pod.yml

apiVersion: v1
kind: Pod
metadata:
  name: kafka-stream-app
spec:
  containers:
    - name: kafka-stream-app
      #... some more configs
      env:
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP

application.yml

spring:
  cloud:
    stream:
      kafka:
        streams:
          binder:
            configuration:
              application.server: ${MY_POD_IP}:50052

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多