问题标签 [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.
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:
url-rewriting - 带有 httpRewrite 的 Istio 入口无法加载其他资源
在minikube
VM 上,我有两个k8s
服务:service-v1
和service-v2
. 我有istio-ingress
规则:
因此,当我访问/v1/endpoint
它时,它会将呼叫转发到service-v1
. /endpoint
在我的应用程序中,我有一个 for而不是 for的映射/v1/endpoint
,所以我还有一个httpRewrite
规则:
但是现在我有另一个问题:当我/v1/endpoint
从浏览器访问时,它会再次调用我的服务给另一个服务/endpoint2
,它给了我404
,因为这个端点可以作为/v1/endpoint2
. 我可以/v1/endpoint2
从浏览器访问。我可以看到修复它的唯一方法是更改代码以调用相对 URL,如下所示../endpoint1
:这是唯一的选择吗?还有其他选择如何解决这个问题吗?
istio - 如何创建混音器配置规则的实例?
我必须以编程方式创建混音器配置规则的实例。通常我会为此使用客户端集,但在这里我找不到类似的东西。有人可以指出这样的客户群是否存在,或者建议在这种特殊情况下应该如何处理?
谢谢!
istio - Istio mTLS 流
我对 istio 的 mTLS 流程有点困惑。在 bookinginfo 示例中,我看到服务正在通过 http 而不是 https 进行调用。如果服务之间存在 mTLS,那么服务会进行 http 调用吗?
是不是来自服务的 HTTP 会转到将其转换为 https 的特使代理?但是,然后在服务器的 envoy-proxy 日志中,我在日志中看到了 http。
任何机构都可以解释这是如何工作的吗?
问候
kubernetes - 使用 Kubernetes 服务的 Istio 出口
(使用 Istio 0.5.1,kubectl 1.9.1/1.9.0 用于客户端/服务器,minikube 0.25.0)
我正在尝试让 Istio EgressRules 与 Kubernetes 服务一起使用,但遇到了一些麻烦。
我尝试通过 3 种方式设置 EgressRules:
- 指向另一个域(如 www.google.com)的 ExternalName 服务
- 没有选择器但有关联的端点对象的服务(对于有 IP 地址但没有 DNS 名称的服务)
- (用于比较)没有 Kubernetes 服务,只是一个 EgressRule
ext-service.default.svc.cluster.local
我想我可以使用Kubernetes服务的 FQDN 作为基于 HTTP 的 EgressRule 目标服务(如
对于前者,我创建了以下yaml
文件:
对于后者,我创建了这个yaml
文件(我只是 ping 了 google 并获取了 IP 地址):
在这两种情况下,在应用程序代码中,我访问:
我的假设是流量会像这样流动:
[[ ... ]]
服务网格(以及 Kubernetes 集群)的边界在哪里
结果:
- 该
ExternalName
服务几乎按预期工作,但它把我带到了谷歌的 404 页面(有时响应似乎是空的,不知道如何具体复制一个或另一个) 带有 Endpoint 对象的服务不起作用,而是打印此消息(通过 Golang 发出请求时,但我认为这并不重要):
这有时也会给出空洞的回应。
我想使用 Kubernetes 服务(即使它用于外部流量)有几个原因:
- 您不能将 IP 地址用于 EgressRule 的目标服务。从出口规则配置:“出口规则的目的地......可以是完全限定或通配符域名”。
- 对于没有域名的外部服务(一些没有 DNS 名称的本地遗留/单体服务),我希望应用程序能够不是通过 IP 地址而是通过 kube-dns(或Istio 相关的类似)名称。
- (与上一个相关)我喜欢 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 的“目标服务”(或帮助理解为什么在这种情况下这不是必需的)都值得赞赏。谢谢!
kubernetes-helm - 用于安装 istio 的 Helm 存储库
我正在尝试安装 istio。如果我从 github 克隆 repo,我可以轻松打包 helm chart,但我只是想知道是否有可以使用的 helm chart repo?
authentication - Istio:最终用户身份验证
根据网站上的文档,Istio-Auth 提供了强大的服务到服务和最终用户身份验证。我无法找到有关最终用户身份验证的更多信息。我看到所有关于服务到服务身份验证的好东西,但没有看到服务的最终用户身份验证。是否支持?在哪里可以找到有关它的一些信息?
kubernetes - 使用 Istio 的 Kubernetes VIP
我是 Kubernetes 新手,正在尝试从基于 VM 的服务迁移到 Kubernetes。
目前的做法,
在每个 VM 上拥有多个 VM 和运行服务。服务在多个虚拟机上运行,并且前面有 VIP。客户将访问 VIP,VIP 将循环使用可用服务。
我阅读了 ISTIO 和 ingress 并希望,同样的事情可以使用 ISTIO 来完成。我已经设置了一个本地 minikube 集群并探索了所有用例。我能够以缩放因子 2 部署我的服务。现在,我想使用 VIP 访问我的服务。我不知道如何创建 VIP 并暴露给 Kubernetes 集群中的其他服务以及在 Kubernetes 集群之外运行的服务?我可以使用相同的现有 VIP 吗?或者,我是否需要做任何额外的设置,在 Kubenetes 中使用任何服务名称创建 VIP?
谢谢
service - 将服务网格与 Istio 集成
我知道 envoy 是 Istio 的默认服务网格,我们实现了自己的服务网格并希望与 Istio 集成。所以我们可以利用 Istio 来集成很多组件,比如 eureka、cf、statsd、prometheus
我的问题是在哪里可以找到 Pilot、Mixer 和 auth API。如果可能,请简要告诉我如何在运行时与它们进行交互。