问题标签 [istio]

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 回答
1618 浏览

istio - istio 路由规则错误:“json: cannot unmarshal string into Go value”

我是 Istio 的新手,我正在使用我的简单应用程序浏览一些用例。

我在使用 VirtualBox 5.2.6 和 istio 0.6.0 的 Windows 10 Pro 上运行的 minikube 上部署了 2 个简单的服务

service1 的 v1版本和service2的 v1 & v2版本。service1 响应 /hello,service2 响应 /world。到目前为止一切正常,两个服务都在响应,并且从 service2 开始,循环运行。

现在我想应用 2 个路由规则,一个基于标头路由到 service2 的 v2,其余路由到 service2 的 v1,但是当我尝试这样做时出现错误:

请在我的应用程序和路由规则配置下方找到。

这个配置有什么问题?

请注意,当我省略“匹配”部分时,没关系,但这当然不是我想要的。

和我的服务部署 yaml:

0 投票
0 回答
378 浏览

url-rewriting - 带有 httpRewrite 的 Istio 入口无法加载其他资源

minikubeVM 上,我有两个k8s服务:service-v1service-v2. 我有istio-ingress规则:

因此,当我访问/v1/endpoint它时,它会将呼叫转发到service-v1. /endpoint在我的应用程序中,我有一个 for而不是 for的映射/v1/endpoint,所以我还有一个httpRewrite规则:

但是现在我有另一个问题:当我/v1/endpoint从浏览器访问时,它会再次调用我的服务给另一个服务/endpoint2,它给了我404,因为这个端点可以作为/v1/endpoint2. 我可以/v1/endpoint2从浏览器访问。我可以看到修复它的唯一方法是更改​​代码以调用相对 URL,如下所示../endpoint1:这是唯一的选择吗?还有其他选择如何解决这个问题吗?

0 投票
1 回答
57 浏览

istio - 如何创建混音器配置规则的实例?

我必须以编程方式创建混音器配置规则的实例。通常我会为此使用客户端集,但在这里我找不到类似的东西。有人可以指出这样的客户群是否存在,或者建议在这种特殊情况下应该如何处理?

谢谢!

0 投票
1 回答
793 浏览

kubernetes - 使用 Istio 入口和路由规则的多个前端

是否可以使用下图所述的路由规则进行流量路由?流量路由需要在流量进入集群后立即发生。

在此处输入图像描述

我们一直在摆弄它们,但是一旦我们有两个路由规则并在其中一个规则中使用了 uri 正则表达式,我们总是会碰壁。

我们的想法是像这样配置 istio ingress

然后根据 uri 标头配置拆分流量的路由规则。以下是我们如何配置产品路由规则的示例:

istio 可以进行这种设置吗?

0 投票
1 回答
866 浏览

istio - Istio mTLS 流

我对 istio 的 mTLS 流程有点困惑。在 bookinginfo 示例中,我看到服务正在通过 http 而不是 https 进行调用。如果服务之间存在 mTLS,那么服务会进行 http 调用吗?

是不是来自服务的 HTTP 会转到将其转换为 https 的特使代理?但是,然后在服务器的 envoy-proxy 日志中,我在日志中看到了 http。

任何机构都可以解释这是如何工作的吗?

问候

0 投票
1 回答
984 浏览

kubernetes - 使用 Kubernetes 服务的 Istio 出口

(使用 Istio 0.5.1,kubectl 1.9.1/1.9.0 用于客户端/服务器,minikube 0.25.0)

我正在尝试让 Istio EgressRules 与 Kubernetes 服务一起使用,但遇到了一些麻烦。

我尝试通过 3 种方式设置 EgressRules:

  1. 指向另一个域(如 www.google.com)的 ExternalName 服务
  2. 没有选择器但有关联的端点对象的服务(对于有 IP 地址但没有 DNS 名称的服务)
  3. (用于比较)没有 Kubernetes 服务,只是一个 EgressRule

ext-service.default.svc.cluster.local我想我可以使用Kubernetes服务的 FQDN 作为基于 HTTP 的 EgressRule 目标服务(如

对于前者,我创建了以下yaml文件:

对于后者,我创建了这个yaml文件(我只是 ping 了 google 并获取了 IP 地址):

在这两种情况下,在应用程序代码中,我访问:

我的假设是流量会像这样流动:

[[ ... ]]服务网格(以及 Kubernetes 集群)的边界在哪里

结果:

  • ExternalName服务几乎按预期工作,但它把我带到了谷歌的 404 页面(有时响应似乎是空的,不知道如何具体复制一个或另一个)
  • 带有 Endpoint 对象的服务不起作用,而是打印此消息(通过 Golang 发出请求时,但我认为这并不重要):

    获取http://ext-service.default.svc.cluster.local:443:EOF

    这有时也会给出空洞的回应。

我想使用 Kubernetes 服务(即使它用于外部流量)有几个原因:

  1. 您不能将 IP 地址用于 EgressRule 的目标服务。从出口规则配置:“出口规则的目的地......可以是完全限定或通配符域名”。
  2. 对于没有域名的外部服务(一些没有 DNS 名称的本地遗留/单体服务),我希望应用程序能够不是通过 IP 地址而是通过 kube-dns(或Istio 相关的类似)名称。
  3. (与上一个相关)我喜欢 Kubernetes 服务提供的额外抽象层,因此我可以在不更改 EgressRule 的情况下更改底层目标(除非我弄错了,这不是构建它的正确方法)。EgressRule 是否旨在完全替换 Kubernetes 服务以处理外部流量,而不创建额外的 Kubernetes 服务?

在应用程序代码中使用https://不是一个选项,因为这样请求将不得不禁用 TLS 验证,因为 kube-dns 名称与证书上的任何名称都不匹配。它也不会被观察到。

如果我使用以下 EgressRule(没有任何 Kubernetes 服务),通过访问 Google 可以http://www.google.com:443正常工作,获得我期望的准确 html 表示:

我看到有一个 TCP EgressRule,但我宁愿不必为每个 IP 块指定规则。从TCP 出口:“在 TCP 出口规则中,与基于 HTTP 的出口规则相反,目的地由 IP 或 CIDR 表示法中的 IP 块指定。”。

此外,我仍然希望来自 L7 而不是 L4 的基于 HTTP 的可观察性,所以我更喜欢基于 HTTP 的出口。(使用 TCP Egresses,“应用程序产生的 HTTPS 流量将被 Istio 视为不透明的 TCP”)。

任何帮助将 Kubernetes 服务作为 EgressRule 的“目标服务”(或帮助理解为什么在这种情况下这不是必需的)都值得赞赏。谢谢!

0 投票
6 回答
6998 浏览

kubernetes-helm - 用于安装 istio 的 Helm 存储库

我正在尝试安装 istio。如果我从 github 克隆 repo,我可以轻松打包 helm chart,但我只是想知道是否有可以使用的 helm chart repo?

0 投票
2 回答
591 浏览

authentication - Istio:最终用户身份验证

根据网站上的文档,Istio-Auth 提供了强大的服务到服务和最终用户身份验证。我无法找到有关最终用户身份验证的更多信息。我看到所有关于服务到服务身份验证的好东西,但没有看到服务的最终用户身份验证。是否支持?在哪里可以找到有关它的一些信息?

0 投票
1 回答
348 浏览

kubernetes - 使用 Istio 的 Kubernetes VIP

我是 Kubernetes 新手,正在尝试从基于 VM 的服务迁移到 Kubernetes。

目前的做法,

在每个 VM 上拥有多个 VM 和运行服务。服务在多个虚拟机上运行,​​并且前面有 VIP。客户将访问 VIP,VIP 将循环使用可用服务。

我阅读了 ISTIO 和 ingress 并希望,同样的事情可以使用 ISTIO 来完成。我已经设置了一个本地 minikube 集群并探索了所有用例。我能够以缩放因子 2 部署我的服务。现在,我想使用 VIP 访问我的服务。我不知道如何创建 VIP 并暴露给 Kubernetes 集群中的其他服务以及在 Kubernetes 集群之外运行的服务?我可以使用相同的现有 VIP 吗?或者,我是否需要做任何额外的设置,在 Kubenetes 中使用任何服务名称创建 VIP?

谢谢

0 投票
1 回答
131 浏览

service - 将服务网格与 Istio 集成

我知道 envoy 是 Istio 的默认服务网格,我们实现了自己的服务网格并希望与 Istio 集成。所以我们可以利用 Istio 来集成很多组件,比如 eureka、cf、statsd、prometheus

我的问题是在哪里可以找到 Pilot、Mixer 和 auth API。如果可能,请简要告诉我如何在运行时与它们进行交互。