云原生API网关和后端服务所在的节点分别处于不同安全组内。您可以通过设置安全组规则为云原生API网关授予访问后端服务的权限。
背景信息
安全组是一种虚拟防火墙,用于控制安全组内ECS实例和ENI网卡的入流量和出流量,从而提高ECS实例的安全性。安全组具备状态检测和数据包过滤能力,您可以基于安全组的特性和安全组规则的配置在云端划分安全域,详情请参见安全组概述。
您在购买云原生API网关时需要选择VPC和安全组类型(建议与后端服务所在安全组类型一致),根据您选择的安全组类型,云原生API网关会创建相应托管安全组管理网关的实例节点。因为云原生API网关和后端服务所在的节点分别处于不同安全组内,需要您在后端服务的安全组内为云原生API网关授予必要的端口范围访问权限。
步骤一:获取目标服务所在节点的安全组
云原生API网关关联的上游服务,主要包括容器部署和ECS部署。您可以通过以下方式获取安全组ID。
目标服务部署在容器服务ACK中
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在节点池页面,单击对应的节点,然后单击基本信息页签,获取安全组的ID。
目标服务部署在ECS上
登录ECS管理控制台。
在左侧导航栏,选择 。
在实例页面,单击目标服务所部署的ECS实例,然后单击安全组页签,获取安全组的ID。
步骤二:添加安全组授权规则
登录云原生API网关控制台。
在左侧导航栏,选择实例,并在顶部菜单栏选择地域。
在实例页面,单击目标网关实例名称。
在左侧导航栏单击概览,然后单击安全组授权页签。
单击授权安全组,在安全组ID的文本框中,粘贴步骤一中获取的安全组ID,选择相应的安全组。
输入安全组授权的端口范围:起始值/终止值。
可以输入多个端口范围,每输入一个端口范围单击回车,即可生效。
单击保存。
云原生API网关会生成对应的规则。
同时目标节点所在的安全组中也会看到在云原生API网关创建的安全组规则。
删除安全组授权规则
登录云原生API网关控制台。
在左侧导航栏,选择实例,并在顶部菜单栏选择地域。
在实例页面,单击目标网关实例名称。
在左侧导航栏单击概览,单击安全组授权页签,然后单击操作列下方的删除,单击确定。
默认只删除云原生API网关的安全组规则,如需将目标节点所在安全组的规则一并删除,您还需要勾选级联删除该安全组内的上述入方向规则。
常见问题
问题一:安全组已经授权,为什么服务还是访问不通?
您可以按照如下步骤自助排查:
首先需要确认您的目标服务所部署的节点是否正确。
有可能存在服务部署在了A节点上,但是给B节点所在的安全组授权。
您的目标节点是否设置了多个安全组。
如果是多个安全组,建议给每个安全组都授权。
问题二:安全组已经授权,之前网关访问服务是通的,现在突然间不通了,是什么原因?
您可以按照如下步骤自助排查:
首先确认您的服务本身没有问题。
您可以对同一安全组内的其他节点使用
curl
命令检查服务的连通性。确认您发布的服务对外暴露的端口是否有变更。
例如以前端口为8080,在云原生API网关只给8080端口授权了,之后又将端口变更为8081,这时需要重新调整云安全组授权规则端口。为了避免这种情况发生,建议您在配置安全组授权时扩大端口范围,可以将范围选成1/65535。