Envoy 做爲 Kubernetes 的 API 網關

Envoy 做爲 Kubernetes 的 API 網關

使用 Ambassador 的一個常見場景是將其部署爲 Kubernetes 的 edge 服務( API 網關)。Ambassador 是開源 Envoy 的分佈式版本,專門爲 kubernetes 設計的。html

本例將介紹如何經過 Ambassador 在 Kubernetes 上部署 Ambassador 。git

部署 Ambassador

Ambassador 的設置是經過 kubernetes 部署的。爲了在 kubernetes 安裝 Ambassador/Envoy,若是你的集羣啓動了 RBAC:github

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 控制器。api

咱們如今須要建立一個 Kubernetes 服務來指向 Ambassador 的部署,咱們將使用 LoadBalancer 服務。若是你的集羣不支持 LoadBalancer 服務,你須要改爲 NodePort 或者 ClusterIPapp

---
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:curl

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。而後運行:google

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 和超時設定。要了解更多信息,請閱讀配置文檔

相關文章
相關標籤/搜索