前置准备
- Higress 安装在 K8s 内的 higress-system 命名空间下,监听的 HTTP 端口为 80。 为了测试方便,gateway 端口映射都本地 127.0.0.1:80;
- 目标是为 default 命名空间下的 部署 https-httpbin 服务,服务监听的端口为 443;
- https-httpbin 服务具体内容请参考 github httpbin;
准备证书
- 生成 CA(根证书):
- 生成服务端证书
- 生成 Gateway 证书
- 导入 CA 证书、Gateway、服务端证书到 secret 中
准备后端 https-httpbin 服务
配置路由
Ingress Annotaion 配置:
nginx.ingress.kubernetes.io/backend-protocol
指定后端服务使用的协议,默认为HTTP,支持HTTP、HTTP2、HTTPS、GRPC和GRPCS。nginx.ingress.kubernetes.io/proxy-ssl-secret
启用 mtls 需要指定 gateway 证书,格式为 namespace/secret-name
。 这里需要注意的是需要同时创建一个 CA 证书的 secret, 名称为 proxy-ssl-secret 的名称加 -cacert
后缀,比如是 gateway-cert-cacert
,否则会报错。nginx.ingress.kubernetes.io/proxy-ssl-name
后端校验 SNI 需要指定后端服务使用的域名。nginx.ingress.kubernetes.io/proxy-ssl-server-name
启用 SNI。
测试