Kubernetes istio mesh虚拟服务如何管理来自入口虚拟服务的流量?
我正在定义mesh虚拟服务中的金丝雀路由,并想知道是否可以使其也适用于入口流量(使用入口虚拟服务)。使用类似于下面的内容,但它不起作用(来自入口的所有流量都将使用非金丝雀版本)Kubernetes istio mesh虚拟服务如何管理来自入口虚拟服务的流量?,kubernetes,istio,istio-gateway,Kubernetes,Istio,Istio Gateway,我正在定义mesh虚拟服务中的金丝雀路由,并想知道是否可以使其也适用于入口流量(使用入口虚拟服务)。使用类似于下面的内容,但它不起作用(来自入口的所有流量都将使用非金丝雀版本) 因此,当我调用myapp.dev.bla时,我期望得到x-canary:true响应头,但我看不到这一点。答案只是部分在您包含的链接中。我认为在使用Istio“什么是Istio服务网格”时需要意识到的基本点是。服务网格是每个pod,带有Istio特使代理侧车+所有网关(网关是独立的特使代理)。他们都知道对方是因为我,所以
因此,当我调用
myapp.dev.bla
时,我期望得到x-canary:true
响应头,但我看不到这一点。答案只是部分在您包含的链接中。我认为在使用Istio“什么是Istio服务网格”时需要意识到的基本点是。服务网格是每个pod,带有Istio特使代理侧车+所有网关(网关是独立的特使代理)。他们都知道对方是因为我,所以他们可以合作
k8s集群中任何没有Istio侧车的吊舱(包括入口吊舱或kube系统吊舱)都不了解Istio或服务网格。如果这样的pod想要将流量发送到服务网格(应用一些像您这样的流量管理规则),则必须通过Istio网关发送<代码>网关是创建标准部署+服务的对象。部署中的POD由独立的特使代理
容器组成
网关
对象与k8s入口的概念非常相似。但它不一定要在nodePort上监听。您还可以将其用作“内部”网关。网关作为您的服务网格的入口点。用于外部甚至内部通信
mesh
网关。它只是istio网关
或istio系统
名称空间中的k8s服务Istio网关
或Istio系统
命名空间中进行检查。或者,您可以仅为应用程序创建新网关,并将VirtualService
应用于新网关答案只在您包含的链接中的一部分。我认为在使用Istio时需要了解的一件重要事情是“什么是Istio服务网格”。服务网格是每个pod,带有Istio特使代理侧车+所有网关(网关是独立的特使代理).他们都是因为我才互相了解的,所以他们可以合作 k8s集群中任何没有Istio侧车的吊舱(包括入口吊舱或kube系统吊舱)都不了解Istio或服务网格。如果此类吊舱希望将流量发送到服务网格(应用一些类似于您的流量管理规则)必须通过Istio网关发送。
网关
是创建标准部署+服务的对象。部署中的POD由独立的特使代理
容器组成
Gateway
对象与k8s入口的概念非常相似。但它不必监听nodePort。您也可以将其用作“内部”网关。网关用作服务网格的入口点。用于外部甚至内部流量
mesh
gateway。它只是istio gateway
或istio system
命名空间中的k8s服务istio-gateway
或istio-system
命名空间中。或者,您可以仅为应用程序创建新网关,并将VirtualService
应用于新网关我认为reason已经在:是否有解决方案来实现这一点?我认为reason已经在:是否有解决方案来实现这一点?感谢您的详细阐述。如果我做对了,在给定的示例中,只有pod到pod流量(网格内流量)将由虚拟服务通过主机
test deployment app.test ns.svc.cluster.local
配置/管理。我知道为入口流量添加一组额外的匹配器(使用主机myapp.dev.bla
)可以工作,但想检查是否有任何方法可以在集群内虚拟服务中定义匹配规则,这也适用于入口。我试图避免入口网关配置中出现一些排序问题(多个应用使用同一主机并使用canary标头等)感谢您的详细阐述。如果我没有弄错的话,在给定的示例中,只有pod-to-pod流量(网格内流量)将由虚拟服务通过主机test deployment app.test ns.svc.cluster.local
配置/管理。我知道为入口流量添加一组额外的匹配器(通过主机myapp.dev.bla
)可以工作,但想检查是否有任何方法可以在集群内虚拟服务中定义匹配规则,这也适用于入口。我试图避免入口网关配置中出现一些排序问题(多个应用使用同一主机并使用canary标头等)
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: test-deployment-app
namespace: test-ns
spec:
gateways:
- mesh
hosts:
- test-deployment-app.test-ns.svc.cluster.local
http:
- name: canary
match:
- headers:
x-canary:
exact: "true"
- port: 8080
headers:
response:
set:
x-canary: "true"
route:
- destination:
host: test-deployment-app-canary.test-ns.svc.cluster.local
port:
number: 8080
weight: 100
- name: stable
route:
- destination:
host: test-deployment-app.test-ns.svc.cluster.local
port:
number: 8080
weight: 100
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: test-deployment-app-internal
namespace: test-ns
spec:
gateways:
- istio-system/default-gateway
hosts:
- myapp.dev.bla
http:
- name: default
route:
- destination:
host: test-deployment-app.test-ns.svc.cluster.local
port:
number: 8080
weight: 100