我正在尝试通过 Istio HTTPS
->配置 TLS 终止HTTP
。
HTTP
80 工作正常。
HTTPS
443 仅适用于/
路径。
HTTP 200:
curl https://serviceA.example.com
HTTP 404:
curl https://serviceA.example.com/blabla
Istio 访问日志:
GET /blabla HTTP/2" 404 NR route_not_found
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: serviceA-gateway
namespace: default
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: HTTP
protocol: HTTP
hosts:
- "serviceA.example.com"
- port:
number: 443
name: https
protocol: HTTPS
tls:
mode: SIMPLE
credentialName: serviceA.example.com
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: serviceA-swearl
namespace: default
spec:
hosts:
- serviceA.example.com
gateways:
- serviceA-gateway
HTTP:
- route:
- destination:
host: serviceA.default.svc.cluster.local
port:
number: 80
我不确定我做错了什么。通过查看文档,一切都应该正常工作。设置是带有 NLB 的 AWS EKS 上的 ISTIO 操作员。
另外,我在 istio-system 命名空间中有一个证书-机密。服务和部署具有必需的标签。
FIX:问题在于我对 Ingress 的定义
pathType: ImplementationSpecific
它应该是:
pathType: Prefix