【问题标题】:istio default installation - traffic blocked?istio 默认安装 - 流量被阻塞?
【发布时间】:2021-05-07 06:51:10
【问题描述】:

我对 Istio 还是很陌生。

我刚刚在 GCP 的 k8 集群上安装了 Istio。我的私有集群中有 2 个服务。其中一个需要与 Redis memorystore 通信(通过内部私有 IP - 10.x.x.x)。

我在尝试连接到 redis 时看到错误。我的 Istio 配置中缺少什么?

更新:我发现 redis 错误具有误导性。看起来真正的问题是别的东西 - 请参阅下面的我的 cmets。我不明白那个错误是什么意思。

一些附加背景:这是针对 Tyk 安装的。问题似乎是 Tyk Dashboard 和 Tyk Gateway pod 之间的通信。尝试从网关连接到仪表板(仪表板到网关很好)时,我看到了 SSL 错误(参见下面的 cmets)。如果我在没有 Istio 的情况下重建所有内容,错误就会消失。我一定是在做一些非常愚蠢的事情。 :( 两个 pod 都在同一个集群中,同一个命名空间。

【问题讨论】:

  • 对我来说没有意义的是,默认情况下 istio 应该允许出口流量到外部服务。为什么redis连接失败。
  • 它是否只在 pod 启动时失败?来自应用程序的流量需要 istio-sidecar 代理才能工作,如果请求在成功启动 sidecar 之前,它将失败。看到这个分析器:*.com/a/65708039/10020419
  • @jsy,您可以通过添加您的 redis 错误来编辑问题吗?请同时附上您的 Istio 配置。
  • 不,不是。我很确定。吊舱的正常运行时间为 9 小时。我无法想象边车注射要花 9 个小时。此外,每 10 秒重试一次与 redis 的连接失败。我实际上是在使用 Istio 部署 Tyk。嗯.....
  • 等等。我现在看到这个:“curl /hello 上游连接错误或在标头之前断开/重置。重置原因:连接失败,传输失败原因:TLS 错误:268435703:SSL 例程:OPENSSL_internal:WRONG_VERSION_NUMBERI 没有名字!@网关-tyk-pro-t4bc2:/opt/tyk-gateway$。”我去调查一下..

标签: google-cloud-platform redis google-kubernetes-engine istio


【解决方案1】:

我设法解决了这个问题。 Redis 不是问题。问题是来自 Tyk Gateway -> Tyk Dashboard 的通信失败。网关与仪表板对话以注册其存在。连接日志显示 Istio 特使代理在路由流量时看起来像是 tls 发起问题。我配置了一个 DestinationRule,明确关闭了仪表板的 mtls,问题就消失了。

【讨论】:

  • 您是否尝试为该端点创建SeviceEntry 对象?
  • 我已经修好了。目的地规则。
  • 您没有修复它,而是通过禁用 mtls 来解决它。但是无所谓。重要的是您对所做的事情感觉良好。
  • 那么正确的方法应该是什么?重新启用 mtls 并让仪表板和网关关闭 tls 通信?