从网格外部的服务访问启用 Istio 的 K8S pod

Accessing Istio enabled K8S pod from a service outside of the mesh

假设启用了 Istio 的服务 A 公开了一个名为 http 的端口 8080,因此 Istio 在从网格内部访问它时执行 L7 负载平衡。

我想知道是否有办法从没有 Istio sidecar 的 pod/service B 访问这个 8080 端口。在这种情况下,流量将是: B -> A Envoy -> A 要么 B -> A 这样,我就可以访问未命名为 httpA 端口(即只有 L4 负载平衡到位)

我的特殊用例是我有 Prometheus(不是 运行 在网格中),Prometheus Operator 直接在网格中抓取服务 运行(不涉及 Istio Mixer;服务公开他们自己的业务逻辑指标)。它仅适用于我,并且仅当给定服务未命名其端口时才有效 http.

如果您启用了身份验证 (mTLS),它在设计上不起作用,因为在这种情况下,Istio 会尝试保护所有服务到服务的通信。

您可以关闭身份验证,如果这没有帮助,也可以尝试使用 Istio 0.2.4 候选发布版(或您阅读本文时最新的版本,请参阅 https://github.com/istio/istio/releases) and see if the problem persists, if it does please file an issue at https://github.com/istio/issues/issues/new

在 0.3(可能更早)中,我们将允许您对 mTLS 进行精细控制。