將工作負載加入網格
在大多數情況下,叢集管理員會部署 Istio 網格基礎設施。一旦 Istio 成功部署並支援環境資料平面模式,它將對已設定為使用它的命名空間中所有使用者部署的應用程式透明可用。
為網格中的應用程式啟用 Ambient 模式
若要在環境模式中將應用程式或命名空間新增至網格,請將標籤 istio.io/dataplane-mode=ambient
新增至相應的資源。您可以將此標籤套用到命名空間或個別的 Pod。
就應用程式 Pod 而言,可以完全透明地無縫啟用(或停用)環境模式。與Sidecar資料平面模式不同,無需重新啟動應用程式即可將它們新增至網格,而且它們不會顯示為在其 Pod 中部署了額外的容器。
第 4 層和第 7 層功能
安全的 L4 疊加網路支援身份驗證和授權原則。瞭解環境模式中的 L4 原則支援。若要選擇使用 Istio 的 L7 功能(例如流量路由),您需要部署航點代理並註冊您的工作負載以使用它。
Ambient 和 Kubernetes NetworkPolicy
請參閱環境和 Kubernetes NetworkPolicy。
在不同資料平面模式的 Pod 之間進行通訊
對於使用環境資料平面模式的應用程式 Pod 和非環境端點(包括 Kubernetes 應用程式 Pod、Istio 閘道或 Kubernetes Gateway API 實例)之間的互通性,有多種選項。這種互通性提供了多種選項,可將環境和非環境工作負載無縫整合到同一個 Istio 網格中,允許根據您的網格部署和運作需求,逐步引入環境功能。
網格外部的 Pod
您可能有完全不屬於網格的命名空間,無論是以 Sidecar 或環境模式。在這種情況下,非網格 Pod 會將流量直接啟動到目標 Pod,而無需經過來源節點的 ztunnel,而目標 Pod 的 ztunnel 會強制執行任何 L4 原則,以控制是否應允許或拒絕流量。
例如,在啟用環境模式的命名空間中設定 mTLS 模式設為 STRICT
的 PeerAuthentication
原則,將導致拒絕來自網格外面的流量。
使用 Sidecar 模式的網格內部 Pod
Istio 支援在同一個網格內,具有 Sidecar 的 Pod 和使用環境模式的 Pod 之間的 East-West 互通性。Sidecar 代理知道要使用 HBONE 協定,因為已發現目的地是 HBONE 目的地。
將 mTLS 模式設為 STRICT
的 PeerAuthentication
原則將允許來自具有 Istio Sidecar 代理的 Pod 的流量。
入口和出口閘道以及 Ambient 模式 Pod
輸入閘道可能會在非環境命名空間中執行,並公開由環境模式、Sidecar 模式或非網格 Pod 提供的服務。環境模式中的 Pod 和 Istio 輸出閘道之間也支援互通性。
Ambient 和 Sidecar 模式的 Pod 選取邏輯
Istio 的兩種資料平面模式(Sidecar 和環境)可以共存在同一個叢集中。務必確保不會同時設定同一個 Pod 或命名空間使用這兩種模式。但是,如果確實發生這種情況,Sidecar 模式目前會優先於此類 Pod 或命名空間。
請注意,理論上可以透過分別標記個別 Pod 與命名空間標籤,將同一命名空間內的兩個 Pod 設定為使用不同的模式;但是,不建議這樣做。對於最常見的用例,單一模式應適用於單一命名空間內的所有 Pod。
判斷 Pod 是否設定為使用環境模式的確切邏輯如下
在
cni.values.excludeNamespaces
中設定的istio-cni
外掛程式組態排除清單用於略過排除清單中的命名空間。如果符合以下條件,則 Pod 使用
ambient
模式- 命名空間或 Pod 具有標籤
istio.io/dataplane-mode=ambient
- Pod 沒有選擇退出的標籤
istio.io/dataplane-mode=none
- Pod 上不存在註釋
sidecar.istio.io/status
- 命名空間或 Pod 具有標籤
避免組態衝突的最簡單選項是讓使用者確保每個命名空間都具有 Sidecar 注入的標籤 (istio-injection=enabled
) 或環境模式的標籤 (istio.io/dataplane-mode=ambient
),但絕不同時具有兩者。
標籤參考
以下標籤控制資源是否包含在環境模式的網格中、是否使用航點代理來強制執行資源的 L7 原則,以及控制流量如何傳送到航點。
名稱 | 功能狀態 | 資源 | 說明 |
---|---|---|---|
istio.io/dataplane-mode | Beta | 命名空間 或 Pod (後者優先) | 將您的資源新增至環境網格。 有效值: ambient 或 none 。 |
istio.io/use-waypoint | Beta | 命名空間 、服務 或 Pod | 針對已標記資源的流量使用航點以強制執行 L7 原則。 有效值: {航點名稱} 或 none 。 |
istio.io/waypoint-for | Alpha | 閘道 | 指定航點將處理哪些類型的端點流量。 有效值: service 、workload 、none 或 all 。此標籤是選用的,預設值為 service 。 |
為了讓您的 istio.io/use-waypoint
標籤值生效,您必須確保航點已針對它將處理流量的資源類型進行設定。預設情況下,航點會接受服務的流量。例如,當您透過 istio.io/use-waypoint
標籤標記 Pod 以使用特定航點時,應使用值 workload
或 all
標記航點 istio.io./waypoint-for
。