kubernetes gke 多个入口单个全局 ip
kubernetes gke multiple ingresses single global ip
我在 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?
确认我的评论:
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
一种解决方法是 运行 集群中您自己的 nginx-ingress 控制器并通过 LoadBalancer 服务类型公开它。然后,您的入口将拥有 1 个 IP,并且能够通过添加注释 kubernetes.io/ingress.class: "nginx"
通过 nginx 控制器为所有入口提供服务
参考:https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/
GKE 最近添加了对新 Kubernetes 网关 API 的支持。 GKE 网关实现和 Kubernetes 网关 API 规范目前仍处于 alpha 阶段。
Kubernetes 网关-API,旨在支持这样的用例,您有一个中央网关(具有单个 IP),但想要不同的路由(具有不同的主机名或路径),分别管理对象甚至命名空间。
参考文献:
我在 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?
确认我的评论:
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
一种解决方法是 运行 集群中您自己的 nginx-ingress 控制器并通过 LoadBalancer 服务类型公开它。然后,您的入口将拥有 1 个 IP,并且能够通过添加注释 kubernetes.io/ingress.class: "nginx"
参考:https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/
GKE 最近添加了对新 Kubernetes 网关 API 的支持。 GKE 网关实现和 Kubernetes 网关 API 规范目前仍处于 alpha 阶段。
Kubernetes 网关-API,旨在支持这样的用例,您有一个中央网关(具有单个 IP),但想要不同的路由(具有不同的主机名或路径),分别管理对象甚至命名空间。
参考文献: