如何配置Spring Cloud Dataflow流的Kubernetes服务?
关于Spring Cloud Dataflow中Kubernetes服务的配置说明
核心结论
- Kubernetes服务是在流部署阶段由Spring Cloud Skipper负责生成的,并非Spring Cloud Dataflow Server直接创建,也不会在流定义阶段生成(定义阶段仅完成流的逻辑编排)。
- 可以通过
spring.cloud.deployer.kubernetes.service.*前缀的属性自定义Kubernetes服务,包括实现多端口暴露需求。
具体配置方式
1. 针对单个应用配置服务属性
在部署流时,通过--properties参数为目标应用指定服务相关配置,格式为app.<应用ID>.spring.cloud.deployer.kubernetes.service.<配置项>:
多端口暴露示例
如果需要在服务中同时暴露grpc和http端口,可使用以下命令部署流:
dataflow:>stream deploy --name my-data-stream --properties "app.my-processor.spring.cloud.deployer.kubernetes.service.type=NodePort,app.my-processor.spring.cloud.deployer.kubernetes.service.ports=[grpc:9090:30090,http:8080:30080]"
其中ports属性格式为[<端口名称>:<容器端口>:<服务端口>],多个端口用逗号分隔。
2. 常用服务配置项
除端口外,还可自定义以下服务属性:
spring.cloud.deployer.kubernetes.service.type:指定服务类型,可选ClusterIP、NodePort、LoadBalancerspring.cloud.deployer.kubernetes.service.annotations:为服务添加自定义注解,格式为key1=value1,key2=value2spring.cloud.deployer.kubernetes.service.labels:为服务添加自定义标签
3. 全局默认配置(可选)
如果需要为所有流应用统一设置服务默认值,可在Skipper服务器的配置文件中添加全局属性:
spring: cloud: deployer: kubernetes: service: type: ClusterIP ports: [http:8080:8080]
注意:全局配置会被应用级的自定义配置覆盖。
补充说明
- Skipper在部署应用的Deployment资源时,会自动关联创建对应的Service资源,两者标签保持一致,确保流量正确路由到应用Pod。
- 当流被销毁时,Skipper会自动清理对应的Service和Deployment资源。
内容的提问来源于stack exchange,提问作者dcolazin
相关产品推荐
相关产品推荐

