在Istio中,使用网关定义在网格边缘运行的负载均衡器,用于接收传入或传出的HTTP / TCP请求,网关配置适用于在网格边缘运行的独立Envoy代理。
与其他控制进入系统流量的机制(例如Kubernetes Ingress API)不同,Istio网关可以充分利用Istio流量路由的功能和灵活性。Istio的网关资源仅允许配置4-6层负载平衡属性,例如要公开的端口,TLS设置等。没有将应用层流量路由(L7)添加到相同的API资源,而是将Istio 虚拟服务绑定到网关。通过这样的方式呢,就可以像管理Istio网格中的任何其它数据平面流量一样,统一管理网关流量。网关主要用于管理传入的流量,也可以用于配置出口流量的网关。还可以使用网关来配置纯内部代理。Istio提供了一些可以预配置的网关代理部署(istio-ingressgateway和istio-egressgateway)。
表 网关字段
领域 | 类型 | 描述 | 需要 |
servers | Server[] | 服务器规格列表。 | 是 |
selector | map<string, string> | 一个或多个标签,指示应在其上应用此网关配置的一组特定的Pod / VM。标签搜索的范围仅限于存在资源的配置名称空间。换句话说,网关资源必须与网关工作负载实例位于相同的名称空间中。 | 是 |
1 服务器
spec.server字段用于设置网关的服务列表,在下面的例子中,定义了一个名称为demo-ingress的网关,此网关通过80端口接收HTTP2协议的流量。
#—–定义名称为demo-ingress的网关—–
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: demo-ingress
spec:
selector:
app: demo-ingress-gateway
servers:
– port:
number: 80
name: http2
protocol: HTTP2
hosts:
– “*”
表 网关的服务字段
领域 | 类型 | 描述 | 需要 |
port | Port | 传入流量的监听端口。 | 是 |
hosts | string[] | 网关一台或多台主机。通常适用于HTTP协议的服务,但也可以将其用于使用TLS和SNI的TCP服务。 | 是 |
tls | TLSOptions | 与TLS相关的选项,用于控制服务器的行为。使用这些选项可控制是否应将所有http请求都重定向到https,以及要使用的TLS模式。 | 否 |
defaultEndpoint | string | 默认情况下,将流量转发到的环路IP端口或Unix域套接字。格式应为127.0.0.1:PORT或unix:///path/to/socket或unix://@foobar(Linux抽象名称空间)。 | 否 |
网关中的端口用于设置接收输入流量的监听端口,主要的字段包括,number、protocol和name。
表 网关的端口字段
领域 | 类型 | 描述 | 需要 |
number | uint32 | 监听流量的端口号。 | 是 |
protocol | string | 传输协议。必须是HTTP | HTTPS | GRPC | HTTP2 | MONGO | TCP | TLS之一。 | 是 |
name | string | 端口的名称。 | 否 |
2 网关示例
在下面的示例中,定义了一个名称为ext-host-gwy的网关。
#——–定义名称为demo-gwy的网关—
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: demo-gwy
spec:
selector:
app: demo-gateway-controller
servers:
– port:
number: 443
name: https
protocol: HTTPS
hosts:
– demo.example.com
tls:
mode: SIMPLE
serverCertificate: /tmp/tls.crt
privateKey: /tmp/tls.key
此网关允许以HTTPS协议通过443端口访问demo.example.com,但没有为该流量指定任何路由。要指定路由并使网关按预期工作,还必须将网关绑定到虚拟服务。下面的例子创建了一个名称为virtual-svc的虚拟服务,使用虚拟服务的spec.gateways字段将demo-gwy网关与虚拟服务进行了绑定。
#—定义名称为demo-virtual-svc虚拟服务—-apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata:name: demo-virtual-svcspec:hosts:– demo.example.com# 将名称为demo-gwy的网关绑定到虚拟服务gateways:– demo-gwy
作者简介:
季向远,北京神舟航天软件技术有限公司。本文版权归原作者所有。