您可以使用网关来管理网格的入站和出站流量,以指定您希望进入或离开网格的流量。网关配置应用于在网格边缘运行的独立 Envoy 代理,而不是与您的服务工作负载一起运行的 sidecar Envoy 代理。
与控制进入系统的其他机制(例如 Kubernetes Ingress API)不同,Red Hat OpenShift 服务网格网关使用流量路由的全部功能和灵活性。
Red Hat OpenShift Service Mesh 网关资源可以使用 4-6 层负载均衡属性(例如端口)来暴露和配置 Red Hat OpenShift Service Mesh TLS 设置。无需在同一个 API 资源中添加应用层流量路由 (L7),您可以将常规的 Red Hat OpenShift Service Mesh 虚拟服务绑定到网关,并像管理服务网格中的任何其他数据平面流量一样管理网关流量。
网关主要用于管理入口流量,但您也可以配置出口网关。出口网关允许您为离开网格的流量配置一个专用的出口节点。这使您可以限制哪些服务可以访问外部网络,从而为您的服务网格增加安全控制。您还可以使用网关配置纯内部代理。
网关示例
网关资源描述了在网格边缘运行的负载均衡器,接收传入或传出的 HTTP/TCP 连接。规范描述了一组应暴露的端口、要使用的协议类型、负载均衡器的 SNI 配置等。
以下示例显示了用于外部 HTTPS 入口流量的示例网关配置
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: ext-host-gwy
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- ext-host.example.com
tls:
mode: SIMPLE
serverCertificate: /tmp/tls.crt
privateKey: /tmp/tls.key
此网关配置允许来自ext-host.example.com
的 HTTPS 流量通过端口 443 进入网格,但不指定任何流量路由。
要指定路由并使网关按预期工作,您还必须将网关绑定到虚拟服务。您可以使用虚拟服务的 gateways 字段来执行此操作,如下例所示
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: virtual-svc
spec:
hosts:
- ext-host.example.com
gateways:
- ext-host-gwy