You need to enable JavaScript to run this app.
导航

同步 Ingress 路由

最近更新时间2023.08.09 14:04:11

首次发布时间2023.08.09 10:41:01

API 网关支持对接容器服务 VKE,为 VKE 集群中的服务提供对外暴露的方式。相比传统的 Nginx Ingress 网关,API 网关可同时对接多个 VKE 集群,作为跨集群的流量入口。并且,API 网关具有更丰富的流量治理能力、更好的扩展性、更强的安全性、更优异的性能。本文为您介绍如何对接 Ingress,将您的 Ingress 路由同步至 API 网关。从而实现无缝迁移,使用 API 网关作为集群的流量入口。

说明

邀测·申请试用】同步 Ingress 路由为邀测功能,欢迎申请工单体验。

背景信息

Ingress 资源与 API 网关资源的对应关系如下:

Ingress 资源API 网关资源
host服务和自定义域名
backendVKE 类型 Upstream
rule路由

alt

前提条件

  • 已创建 API 网关实例,具体操作可参见 创建实例

  • 已导入待对接的 VKE 集群,具体操作可参见 导入集群

使用限制

  • 为了保证数据一致性,由 Ingress 同步的资源(即来源为 Ingress 的自定义域名、Upstream、路由),不支持在控制台操作。

  • Ingress host 与 path 的字符均不得超过 255,否则将同步失败。

  • Ingress host 不允许与网关控制台已有自定义域名相同。若 Ingress host 与网关已有自定义域名冲突,Ingress 将同步失败。

  • 如果您的 Ingress 路由与控制台路由规则存在冲突,则请求会被转发至更早创建的那条路由。

操作步骤

  1. 登录 API 网关控制台

  2. 在顶部导航栏,选择目标地域。

  3. 在左侧导航栏选择 后端管理 > 集群管理

  4. 在集群列表中,选择待同步 Ingress 路由的集群,单击 操作 列的 编辑

  5. 在导入集群页面,勾选 开启路由同步,并按要求配置以下信息。

    注意

    • 开启路由同步后,API 网关会自动监听 Ingress 资源的变化,并生效Ingress资源中的相关配置,将 Ingress 资源转义为服务、自定义域名、路由、Upstream 等资源合并至当前网关。

    • 关闭路由同步后,API 网关会放弃监听 Ingress 资源,并删除由 Ingress 同步过来的自定义域名、路由、Upstream 资源,请谨慎操作!

    alt

    配置项说明

    指定 ingressClass

    ingressClass 是 Ingress 处理器的描述,用于在 K8s 集群中声明一个 Ingress 处理器实现,关联该 IngressClass 的 Ingress 资源会被该 Ingress 处理器解析。
    本配置项用于指定要监听的 ingressClass 范围。指定后,API 网关将监听关联了指定 IngressClass 的 Ingress 资源。

    • 全部同步:监听当前集群中的所有 Ingress 资源。

    • 自定义范围:监听关联了指定 IngressClass 的 Ingress 资源,支持指定多个 IngressClass。具体将监听集群中 class 注解或Spec.IngressClassName的值与指定值一致的 Ingress 资源。

      选择自定义范围时,支持勾选 监听 ingressClass 为空的资源。勾选后,未关联任何 ingress class 的 ingress 资源也将被网关监听。

    指定命名空间

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

    • 全部同步:监听当前集群中所有命名空间下的 Ingress 资源。

    • 自定义范围:监听指定命名空间下的 Ingress 资源,支持指定多个命名空间。

    流量入口切换

    开启流量入口切换后,当前集群 Ingress 中 Status 的 IP 地址会被修改为当前网关的 IP 地址。
    配置路由同步后,您的 Ingress 网关和 API 网关将同时生效。如果您希望使用 API 网关作为集群的流量入口,请开启此开关,并前往您的域名解析商处,将您的域名解析至 API 网关的 IP 地址。

  6. 单击 确定,完成路由同步配置。

操作结果

API 网关会自动监听 Ingress 资源的变化,并将 Ingress 资源转义为服务,域名,Upstream 等资源合并至当前网关。

说明

当前最大支持同步 1000 条 Ingress 路由,同步一条路由的时间大约为 1 秒钟。

  • Ingress 中的 host 将转译为 API 网关下的服务与自定义域名。

    • 在左侧导航栏选择 路由管理 > 服务列表,在服务列表页面,命名为 Ingress 中 host 名称的服务,即为 Ingress 同步过来的服务。

    • 单击服务名称,进入服务概览页面。单击 域名管理,切换至域名管理页签,查看 Ingress 同步过来的自定义域名。

  • Ingress 中的 rule 将转译为 API 网关对应服务下的路由。

    • 在左侧导航栏选择 路由管理 > 服务列表,在服务列表页面,筛选所属实例,任选一条命名为 Ingress 中的 host 名称的服务,单击服务名称,进入服务概览页面。在路由信息列表中,来源类型为 Ingress 的路由,即为 Ingress 同步过来的路由。路由名称为 ${host}-${path}-${pathType}-${backend.service}

    alt

  • Ingress 中的 backend 将转译为 API 网关下的 VKE 类型 Upstream。

    • 在左侧导航栏选择 后端管理 > Uptream 列表,在 Uptream 列表页面,单击 Ingress,切换至 Ingress 页签,筛选所属实例,查看 Ingress 同步过来的 Uptream。

后续操作

  1. 对于 Ingress 同步过来的自定义域名,需要前往 DNS 服务商处 添加 CNAME 记录,将自定义域名指向 API 网关当前服务的默认域名。如果不添加 CNAME 记录,通过自定义域名发送的客户端请求,将无法正确解析至 API 网关。

  2. 对于 Ingress 同步过来的自定义域名,请检查是否完成 ICP 备案。若未完成 ICP 备案,外部流量将被封禁。