问题标签 [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.
kubernetes - Istio 的默认网关不是网关,它是服务
我正在尝试了解 Istio 流量路由。我在演示模式下安装了 Istio 并开始使用示例。示例让您安装了一些网关(我安装bookinfo-gateway
了httpbin-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
。
所以我很困惑......
- 服务和网关之间有区别吗?
- 我将如何使用示例应用程序网关而不是
istio-ingressgateway
(这实际上是一项服务)。 - istio 如何将 my 连接
VirtualService
到istio-ingressgateway
. 它只是在寻找所有VirtualServices
吗?
kubernetes - 使用主机名而不是 ip 地址访问 kuberntes 上的服务
我正在为我的一项服务使用 istio 入口网关,该服务必须暴露给 http 请求。我已经配置了网关(myservice-gatewa)和虚拟服务(myservice-endpoints)。我可以使用 http://{ingress_ip}:{ingress_port}/{path} 访问服务。但我想使用主机名而不是任何 IP 地址来访问服务。我该怎么做?提前致谢
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(完全限定名)的方法。但这并不能解决我的问题,因为将配置文件链接到命名空间(我使用多个命名空间,我只需要一个配置文件)无论如何,我当前的行是:
我完全确定这是一个愚蠢的配置参数,但我找不到它!提前致谢
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 或服务。如果可能,请提供帮助
istio - Istio1.9 与虚拟机 (aws ec2) 的集成将主机文件设为空
我已经在 VM 中安装了 mysql 并希望安装了 istio 1.9 的 EKS 与他们交谈,我正在关注此https://istio.io/latest/docs/setup/install/virtual-machine/但是当我执行此步骤时生成的主机文件是空文件。我尝试使用这个空的主机文件,但是当使用此命令启动 vm 时,我得到了
当跟踪这个文件时
grpc - 用于 gRPC 的 Istio 入口网关(连接已关闭)
我有一个在 k8s 集群(远程服务器)上运行的 gRPC 服务器。我尝试从 gRPC 客户端(本地 pc)连接到此服务。为此,我使用 Istio 入口网关。但我收到带有 14 个错误代码的“连接关闭”消息。
这是我的gRPC 客户端:
我的网关:
我的虚拟服务:
我的服务:
我的部署:
我怎么解决这个问题?
ps
- 我的 example.com 在 CloudFlare 下。
- 我为 service.example.com 设置了 DNA A 记录
- 没有防火墙规则。
- gRPC 连接已开启(我认为这并不重要,因为它仅适用于 443 端口)
nginx - 如何根据 URL id 在 Istio 上设置哈希?
在改进 Kubernetes 上的 API 的背景下,我正在考虑使用分布式哈希表。我的 API 始终使用此方案接收对 URL 的请求:
阅读 Istio 的文档,似乎很直接也很容易得到我想要的东西。实际上,Istio 处理了一种称为ConsistentHashLB
. 在这样的方案中,服务目标是根据从几个可能的字段计算的哈希值选择的:HTTP 标头名称、cookie、源 IP 和 HTTP 查询参数名称。
就我而言,我需要根据id
与请求关联的值来计算哈希值。
我的问题是双重和有条件的:
- 是否可以将其读取
id
为 HTTP 参数名称? - 如果是肯定的,我应该如何在清单中指定规则?(我读过的文档在这方面不够清楚)。
如果是否定的,有什么想法吗?一些技巧?例如,我正在考虑将 id 添加为带有 Nginx 的 HTTP 标头,但这会增加一个额外的步骤。
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
.