文档

通过配置网关路由实现微服务对外提供服务

更新时间:

通过配置云原生API网关路由,可以实现微服务架构的高灵活性和可扩展性,同时也为客户端访问提供了便利。

配置流程

您可以为微服务创建一个云原生API网关,通过从MSE Nacos添加服务或者从容器服务ACK关联服务,然后在网关中为服务创建路由策略,以便该服务通过网关对外提供服务。

Ingress网关体验流程

  1. 新建云原生API网关

    根据已有微服务环境,创建云原生API网关。

  2. 关联服务来源

    在云原生API网关中添加服务来源,包括固定地址服务、ACK容器服务、MSE Nacos和DNS域名。

    说明

    如果您选择固定地址服务,请直接在服务列表中添加服务,无需添加服务来源。

  3. 添加服务

    云原生API网关能够根据容器服务ACK或MSE Nacos来源获取服务的命名空间,将已有的服务添加到云原生API网关,作为备选服务。

  4. 为服务配置路由规则

    为该服务添加路由策略并发布。

步骤一:新建云原生API网关

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例管理,并在顶部菜单栏选择地域。

  3. 实例管理页面左上角,单击创建实例

  4. 在云原生API网关购买页面中选择相关配置,然后单击立即购买

    配置项

    说明

    地域

    选择网关的开服地域。

    网关名称

    自定义设置网关的名称。推荐用环境(或加业务领域)命名,例如test、order-prod等,最大长度为64个字符。

    网关规格

    根据实际需求选择节点规格。

    资源组

    选择资源组。

    网络访问类型

    选择公网私网

    专有网络

    选择后端服务所在的专有网络。

    说明

    在选择VPC时,会显示是否存在容器或Nacos集群,避免误选VPC。

    可用区选择

    自动分配:选择一个交换机,系统会自动分配2个可用区部署网关节点。

    交换机

    您需要选择交换机,如需创建新的交换机,可以单击前往控制台创建

    日志服务

    选中使用日志服务(SLS),为您开通日志服务SLS并开启网关日志投递功能,提供日志分析和仪表盘。相关内容,请参见开启网关日志投递

    服务关联角色

    已自动创建。允许云原生API网关访问其他云产品等服务。

    说明

    网关创建过程可能需要5~10分钟时间,请您耐心等待。

  5. 返回实例管理页面,查看创建的网关信息和状态。

    当网关信息和创建时一致,且状态运行中,则表示网关创建成功。

步骤二:关联服务来源

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例管理,并在顶部菜单栏选择地域。

  3. 实例管理页面,单击目标网关实例名称。

  4. 在左侧导航栏,单击路由管理,然后选择来源页签。

  5. 单击创建来源。在创建来源面板,配置相关参数,然后单击确定

    支持容器服务MSE Nacos服务来源。

    • 当服务来源选择容器服务时,需配置以下参数:

      配置项

      说明

      ACK/ACK Serverless 集群

      选择后端服务所在的集群。

      说明

      您在创建网关时需要选择和后端集群相同的VPC,那么服务来源添加时会自动获取该VPC下的集群。

      监听K8s Ingress

      • 开启监听Ingress配置后,云原生API网关会自动监听Ingress资源的变化,并使Ingress资源中域名、路由的相关配置生效。

      • 关闭监听Ingress配置后,云原生API网关会放弃监听Ingress资源,并失效之前已监听的Ingress资源中的域名、路由相关配置,请您谨慎操作。

      重要

      通过管控手动配置的域名、路由的相关配置,其优先级高于Ingress资源。

      IngressClass

      监听关联指定IngressClass的Ingress资源。

      • 当配置成空值时,监听集群中所有的Ingress资源。

      • 当配置成具体值时(仅支持单个值,暂不支持批量配置),监听集群中带有class注解或者Spec.IngressClassName的值与配置值一致的Ingress资源。例如,当配置成nginx时,监听的Ingress资源包括:IngressClass为nginx或者未关联任何IngressClass的Ingress资源。

      监听命名空间

      监听指定命名空间的Ingress资源。

      • 当配置成空值时,监听集群中所有命名空间中的Ingress资源。

      • 当配置成具体值时(仅支持单个值,暂不支持批量配置),监听集群中指定命名空间中的Ingress资源。

      更新IngressStatus

      开启更新IngressStatus后,被监听的Ingress的Status中IP地址会被修改为云原生API网关关联的SLB IP地址。

      安全组授权

      容器集群的节点池上配置有安全组。通常情况下,集群外的组件要想访问到集群内的服务,就必须在安全组上开放服务所需的全部端口。

      您可以对安全组进行修改。具体操作,请参见设置安全组规则

    • 当服务来源选择MSE Nacos时,需配置以下参数:

      配置项

      说明

      Nacos 集群

      选择集群。

      说明

      只展示MCPEnabled = true的MSE Nacos实例,可在MSE Nacos参数设置中更改。

步骤三:添加服务

说明

建议您从服务来源添加服务,以便网关能够动态获取您的后端服务列表。

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例管理,并在顶部菜单栏选择地域。

  3. 实例管理页面,单击目标网关实例名称。

  4. 在左侧导航栏,单击路由管理,然后选择服务页签。

  5. 在页面左上角单击创建服务。在创建服务面板,配置服务相关参数,然后单击确定

    • 服务来源选择容器服务时,需要配置以下配置项:

      说明

      如果在网关中添加了容器服务作为服务来源,网关会从ACK/ACK Serverless集群获取服务列表,将服务列表中的服务及其后端节点地址添加到网关中。

      配置项

      说明

      命名空间

      选中集群的命名空间。

      默认不展示arms-prom、kube-system和mse-pilot命名空间的服务。

      服务列表

      在服务列表中选择服务。

    • 服务来源选择MSE Nacos时,需要配置以下配置项:

      配置项

      说明

      命名空间

      选中集群的命名空间。

      服务列表

      在服务列表中选择服务。

      默认不展示以consumers开头的服务。

    • 服务来源选择FC 函数计算时,需要配置以下配置项:

      配置项

      说明

      服务名称

      选择函数所在的服务名称。

      版本或别名

      选择函数所在的服务的版本或别名。

      函数列表

      在函数列表中选择函数。

    • 服务来源选择固定地址时,需要配置以下配置项:

    • 说明

      如果该服务没有服务发现机制,需要手动添加服务的后端节点地址。

      配置项

      说明

      服务名称

      自定义服务名称。

      服务地址

      服务的后端节点地址,不同来源的服务的后端节点有所不同,但格式均为<后端节点IP>:<服务端口>,多个节点通过换行分隔。

      TLS模式

      通过下拉框选择TLS模式。默认选择关闭TLS模式。

      • 关闭:访问服务时,无需开启TLS。

      • 单向TLS:需要使用HTTPS访问服务时开启单向TLS。

      • 双向TLS(mTLS):需要做双向认证时开启mTLS。

    • 服务来源选择DNS 域名时,需要配置以下配置项:

    • 说明

      云原生API网关支持根据DNS解析的结果作为后端服务地址。

      配置项

      说明

      服务名称

      自定义服务名称。

      服务端口

      域名提供服务的端口。支持1~65535的任意端口。

      域名列表

      输入域名,例如:www.aliyun.com。多个域名通过换行分隔。

      TLS模式

      通过下拉框选择TLS模式。默认选择关闭TLS模式。

      • 关闭:访问服务时,无需开启TLS。

      • 单向TLS:需要使用HTTPS访问服务时开启单向TLS。

      • 双向TLS(mTLS):需要做双向认证时开启mTLS。

    说明

    云原生API网关不会修改您的请求,当请求转发到后端域名服务时,并不会将Host重写为您配置的域名。如果您需要配置域名,请参见配置重写策略

步骤四:为服务配置路由规则

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例管理,并在顶部菜单栏选择地域。

  3. 实例管理页面,单击目标网关实例名称。

  4. 在左侧导航栏,单击路由管理,然后在路由页签单击创建路由

  5. 创建路由页面,配置相关配置项,然后单击保存

    说明
    • 匹配规则之间是“与”关系,即填写的规则越多匹配的范围越小。

    • 路由之间匹配的优先级与路由配置页面展示排列顺序一致。

    配置项

    描述

    路由名称

    自定义路由名称。您还可以单击添加描述对路由进行说明。

    域名

    选择在路由需要匹配的域名,支持选择多个域名。

    如果您需要创建新的域名,可以直接单击创建域名,在面板中进行创建。

    匹配规则

    路径(Path)

    设置匹配HTTP请求中的Path参数。

    • 相同匹配规则时Path越长优先级越高。

    • 不同匹配规则时等于 > 前缀是 > 正则匹配

      • 等于:即完全匹配。例如,Path等于/user

      • 前缀是:以前缀作为匹配条件。例如,Path以/user开头。

      • 正则匹配:以正则表达式作为匹配条件。

    方法(Method)

    设置匹配HTTP请求中的Method参数。支持选择多种HTTP方法,默认为ANY。

    请求头(Header)

    设置匹配HTTP请求中的Header参数,相同匹配规则时参数越多优先级越高。

    请求参数(Query)

    设置匹配HTTP请求中的Query参数,相同匹配规则时参数越多优先级越高。

    使用场景

    选择当前路由的目标服务类型。

    • 基础场景:单服务

    • 灰度场景:多服务标签路由

    • 其他场景:Mock重定向

    关于目标服务不同类型说明,请参见路由方式概述

    说明

    涉及权重的目标服务流量比例总和要求为100%。

    后端服务

    选择已关联的后端服务和端口。

    说明
    • 您可以单击关联服务,在面板选择来源和服务。

    • 不同的来源类型允许添加的来源数量有不同的限制。

      • 容器服务不得超过5个。

      • Nacos和Zookeeper只能添加一个。

      • SAE无数量限制。

    Fallback

    设置Fallback服务,您需要选择指定的服务。当路由指向的后端服务没有可用节点时,原请求会访问此处指定的Fallback服务。

    说明

    目前仅支持HTTP服务之间的Fallback能力。

    超时时间(秒)

    输入超时时间。默认为60秒。如果为0,则表示永不超时。

    重试次数(次)

    输入重试次数。默认为2次。如果为 0,则表示禁用重试。

    重试条件

    选择重试条件。

    重试状态码

    添加重试状态码,可添加多个。

后续步骤

完成上述步骤后,您就为部署在容器服务ACK中的微服务开启了云原生API网关管理。登录云原生API网关控制台,即可使用云原生API网关对您的应用进行服务管理。