6

我在 GKE 上的 k8s 上有多个 MSA。每个都在单独的子域上,例如:

  • msa1.example.com
  • msa2.example.com

我有它在单一入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: main-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: lalala-ip-1
    kubernetes.io/ingress.allow-http: "false"
spec:
  tls:
  - hosts:
    - msa1.example.com
    secretName: msa1-tls
  backend:
    serviceName: sink
    servicePort: 80
  rules:
  - host: msa1.example.com
    http:
      paths:
      - path: /.well-known/*
        backend:
          serviceName: letsencrypt
          servicePort: 80
      - path: /*
        backend:
          serviceName: lalala
          servicePort: 80
  - host: msa2.example.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: lalala2
          servicePort: 80

...一切都很好。

问题是,我想将每个 MSA 放在单独的文件中。

问题是这kubernetes.io/ingress.global-static-ip-name: lalala-ip-1条线。如果我在两个入口中拥有它,则只有第一次启动时才绑定到 IP,但其他的则没有。

有没有办法在两个入口之间共享 GKE 入口控制器上的 IP?

4

3 回答 3

9

一种解决方法是在集群中运行您自己的 nginx-ingress 控制器并通过 LoadBalancer 服务类型公开它。然后,您将有 1 个 IP 用于您的入口,并能够通过添加注释通过 nginx 控制器服务所有入口kubernetes.io/ingress.class: "nginx"

参考:https ://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/

于 2018-02-28T07:41:29.050 回答
5

确认我的评论:

Only one resource at a time can use a static external IP address.

https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address

于 2018-02-28T05:00:17.763 回答
1

GKE 最近增加了对新的 Kubernetes Gateway API 的支持。GKE 网关实现和 Kubernetes 网关 API 规范目前仍处于 alpha 阶段。

Kubernetes Gateway-API 旨在支持用例,在这些用例中,您有一个中央网关(具有单个 IP),但需要不同的路由(具有不同的主机名或路径),在单独的对象甚至命名空间中进行管理。

参考:

于 2021-12-16T20:50:42.777 回答