天天看點

Envoy 作為 Kubernetes 的 API 網關Envoy 作為 Kubernetes 的 API 網關

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

繼續閱讀