ISTIO HTTPS-HTTP 404 NR route_not_found



我正在尝试通过IstioHTTPS->HTTP.

HTTP80工作良好

HTTPS443只适用于/路径

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命名空间中有一个证书- secret。Service和Deployment有需要的标签

修复:问题是我有在入口定义

pathType: ImplementationSpecific

应该是:

pathType: Prefix

配置入口路径类型实现特定行为#26883

社区维基答案,提高可见度

正如问题中提到的OP,通过设置

可以解决问题
pathType: Prefix

在入口

原始消息:

修复:问题是我在入口定义

pathType: ImplementationSpecific

应该是pathType: Prefixhttps://github.com/istio/istio/issues/26883

你可以在这个官方文档中找到解释:

Ingress中的每个路径都需要有对应的路径类型。不包含显式pathType的路径将无法通过验证。有三种支持的路径类型:

  • ImplementationSpecific:使用此路径类型,匹配取决于IngressClass。实现可以将其视为单独的pathType或将其与PrefixExact路径类型相同。

  • Exact:精确匹配URL路径并区分大小写。

  • Prefix:基于/分割的URL路径前缀进行匹配。匹配是大小写敏感的,在路径元素的元素的基础上完成的。路径元素指的是由/分隔符分隔的路径中的标签列表。如果每个p都是请求路径p的元素前缀,则请求匹配路径p

相关内容

  • 没有找到相关文章

最新更新