Istio的默认网关不是网关,是服务
Istio's default gateway is not a gateway, it is a service
我正在尝试了解 Istio 流量路由。我在演示模式下安装了 Istio,并开始使用示例。这些示例让您安装了一些网关(我安装了 bookinfo-gateway
和 httpbin-gateway
。
但似乎我的所有流量都通过 istio-system
命名空间中 istio-ingressgateway
中定义的“http2”端口。
The documentation 参考了这个:
Istio provides some preconfigured gateway proxy deployments (istio-ingressgateway and istio-egressgateway) that you can use - both are deployed if you use our demo installation
但是当我 运行: kubectl -n istio-system get service istio-ingressgateway -o yaml
结果显示 kind: Service
.
演示让我展示的其他网关kind: Gateway
。
所以我很困惑...
- 服务和网关有区别吗?
- 我将如何使用示例应用程序网关而不是
istio-ingressgateway
(这实际上是一项服务)。
- istio 如何将我的
VirtualService
连接到 istio-ingressgateway
。是否只是寻找所有 VirtualServices
?
Is there a difference between a service and a gateway?
是的。
istio-ingressgateway
是类型为 LoadBalancer
(或 NodePort
,具体取决于您的设置)的 kubernetes 服务,用作集群的入口点。 ingressgateway是istio的ingress controller,完全可选
gateway
是 istio 的自定义资源,用作进入您的网格的入口。它被选择器绑定到入口网关,例如参见 [=24=]
kind: Gateway
[...]
spec:
selector:
istio: ingressgateway
How would I use the sample application gateways instead of the istio-ingressgateway (that is really a service).
你需要两者(或另一种形式的入口控制器并通过网状网关路由所有流量,更多信息见下文)。
How does istio connect my VirtualService to the istio-ingressgateway. Is it just looking for all VirtualServices?
再次查看这个 yaml 文件:https://github.com/istio/istio/blob/master/samples/httpbin/httpbin-gateway.yaml
网关绑定到ingressgateway。
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: httpbin-gateway
spec:
selector:
istio: ingressgateway
[...]
A VirtualService
就像文件中的那个绑定到 gateway
.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpbin
spec:
gateways:
- httpbin-gateway
[...]
因此,如果流量使用您的网关,则考虑 VirtualService
。
在您配置的网关旁边,总是有网状网关。因此,如果您希望内部集群流量使用 istio 配置,则需要将网状网关添加到您的虚拟服务中:
gateways:
- httpbin-gateway
- mesh
或者为此创建一个单独的虚拟服务。如果您不设置任何网关,将使用网状网关,因为它是默认设置。
请参阅:https://istio.io/latest/docs/reference/config/networking/virtual-service/#VirtualService -> 网关条目
我正在尝试了解 Istio 流量路由。我在演示模式下安装了 Istio,并开始使用示例。这些示例让您安装了一些网关(我安装了 bookinfo-gateway
和 httpbin-gateway
。
但似乎我的所有流量都通过 istio-system
命名空间中 istio-ingressgateway
中定义的“http2”端口。
The documentation 参考了这个:
Istio provides some preconfigured gateway proxy deployments (istio-ingressgateway and istio-egressgateway) that you can use - both are deployed if you use our demo installation
但是当我 运行: kubectl -n istio-system get service istio-ingressgateway -o yaml
结果显示 kind: Service
.
演示让我展示的其他网关kind: Gateway
。
所以我很困惑...
- 服务和网关有区别吗?
- 我将如何使用示例应用程序网关而不是
istio-ingressgateway
(这实际上是一项服务)。 - istio 如何将我的
VirtualService
连接到istio-ingressgateway
。是否只是寻找所有VirtualServices
?
Is there a difference between a service and a gateway?
是的。
istio-ingressgateway
是类型为LoadBalancer
(或NodePort
,具体取决于您的设置)的 kubernetes 服务,用作集群的入口点。 ingressgateway是istio的ingress controller,完全可选gateway
是 istio 的自定义资源,用作进入您的网格的入口。它被选择器绑定到入口网关,例如参见 [=24=]
kind: Gateway
[...]
spec:
selector:
istio: ingressgateway
How would I use the sample application gateways instead of the istio-ingressgateway (that is really a service).
你需要两者(或另一种形式的入口控制器并通过网状网关路由所有流量,更多信息见下文)。
How does istio connect my VirtualService to the istio-ingressgateway. Is it just looking for all VirtualServices?
再次查看这个 yaml 文件:https://github.com/istio/istio/blob/master/samples/httpbin/httpbin-gateway.yaml
网关绑定到ingressgateway。
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: httpbin-gateway
spec:
selector:
istio: ingressgateway
[...]
A VirtualService
就像文件中的那个绑定到 gateway
.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpbin
spec:
gateways:
- httpbin-gateway
[...]
因此,如果流量使用您的网关,则考虑 VirtualService
。
在您配置的网关旁边,总是有网状网关。因此,如果您希望内部集群流量使用 istio 配置,则需要将网状网关添加到您的虚拟服务中:
gateways:
- httpbin-gateway
- mesh
或者为此创建一个单独的虚拟服务。如果您不设置任何网关,将使用网状网关,因为它是默认设置。 请参阅:https://istio.io/latest/docs/reference/config/networking/virtual-service/#VirtualService -> 网关条目