[英]Which Kubernetes ingress "wins" (tls and multiple ingresses for same host)?
假设我有两个入口 ingress-a和ingress-b用于同一主机但路径不同:
入口-a :
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: app-a
namespace: namespace-a
spec:
rules:
- host: myhost.com
http:
paths:
- backend:
serviceName: app-a
servicePort: 8080
path: /path-a
tls:
- hosts:
- myhost.com
secretName: tls-a
入口-b :
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: app-b
namespace: namespace-b
spec:
rules:
- host: myhost.com
http:
paths:
- backend:
serviceName: app-b
servicePort: 8080
path: /path-b
tls:
- hosts:
- myhost.com
secretName: tls-b
现在我需要更新证书。 假设我在tls-new 中创建了新的秘密,但只更新ingress-a来指向那个。 两个入口中的哪一个会获胜?
我想我应该简单地覆盖现有的秘密,但我试图了解入口规则在上述场景中如何工作,其中两个不同的 tls 秘密被同一主机引用。
Kubernetes 的 NGINX 和 NGINX Plus入口控制器支持可合并的入口类型。
Master 使用nginx.org/mergeable-ingress-type: master
声明。 Master 将处理主机级别的所有配置,包括 TLS 配置以及将应用于整个主机的任何注释。 在包含主值的唯一主机上只能有一个入口资源。 路径不能是入口资源的一部分。
Minion 使用nginx.org/mergeable-ingress-type: minion
声明。 Minion 将用于将不同的位置附加到具有 Master 值的入口资源。 不允许 TLS 配置。 只要它们没有冲突的路径,就可以为每个 master 应用多个 minion。 如果存在冲突路径,则将使用在最旧的 minion 上定义的路径。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress-master
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.org/mergeable-ingress-type: "master"
spec:
tls:
- hosts:
- cafe.example.com
secretName: cafe-secret
rules:
- host: cafe.example.com
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress-coffee-minion
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.org/mergeable-ingress-type: "minion"
spec:
rules:
- host: cafe.example.com
http:
paths:
- path: /coffee
backend:
serviceName: coffee-svc
servicePort: 80
minion 不能有 TLS,只有 master 可以有 TLS,你在 master 中更改 TLS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.