问题标签 [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.
amazon-web-services - 在使用 Istio 服务网格时我们真的需要 AWS 网关吗
我正在尝试在 AWS 上放置一个部署结构。我有一堆微服务,我计划将 EKS 与 Istio 服务网格一起使用。
我想知道的是,如果我真的需要使用任何 AWS 外围服务,如 AWS API 网关、AWS ALB、DNS 等。这个问题背后的原因是 Istio 已经拥有有效的入口和出口形式的替代方案网关(连同 istiod),它几乎可以完成流量路由和服务注册等方面的所有工作。
唯一的困惑是关于 WAF 等安全服务(用于 DDOS 攻击)。我需要这些安全服务,因此 AWS 中的某些组件必须将用户请求转发到 AWS 安全服务,然后再转发到 Istio 网关。
欣赏你的想法。
istio - 我们已经在 GCP 中创建了 knative serverless 应用程序。我们正在尝试使用 istio 网格访问它
但是我们在访问 API 时收到状态码 404。
实施以下步骤:
- 指向 istio 负载均衡器外部 IP 的域 URL。
- 应用了一个将其路由目的地映射到 istio-ingressgateway.istio-system.svc.cluster.local 的 VirtualService
yaml 文件:
kubernetes - Kubernetes postStart 生命周期总是失败
尝试使用 postStart 生命周期解决 pod 之间的依赖关系。
用例:微服务A应该在微服务B启动后启动。
为此,我们添加了一个容器(curl),它将使用 curl 命令检查相关服务是否已启动。
但是当我们在 postStart 生命周期钩子中添加任何命令时,Pod 会不断重启并进入 crashlookbackoff 状态
部署.yaml:
注意:不使用 init-container 的原因:因为我们使用严格的 MTLS 策略实现了 Istio。https://github.com/istio/istio/issues/32039
kubernetes - 使用 Istio 和 Cloud Armor 的 GKE 集群中的后端不健康
我正在尝试在 GKE 集群前使用Cloud Armor 自适应保护。我从 contino-engineering 中找到了本指南,而这本从always up always on 中找到。但是,这两个都使用了一个简单的 hello world 示例,我正在尝试通过使用 istio 中的bookinfo示例来部署(希望如此?)更现实的部署。(我使用在线精品店也有类似的结果。)
问题是后端永远不会变得健康。我假设这是因为健康检查器无法访问健康检查服务,但我对这一切都很陌生,不确定如何验证。
这是我用于部署集群的 TF。请注意,这ip_allocation_policy
相当于--enable-ip-aliases
gcloud 参数......我认为。我没有在这里启用 CloudRun 以简化事情。
集群 tf
获得信任后,我应用我的后端配置来允许(?)/启用(?)健康检查。
然后我修补入口网关:
最后,应用入口资源
推出新的 Pod 以获得更好的效果:
istio - 用于通配符任意主机的出口流量的 mTLS 发起
是否可以使用 istio 为通配符任意主机的出口流量发起 mTLS,但具有以下限制:
- 应用程序 pod 必须发出简单的 HTTP 请求,而不是 HTTPS。
- mTLS 的发起应该发生在出口网关。
- 必须使用自定义客户端和 CA 证书。
基本上,这种情况与官方文档Egress 中的示例不同,该示例使用带有 SNI 代理的通配符任意主机,具有以下内容:
- 应用程序 pod 使用的是 HTTP 而不是 HTTPS
curl http:\\host1.example.com
:。因此,mTLS 的发起应该发生在出口网关,而不是应用程序 pod。 - 使用自定义客户端和 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 流量发起到特定主机?
kubernetes - 识别 ISTIO 服务网格中的调用服务
当使用边车使用 ISTIO 服务网格时,说 serviceA 正在调用 serviceB。serviceB 如何识别调用它的是 serviceA?
使用 mTLS,可以转发客户端证书,但是如果没有 mTLS,我们如何实现呢?
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。有没有人处理这种情况?
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: