Envoy 作為 Kubernetes 的 API 網關
- 本文來源-https://servicemesher.github.io/envoy/start/distro/ambassador.html
使用 Ambassador 的一個常見場景是将其部署為 Kubernetes 的 edge 服務( API 網關)。Ambassador 是開源 Envoy 的分布式版本,專門為 kubernetes 設計的。
本例将介紹如何通過 Ambassador 在 Kubernetes 上部署 Ambassador 。
部署 Ambassador
Ambassador 的設定是通過 kubernetes 部署的。為了在 kubernetes 安裝 Ambassador/Envoy,如果你的叢集啟動了 RBAC:
kubectl apply -f https://www.getambassador.io/yaml/ambassador/ambassador-rbac.yaml
如果您沒啟動 RBAC:
kubectl apply -f https://www.getambassador.io/yaml/ambassador/ambassador-no-rbac.yaml
上面的 YAML 将會為 Ambassador 建立 kubernetes 部署,包含 readiness 和 liveness 檢查。預設,将會建立3個 Ambassador 執行個體。每一個 Ambassador 執行個體包含一個 Envoy 代理以及一個 Ambassador 控制器。
我們現在需要建立一個 Kubernetes 服務來指向 Ambassador 的部署,我們将使用
LoadBalancer
服務。如果你的叢集不支援
LoadBalancer
服務,你需要改成
NodePort
或者
ClusterIP
。
---
apiVersion: v1
kind: Service
metadata:
labels:
service: ambassador
name: ambassador
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
service: ambassador
将上面的 YAML 檔案儲存成
ambassador-svc.yaml
檔案。然後将這個服務部署到 kubernetes:
kubectl apply -f ambassador-svc.yaml
這時候 Envoy 和 Ambassador 控制器已經在你的叢集上運作。
配置 Ambassador
Ambassador 使用 Kubernetes 注解來添加或删除配置。這個示例 YAML 将添加一條到 Google 的路由,類似于入門指南中的基本配置示例。
---
apiVersion: v1
kind: Service
metadata:
name: google
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v0
kind: Mapping
name: google_mapping
prefix: /google/
service: https://google.com:443
host_rewrite: www.google.com
spec:
type: ClusterIP
clusterIP: None
儲存上面的檔案,命名為
google.yaml
。然後運作:
kubectl apply -f google.yaml
Ambassador 将發現您的 Kubernetes 注解的更改,并添加到 Envoy 的路由。注意,我們在這個例子中使用了一個虛拟服務;通常,您會将注解與真正的 Kubernetes 服務關聯起來。
測試映射
您可以通過獲得 Ambassador 服務的外部 IP 位址來測試這個映射,然後通過
curl
發送請求:
$ kubectl get svc ambassador
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ambassador 10.19.241.98 35.225.154.81 80:32491/TCP 15m
$ curl -v 35.225.154.81/google/
更多
Ambassador 在上公開了多個 Envoy 的特性映射,比如 CORS 、權重循環排程算法、gRPC、TLS 和逾時設定。要了解更多資訊,請閱讀配置文檔。
版權聲明:本文為CSDN部落客「weixin_34160277」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_34160277/article/details/92210911