本篇文章已超過一年。較舊的文章可能包含過時內容。請確認頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 中的動態 Ingress
Kubernetes 讓部署由多個微服務組成的應用程式變得容易,但這類架構的主要挑戰之一,是如何動態地將輸入流量路由到每個服務。其中一種方法是 Ambassador,這是一個 Kubernetes 原生的開源 API 閘道,建立在 Envoy Proxy 之上。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 作為 API 閘道或 Kubernetes 輸入解決方案用於非 Kubeflow 服務,請查看Ambassador 入門指南。