目前,行业内基于云原生思想的开源项目,重点在于管理、控制微服务以及微服务架构下服务之间的通信问题。它们有效的解决了“服务异构化”、“动态化”、“多协议”场景所带来的east/west流量的管控问题,而针对north/south的流量控制仅仅提供了ingress/egress做流量入口,出口的管理。

为了解决云原生环境下的north/south流量控制问题,Ambassador开始走入大家的视线。Ambassador是一个网关,其中以Enovy作为具体策略的执行者,Ambassador抽象到控制平面,下发一些的网关控制指令。具体架构如下所示:

从架构图能够清晰的看到,Ambassador以Enovy基础扩展而来,实现思路上同样采取“控制平面”、数据平面想分离的设计思想。在容器生态环境下,无论是对kubernetes的traefik,还是istio下的Ingress-gateway都是强有力的扩展。

Ambassador有哪些特性呢?

异构化服务支撑

云原生架构下各个服务要求只要遵循相同的通信规范即可,因此不再强调语言,架构等一致性问题。Ambassador恰好能够有效的把请求流量导入到异构下的各个服务,并且完成服务的请求的管理控制。

支持基于各个服务的配置,更能够进一步实现“超时”,“速率限制”,“身份验证策略”等网关级别的细粒度控制。

能够支持不同层级的通信协议,L7协议包括HTTP、HTTP/2、grpc、trpc-web、websocket,L4协议TCP。

动态服务

服务更新会导致应用程序不断变化。Ambassador能够友好的支撑云原生应用的动态特性,具备如下特性:

  • 允许在生产测试,支持不同的灰度发布策略

  • 细化可观察性指标,有力管控服务行为

  • 配置信息的无感之变更,不会对最终用户产生影响

分散工作流程

云原生的应用下,允许不同的服务开发针对其自身的服务进行优化。

Ambassador为了满足这个特性,能够允许各个开发团队自身维护自己的服务,并且独立接入和使用Ambassador的配置信息,一改之前网关层统一配置变更思路,从而避免影响其他运行服务。

Ambassador部署

Ambassador提供了多种不同的部署方式来满足用户需求。包括kubernetes yaml部署,helm部署,docker image部署以及docker compose部署等。既可以作为独立的程序运行提供网关能力,同样能够与kubernetes,istio等云原生的框架集成,来充当入口流量的管理者。

以docker image部署说明Ambassador的部署配置。

docker run -it -d -p 8080:8080 --name=ambassador --rm quay.io/datawire/ambassador:0.73.0 --demo

查看Ambassador日志,确定运行情况。

AMBASSADOR: using '/ambassador/ambassador-demo-config' for configuration
AMBASSADOR: not watching for Kubernetes config
2019-07-17 08:22:55 kubewatch [9 TMainThread] 0.73.0 INFO: No K8s
2019-07-17 08:22:55 kubewatch [9 TMainThread] 0.73.0 DEBUG: cluster ID URL is d6e_id://00000000-0000-0000-0000-000000000000/default
2019-07-17 08:22:55 kubewatch [9 TMainThread] 0.73.0 DEBUG: Kubernetes is not available, so not doing CRD check
2019-07-17 08:22:55 kubewatch [9 TMainThread] 0.73.0 DEBUG: cluster ID is 07eb43c8-1166-5145-a060-45e4dd907e10 (from hardcoded ID)
AMBASSADOR: starting with environment:
====
AMBASSADOR_CLUSTER_ID=07eb43c8-1166-5145-a060-45e4dd907e10
AMBASSADOR_CONFIG_BASE_DIR=/ambassador
AMBASSADOR_NAMESPACE=default
AMBASSADOR_NO_KUBEWATCH=no_kubewatch
AMBASSADOR_ROOT=/ambassador
====
AMBASSADOR: launching worker process: 'env' 'PORT=5050' 'python3' 'demo-services/auth.py'
AMBASSADOR: launching worker process: 'python3' 'demo-services/qotm.py'
AMBASSADOR: starting ads
…………
08:24:00] "GET /auth/v0//ambassador/v0/favicon.ico HTTP/1.1" 200 -
ACCESS [2019-07-17T08:23:59.084Z] "GET /ambassador/v0/diag/ HTTP/1.1" 200 - 0 17012 69 62 "10.20.50.164" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "7481ee18-307e-4d23-9c82-e0a623389655" "10.20.1.180:8080" "127.0.0.1:8877"
ACCESS [2019-07-17T08:24:00.254Z] "GET /ambassador/v0/favicon.ico HTTP/1.1" 401 UAEX 0 57 4 - "10.20.50.164" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "0013e864-1128-4e03-8814-49ed6e498d11" "10.20.1.180:8080" "-"
ACCESS [2019-07-17T08:24:00.259Z] "GET /ambassador/v0/favicon.ico HTTP/1.1" 200 - 0 1150 8 4 "10.20.50.164" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "9b0702c0-3800-4447-90aa-6bebb5a711fb" "10.20.1.180:8080" "127.0.0.1:8877"

基于docker image启动时,ambassador采用默认的config配置信息完成初始化工作。

访问Ambassador:

http://{ip}:8080/ambassador/v0/diag/

初始化默认用户名admin,密码admin。能够正常的看到访问页面

Ambassador,云原生应用的“门神”的更多相关文章

  1. 《Kubernetes与云原生应用》系列之容器设计模式

    http://www.infoq.com/cn/articles/kubernetes-and-cloud-native-app-container-design-pattern <Kubern ...

  2. 初探云原生应用管理(二): 为什么你必须尽快转向 Helm v3

    系列介绍:这个系列是介绍如何用云原生技术来构建.测试.部署.和管理应用的内容专辑.做这个系列的初衷是为了推广云原生应用管理的最佳实践,以及传播开源标准和知识.在这个系列文章的开篇初探云原生应用管理(一 ...

  3. 云原生生态周报 Vol. 14 | K8s CVE 修复指南

    业界要闻 Mesosphere 公司正式更名为 D2IQ, 关注云原生. Mesosophere 公司日前发布官方声明正式更名为:D2iQ(Day-Two-I-Q),称关注点转向 Kubernetes ...

  4. 云原生生态周报 Vol. 6 | KubeCon EU 特刊

    5 月 26日,2019 年第一个 KubeCon + CloudNativeCon 在巴塞罗那成功闭幕.本届 KubeCon 共吸引了超过 7700 名与会者,相较去年哥本哈根大会的 4300 余名 ...

  5. Nocalhost 为 KubeSphere 提供更强大的云原生开发环境

    作者简介 张海立(驭势科技云平台研发总监):开源爱好者,云原生社区上海站 PMC 成员,KubeSphere Ambassador:日常云原生领域工作涉及 Kubernetes.DevOps.可观察性 ...

  6. API 管理在云原生场景下的机遇与挑战

    作者 | 张添翼 来源 | 尔达Erda公众号 ​ 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...

  7. 云原生之旅 - 8)云原生时代的网关 Ingress Nginx

    前言 当我们在Kubernetes部署的服务需要暴露给外部用户使用时,有三种选择:LoadBalancer,NodePort, Ingress. LoadBalancer类型得结合各个Cloud Pr ...

  8. 云原生之旅 - 9)云原生时代网关的后起之秀Envoy Proxy 和基于Envoy 的 Emissary Ingress

    前言 前一篇文章讲述了基于Nginx代理的Kuberenetes Ingress Nginx[云原生时代的网关 Ingress Nginx]这次给大家介绍下基于Envoy的 Emissary Ingr ...

  9. 为什么CynosDB叫真正的云原生数据库?

    本文由腾讯云数据库发表 注:本文摘自2018年11月22日腾讯云数据库CynosDB新品发布会的演讲实录.随着互联网信息的发展,大家也对云这个词汇也不是特别陌生了,作为全球首选的云服务厂商之一的腾讯云 ...

随机推荐

  1. 只言片语 - cell 图片复用问题

    一. 今日做项目遇到图片复用问题,返回cell高度相同,由于网络不好出现图片复用,发现问题   Cell 图片加载方法如下: - (void)sd_setImageWithURL:(NSURL *)u ...

  2. 转载几篇文章URL

    读了百伯在线Jobbole的几篇文章,转给需要的朋友.如下: 产品小设计大体验:http://blog.jobbole.com/39593/ 苹果是一家有工程师的设计公司:Google是一家有设计师的 ...

  3. vmware linux虚拟机忘记密码怎么办

    你又忘了root密码??? 针对好多好多同学经常忘记root密码...这里给你整理怎么重置root密码!! 重启 Linux 系统主机并出现引导界面时,按下键盘上的 e 键进入内核编辑界面 在 lin ...

  4. MyBatis从入门到精通(一):MyBatis入门

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. MyBatis简介 ​ 2001 ...

  5. 编写loadrunner的ftp脚本(详细步骤)

    大家好,主要给大家讲解编写loadrunner的ftp脚本详细步骤,及FTP函数注释,及FTP脚本两种编写方式,手动和录制.亲测 No problem!^_^ 1.首先要了解loadrunner中几个 ...

  6. Docker安装MySql-挂载外部数据和配置

    环境 CentOS:7 Docker:1.31.1 MySql:5.7   拷贝mysql配置文件 1.首先创建mysql容器 -p : -e MYSQL\_ROOT\_PASSWORD= -d my ...

  7. feign之间传递oauth2-token的问题和解决

    在微服务架构里,服务与服务之间的调用一般用feign就可以实现,它是一种可视化的rpc,并且集成了ribbon的负载均衡能力,所以很受欢迎. 授权服务 在授权服务里,用户通过用户名密码,或者手机和验证 ...

  8. Neo4j 爬坑笔记for3.2.6

    官网语法,非常详尽:http://neo4j.com/docs/developer-manual/current/cypher/clauses/match/ A:请对应版本号,不同大版本可能会有很大区 ...

  9. Spring 之Aop实现日志记录

    Aop实现见代码,简单demo实现 package com.idcos.automate.config; import com.idcos.automate.dal.auto.dao.dcos.Dco ...

  10. Centos7 系统初试化脚本

    系统初始化设置 # 设置主机名,永久修改,再次登陆生效 hostnamectl set-hostname xxxxx # 安装eprl源,常用命令 yum install -y wget && ...