我在K8s 1.22上运行Istio 1.14 minimal
我正在测试网格内部的不同出站连接,它们都失败了,错误如下:
Execution of class com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier failed.
com.microsoft.aad.msal4j.MsalClientException: javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
或
Cannot send curl request: SSL connect error - trying again
作为测试,我在启用istio的pod中尝试了一个curl:
curl https://www.google.com #this failed
curl http://www.google.com #this worked
然后,经过阅读,我创建了一个ServiceEntry:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: google
spec:
hosts:
- www.google.com
ports:
- number: 443
name: https
protocol: HTTPS
resolution: DNS
location: MESH_EXTERNAL
这就解决了这个问题,curl现在可以同时支持http和https,并支持google。
我的问题是,我如何推断这一点,以便允许所有出站流量?我无法为尝试连接的所有外部资源创建服务目录。
很抱歉我的解释不好,但我对K8和Istio都很陌生。
2条答案
按热度按时间qzlgjiam1#
在Istio安装配置中将meshConfig. outboundPolicyPolicy.mode设置为ALLOW_ANY。
https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-OutboundTrafficPolicy-Mode
b0zn9rqh2#
我也遇到了同样的问题,ServiceEntry为出站流量提供了正确的DNS,所以我猜DNS可能对我来说是错误的,我的解决方案是将istio-proxy的日志级别更改为debug
然后我发现我的出站流量解决了一个错误的dns,这里是日志
调试特使筛选器[C24436]创建到群集出站的连接|443|| xxxx-svc.xyz.svc.cluster.local
然后我后藤xyz命名空间删除xxxx-svc,然后所有的https出站流量为我工作,没有ServiceEntry