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

How to apply a Static IP for Spring SCDF Stream that has a LoadBalancer (in Kubernetes)

我正在使用 Spring SCDF 部署流。这个流也有一个 LoadBalancer。我用

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

部署者属性。 所以这个 LoadBalancer 现在确实可以工作,并为我提供了一个我可以访问的外部 IP。但是,每次我重新部署流时,此 IP 都会发生变化。

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

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

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

在生产部署设置中,您希望将一个显式负载平衡器 (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 来 post 数据或与其交互,并且它不会改变。