云原生必备知识:Ambassador

简介: Ambassador是一个基于envoy proxy构建的,kubernetes原生的开源微服务网关。Ambassador在构建之初就致力于支持多个独立的团队,这些团队需要为最终用户快速发布、监控和更新服务。Ambassador还可以用来处理Kubernetes ingress和负载均衡的能力。

所属技术领域:

云原生

| 名词定义 |

Ambassador是一个基于envoy proxy构建的,kubernetes原生的开源微服务网关。Ambassador在构建之初就致力于支持多个独立的团队,这些团队需要为最终用户快速发布、监控和更新服务。Ambassador还可以用来处理Kubernetes ingress和负载均衡的能力。

| 技术特点 |

扩展性和可用性
Ambassador依靠Kubernetes实现扩展、高可用性和持久性。所有Ambassador配置都直接存储在Kubernetes中(etcd);没有数据库。Ambassador被打包成一个单独的容器,其中包含控制平面和一个Ambassador代理实例。默认情况下,Ambassador部署为kubernetes deployment,可以像其他kubernetes deployment一样进行扩展和管理。

| 相关词 |

Ambassador架构
如果是了解istio的同学,看到这张图会有十分熟悉的感觉,没错,Ambassador也是具有控制平面和数据平面的。数据平面自然是老伙计envoy,Ambassador的控制平面负责监听k8中的service资源的变化,并将配置下发envoy,实际的流量转发通过envoy来完成。(感觉就是一个轻量级的istio)
具体流程如下:

  1. 服务所有者在kubernetes manifests中定义配置(通过annotation或者CRD)。
  2. 当manifest应用到集群时,kubernetes api会将更改通知Ambassador。
  3. Ambassador解析更改并将配置转换为一种中间语义。envoy的配置由该IR生成。
  4. 新的配置通过基于gRPC的聚合发现服务(ADS)API传递给envoy。
  5. 流量通过重新配置的envoy,而不会断开任何连接。
    Ambassador的不足

Ambassador和同类的网关产品类似,分为社区版及商业版,社区版提供了最基础的路由、限速、TLS加密、跟踪、认证(需要自己实现external third party authentication service)等能力,但是微服务网关中十分重要的OAuth2集成认证、RBAC、custom filter等功能都是需要在pro版中才能实现,这是比较遗憾的一点。尤其是custom filter,根据我们目前的经验,一个能力完整、功能丰富的微服务网关,必然会引入custom filter。而custom filter也需要使用go进行编写,对于不熟悉go的开发人员来说也会比较痛苦。

资料来源:

1、 阿里云大学-视频网站
2、 简书-https://www.jianshu.com/p/d00af1d82300

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 Kubernetes 监控
云原生必备知识: etcd性能
决定etcd性能的关键因素,包括:  延迟( agency):延迟是完成操作的时间。  吞吐量 (throughput):吞吐量是在某个时间期间之内完成操作的总数量。当etcd接收并发客户端请求时,通常平均延迟随着总体吞吐量增加而增加。
1805 0
云原生必备知识: etcd性能
|
设计模式 Cloud Native 关系型数据库
云原生必备知识: Sidecar
sidecar是一种将应用功能从应用本身剥离出来作为单独进程的设计模式,可以允许向应用中无侵入的添加功能,避免为了满足第三方需求而添加额外的代码。 在软件架构中,sidecar附加到主应用,或者叫父应用上,以扩展/增强功能特性,同时sidecar与主应用是松耦合的。
5633 1
|
Kubernetes Cloud Native Java
云原生必备知识: 云原生
Pivotal是云原生应用的提出者,并推出了 Pivotal Cloud Foundry 云原生应用平台和 Spring 开源 Java 开发框架,成为云原生应用架构中先驱者和探路者。 云原生的概念历经了许多个版本的迭代,到了2015年Google主导成立了云原生计算基金会(CNCF),对云原生的定义为: 云原生(Cloud Native)技技术帮助企业和机构在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、 服务网格、微服务、不可变基础设施和声明式 API。
1835 0
云原生必备知识: 云原生
|
存储 Kubernetes 算法
云原生必备知识:调度算法(Scheduler)
调度器Scheduler是Kubernetes的重要组件之一。其作用是要将待调度的Pod依据某调度策略调度到最适合它运行的节点上运行。这里就涉及到三个对象:待调度的Pod、调度策略、待部署的节点队列。
2262 0
云原生必备知识:调度算法(Scheduler)
|
安全 Cloud Native Ubuntu
云原生必备知识: 容器镜像
容器运行时所需要的所有的文件集合称之为容器镜像。
933 0
云原生必备知识: 容器镜像
|
Kubernetes Cloud Native Unix
云原生必备知识:容器
容器,是一个视图隔离、资源可限制、独立文件系统的进程集合,它将系统的其他资源隔离开来,具有自己独立的资源视图。“视图隔离”,指的是能够看到部分进程、有独立的主机名,“资源可限制”,指的是可以限制内存大小、CPU 使用个数等。
1287 0
云原生必备知识:容器
|
存储 负载均衡 监控
云原生必备知识: etcd
etcd is a distributed, consistent key-value store for shared configuration and service discovery, with a focus on being: Secure: automatic TLS with optional client cert authentication[可选的SSL客户端证书认证:支持https访问 ] Fast: benchmarked 10,000 writes/sec[单实例每秒 1000 次写操作] Reliable: properly distributed usi
1334 0
云原生必备知识: etcd
|
存储 Kubernetes 监控
云原生必备知识: 应用储存
由于容器本身是非持久化的,因此需要解决在容器中运行应用程序遇到的一些问题。首先,当容器崩溃时,kubelet将重新启动容器,但是写入容器的文件将会丢失,容器将会以镜像的初始状态重新开始;第二,在通过一个Pod中一起运行的容器,通常需要共享容器之间一些文件。Kubernetes通过存储卷解决上述的两个问题。 在Docker有存储卷的概念卷,但Docker中存储卷只是磁盘的或另一个容器中的目录,并没有对其生命周期进行管理。Kubernetes的存储卷有自己的生命周期,它的生命周期与使用的它Pod生命周期一致。因此,相比于在Pod中运行的容器来说,存储卷的存在时间会比的其中的任何容器都长,并且在容器
608 0
|
存储 Cloud Native Docker
云原生必备知识: 容器数据卷
是一个可供一个或多个容器使用的特殊目录。 可以达到以下目的: 1.绕过“拷贝写”系统,以达到本地磁盘 IO 的性能,(比如运行一个容器,在容器中对数据卷修改内容,会直接改变宿主机上的数据卷中的内容,所以是本地磁盘IO的性能,而不是先在容器中写一份,最后还要将容器中的修改的内容拷贝出来进行同步。) 2.绕过“拷贝写”系统,有些文件不需要在 docker commit 打包进镜像文件。 3.在多个容器间共享目录。 4.在宿主和容器间共享目录。 5.在宿主和容器间共享一个文件。
441 0
|
设计模式 Cloud Native Java
云原生必备知识: 容器设计模式
即容器中的设计模式,包含迭代器模式和适配器模式。迭代器模式即提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。适配器模式及即适配器模式是23种中设计模式之一,它的主要作用是在新接口和老接口之间进行适配。它非常像我们出国旅行时带的电源转换器,我们国家的电器使用普通的扁平两项或三项插头,而去外国的话,使用的标准就不一样了,比如德国,使用的是德国标准,是两项圆头的插头。如果去德国旅游,那么我们使用的手机充电器插头无法插到德国的插排中去,那就意味着我们无法给手机充电。怎样解决这个问题呢?只要使用一个电源转化器就行了。
634 0

热门文章

最新文章