如何为具有LoadBalancer的Spring SCDF流应用静态IP(在Kubernetes中)

时间:2019-11-20 10:18:54

标签: kubernetes spring-cloud-dataflow

我正在使用Spring SCDF部署流。此流还具有LoadBalancer。我用

激活了它
spring.cloud.deployer.kubernetes.createLoadBalancer true

Deployer 属性。 因此,该LoadBalancer现在可以正常工作,并且为我提供了可以访问的外部IP。但是,每次重新部署流时,此IP都会更改。

我正在使用GCP,并且能够提供静态IP。在Kubernetes中,我可以像这样给入口一个静态IP:

annotations:
    kubernetes.io/ingress.global-static-ip-name: "web-static-ip"

我想知道现在如何使用Spring SCDF对已部署的流执行相同的操作?

1 个答案:

答案 0 :(得分:2)

在生产部署设置中,您需要将显式负载均衡器(LB)附加到所需的应用程序,因此可以由其他服务调用其服务,因为将有一个静态URL / IP与之交互它。即使该应用程序已滚动升级或重新部署,您也将获得可预测的URL / IP。

这是LB部署的示例:

kind: Service
apiVersion: v1
metadata:
  name: FOO-lb
  namespace: kafkazone
spec:
  ports:
  - port: 80
    name: http
    targetPort: 8080
  selector:
    FOOZ: BAR-APP
  type: LoadBalancer

此部署将产生一个URL / IP。例如,假设FOO-lb的IP地址为:10.20.30.40

而且,在部署流时,可以将标签选择器附加到所需的应用程序上(例如:deployer.<yourapp>.kubernetes.deploymentLabels=FOOZ: BAR-APP),这样,到10.20.30.40的所有传入流量都会被源自动接收。当然,您将依靠特定的IP发布数据或与之交互,并且它不会改变。