如何在Kubernetes上运行的spring-boot应用程序上为Kafka Streams远程交互查询动态配置app



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

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

但我无法获得应用程序服务器的价值,因为它需要主机:端口

对于主机,我们需要将每个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?

您可以将您的pods IP地址作为环境变量,然后在应用程序中引用环境变量。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

相关内容

  • 没有找到相关文章

最新更新