问题标签 [istio-gateway]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
214 浏览

kubernetes - Istio 的默认网关不是网关,它是服务

我正在尝试了解 Istio 流量路由。我在演示模式下安装了 Istio 并开始使用示例。示例让您安装了一些网关(我安装bookinfo-gatewayhttpbin-gateway.

但似乎我所有的流量都通过命名空间中定义的“http2”istio-ingressgateway端口istio-system

该文档引用了这一点:

Istio 提供了一些您可以使用的预配置网关代理部署(istio-ingressgateway 和 istio-egressgateway) - 如果您使用我们的演示安装,两者都已部署

但是当我运行时:kubectl -n istio-system get service istio-ingressgateway -o yaml结果显示kind: Service.

演示让我展示的其他网关kind: Gateway

所以我很困惑......

  1. 服务和网关之间有区别吗?
  2. 我将如何使用示例应用程序网关而不是istio-ingressgateway(这实际上是一项服务)。
  3. istio 如何将 my 连接VirtualServiceistio-ingressgateway. 它只是在寻找所有VirtualServices吗?
0 投票
1 回答
84 浏览

kubernetes - 使用主机名而不是 ip 地址访问 kuberntes 上的服务

我正在为我的一项服务使用 istio 入口网关,该服务必须暴露给 http 请求。我已经配置了网关(myservice-gatewa)和虚拟服务(myservice-endpoints)。我可以使用 http://{ingress_ip}:{ingress_port}/{path} 访问服务。但我想使用主机名而不是任何 IP 地址来访问服务。我该怎么做?提前致谢

0 投票
2 回答
690 浏览

kubernetes - Istio:RequestAuthentication jwksUri 不解析内部服务名称

注意

其根本原因与Istio 相同:启用 JWT RequestAuthentication 时运行状况检查/sidecar 失败,但经过进一步诊断,我已将其改写为简单(试图获得帮助)

问题

我正在尝试在 Istio 网格中配置 RequestAuthentication(和 AuthorizationPolicy)。我的 JWK 令牌由内部 OAUTH 服务器(基于 CloudFoundry)提供,该服务器可正常用于其他服务。当我配置 uri 以获取签名密钥并链接到内部 pod 时,我的问题就出现了。此时,Istio 并未解析内部 pod 的名称。我很困惑,因为微服务能够连接到我所有的内部 pod(mongodb、mysql、rabbitmq),包括 uaa。为什么 RequestAuthentication 不能做同样的事情?

UAA 服务配置(注意:我还在为外部访问创建一个虚拟服务,这工作正常)

RequestAuthentication:注意参数 jwksUri,寻找uaa主机名。

错误日志(在 istiod pod 中)

解决方法

目前,我已将 OAUTH 服务器声明为外部服务器,并重定向了请求,但这完全是低效的。

解决方法 2:

我已经解决了在主机名中使用 FQDN(完全限定名)的方法。但这并不能解决我的问题,因为将配置文件链接到命名空间(我使用多个命名空间,我只需要一个配置文件)无论如何,我当前的行是:

我完全确定这是一个愚蠢的配置参数,但我找不到它!提前致谢

0 投票
1 回答
161 浏览

istio - 在不创建 istiod 的情况下创建 Istio Ingress-gateway POD

我对 istio 有点陌生,还在学习。我有一个用例,其中 Istio 已经部署在 istio-system 命名空间中,但我需要使用 istioOperator 在 test-ns 命名空间中部署 istio ingress-gateway Pod。我正在使用 istio 1.6.7。

从 Istio 文档中,它提到运行这个 cmd: istioctl manifest apply --set profile=default --filename=istio-ingress-values.yaml但这将在 istio-system 中创建 istiod Pod,这是我不想要的,因为它已经创建了。

因此,我在 cmds 下运行以创建 Ingress Gateway POD,但看不到在 test-ns 中创建的任何 Pod 或服务。如果可能,请提供帮助

0 投票
0 回答
674 浏览

istio - Istio1.9 与虚拟机 (aws ec2) 的集成将主机文件设为空

我已经在 VM 中安装了 mysql 并希望安装了 istio 1.9 的 EKS 与他们交谈,我正在关注此https://istio.io/latest/docs/setup/install/virtual-machine/但是当我执行此步骤时生成的主机文件是空文件。我尝试使用这个空的主机文件,但是当使用此命令启动 vm 时,我得到了

当跟踪这个文件时

0 投票
1 回答
450 浏览

grpc - 用于 gRPC 的 Istio 入口网关(连接已关闭)

我有一个在 k8s 集群(远程服务器)上运行的 gRPC 服务器。我尝试从 gRPC 客户端(本地 pc)连接到此服务。为此,我使用 Istio 入口网关。但我收到带有 14 个错误代码的“连接关闭”消息。

这是我的gRPC 客户端

我的网关

我的虚拟服务

我的服务

我的部署

我怎么解决这个问题?

ps

  • 我的 example.com 在 CloudFlare 下。
  • 我为 service.example.com 设置了 DNA A 记录
  • 没有防火墙规则。
  • gRPC 连接已开启(我认为这并不重要,因为它仅适用于 443 端口)
0 投票
2 回答
331 浏览

nginx - 如何根据 URL id 在 Istio 上设置哈希?

在改进 Kubernetes 上的 API 的背景下,我正在考虑使用分布式哈希表。我的 API 始终使用此方案接收对 URL 的请求:

阅读 Istio 的文档,似乎很直接也很容易得到我想要的东西。实际上,Istio 处理了一种称为ConsistentHashLB. 在这样的方案中,服务目标是根据从几个可能的字段计算的哈希值选择的:HTTP 标头名称、cookie、源 IP 和 HTTP 查询参数名称。

就我而言,我需要根据id与请求关联的值来计算哈希值。

我的问题是双重和有条件的:

  1. 是否可以将其读取id为 HTTP 参数名称?
  2. 如果是肯定的,我应该如何在清单中指定规则?(我读过的文档在这方面不够清楚)。

如果是否定的,有什么想法吗?一些技巧?例如,我正在考虑将 id 添加为带有 Nginx 的 HTTP 标头,但这会增加一个额外的步骤。

0 投票
0 回答
39 浏览

metrics - Istio egressgateway 不收集标签为“reporter=destination”的指标

当应用程序通过出口网关向外部服务入口发送请求时,流量应该喜欢

app -> egreegateway -> 服务入口

但是,kiali 没有显示从应用程序到 egressgateway 的流量

在此处输入图像描述

我检查了这是因为 istio 网关代理只收集具有标签的指标reporter=source,但对于边车代理,它还收集具有标签的指标,reporter=destination除了reporter=source

任何人都知道是否可以让网关代理reporter=destination也收集指标?

非常感谢!

0 投票
0 回答
314 浏览

kubernetes - 如何在没有服务发现的情况下为网格联邦配置 istio?

来自istio 文档的多信任部署模型

多信任图

我想将多个网格连接在一起。我目前管理 3 个不同的 AKS 集群

  • 运营 (aks-ops-euwest-1)
  • 分期 (aks-stg-euwest-1)
  • 生产 (aks-prod-euwest-1)

我在 Operations 上运行 Hashicorp Vault,我希望能够访问例如。使用 istio mTLS(用于自动秘密轮换)在 Staging 和 Production 中运行的 Postgres。

每个集群都在不同的网络中运行 istio(多主)。每个集群都有不同的 ClusterName、MeshID、TrustDomain 和 NetworkID。不过,这些cacerts秘密是使用通用根 CA配置的

图表

istio 文档中,为了实现跨集群通信,eastwestgateway必须部署一个特殊的。tlsMode 是AUTO_PASSTHROUGH.

这些是东西方网关的环境变量

我不想通过在集群之间共享秘密来启用自动服务发现。为什么?因为我想要对网格之间要公开哪些服务进行细粒度控制。我希望能够AuthorizationPolicies从远程集群中指定指向服务帐户的点(因为不同的信任域)

例如:

这是来自istio 文档

在某些高级场景中,可能不需要跨集群进行负载平衡。例如,在蓝/绿部署中,您可以将不同版本的系统部署到不同的集群。在这种情况下,每个集群都有效地作为一个独立的网格运行。这种行为可以通过以下几种方式实现:

  • 不要在集群之间交换远程机密。这提供了集群之间最强的隔离。
  • 使用 VirtualService 和 DestinationRule 禁止在两个版本的服务之间进行路由。

istio 文档没有具体说明的是如何在不共享机密的情况下启用跨集群通信。在共享秘密时,istiod 将创建额外的 envoy 配置,允许 pod 通过东西网关透明地进行通信。它没有指定的是如何在不共享机密时手动创建这些配置。

tlsMode 是AUTO_PASSTHROUGH. 查看 istio 存储库

有趣的部分是The destination details such as the service/subset/port are encoded in the SNI value

似乎在集群之间共享秘密时,istio 将添加特使配置,这些配置将有效地将这些服务/子集/端口编码为特使集群的 SNI 值。但是,如果不共享秘密,我们怎么能达到同样的结果呢?

我查看了这个存储库,但它已经过时并且没有使用eastwestgateway.

我也在这里这里的 istio 论坛上发布了问题,但很难从那里获得帮助。

0 投票
1 回答
714 浏览

kubernetes - Istio:单个网关和多个 VirtualServices(每个都在不同的命名空间中)

如何在 Istio 1.9 中设置单个网关和多个 VirtualService(每个都在不同的命名空间中)。我不能为每个虚拟服务设置一个网关,因为浏览器利用 HTTP/2连接重用来产生 404 错误。

如果我按照这些说明进行操作,它将无法工作,因为网关和虚拟服务不能位于不同的命名空间中。

这些是清单文件:

APP1:

APP2: