Spring Cloud Dataflow部署名变更致HPA失效,求固定部署名方案
固定Spring Cloud Dataflow流部署名称的解决方案
方案1:部署时指定固定Deployment名称
在创建或更新流的过程中,通过Spring Cloud Dataflow的部署属性直接指定固定的Deployment名称,覆盖Skipper默认的版本化命名规则:
# 创建流 dataflow:>stream create --name smsStream --definition "source | processor | sink" # 部署时指定固定Deployment名称 dataflow:>stream deploy --name smsStream --properties "deployer.sms.kubernetes.deploymentName=sms"
这样每次重新部署该流时,Deployment名称都会保持为sms,不会自动追加版本后缀。
方案2:基于标签选择器配置HPA(无需固定Deployment名称)
绕过Deployment名称变更的问题,让HPA通过标签选择器关联目标资源,只要流应用的Deployment带有固定标签,HPA就能持续生效:
- 部署流时给应用添加固定标签:
dataflow:>stream deploy --name smsStream --properties "deployer.sms.kubernetes.labels.app=sms-stream"
- 配置HPA使用标签选择器匹配目标Deployment:
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: sms-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: placeholder # 此处仅为占位,实际通过selector匹配 selector: matchLabels: app: sms-stream minReplicas: 1 maxReplicas: 5 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70
方案3:自定义Skipper部署模板全局生效
如果需要所有流都使用固定命名规则,可以自定义Skipper的Kubernetes部署模板,移除版本号后缀:
- 复制Skipper默认的Kubernetes部署模板,找到名称定义部分(通常包含
-v{{.Version}}的变量) - 修改模板中的Deployment名称,移除版本变量,例如将
{{.DeploymentName}}-v{{.Version}}改为{{.DeploymentName}} - 将自定义模板配置到Skipper的
skipper.server.platform.kubernetes.templates属性中,覆盖默认模板。
内容的提问来源于stack exchange,提问作者Anish Raut
相关产品推荐
相关产品推荐

