前言
本文仅代表作者的个人观点;
本文的内容仅限于技术探讨,不能作为指导生产环境的素材;
本文素材是红帽公司产品技术和手册;
本文分为系列文章,将会有多篇,初步预计将会有26篇。
一、实验背景
在本文中,我们将针对:API Management学习第一篇中编写的Restful API,进行纳管。
参考阅读:
通过Swagger管理API:API Management学习第一篇
在上一小节,我创建了一个restful API,运行在一个pod里,另外一个pod提供数据库。
测试product API服务是否接受请求并返回正确的响应:
返回结果:
二、3scale的安装
在本实验中,我们会利用3 scale做三件事情:
接下来,我们在现有的OCP上安装3 scale:
oc new-project $OCP_PROJECT_PREFIX-3scale-amp \ --display-name="3scale-amp" \ --description="3scale AMP component"
部署完毕后,pod如下:
登录刚安装好的3scale管理界面:
三、3scale上的基本配置
首先,定义一个API Service,该服务管理上一个实验中配置的Products API业务服务的访问权限。
接下来,创建application plan:
application plan用于授予对特定API和端点的访问权限,限制流量以及通过API使用获利。通过应用程序计划,您可以通过指定速率限制和定价规则来配置API的访问权限。所有申请必须与计划相关联。可以为API定义多个自定义应用程序计划。
接下来,创建另外一个application plan:
接下来,发布两个plan,并设置默认的plan:
定义帐户和用户
接下来,创建应用。
点击创建以后,app key会自动生成:
四、3scale上创建方法和映射
在本系列文章第一篇中,我们通过:http://editor.swagger.io,分析了api的swagger文件。接下来,我们可以使用对Products API的这种理解来定义3scale中的方法,并将这些方法映射到Products API公开的资源。
与此同时,在本实验的后续部分中,我们将使用这些方法来定义速率限制并收集每个Product API资源的利用率指标。
找到刚才创建的API,选择集成:
接下来,选择增加应用的URL。
定义新的metric和method:
增加新的method:
输入信息,创建新的方法:
按照同样的方法,再增加三个方法:
添加成功后,是这个样子:
接下来,创建mapping:
增加mapping如下:
接下来,再为剩下的三个方法增加映射:
增加完效果如下:
远程客户端将通过分配给的apicast阶段和生产服务的路由调用您的Products API。
3scale的默认安装包括到您的apicast服务的通用路由。 我们将删除这些通用路由,并替换为Products API更具体的路由。
创建edge路由:
分配API endpoint.
Private base URL: Route into the products API business service endpoint
这是其实是API 这个pod server的FQDN。
echo -en "\n\nhttp://products-api.david-products-api.svc.cluster.local:8080\n\n"
http://products-api.david-products-api.svc.cluster.local:8080
Staging public base URL: Route to the products APIcast staging endpoint
https://products-staging-apicast-david.apps.example.com:443
Production public base URL: Route to the products APIcast production endpoint
https://https://products-production-apicast-david.apps.example.com:443
API client:
成功:
五、限速
利率限制允许限制对API资源的访问。可以通过使用应用程序计划为单独的开发人员细分配置不同的限制。
一旦有了速率限制,这些限制就会控制开发人员在使用3scale对后端服务进行授权请求调用时收到的响应。限制在管理门户中配置,并在服务调用期间由APIcast网关强制执行。网关从3scale后端接收配置信息,其中包含每个服务中不同应用程序计划的速率限制。
步骤顺序如下:
在本实验中,您将在Products API的上下文中检查速率限制。
您将创建一个名为ProductsBasicPlan的ApplicationPlan。此应用程序计划仅启用产品API的某些方法。
在本课程的后续实验中,我们会创建一个不同的应用程序计划(名为ProductsPremiumPlan),该计划将启用产品API的所有方法。
在Red Hat管理员门户的3scale中,验证您是否已登录,然后单击API选项卡。
展开Products API。
单击已发布的应用计划
选择ProductsBasicPlan:
我们可以看到添加的
接下来,我们限制创建和删除
对get product限速:
每个小时最多访问5次:
给getallproduct也创建限速:
更新plan:
测试限速:
通过curl测试:
curl "https://products-staging-apicast-david.apps.example.com:443/rest/services/products?user_key=da52bbc0240a9e56cbb6d70d77364a3f"
curl第二次的时候,会有报错,因为限速是一分钟一次:
访问另外一个endpoint的限速效果类似:
魏新宇