K8s的api gateway---ambassador实操
对于api gateway,以前总是认知感觉和proxy差不多。
最近几天,撸完了ambassador的官方文档,才比较系统的了解了gateway的功能。
它和传统的nginx proxy或是k8s里的ingress还是有一定差别的。

近期准备在公司用起来。
一,Ambassador 是什么?
ambassador是datawire开源的服务网关,很好的支持kubernetes。具体详细介绍参考官网:https://www.getambassador.io/about/why-ambassador
Ambassador is an open source, Kubernetes-native API Gateway built on Envoy Proxy.
二,为什么先把Ambassador ?
网上关于K8S Ingress的比较文档:
http://tuohuang.info/ambassador-jwt-istio#.XVP-KfluaM8
https://juejin.im/post/5d4919ce5188251dff55b08f
https://www.lijiaocn.com/%E9%A1%B9%E7%9B%AE/2019/05/21/apigateway-base-envoy-compare.html
https://zhuanlan.zhihu.com/p/61364466
https://blog.csdn.net/hxpjava1/article/details/79375452
https://juejin.im/post/5bacb35b5188255c9e02dc71
http://www.sohu.com/a/314009713_465944
http://tuohuang.info/ambassador-jwt-istio#.XVtCjPkzbRY
三,安装过程
1, 预先下载好镜像,应用如下yaml文件
https://getambassador.io/yaml/ambassador/ambassador-rbac.yaml
2, 针对实际情况,启动nodePort作为service。
---
apiVersion: v1
kind: Service
metadata:
name: ambassador
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
selector:
service: ambassador
3, 测试nginx跳转
nginx.yaml内容如下(使用annotations 来进行声明式配置,方便分散管理。如果是default的命名空间,mapping中对应服务可省略.namespace后缀):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 1
selector:
matchLabels:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: harbor.xxx.com.cn/base/middleware/nginx:1.13-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: ngnix_mapping
prefix: /
service: nginx-service:80
---
apiVersion: ambassador/v1
kind: Mapping
name: nginx-backend_mapping
prefix: /backend/
service: nginx-service:80
labels:
ambassador:
- request_label:
- nginx
spec:
ports:
- name: nginx
port: 80
targetPort: 80
protocol: TCP
selector:
name: nginx
4, 测试tomcat跳转(request_label其实是在service多个port中来作过滤选择的)
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deploy
spec:
replicas: 2
selector:
matchLabels:
app: tomcat-deploy
template:
metadata:
labels:
app: tomcat-deploy
spec:
containers:
- name: tomcat
image: harbor.xxx.com.cn/official_hub/tomcat:8.5.23.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: tomcat-svc
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: Mapping
name: tomcat_mapping
prefix: /tomcat-svc
service: tomcat-svc.default:8080
---
apiVersion: ambassador/v1
kind: Mapping
name: tomcat-backend_mapping
prefix: /tomcat/
service: tomcat-svc.default:8080
labels:
ambassador:
- request_label:
- tomcat
spec:
ports:
- name: tomcat
port: 8080
targetPort: 8080
selector:
app: tomcat-deploy
5, 验证
根据几节的内容,分别访问如下几个url,检测其生效。
http://3.2.10.1:xxxx/ambassador/v0/diag/ http://3.2.10.1:30080/backend/hello.html http://3.2.10.1:30080/tomcat/
四,ambassador性能监控
1, zipkin作api调用性能分析
参考url:https://www.getambassador.io/user-guide/tracing-tutorial
---
apiVersion: v1
kind: Service
metadata:
name: zipkin
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: TracingService
name: tracing
service: zipkin:9411
driver: zipkin
spec:
selector:
app: zipkin
ports:
- port: 9411
name: http
targetPort: http
nodePort: 32764
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: zipkin
spec:
replicas: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: zipkin
spec:
containers:
- name: zipkin
image: harbor.xxx.com.cn/3rd_part/openzipkin/zipkin:2.16
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 9411
http://3.3.10.5:xxx/zipkin
2, Prometheus,grafana作api的性能展示
参考URL:https://www.getambassador.io/user-guide/monitoring
【这是基于prometheus operator安装的,可能要和现在整合】

K8s的api gateway---ambassador实操的更多相关文章
- 第7章使用请求测试-测试API . Rspec: everyday-rspec实操。
测试应用与非人类用户的交互,涵盖外部 API 7.1request test vs feature test 对 RSpec 来说,这种专门针 对 API 的测试最好放在 spec/requests ...
- ambassador kubernetes native api gateway
github 上的介绍: Ambassador is an open source Kubernetes-native API Gateway built on Envoy, designed for ...
- 动手实操(一):如何用七牛云 API 实现相片地图?
实操玩家: 在苹果手机上,我们只要打开定位服务,拍照后便能在相簿中找到地图,地图上显示着在各地拍摄的相片.网站上这种显示方式也并不少见,例如 Flickr.即将关闭的 Panoramio 等. 作为地 ...
- Appium常用Api实操
本文是基于python语言在android上实操的,仅记录(忽略排版~~~) 会不时更新的: from appium import webdriver from selenium.webdriver. ...
- Istio的流量管理(实操一)(istio 系列三)
Istio的流量管理(实操一)(istio 系列三) 使用官方的Bookinfo应用进行测试.涵盖官方文档Traffic Management章节中的请求路由,故障注入,流量迁移,TCP流量迁移,请求 ...
- Istio的流量管理(实操二)(istio 系列四)
Istio的流量管理(实操二)(istio 系列四) 涵盖官方文档Traffic Management章节中的inrgess部分. 目录 Istio的流量管理(实操二)(istio 系列四) Ingr ...
- Istio的流量管理(实操三)
Istio的流量管理(实操三) 涵盖官方文档Traffic Management章节中的egress部分.其中有一小部分问题(已在下文标注)待官方解决. 目录 Istio的流量管理(实操三) 访问外部 ...
- [转载] 构建微服务:使用API Gateway
原文: http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=206889381&idx=1&sn=478ccb35294c ...
- 微服务实战(二):使用API Gateway
微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...
随机推荐
- git clone克隆代码显示“无权限或者确认存储库是否存在”
今天我用公司的电脑要继续完成我自己的git上的小项目的时候,发现git clone失败,提示 然后我在公司电脑上生成公钥感觉又太麻烦了 网上找了个好方法就是把自己电脑上的.ssh文件夹拷贝到公司电脑上 ...
- centos7下安装配置prometheus
prometheus官网:https://prometheus.io/download/ 搭建环境参考:https://blog.csdn.net/baidu_36943075/article/det ...
- conda基础命令
1.首先在所在系统中安装Anaconda.可以打开命令行输入conda -V检验是否安装以及当前conda的版本. 2.conda常用的命令. 1)conda list 查看安装了哪些包. 2)con ...
- package.json文件配置详解
package.json 是npm init命令初始化后,在项目的根目录下自动生成的配置文件,它定义了这个项目的配置信息以及所需要的各种模块,npm install根据这个命令,自动下载所需的模块.p ...
- 【ECNU620】数学题(结论题)
点此看题面 大致题意: 求\((n-1)!\ mod\ n\)的值. 大力猜结论 首先,看到样例,我们可以猜测: 当\(n\)为质数时,答案为\(n-1\). 当\(n\)为合数时,答案为\(0\). ...
- Note | 论文写作笔记
目录 1. 规范 2. 语法 3. 其他 4. 好图好表 5. 好表达 我们的工作很重要 我们的工作有意义 我们的工作细节 我们怎么组织这篇文章 最终效果出类拔萃 怎么解释我们的成功 写完逐条核对吧. ...
- docker 通过中间镜像加速部署
概要 实施 修改前的实施时间 制作编译用的镜像 测试修改后的实施时间 概要 使用 docker 打包镜像的时候, 每次耗费时间最多的就是 docker build 的过程. 特别是对于前端工程的打包, ...
- 用 PHP 函数变量数组改变代码结构
项目越做越大,代码越来越乱,维护困难.原因很多吧.起初为了实现功能,并没有注重代码的结构,外包公司嘛.虽然公司的项目负责人一直考虑复用.封装,但是我觉得基本上没有达到想要的效果.因为整个代码中没有用到 ...
- [LeetCode#180]Consecutive Numbers
Write a SQL query to find all numbers that appear at least three times consecutively. +----+-----+ | ...
- 【01】Nginx:编译安装/动态添加模块
写在前面的话 说起 Nginx,别说运维,就是很多开发人员也很熟悉,毕竟如今已经 2019 年了,Apache 更多的要么成为了历史,要么成为了历史残留. 我们在提及 Nginx 的时候,一直在强调他 ...