关于Skipper及Skipper-Client协助应用获取部署属性的技术咨询
嘿,我来帮你拆解这两个关于Skipper配置传递的问题,都是核心的运行逻辑哦~
一、Skipper-Client 如何帮助应用获取 streamDeploymentProperties?
- Skipper-Client 相当于应用和 Skipper Server 之间的「通信联络员」。当应用启动时,它会主动向 Skipper Server 发起请求,带上自身所属的流名称、部署版本等标识信息,请求获取当前流的部署元数据。
- Skipper Server 收到请求后,会从自身的存储(比如内置数据库)里查询对应流的部署配置,其中就包含
streamDeploymentProperties,然后把这些数据返回给 Skipper-Client。 - 拿到这些属性后,Skipper-Client 会把它们注入到应用的配置上下文里——可能是环境变量,也可能是 Spring Boot 的 Environment 对象,让应用能像读取本地配置文件一样轻松访问这些属性。
二、Skipper 如何协助安装的应用获取配置属性(以 SCDF 中 http | log 流为例)
咱们就拿你提到的 http --server.port=8088 | log 流来具体说:
- 第一步:在 SCDF 里提交这个流定义时,
server.port=8088这个组件配置会被 SCDF 封装成部署请求,传递给 Skipper Server。毕竟 SCDF 是依赖 Skipper 来完成流的实际部署管理的。 - 第二步:Skipper Server 会把这个自定义属性和流的默认配置、目标平台的配置(比如本地运行、Kubernetes 集群)做合并,生成最终的部署清单。如果是本地部署,它会把
server.port=8088转换成应用启动的命令行参数;如果是 Kubernetes 部署,可能会把属性注入到 ConfigMap 或者环境变量中。 - 第三步:当 http 组件应用启动时,内置的 Skipper-Client 会从 Skipper Server 拉取到包含
server.port=8088的完整配置集合,然后把这些属性注入到应用的 Spring Environment 中。Spring Boot 应用会自动识别并加载这些属性,于是 http 组件就会把服务端口设置为 8088 了。 - 额外提一句:Skipper 还支持配置动态更新。如果后续你通过 SCDF 或者 Skipper CLI 修改了流的配置,Skipper 会主动通知应用重新拉取最新配置,实现配置热更新(这需要应用本身支持配置刷新,比如结合 Spring Cloud Config 的能力)。
内容的提问来源于stack exchange,提问作者andydy
相关产品推荐
相关产品推荐

