ssl-passthrough 是否配置在主机级别,kubernetes ingress
Is the ssl-passthrough configured at the host level, kubernets ingress
我在kubernetes中有2个服务,一个是mtls,另一个是tls。
我正在尝试为他们配置入口。
我想为 mtls 服务配置 ssl passthrough 但让 tls 服务没有 ssl-passthrough,它不需要客户端证书。
我在同一个主机名下配置了 2 个入口,有两个不同的 yaml 文件。
一个带直通,一个不带直通。
当前的行为是,如果我先创建 mtls ingress,tls 将不起作用,我发送到 tls 的 https 请求将始终路由到 mtls 服务。然后returns404。
但是,如果我先配置 tls 入口,然后再配置 mtls。然后 tls 一个可以工作,但是 mtls 一个将因证书问题而失败。
我不确定是否在主机级别配置了 ssl 直通注释?或者我可以让它在每个路径级别上工作吗?
mtls 入口。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/ssl-redirect: "false"
name: mtls-ingress
spec:
rules:
- host: app.abc.com
http:
paths:
- backend:
service:
name: mtls-service
port:
number: 8081
path: /mtls-api
pathType: Prefix
tls:
- hosts:
- app.abc.com
secretName: tls-nginx-mtls
然后是 tls 入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/ssl-redirect: "false"
name: tls-ingress
spec:
rules:
- host: app.abc.com
http:
paths:
- backend:
service:
name: tls-service
port:
number: 8080
path: /tls-api
pathType: Prefix
tls:
- hosts:
- app.abc.com
secretName: tls-nginx-tls
就像两个入口互相覆盖一样,只有第一个注释有效。似乎为主机配置了直通,但没有为入口或路径配置。
不知道。请帮忙。谢谢
您想在同一台主机上使用 2 项服务,其中一项的注释为 nginx.ingress.kubernetes.io/ssl-passthrough: "true"
。
这将不起作用,因为使用 SSL 直通代理不知道路由流量的路径。
来自the NGINX Ingress Controller User Guide:
The annotation nginx.ingress.kubernetes.io/ssl-passthrough instructs
the controller to send TLS connections directly to the backend instead
of letting NGINX decrypt the communication.
Because SSL Passthrough works on layer 4 of the OSI model (TCP) and
not on the layer 7 (HTTP), using SSL Passthrough invalidates all the
other annotations set on an Ingress object.
解决方案是为您的服务使用子域,而不是路径。
此外,来自 GitHub 的一些关于此问题的链接:
Multiple Ingress backends ignored when SSL Passthrough is enabled
中位置“/*”的 SSL 直通
以及来自 serverfault 关于 SSL 直通的 NginX 工作流程。
我在kubernetes中有2个服务,一个是mtls,另一个是tls。 我正在尝试为他们配置入口。 我想为 mtls 服务配置 ssl passthrough 但让 tls 服务没有 ssl-passthrough,它不需要客户端证书。
我在同一个主机名下配置了 2 个入口,有两个不同的 yaml 文件。 一个带直通,一个不带直通。
当前的行为是,如果我先创建 mtls ingress,tls 将不起作用,我发送到 tls 的 https 请求将始终路由到 mtls 服务。然后returns404。 但是,如果我先配置 tls 入口,然后再配置 mtls。然后 tls 一个可以工作,但是 mtls 一个将因证书问题而失败。
我不确定是否在主机级别配置了 ssl 直通注释?或者我可以让它在每个路径级别上工作吗? mtls 入口。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/ssl-redirect: "false"
name: mtls-ingress
spec:
rules:
- host: app.abc.com
http:
paths:
- backend:
service:
name: mtls-service
port:
number: 8081
path: /mtls-api
pathType: Prefix
tls:
- hosts:
- app.abc.com
secretName: tls-nginx-mtls
然后是 tls 入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/ssl-redirect: "false"
name: tls-ingress
spec:
rules:
- host: app.abc.com
http:
paths:
- backend:
service:
name: tls-service
port:
number: 8080
path: /tls-api
pathType: Prefix
tls:
- hosts:
- app.abc.com
secretName: tls-nginx-tls
就像两个入口互相覆盖一样,只有第一个注释有效。似乎为主机配置了直通,但没有为入口或路径配置。 不知道。请帮忙。谢谢
您想在同一台主机上使用 2 项服务,其中一项的注释为 nginx.ingress.kubernetes.io/ssl-passthrough: "true"
。
这将不起作用,因为使用 SSL 直通代理不知道路由流量的路径。
来自the NGINX Ingress Controller User Guide:
The annotation nginx.ingress.kubernetes.io/ssl-passthrough instructs the controller to send TLS connections directly to the backend instead of letting NGINX decrypt the communication.
Because SSL Passthrough works on layer 4 of the OSI model (TCP) and not on the layer 7 (HTTP), using SSL Passthrough invalidates all the other annotations set on an Ingress object.
解决方案是为您的服务使用子域,而不是路径。
此外,来自 GitHub 的一些关于此问题的链接:
Multiple Ingress backends ignored when SSL Passthrough is enabled
中位置“/*”的 SSL 直通以及来自 serverfault 关于 SSL 直通的 NginX 工作流程。