Vac*_*ano 1 kubernetes istio istio-gateway
我正在尝试了解 Istio 流量路由。我以演示模式安装了 Istio,并开始使用示例。这些示例让您安装了一些网关(我安装了bookinfo-gateway并且httpbin-gateway.
但似乎我的所有流量都通过命名空间中定义的“http2”istio-ingressgateway端口istio-system。
该文档引用了这一点:
Istio 提供了一些您可以使用的预配置网关代理部署(istio-ingressgateway 和 istio-egressgateway) - 如果您使用我们的演示安装,则两者都会部署
但是当我运行时:kubectl -n istio-system get service istio-ingressgateway -o yaml结果显示kind: Service。
演示让我展示了其他网关kind: Gateway。
所以我很困惑...
istio-ingressgateway(这实际上是一项服务)。VirtualService到istio-ingressgateway. 难道只是寻找全部吗VirtualServices?服务和网关之间有区别吗?
是的。
istio-ingressgateway是一个 kubernetes 类型的服务LoadBalancer(或NodePort,取决于您的设置),充当集群的入口点。ingressgateway 是 istio 的入口控制器,它是完全可选的。gateway是 istio 的自定义资源,用作网格的入口。它通过选择器绑定到 ingressgateway,例如参见https://github.com/istio/istio/blob/master/samples/httpbin/httpbin-gateway.yamlkind: Gateway
[...]
spec:
selector:
istio: ingressgateway
Run Code Online (Sandbox Code Playgroud)
我将如何使用示例应用程序网关而不是 istio-ingressgateway (这实际上是一项服务)。
您需要两者(或另一种形式的入口控制器并通过网状网关路由所有流量,更多信息请参见下文)。
istio 如何将我的 VirtualService 连接到 istio-ingressgateway。它只是寻找所有 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
[...]
Run Code Online (Sandbox Code Playgroud)
文件中的AVirtualService绑定到gateway.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpbin
spec:
gateways:
- httpbin-gateway
[...]
Run Code Online (Sandbox Code Playgroud)
因此,如果流量使用您的网关,则会VirtualService被考虑。
除了您配置的网关之外,始终还有网状网关。因此,如果您希望内部集群流量使用 istio 配置,您需要将网格网关添加到您的虚拟服务中:
gateways:
- httpbin-gateway
- mesh
Run Code Online (Sandbox Code Playgroud)
或者为此创建一个单独的虚拟服务。如果您未设置任何网关,则将使用网状网关,因为它是默认网关。请参阅: https: //istio.io/latest/docs/reference/config/networking/virtual-service/#VirtualService -> 网关条目