API网关为K8S容器应用集群提供强大的接入能力

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 我们可以看到Kubernetes集群是有足够理由作为应用服务的首选,但是Kubernetes集群没有足够的接入能力,特别在大型应用中,它是不能够直接对用户提供服务的,否则会有非常大的安全风险。而API网关作为成熟的云产品,已经集成了非常丰富的接入能力,把API网关放在Kubernetes集群前面作为应用集群的接入服务使用,将大大提高Kubernetes集群的服务能力,可以作为标准的大型互联网应用的标准架构。

1. Kubernetes 集群介绍

Kubernetes(k8s)作为自动化容器操作的开源平台已经名声大噪,目前已经成为成为容器玩家主流选择。Kubernetes在容器技术的基础上,增加调度和节点集群间扩展能力,可以非常轻松地让你快速建立一个企业级容器应用集群,这个集群主要拥有以下能力:

  • 自动化容器的部署和复制
  • 随时扩展或收缩容器规模
  • 将容器组织成组,并且提供容器间的负载均衡
  • 很容易地升级应用程序容器的新版本
  • 提供容器弹性,如果容器失效就替换它

下面是一个典型的Kubernetes架构图:
image

2. API网关作为Kubernetes集群的接入层架构

我们可以看到Kubernetes集群是有足够理由作为应用服务的首选,但是Kubernetes集群没有足够的接入能力,特别在大型应用中,它是不能够直接对用户提供服务的,否则会有非常大的安全风险。而API网关作为成熟的云产品,已经集成了非常丰富的接入能力,把API网关放在Kubernetes集群前面作为应用集群的接入服务使用,将大大提高Kubernetes集群的服务能力,可以作为标准的大型互联网应用的标准架构。下面是使用阿里云架构图:

_

从架构图中我们可以看到,API网关作为Kubernetes集群的桥头堡,负责处理所有客户端的接入及安全工作,API网关和Kubernetes集群中每个服务的内网SLB进行通信。

3. API网关接入能力

读者要问了,接入了API网关具体能为整个架构带来哪些好处呢?下面我们列一下这种架构中,API网关具体能给整个应用带来什么价值。

1.API网关允许客户端和API网关使用多种协议进行通信,其中包括:

* HTTP  
* HTTP2  
* WebScoket

2.API网关使用多种方法保证和客户端之间的通信安全:


* 允许定义API和APP之间的授权关系,只有授权的APP允许调用;
* 全链路通信都使用签名验证机制,包括客户端和API网关之间的通信和API网关和后端服务之间的通信,保证请求在整个链路上不会被篡改;
* 支持用户使用自己的SSL证书进行HTTPS通信;
* 支持OPENID CONNECT;

3.API网关具备iOS/Android/Java三种SDK的自动生成能力,并且具备API调用文档自动生成能力;

4.API网关支持入参混排能力,请求中的参数可以映射到后端请求中的任何位置;

5.API网关提供参数清洗能力,用户定义API的时候可以指定参数的类型,正则等规则,API网关会帮用户确认传输给后端服务的请求是符合规则的数据;

6.API网关支持流量控制能力,支持的维度为用户/APP/API;

7.API网关提供双向通信的能力;具体双向通信相关的使用规则请参考:https://help.aliyun.com/document_detail/66031.html

8.API网关提供基于请求数/错误数/应答超时时间/流量监控报警能力,所有的报警信息会使用短信或者邮件在一分钟内发出;

9.API网关已经和阿里云的SLS产品打通,用户可以将所有请求日志自动上传到用户自己的SLS中,后继好对访问日志进行统计分析;

10.API网关支持Mock模式,在联通中这个能力非常方便;

11.API网关支持用户自动以的IP白名单和黑名单;

12.API网关结合阿里云的云市场,为Provider提供向API使用者收费的能力。

阿里云的API网关是一个上线数年的成熟云产品,在稳定性和性能方面,经过了时间和阿里云的工程师的不断打磨,有高性能需求的用户尽管放马过来。

4. 在阿里云快速配置Kubernetes集群和API网关

阿里云支持快速创建Kubernetes集群,同一个Region内的Kubernetes集群和API网关的集成也非常简单,下面我们来一步一步地在阿里云中配置出本文第二节中架构设计。我们假设要创建的目标集群是一个Tomcat集群,同时有6个容器对外服务,对外服务的接口是8080。

4.1 创建Kubernetes集群,生成具备内网SLB的服务

首先我们来通过yaml文件创建一个具备内网SLB的Kubernetes集群。

4.1.1 在控制台创建一个Kubernetes

1.进入Kubernetes集群管理控制台界面:https://cs.console.aliyun.com/#/k8s/cluster/list

2.点击左上角“创建Kubernetes集群”按钮,进入
create_kubernetes

3.在创建集群页面选择不同的规格
create_kubernetes2

4.创建成功后可以在Kubernetes列表页面看到刚才创建的集群。

4.1.2 在Kubernetes集群内创建一个多容器的服务

现在集群有了,我们需要在集群内创建一个服务,这个服务由6个容器组成,每个容器都由最新的Tomcat镜像生成。容器的服务端口是8080,整个服务对外服务的端口也是8080。

1.进入Kubernetes集群管理控制台界面:https://cs.console.aliyun.com/#/k8s/cluster/list
2.选在刚才创建的Kubernetes集群,点击“控制台”链接:
create_kubernetes3

3.进入Kubernetes集群的控制台页面后,点击左边菜单栏的“服务”按钮,进入服务页面后,点击右上角的“创建”按钮进入创建页面:
create_kubernetes4

4.进入创建页面后,点击使用文本创建按钮,输入下面的资源编排文本点击上传按钮进行创建:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tomcat-demo
spec:
  replicas: 6
  selector:
    matchLabels:
      app: tomcat-demo
  template:
    metadata:
      labels:
        app: tomcat-demo
    spec:
      containers:
      - name: tomcat-demo
        image: tomcat:latest
        ports:
        - containerPort: 8080

---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-demo
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
spec:
  ports:
  - port: 8080
    targetPort: 8080
    name: tomcat-demo
  selector:
    app: tomcat-demo
  type: LoadBalancer

对这段编排模板创建文本做下解释:

  1. 第一段是使用最新的Tomcat镜像创建6个容器的意思,容器的服务端口是8080;
  2. 第二段是将所有标签为“tomcat-demo”的容器,建立一个服务。服务使用内网SLB对外提供服务。

具体的Kubernetes容器管理编排语法,请参加文档:

https://help.aliyun.com/document_detail/66436.html

另外,所有资源编排的模板执行都可以在“容器服务”,使用模板这个页面去执行部署,在这个页面有所有的资源模板,可以改后即发:

create_kubernetes6

好了,目前为止,我们已经创建了一个Kubernetes集群,并且在这个集群下面创建了六个容器,每个容器上面跑着一个最新的Tomcat。这六个容器组成一个服务,使用内网SLB对内网提供服务。我们可以进入服务详情页面看到整个服务的运行情况:

create_kubernetes5

需要注意的是,我们外部服务的地址是一个VPC地址,是不可以直接在API网关上配置的,下面我们看看对于VPC的内网地址如何在API网关上配置。

4.2 在API网关创建Kubernets集群的API

4.2.1 创建VPC授权

API网关如果要访问VPC内的SLB,需要增加VPC网络的授权,首先我们需要准备VPC的标识和内网SLB的示例ID,我们可以在VPC控制台获取:

1.登录VPC控制台(vpcnext.console.aliyun.com),找到刚才创建Kubernetes服务时自动创建的VCP,点击进去查看详情,我们可以在这个页面看到VPC的标识:

vpc01

2.我们点击SLB实例,进入SLB列表页面,然后点击进入SLB实例详情页面,我们可以在这个页面找到SLB的实例ID:
vpc02

好了,目前我们已经获取到了VPC的ID和SLB的实例ID,下面我们来创建API网关的授权:

3.进入API网关授权页面:https://apigateway.console.aliyun.com/#/cn-beijing/vpcAccess/list ,点击右上角的创建授权按钮,弹出创建VPC授权的小页面,将刚才查询到的VPC标识和SLB实例ID填入到对应的内容中:

vpc03

点击确认按钮后,授权关系就创建好了。

4.2.1 创建API

在API网关控制台创建API的时候,后端服务这块,我们需要选择刚才创建的VPC授权关系,然后API的请求就会直接发送到刚才创建的内网SLB上去了。

vpc04

API定义的其他字段的描述请参阅文档:
https://help.aliyun.com/document_detail/29478.html

4.3 调用测试

API建立好了以后,我们把API发布到线上就可以使用API网关的测试工具进行测试,看看能否将请求发送到刚才创建的Kubernetes集群中去。
我们进入刚才创建好的API的详情页面,点击左侧菜单中的调试API,进入调试页面。在调试页面填写好相应的参数,点击“发起请求”按钮。

invoke

我们可以看到,请求发送到了Kubernetes的集群中的容器中,并且收到了容器中tomcate的200的应答。

5 总结

让我们总结一下本文的内容,在前三节中,我们描述了Kubernetes集群和API网关的各项能力,并且画出了结合他俩作为后端应用服务生产的架构图。我们结合API网关+Kubernetes集群的架构替代了传统的Nginx(Ecs)+Tomcat(Ecs)(如下图),让系统具备了动态伸缩,动态路由,支持多协议接入,SDK自动生成,双向通信等各项能力,成为可用性更高,更灵活,更可靠的一套架构。

2

在最后一节,我们描述了在阿里云的公有云如何创建一整套API网关加Kubernetes的流程,关键点在于Kubernetes集群通过VPC中的SLB结合容器做服务发现,API网关绑定VPC中的SLB,将所有请求发送到SLB上。下面我们再总结一下:

  • 创建一个Kubernetes的集群;
  • 使用资源编排命令,在Kubernetes集群中创建六个运行这最新版本的Tomcat的容器,并且基于这六个容器创建一个VPC内负载均衡(SLB)的服务;
  • 到VPC内找到VPC的ID和SLB的实例ID,在API网关创建一个VPC授权;
  • 在API网关创建一些列API,后端服务使用刚才创建的VPC授权。这些API的请求将发送到Kubernetes集群的SLB上,由SLB分发给容器内部的Tomcat服务上。

P.S: 本文系转载,原文由fredlong 首发于《API网关为K8s容器应用集群提供强大的接入能力

目录
相关文章
|
2月前
|
数据挖掘 API 开发者
深度解析!淘宝商品详情 API 接口的高效调用与实战应用
淘宝商品详情API为开发者提供高效获取商品信息的途径,支持名称、价格、销量等详细数据的提取。接口通过GET/POST请求方式调用,需携带商品ID与授权信息(如AppKey)。其特点包括数据全面、实时性强及安全性高,满足电商应用、数据分析等需求。本文还提供了Python调用示例,涵盖签名生成、参数构建及请求发送全流程,助力开发者快速集成淘宝商品数据至自身系统中。
|
2月前
|
JSON 数据挖掘 API
1688API最新指南:商品详情接口接入与应用
本指南介绍1688商品详情接口的接入与应用,该接口可获取商品标题、价格、规格、库存等详细信息,适用于电商平台开发、数据分析等场景。接口通过商品唯一标识查询,支持HTTP GET/POST请求,返回JSON格式数据,助力开发者高效利用1688海量商品资源。
|
3月前
|
存储 供应链 监控
1688商品数据实战:API搜索接口开发与供应链分析应用
本文详细介绍了如何通过1688开放API实现商品数据的获取与应用,涵盖接入准备、签名流程、数据解析存储及商业化场景。开发者可完成智能选品、价格监控和供应商评级等功能,同时提供代码示例与问题解决方案,确保法律合规与数据安全。适合企业开发者快速构建供应链管理系统。
|
24天前
|
搜索推荐 API UED
淘宝/天猫获得淘宝app商品详情原数据 API 返回值的应用
该API专注于商品信息整合与展示,提供基础信息抓取、多媒体内容整合等功能,助力实时同步商品数据,构建丰富的详情页。同时支持数据分析与市场洞察,包括销售趋势分析和竞品对比,优化库存与定价策略。此外,动态促销管理和个性化推荐系统可提升营销效果,而实时库存预警和评价数据可视化则显著增强用户体验,为用户决策提供透明依据,全面提升平台竞争力与用户满意度。
|
24天前
|
API 监控 双11
淘宝/天猫获取商品历史价格信息 API 返回值的应用
本内容介绍了一款基于API的工具的核心功能,涵盖消费者决策支持、商家运营优化、市场趋势分析及数据服务拓展四大方面。消费者可借助历史价格曲线判断价格合理性、选择最佳购买时机;商家可通过竞品数据分析优化定价策略与促销活动;第三方平台能监测价格波动、跟踪竞品动态以洞察市场趋势。此外,工具还支持比价工具开发与价格预警服务,为用户和企业带来全方位的价格智能解决方案。
|
14天前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
|
14天前
|
搜索推荐 数据挖掘 API
权威解读:淘宝/天猫商品描述API返回值在电商领域的创新应用
本文全面解析淘宝/天猫商品描述API返回值的应用价值,涵盖核心内容、应用场景、技术实现与合规要求。API提供商品详情、价格、图片等数据,助力构建商品页、优化SEO、支持数据分析与个性化推荐。通过高效技术和实战案例,展示其在电商运营中的重要作用,帮助开发者挖掘电商业务增长潜力。
|
14天前
|
边缘计算 API 决策智能
淘宝/天猫商品详情API返回值深度解析:应用价值与实战策略
本文深入解析淘宝/天猫商品详情API返回值的应用价值,涵盖核心字段、技术架构、应用场景与合规要求四大维度。从num_iid到skus,详解数据结构;通过分布式架构与边缘计算优化性能;探讨自动化调价、精准推荐等商业场景;并强调合规调用与开发者工具支持。助力企业提升运营效率与用户体验,在电商竞争中抢占先机。
|
14天前
|
搜索推荐 API 数据安全/隐私保护
淘宝电商API应用实战指南,手把手教你玩转电商!
本文详细解析了淘宝电商API的应用方法,涵盖商品详情、订单处理、用户分析及营销推广等核心功能。通过自动化管理和数据驱动决策,商家可提升运营效率与用户体验。文章还提供了Python实战代码示例,帮助开发者快速接入与调用API。遵守安全规范并优化策略,将助力商家在竞争中脱颖而出,实现电商智能化升级。
|
2月前
|
人工智能 数据可视化 API
开箱即用的可视化AI应用编排工具 Langflow,可调用魔搭免费API作为tool
ModelScope 社区基于优秀的开源可视化AI应用编排工具 Langflow 搭建了创空间,以方便社区开发者基于社区开源模型及免费魔搭 API-Inference,快速创建Agent应用、RAG应用并将其部署为API服务。
287 14

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多