基于Manifest的SCDF CF服务器:如何为特定任务/流应用绑定指定服务
给特定流/任务应用绑定专属服务的方法
没问题,这就给你讲清楚怎么在已经配置全局服务绑定的情况下,给特定的流或任务应用绑定专属服务。核心思路是通过应用级的部署参数覆盖全局配置,下面分两种场景详细说明:
一、给特定任务应用绑定特定服务
你有两种灵活的实现方式:
- 启动任务时临时指定:在使用
task launch命令启动目标任务时,添加--deployer.<任务应用名称>.cloudfoundry.services=<目标服务名>参数,这个参数会直接覆盖全局的SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_TASK_SERVICES配置。
举个实际例子:如果你的任务应用叫user-data-export,要绑定的专属服务是user-db-service,命令如下:task launch user-data-export --deployer.user-data-export.cloudfoundry.services=user-db-service - 创建任务时固定配置:如果希望这个任务每次启动都自动绑定该服务,可以在创建任务定义时就把部署参数写进去:
task create fixed-export-task --definition "user-data-export --deployer.cloudfoundry.services=user-db-service"
二、给特定流应用绑定特定服务
针对流里的单个应用,同样可以通过部署参数实现专属服务绑定:
- 部署流时临时指定:在部署流的命令中,给目标应用添加
--deployer.<流内应用名称>.cloudfoundry.services=<目标服务名>参数,覆盖全局的SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES配置。
比如你有一个流http-source | transform-processor | log-sink,要给transform-processor绑定redis-cache-service,部署命令如下:stream deploy data-processing-stream --deployer.transform-processor.cloudfoundry.services=redis-cache-service - 定义流时固定配置:如果想让流定义本身就包含专属服务绑定,可以直接把参数嵌入到流定义里:
stream create fixed-processing-stream --definition "http-source | transform-processor --deployer.cloudfoundry.services=redis-cache-service | log-sink"
额外小技巧
如果需要同时绑定全局服务和专属服务,可以把多个服务名用逗号分隔,比如:
--deployer.user-data-export.cloudfoundry.services=serviceName2,user-db-service
这样该任务应用会同时绑定全局配置的serviceName2和你指定的user-db-service。
内容的提问来源于stack exchange,提问作者Alexander.Furer
相关产品推荐
相关产品推荐

