Ambassador和Istio:边缘代理和服务网格

Ambassador和Istio:边缘代理和服务网格

作者:Richard Li

翻译:王斌

原文:Ambassador and Istio: Edge proxy and service mesh


Ambassador(getambassador.io)是一个 Kubernetes 原生的微服务 API 网关,它部署在网络边缘,将传入网络的流量路由到相应的内部服务(也被称为“南北”流量)。Istio 是微服务的服务网格,旨在将L7的可观察性、路由和弹性加入到从服务到服务的流量中(也被称为“东西”流量)。 Istio 和 Ambassador底层都使用了 Envoy。

Ambassador 和 Istio 可以一起部署在 Kubernetes 上。在这种部署方式下,来自集群外部的入站流量首先会经过 Ambassador,再由 Ambassador将流量路由到 Istio。Ambassador 主要处理认证、边缘路由、TLS终结,以及一些传统的边缘功能。

这种部署方式能让运维人员得到一个高性能、现代化的边缘服务(Ambassador)与最先进的服务网格(Istio)相结合的网络。虽然 Istio 本身就有一个基本入口控制器,但其功能非常有限,并且不支持身份验证以及 Ambassador所拥有的许多功能。



Ambassador和 Istio 协同工作

要让 Ambassador 与 Istio 协同工作其实很简单,我们以 Istio 的bookinfo示例来举个例子:


1. 首先,在 Kubernetes 上安装 Istio。

参考指南:istio.io/docs/setup/kub

2. 然后,安装 Bookinfo 示例应用。

参考指南:istio.io/docs/guides/bo

3. 验证示例是否按预期正常工作。


Bookinfo 示例默认使用的是 Istio 的入口控制器,要使用 Ambassador,我们还需要进行以下操作:

1. 安装Ambassador。

参考指南:getambassador.io/user-g

2. 更新 bookinfo.yaml 清单以包含必要的Ambassador注解,操作如下:


apiVersion: v1
kind: Service
metadata:
 name: productpage
 labels:
   app: productpage
 annotations:
   getambassador.io/config: |
      ---
     apiVersion: ambassador/v0
     kind: Mapping
     name: productpage_mapping
     prefix: /productpage/
     rewrite: /productpage
     service: productpage:9080
spec:
 ports:
 - port: 9080
   name: http
 selector:
   app: productpage


  • 输入kubectl delete ingress gateway命令,这将会删除bookinfo.yaml 清单中的入口控制器。此步骤为可选。


  • 访问$AMBASSADOR_IP/productpage/,测试 Ambassador 是否已经起作用。可以通过 kubectl get services ambassador 命令来获取 Ambassador 的实际IP地址。



Sidecar注入

新版本的 Istio 支持 Kubernetes 初始化程序自动注入Istio Sidecar。有了Ambassador,你不再需要注入Istio Sidecar,因为 Ambassador 的 Envoy 实例将自动路由到相应的服务。如果你正在使用的是自动Sidecar注入方式,那么需要将 Istio 配置成不要自动为 Ambassador pods 注入Sidecar。具体操作方法可以参阅这份说明文档。

文档链接:istio.io/docs/setup/kub

点击阅读原文,即可查看文档

发布于 2018-01-23