作者:Richard Li
翻译:王斌
原文:Ambassador and Istio: Edge proxy and service mesh
Ambassador(https://www.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。
参考指南:https://istio.io/docs/setup/kubernetes/quick-start.html
2. 然后,安装 Bookinfo 示例应用。
参考指南:https://istio.io/docs/guides/bookinfo.html
3.验证示例是否按预期正常工作。
Bookinfo 示例默认使用的是 Istio 的入口控制器,要使用 Ambassador,我们还需要进行以下操作:
1. 安装Ambassador。
参考指南:https://www.getambassador.io/user-guide/getting-started
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。具体操作方法可以参阅这份说明文档。
文档链接:https://istio.io/docs/setup/kubernetes/sidecar-injection.html#configuration-options
领取专属 10元无门槛券
私享最新 技术干货