kubernetes - 如何在 ISTIO 中配置 TLS 发起?
问题描述
Istio 不会通过 TLS 发起路由到外部 HTTPs 服务。
我有一个包含两个容器的 pod: - 应用程序 - ISTIO 代理
应用程序调用位于https://someurl.somedomain.com/v1/some-service上的外部第三方 API
应用程序通过调用http://someurl.somedomain.com/v1/some-service向该服务发送 HTTP 请求- 注意它是 HTTP 而不是 HTTPs。
然后我在 ISTIO 中配置了以下内容:
- 将 HTTP 流量路由到端口 443 的虚拟服务:
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: someservice-vs
spec:
hosts:
- someurl.somedomain.com
http:
- match:
- port: 80
route:
- destination:
host: someurl.somedomain.com
port:
number: 443
timeout: 40s
retries:
attempts: 10
perTryTimeout: 4s
retryOn: gateway-error,connect-failure,refused-stream,retriable-4xx,5xx
- 允许流量流出的服务入口。如您所见,我们指定服务在网格外部,我们打开了 443 和 80,两者都使用 HTTP,但 443 配置为 TLS 发起。
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: someservice-se
spec:
hosts:
- someurl.somedomain.com
location: MESH_EXTERNAL
ports:
- number: 443
name: http-port-for-tls-origination
protocol: HTTP
- number: 80
name: http-port
protocol: HTTP
resolution: DNS
最后,我有一个将简单 TLS 应用于传出流量的目标规则:
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: someservice-destinationrule
spec:
host: someurl.somedomain.com
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
portLevelSettings:
- port:
number: 443
tls:
mode: SIMPLE # initiates HTTPS when accessing someurl.somedomain.com
出于某种原因,这不起作用,从我的应用程序容器调用服务时我得到 404,这表明流量没有通过 TLS 加密。
我使用 TLS 发起的原因是因为我需要在我的虚拟服务中应用重试,并且我只能使用 HTTP 路由来执行此操作,否则 ISTIO 无法看到请求并使用它。
两天来一直在挠头,需要一些帮助:-)
解决方案
到了这个底线。ISTIO 文档是正确的 - TLS 发起和重试按预期工作。
该问题是由 perTryTimeout 值过低引起的。请求未在分配的时间内完成,因此网关超时。它让我们失望了,因为最近外部服务的性能下降了,我们没有想到要检查它。
推荐阅读
- python - 如何在 Google Colab 上进行静态图像导出
- microsoft-edge - Microsoft Edge 旧版扩展图标在更新扩展后被禁用
- c - 如果我不继续通过 TCP 套接字从 server.c 发送数据,为什么我储存的自写 dll 中的 C recv() 函数甚至破坏了我的 Labview 程序
- javascript - Opentok 在服务器上启动 API
- delphi - 将(Unicode)字符串传递给 WideString 参数是否安全?
- vba - 从 Outlook VBA 访问名称中只有数字的文件夹?
- java - 有没有办法通过使用 JOptionPane 的输入找到对 java 的复利?
- icalendar - 如何将 ICS 文件用于多个日历删除?
- igraph - 无法使用边缘颜色绘制 igraph
- javascript - 使文本双粗体 - 缩放表