问题标签 [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 投票
0 回答
185 浏览

amazon-web-services - 在使用 Istio 服务网格时我们真的需要 AWS 网关吗

我正在尝试在 AWS 上放置一个部署结构。我有一堆微服务,我计划将 EKS 与 Istio 服务网格一起使用。

我想知道的是,如果我真的需要使用任何 AWS 外围服务,如 AWS API 网关、AWS ALB、DNS 等。这个问题背后的原因是 Istio 已经拥有有效的入口和出口形式的替代方案网关(连同 istiod),它几乎可以完成流量路由和服务注册等方面的所有工作。

唯一的困惑是关于 WAF 等安全服务(用于 DDOS 攻击)。我需要这些安全服务,因此 AWS 中的某些组件必须将用户请求转发到 AWS 安全服务,然后再转发到 Istio 网关。

欣赏你的想法。

0 投票
1 回答
39 浏览

istio - 我们已经在 GCP 中创建了 knative serverless 应用程序。我们正在尝试使用 istio 网格访问它

但是我们在访问 API 时收到状态码 404。

实施以下步骤:

  1. 指向 istio 负载均衡器外部 IP 的域 URL。
  2. 应用了一个将其路由目的地映射到 istio-ingressgateway.istio-system.svc.cluster.local 的 VirtualService

yaml 文件:

0 投票
2 回答
1283 浏览

kubernetes - Kubernetes postStart 生命周期总是失败

尝试使用 postStart 生命周期解决 pod 之间的依赖关系。

用例:微服务A应该在微服务B启动后启动。

为此,我们添加了一个容器(curl),它将使用 curl 命令检查相关服务是否已启动。

但是当我们在 postStart 生命周期钩子中添加任何命令时,Pod 会不断重启并进入 crashlookbackoff 状态

部署.yaml:

注意:不使用 init-container 的原因:因为我们使用严格的 MTLS 策略实现了 Istio。https://github.com/istio/istio/issues/32039

在互联网上搜索此问题时在下面找到。 在此处输入图像描述

0 投票
1 回答
214 浏览

kubernetes - 使用 Istio 和 Cloud Armor 的 GKE 集群中的后端不健康

我正在尝试在 GKE 集群前使用Cloud Armor 自适应保护。我从 contino-engineering 中找到了本指南,而这本从always up always on 中找到。但是,这两个都使用了一个简单的 hello world 示例,我正在尝试通过使用 istio 中的bookinfo示例来部署(希望如此?)更现实的部署。(我使用在线精品店也有类似的结果。)

问题是后端永远不会变得健康。我假设这是因为健康检查器无法访问健康检查服务,但我对这一切都很陌生,不确定如何验证。

这是我用于部署集群的 TF。请注意,这ip_allocation_policy相当于--enable-ip-aliasesgcloud 参数......我认为。我没有在这里启用 CloudRun 以简化事情。

集群 tf

获得信任后,我应用我的后端配置来允许(?)/启用(?)健康检查。

然后我修补入口网关:

最后,应用入口资源

推出新的 Pod 以获得更好的效果:

等待 10 多分钟后,我在 Google 控制台中看到新的负载均衡器显示不正常的后端: 负载均衡器

0 投票
0 回答
175 浏览

istio - 用于通配符任意主机的出口流量的 mTLS 发起

是否可以使用 istio 为通配符任意主机的出口流量发起 mTLS,但具有以下限制:

  1. 应用程序 pod 必须发出简单的 HTTP 请求,而不是 HTTPS。
  2. mTLS 的发起应该发生在出口网关。
  3. 必须使用自定义客户端和 CA 证书。

基本上,这种情况与官方文档Egress 中的示例不同,该示例使用带有 SNI 代理的通配符任意主机,具有以下内容:

  1. 应用程序 pod 使用的是 HTTP 而不是 HTTPS curl http:\\host1.example.com:。因此,mTLS 的发起应该发生在出口网关,而不是应用程序 pod。
  2. 使用自定义客户端和 CA 证书。

我尝试了所需的场景,但存在一个问题,即当出口网关将流量路由到 SNI nginx 代理 ( sni-proxy) 时,它无法从 SNI TLS 标头中提取主机名。错误是:*18 no host in upstream ":443"。SNI 不是由应用程序 pod ( sleep) 设置的,因为它使用简单的 HTTP,而不是官方示例中的 HTTPS。未设置 SNI 时,SNI 代理无法将流量转发到特定主机。

在这种情况下,是否可以配置 istio egress gateway 以仅使用资源中的通配符主机名(如ServiceEntry, DestinationRule,VirtualService等)将 mTLS 发起到特定主机?例如:应用程序 pod 传递 HTTP 请求头参数,如Host,由 egress 网关使用来发起 mTLS 并设置 SNI 头,然后将由 SNI 代理将流量转发到特定主机?在这种情况下,出口网关将根据 HTTP 请求标头动态地将 mTLS 流量发起到特定主机?

0 投票
0 回答
31 浏览

kubernetes - 识别 ISTIO 服务网格中的调用服务

当使用边车使用 ISTIO 服务网格时,说 serviceA 正在调用 serviceB。serviceB 如何识别调用它的是 serviceA?

使用 mTLS,可以转发客户端证书,但是如果没有 mTLS,我们如何实现呢?

0 投票
0 回答
54 浏览

kubernetes - istio-ingressgateway LoadBalancer 在 AWS EC2 实例 k8s 中显示“待处理”

嗨,人们需要一些帮助,我在 EC2 实例之上有一个 k8s,然后我部署了 istio,但似乎我没有为 istio-ingressgateway 获得负载均衡器,所以我验证我的应用程序没问题,因为我做了端口转发看起来还可以,但我不知道为了让 istio 在这个设置上启动并运行,是否缺少一些东西?我检查了一个关于注释的线程,但对我来说不是很清楚,如果只是将它添加到我的 svc 就可以完成这项工作,如果每次我创建一个集群我都需要做注释?

感谢您的任何建议:)

我的 svc 的问题和描述

0 投票
0 回答
78 浏览

kubernetes - 基于客户端 IP 的限制授权策略不适用于 Istio 和 Azure 应用程序网关

在 AKS 集群上部署 Istio 1.10。我们使用 Azure 应用程序网关作为前端,使用 Istio 网关作为后端。来自互联网的流量将按如下方式路由:

流量 >> Azure 应用网关 >> Istio 网关 >> 微服务

我们有一些我们希望可以从 VPN 访问的微服务。因此,我们使用授权策略将检查客户端 IP 并根据客户端 IP 限制对微服务的访问。

如果未从给定 IP 访问,则以下授权策略将限制对 http://hostName/httpbin 的访问。

授权政策:

但是从 istio 网关日志中我们可以看到,这个策略没有得到应用,两个 ip 作为客户端 IP 发送,即 24.198.223.80,172.48.28.4

代理服务器的另一个 IP 被附加到客户端 IP。有没有人处理这种情况?

0 投票
0 回答
73 浏览

istio - istio 与 docker 桌面集成

我按照 Istio setup (in docker desktop) here中提到的示例进行操作。我无法连接到服务。

我正在尝试的网址:

以下是链接中提到的上述示例的虚拟服务和网关:

0 投票
0 回答
94 浏览

kubernetes - istio 出口:从 kubernetes 集群到 mariadb 的 mtls 连接

我目前正在尝试在 kubernetes 服务器上部署的 pod 和外部 mariadb 服务器之间建立连接。

当我尝试从 pod 连接到服务器时,我遇到了这个错误:

ERROR 2013 (HY000): Lost connection to MySQL server at 'handshake: reading initial communication packet', system error: 11

据我了解,问题是由于mysql协议要求第一个连接数据包不是TLS,而出口网关只做TLS。

我不知道是否有解决方法或变量可以改变它的工作,或者它是否只是我的 istio 版本太低而无法支持这种类型的连接。

这是我的配置:

mariadb 服务器:

mariadb 服务器是一个启用了 TLS 的容器。

我创建了一个需要 X509 的没有密码的用户。

如果我尝试从带有证书的终端连接到 mariadb,它就成功了。

Kubernetes 集群:

istio:1.6.14 提供客户端证书

gateway:

virtual service:

DestinationRule:

Service entries: