默认场景下,当 Ingress 中不配置 TLS 时,服务将以 HTTP 协议的方式对外暴露。当 Ingress 配置 TLS 时,服务将以 HTTPS 协议的方式对外暴露。Ingress 描述的服务只能以其中一种协议暴露服务,基于此规则的局限性,腾讯云容器服务 TKE 提供了混合协议的支持。
用户需要同时暴露 HTTP 及 HTTPS 服务时,只需参考本文,开启混合协议并配置所有的转发规则到 kubernetes.io/ingress.http-rules
及 kubernetes.io/ingress.https-rules
注解中即可。
kubernetes.io/ingress.http-rules
及 kubernetes.io/ingress.https-rules
的规则格式是一个 Json Array
。每个对象的格式如下:
{
"host": "<domain>",
"path": "<path>",
"backend": {
"serviceName": "<service name>",
"servicePort": "<service port>"
}
}
TKE Ingress Controller
支持混合配置 HTTP
及 HTTPS
规则,步骤如下:
kubernetes.io/ingress.rule-mix
,并设置为 true。kubernetes.io/ingress.http-rules
及 kubernetes.io/ingress.https-rules
进行匹配,并添加到对应规则集中。若 Ingress 注解中的未找到对应规则,则默认添加到 HTTPS 规则集中。VIP
、Path 默认为 /
。apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.http-rules: '[{"host":"www.tencent.com","path":"/","backend":{"serviceName":"sample-service","servicePort":"80"}}]'
kubernetes.io/ingress.https-rules: '[{"host":"www.tencent.com","path":"/","backend":{"serviceName":"sample-service","servicePort":"80"}}]'
kubernetes.io/ingress.rule-mix: "true"
name: sample-ingress
namespace: default
spec:
rules:
- host: www.tencent.com
http:
paths:
- backend:
serviceName: sample-service
servicePort: 80
path: /
tls:
- secretName: tencent-com-cert
该示例包含以下配置:
tencent-com-cert
的 Secret 资源中。kubernetes.io/ingress.http-rules
及 kubernetes.io/ingress.https-rules
中都描述了 ingress.spec.rule
中描述的转发规则。
本页内容是否解决了您的问题?