本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 中的動態 Ingress
Kubernetes 使部署由眾多微服務組成的應用變得容易,但這種架構的一個關鍵挑戰是動態地將入口流量路由到每個服務。一種方法是 Ambassador,一個基於 Envoy Proxy 構建的 Kubernetes 原生開源 API 閘道器。Ambassador 專為服務可能頻繁出現和消失的動態環境而設計。
Ambassador 使用 Kubernetes 註解進行配置。註解用於配置從給定 Kubernetes 服務到特定 URL 的特定對映。一個對映可以包含多個用於配置路由的註解。示例包括速率限制、協議、跨域請求共享、流量影子和路由規則。
一個基本的 Ambassador 示例
Ambassador 通常作為 Kubernetes 部署安裝,也可以作為 Helm Chart 使用。要配置 Ambassador,請建立一個帶有 Ambassador 註解的 Kubernetes 服務。下面是一個示例,它配置 Ambassador 將對 /httpbin/ 的請求路由到公共 httpbin.org 服務
apiVersion: v1
kind: Service
metadata:
name: httpbin
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v0
kind: Mapping
name: httpbin_mapping
prefix: /httpbin/
service: httpbin.org:80
host_rewrite: httpbin.org
spec:
type: ClusterIP
ports:
- port: 80
建立了一個對映物件,其字首為 /httpbin/,服務名稱為 httpbin.org。host_rewrite 註解指定 HTTP host
頭應該設定為 httpbin.org。
Kubeflow
Kubeflow 提供了一種簡單的方法,可以輕鬆地在 Kubernetes 上部署機器學習基礎設施。Kubeflow 團隊需要一個代理,為 Kubeflow 中使用的各種服務提供一個集中的身份驗證和路由點,其中許多服務都是臨時性的。
服務配置
透過 Ambassador,Kubeflow 可以使用分散式模型進行配置。Ambassador 不使用中心配置檔案,而是允許每個服務透過 Kubernetes 註解配置其在 Ambassador 中的路由。以下是一個簡化的配置示例
---
apiVersion: ambassador/v0
kind: Mapping
name: tfserving-mapping-test-post
prefix: /models/test/
rewrite: /model/test/:predict
method: POST
service: test.kubeflow:8000
在此示例中,“test”服務使用 Ambassador 註解動態配置到該服務的路由,僅當 HTTP 方法為 POST 時觸發,並且註解還指定了一個重寫規則。
Kubeflow 和 Ambassador
透過 Ambassador,Kubeflow 可以使用 Kubernetes 註解輕鬆管理路由。Kubeflow 配置一個將流量導向 Ambassador 的單個入口物件,然後根據需要建立帶有 Ambassador 註解的服務,將流量導向特定的後端。例如,在部署 TensorFlow 服務時,Kubeflow 會建立並註解一個 K8s 服務,以便模型將在 https://
如果您有興趣將 Ambassador 與 Kubeflow 結合使用,標準的 Kubeflow 安裝會自動安裝和配置 Ambassador。
如果您有興趣將 Ambassador 用作非 Kubeflow 服務的 API 閘道器或 Kubernetes 入口解決方案,請查閱Ambassador 入門指南。