istio-网关(GateWay)

在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/v1alpha3
kind: VirtualService
metadata:
  name: demo-virtual-svc
spec:
  hosts:
  – demo.example.com
  # 将名称为demo-gwy的网关绑定到虚拟服务
  gateways:
    – demo-gwy

作者简介:

季向远,北京神舟航天软件技术有限公司。本文版权归原作者所有。

K8S中文社区微信公众号