我们正在使用 Bitnami Helm Charts 在 K8s 集群上安装 Spring Cloud Dataflow 和 Skipper。
一切正常,我们能够部署流。
但请注意,我们没有在支撑的 helm 值中设置一些属性。
以下属性
management.endpoints.web.exposure.include: health,info,bindings
management.metrics.tags.instance.index: ${vcap.application.instance_index:${spring.cloud.stream.instanceIndex:0}}
wavefront.application.service: ${spring.cloud.dataflow.stream.app.label:unknown}-${spring.cloud.dataflow.stream.app.type:unknown}-${vcap.application.instance_index:${spring.cloud.stream.instanceIndex:0}}
management.metrics.tags.application.name: ${vcap.application.application_name:${spring.cloud.dataflow.stream.app.label:unknown}}
我遗漏了其他一些,但以上是值得关注的。
我们使用配置服务器来获取 SCDF 部署的应用程序的属性。
在那里,我们将 Web 暴露设置为包含 env/configprops,但这些会被忽略,并且由 scdf 设置的环境属性会覆盖它。
一种解决方案是将此属性添加到值 yaml 中,但这意味着我无法使用配置服务器存储库来控制它们。
对于使用 vcap 的其他属性,我相信它更多的是 PCF 约定,这适用于 K8s,而且我不确定 K8s 是否有实例索引。
我的问题是。 如何确保配置服务器属性优先于 SCDF 在已部署应用程序上设置的 env 属性。 如何在我的 k8s 安装的 SCDF 上抑制 PCF 特定属性?
可以指定 Spring Boot 属性以从其他属性获取值,包括本示例中的默认值:
propA=${propB:${propC:0}}
vcap
属性仅在CF环境中有效,可以在k8s默认值中删除。
结果:
management.metrics.tags.instance.index: ${${spring.cloud.stream.instanceIndex:0}
wavefront.application.service: ${spring.cloud.dataflow.stream.app.label:unknown}-${spring.cloud.dataflow.stream.app.type:unknown}-${spring.cloud.stream.instanceIndex:0}
目前 SCDF 在数据流和船长应用程序配置中添加基于 management.defaults 的默认属性。除非您在部署期间提供新值,否则它将作为参数或环境变量传递,这两者都将覆盖配置服务器中的配置。
我建议您指定数据流和船长中的默认值,并根据需要更新它们。
请记录描述问题的问题。