入口网关服务(Ingress Gateway)为Kubernetes集群提供了七层网关功能,对外提供一个统一的七层服务入口,根据HTTP请求的内容将来自同一个TCP端口的请求分发到不同的Kubernetes服务。本文介绍如何为ASM实例中的多个入口网关配置统一的网关规则。
前提条件
已创建ASM实例,且版本为1.13.4.46及以上。具体操作,请参见创建ASM实例。
已添加集群到ASM实例。具体操作,请参见添加集群到ASM实例。
已部署至少两个入口网关服务。具体操作,请参见创建入口网关。
已部署应用到ASM实例关联的集群。具体操作,请参见在ASM实例关联的集群中部署应用。
背景信息
在实际场景中,向域名xxx.xxx.cn
添加两个A记录,分别对应两个负载均衡CLB。这两个CLB分别对应到两个ASM入口网关,且两个入口网关的规则配置相同。为了保持网关规则配置的一致性,需要将一个共用的网关规则关联到多个ASM网关上。ASM支持多个入口网关使用同一个网关配置规则,简化您的配置操作。关于入口网关和网关规则的字段说明,请参见ASM网关CRD说明和网关规则(Gateway)CRD说明。
操作步骤
一个网关规则配置可以映射到不同的网关上,映射规则根据spec.selector
的配置进行选择,因此您可以为多个网关的Deployment YAML中都添加相同的标签,本文以key1: value1
为例。
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在入口网关页面,单击每一个关联的目标入口网关右侧的查看YAML。
在编辑对话框,配置
podLabels
字段,然后单击确定。... spec: podLabels: key1: value1 ...
将网关规则配置关联到目标网关。
在网格详情页面左侧导航栏,选择 。
在网关规则页面,单击目标网关规则右侧操作列下的查看YAML。
在编辑对话框,配置
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说明;关于如何创建虚拟服务,请参见管理虚拟服务。