操作场景
您需要将服务添加到云原生 API 网关中,以便网关能查找对应的服务地址从而实现动态代理。云原生 API 网关支持添加 K8S 服务、注册中心、IP 列表、域名/IP、私有域名、云函数几种类型的服务。本文介绍如何为云原生网关添加服务并验证服务转发效果。
操作步骤
添加服务
1. 登录 微服务引擎控制台。
2. 在左侧导航栏单击路由管理,在页面上方选择好实例后,单击服务页签,在服务列表单击新建。
3. 在新建服务窗口中配置相关参数。
参数 | 是否必填 | 说明 |
服务名称 | 是 | 输入服务名称。 |
来源类型 | 是 | 服务来源类型,支持 K8S 服务、注册中心、IP 列表、域名/IP、私有域名、云函数几种类型。 |
当服务来源为 K8S 服务时,填写以下参数:
参数 | 是否必填 | 说明 |
服务来源 | 是 | 选择已创建的容器服务来源。 |
命名空间 | 是 | 输入命名空间名称。 |
服务列表 | 是 | 填写需要访问的容器服务列表,多个服务使用换行分隔。 |
服务协议 | 是 | 网关请求后端服务使用的协议,支持 HTTP/WS、HTTPS/WSS、TCP、UDP。 |
请求路径 | 是 | 后端服务的请求路径。 |
服务端口 | 否 | 后端服务的端口,支持1~65535的任意端口。 |
超时时间 | 是 | 连接建立、写入和读取后端返回的最大超时时间 |
重试次数 | 是 | 与后端服务建立连接的最大重试次数。 |
当服务来源为注册中心时,填写以下参数:
参数 | 是否必填 | 说明 |
服务来源 | 是 | 选择已创建的服务来源。 |
命名空间 | 是 | 当来源产品为 Nacos/PolarisMesh 时,输入命名空间 ID。注意:Nacos 默认命名空间请填写 empty_ns。当来源产品为 TSF 注册中心时,下拉选择命名空间。 |
服务列表 | 是 | 当来源产品为 Nacos/PolarisMesh/Consul 时填写需要访问的服务列表,多个服务使用换行分隔。针对不同注册中心,服务列表书写方式为: Nacos:{Nacos分组}__{服务名称}注意:Nacos 分组与服务名称之间使用两个下划线(_)分割 Consul:{服务名称} Polaris Mesh:{服务名称} 当来源产品为 TSF 注册中心时,下拉选择单个微服务名称。 |
服务协议 | 是 | 网关请求后端服务使用的协议,支持 HTTP/WS、HTTPS/WSS、TCP、UDP。 |
请求路径 | 是 | 后端服务的请求路径。 |
超时时间 | 是 | 连接建立、写入和读取后端返回的最大超时时间。 |
重试次数 | 是 | 与后端服务建立连接的最大重试次数。 |
当服务类型为 IP 列表时,需要填写以下参数:
参数 | 是否必填 | 说明 |
地址列表 | 是 | 填写后端服务节点的 IP、端口、权重信息。 |
CVM 弹性伸缩 | 否 | 开启后,Kong 将自动关联所选伸缩组对应的 CVM 实例。 伸缩组:勾选同 VPC 网络下的弹性伸缩组。关联后,Kong 将在弹性伸缩组创建生命周期挂钩,以及在云服务器-我的命令创建弹性伸缩命令,对上述资源的修改和删除将导致伸缩失效。 伸缩组端口:填写伸缩组端口。 |
服务协议 | 是 | 网关请求后端服务使用的协议,支持 HTTP/WS、HTTPS/WSS、TCP、UDP。 |
请求路径 | 是 | 后端服务的请求路径。 |
超时时间 | 是 | 连接建立、写入和读取后端返回的最大超时时间。 |
重试次数 | 是 | 与后端服务建立连接的最大重试次数。 |
当服务类型为域名/IP 时,需要填写以下参数:
参数 | 是否必填 | 说明 |
服务地址 | 是 | 支持填写 IP 或域名,例如:10.0.0.1或 www.tencent.com。 |
服务端口 | 是 | 后端服务的端口,支持1~65535的任意端口。 |
服务协议 | 是 | 网关请求后端服务使用的协议,支持 HTTP/WS、HTTPS/WSS、TCP、UDP。 |
请求路径 | 是 | 后端服务的请求路径。 |
超时时间 | 是 | 连接建立、写入和读取后端返回的最大超时时间。 |
重试次数 | 是 | 与后端服务建立连接的最大重试次数。 |
当服务类型为云函数时,需要填写以下参数:
参数 | 是否必填 | 说明 |
函数类型 | 是 | 事件函数或者 Web 函数。 |
命名空间 | 是 | 选择函数所在的命名空间。 |
函数 | 是 | 选择函数。 |
版本/别名 | 是 | 选择函数所在的服务版本或者别名。 |
CAM 鉴权 | 是 | 默认开启,网关转发请求到云函数进行 CAM 鉴权。 |
超时时间 | 是 | 连接建立、写入和读取后端返回的最大超时时间。 |
重试次数 | 是 | 与后端服务建立连接的最大重试次数。 |
当服务来源为 私有域名时,填写以下参数:
参数 | 是否必填 | 说明 |
服务来源 | 是 | 选择已创建的腾讯云私有解析来源。 |
私有域名 | 是 | 填写服务的私有域名。 |
服务端口 | 是 | 填写需要访问的容器服务列表,多个服务使用换行分隔。 |
服务协议 | 是 | 网关请求后端服务使用的协议,支持 HTTP/WS、HTTPS/WSS、TCP、UDP。 |
请求路径 | 是 | 后端服务的请求路径。 |
超时时间 | 是 | 连接建立、写入和读取后端返回的最大超时时间。 |
重试次数 | 是 | 与后端服务建立连接的最大重试次数。 |
说明:
1. 网关仅对 SRV记录、A记录、CNAME 记录类型进行解析。
2. 如果 SRV 记录已填写端口,控制台输入端口会覆盖 SRV 记录的端口内容。
4. (可选)配置高级参数。
负载均衡算法:支持选择轮询和最小连接数。
慢启动:开启后,服务对应的节点将在慢启动时间内,将权重从1逐步增加到目标值。若引擎版本较低,可能不支持使用此功能,建议前往实例基本信息页面升级引擎版本。
说明:
支持在容器服务集群中修改 YAML 配置慢启动,增加 annotation:
annotations:tse.konghq.com/TSE-Upstream-SlowStart: "30"
5. 添加后,查看服务列表,可以看到添加的服务,单击服务名称,可以查看详细的服务信息。
编辑服务
单击操作 > 编辑,修改服务信息,确认后即可。
删除服务
单击操作 > 删除,确认是否删除服务。确认后将删除服务。
添加路由
1. 登录 微服务引擎控制台。
2. 在左侧导航栏单击路由管理,在页面上方选择好实例后,单击服务页签。
3. 点击要配置的服务名称,进入服务路由管理页面。
4. 在左上角单击新建,填写路由基本信息。
当后端请求协议为 HTTP、HTTPS 时,需要配置的参数如下:
参数 | 是否必选 | 说明 |
路由名称 | 否 | 路由名称允许为空,支持中文,英文大小写,数字,-_~ |
请求协议 | 是 | 支持 HTTP&HTTPS、HTTPS、HTTP |
匹配规则 | 是 | 请求方法、请求路径、Host 需至少配置一种;Header 可选配置。 |
Strip Path | 否 | 当通过请求路径匹配到路由时,从后端服务请求 URL 中去除匹配前缀。默认开启。 |
保留 Host | 否 | 请求后端时是否使用请求 Host,默认关闭 |
说明:
1. 如需配置正则路由,只需将请求路径配置为正则表达式即可。
2. Host 大小写敏感。
当后端请求协议为 TCP/UDP 时,填写路由名称和请求端口即可。
5. 单击下一步,进入路由后端配置,确认后端服务信息无误后提交。
单服务:表示当前路由转发请求到后端单个服务。
多服务:暂不支持多服务。
6. 单击提交,完成路由创建,在路由管理 > 路由列表页面,可以看到创建好的路由,代表创建成功。
7. 在路由列表右上角,您可以切换至 YAML 视图查看信息,
验证请求转发
发起 API 请求,验证转发到注册中心/容器集群中的服务。
应用场景1:强制 HTTPS
场景说明
HTTPS 通过数字证书、加密算法以及非对称密钥等技术对信息进行加密处理,有效的保证了数据在传输过程中的安全性和完整性。在一些信息安全要求极高的场景下,需要实现只有 HTTPS 请求才能访问服务,如果是 HTTP 请求则需要完成 HTTP 到 HTTPS 的自动跳转,整个过程对用户来讲是透明的、无感知的。
操作方式
1. 创建/编辑路由指定请求协议为 HTTPS,设置重定向状态码为 301(即 Moved Permanently,永久重定向)。
2. 使用 HTTP 请求路由,可以看到请求返回 301 状态码(表示跳转),Location 重定向为 HTTPS 请求。