为多个入口网关配置统一的网关规则

入口网关服务(Ingress Gateway)为Kubernetes集群提供了七层网关功能,对外提供一个统一的七层服务入口,根据HTTP请求的内容将来自同一个TCP端口的请求分发到不同的Kubernetes服务。本文介绍如何为ASM实例中的多个入口网关配置统一的网关规则。

前提条件

背景信息

在实际场景中,向域名xxx.xxx.cn 添加两个A记录,分别对应两个负载均衡CLB。这两个CLB分别对应到两个ASM入口网关,且两个入口网关的规则配置相同。为了保持网关规则配置的一致性,需要将一个共用的网关规则关联到多个ASM网关上。ASM支持多个入口网关使用同一个网关配置规则,简化您的配置操作。关于入口网关和网关规则的字段说明,请参见ASM网关CRD说明网关规则(Gateway)CRD说明

操作步骤

一个网关规则配置可以映射到不同的网关上,映射规则根据spec.selector的配置进行选择,因此您可以为多个网关的Deployment YAML中都添加相同的标签,本文以key1: value1为例。

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择ASM网关 > 入口网关

  3. 入口网关页面,单击每一个关联的目标入口网关右侧的查看YAML

  4. 编辑对话框,配置podLabels字段,然后单击确定

    ...
    spec:
      podLabels:
        key1: value1
    ...
  5. 将网关规则配置关联到目标网关。

    1. 在网格详情页面左侧导航栏,选择ASM网关 > 网关规则

    2. 网关规则页面,单击目标网关规则右侧操作列下的查看YAML

    3. 编辑对话框,配置selector字段,然后单击确定

      apiVersion: networking.istio.io/v1beta1
      kind: Gateway
      metadata:
        name: bookinfo-gateway
        namespace: default
      spec:
        selector:
          key1: value1
        servers:
          - hosts:
              - '*'
            port:
              name: http
              number: 80
              protocol: HTTP                         

后续步骤

网关规则只用于配置监听,您还需配置一个虚拟服务来指明流量转发规则。关于虚拟服务的字段说明,请参见虚拟服务(Virtual Service)CRD说明;关于如何创建虚拟服务,请参见管理虚拟服务