ambassador 学习三 限速处理
与认证类似ambassador 也是委托给三方的其他服务进行限速处理
基本的环境安装可以参考相关文档,主要还是qotm 服务
官方参考实现的简单限速服务
--- apiVersion: v1 kind: Service metadata: name: example-rate-limit annotations: getambassador.io/config: | --- apiVersion: ambassador/v0 kind: RateLimitService name: ratelimit service: "example-rate-limit:5000" spec: type: ClusterIP selector: app: example-rate-limit ports: - port: 5000 name: http-example-rate-limit targetPort: http-api --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: example-rate-limit spec: replicas: 1 strategy: type: RollingUpdate template: metadata: labels: app: example-rate-limit spec: containers: - name: example-rate-limit image: agervais/ambassador-ratelimit-service:1.0.0 imagePullPolicy: Always ports: - name: http-api containerPort: 5000 resources: limits: cpu: "0.1" memory: 100Mi kubectl apply -f example-rate-limit.yaml
部署状态
服务配置
--- apiVersion: v1 kind: Service metadata: name: qotm annotations: getambassador.io/config: | --- apiVersion: ambassador/v0 kind: Mapping name: qotm_mapping prefix: /qotm/ service: qotm rate_limits: - descriptor: A test case headers: - "x-ambassador-test-allow" spec: type: ClusterIP selector: app: qotm ports: - port: 80 name: http-qotm targetPort: http-api kubectl apply -f service-config.yaml
测试服务
- 测试脚本
curl -v -H "x-ambassador-test-allow: probably" http://localhost:32190//qotm/quote/1