Istio 已棄用其叢集內操作器
如果您正在叢集中執行操作器控制器,您需要知道什麼。
Istio 的叢集內操作器已在 Istio 1.23 中棄用。使用此操作器的使用者(我們估計少於 10% 的使用者)需要遷移到其他安裝和升級機制,才能升級到 Istio 1.24 或更高版本。繼續閱讀以瞭解我們為何做出此變更,以及操作器使用者需要做什麼。
這會影響您嗎?
此棄用只會影響 叢集內操作器的使用者。使用 istioctl install
命令和 IstioOperator
YAML 檔案安裝 Istio 的使用者不受影響。
要判斷您是否受到影響,請執行 kubectl get deployment -n istio-system istio-operator
和 kubectl get IstioOperator
。如果兩個命令都傳回非空值,您的叢集將會受到影響。根據最近的民意調查,我們預期這將影響少於 10% 的 Istio 使用者。
基於操作器的 Istio 安裝將會繼續無限期執行,但無法升級到 1.23.x 以上的版本。
我何時需要遷移?
為了符合 Istio 針對 Beta 功能的棄用政策,Istio 叢集內操作器將在 Istio 1.24 發佈時移除,大約在本公告發佈後三個月。Istio 1.23 將支援到 2025 年 3 月,屆時操作器使用者將需要遷移到其他安裝機制以保留支援。
我該如何遷移?
Istio 專案將繼續支援透過 istioctl
命令以及 Helm 進行安裝和升級。由於 Helm 在平台工程生態系統中相當普及,我們建議大多數使用者遷移到 Helm。istioctl install
基於 Helm 範本,未來版本可能會更深入地整合 Helm。
Helm 安裝也可以透過 GitOps 工具(如 Flux 或 Argo CD)進行管理。
偏好使用操作器模式執行 Istio 的使用者可以遷移到兩個新的 Istio 生態系統專案,即 Classic Operator Controller 或 Sail Operator。
遷移至 Helm
Helm 遷移需要將您的 IstioOperator
YAML 轉換為 Helm values.yaml
檔案。支援此遷移的工具將與 Istio 1.24 版本一起提供。
遷移至 istioctl
識別您的 IstioOperator
自訂資源:應該只有一個結果。
$ kubectl get IstioOperator
使用您的資源名稱,下載 YAML 格式的操作器設定
$ kubectl get IstioOperator <name> > istio.yaml
停用叢集內操作器。這不會停用您的控制平面或中斷您目前的網格流量。
$ kubectl scale deployment -n istio-system istio-operator –replicas 0
當您準備將 Istio 升級到 1.24 或更高版本時,請按照升級指示,使用您從上方下載的 istio.yaml
檔案。
完成並驗證您的遷移後,請執行下列命令以清理您的操作器資源
$ kubectl delete deployment -n istio-system istio-operator
$ kubectl delete customresourcedefinition istiooperator
遷移至 Classic Operator Controller
一個新的生態系統專案,Classic Operator Controller,是 Istio 內建的原始控制器的分支。此專案維持與原始操作器相同的 API 和程式碼基礎,但在 Istio 核心之外維護。
由於 API 相同,遷移很簡單:只需要安裝新的操作器即可。
Istio 專案不支援 Classic Operator Controller。
遷移至 Sail Operator
一個新的生態系統專案,Sail Operator,能夠在 Kubernetes 或 OpenShift 叢集中安裝和管理 Istio 控制平面的生命週期。
Sail Operator API 建構於 Istio 的 Helm 圖表 API 之上。Istio 的 Helm 圖表公開的所有安裝和組態選項都可透過 Sail Operator CRD 的 values:
欄位取得。
Istio 專案不支援 Sail Operator。
什麼是操作器,為什麼 Istio 有操作器?
操作器模式由 CoreOS 在 2016 年推廣,作為將人類智慧編碼為程式碼的方法。最常見的使用案例是資料庫操作器,使用者可能在一個叢集中有多個資料庫執行個體,並且有多個正在進行的操作任務(備份、清理、分片)。
Istio 在 1.4 版本中引入了 istioctl 和叢集內操作器,以回應 Helm v2 的問題。大約在同一時間,Helm v3 被引入,解決了社群的擔憂,並且是當今在 Kubernetes 上安裝軟體的首選方法。Istio 1.8 中加入了對 Helm v3 的支援。
Istio 的叢集內操作器處理服務網格元件的安裝 - 您通常每個叢集只做一次的操作,並且針對一個執行個體。您可以將其視為在叢集內執行 istioctl 的方法。然而,這表示您有一個高權限的控制器在您的叢集內執行,這會削弱您的安全性態勢。它不會處理任何正在進行的管理任務(備份、拍攝快照等,都不是執行 Istio 的要求)。
Istio 操作器是您必須安裝到叢集中的東西,這表示您已經必須管理某些東西的安裝。同樣地,使用它升級叢集首先需要您下載並執行新版本的 istioctl。
使用操作器表示您建立了一個間接層級,您必須在自訂資源中擁有選項,以組態您可能希望變更的安裝的所有內容。Istio 透過提供 IstioOperator
API 來解決這個問題,該 API 允許組態安裝選項。這個資源同時被叢集內操作器和 istioctl install 使用,因此對於操作器使用者而言,遷移路徑很簡單。
三年前 - 大約在 Istio 1.12 的時候 - 我們更新了文件,說明不建議將操作器用於新的 Istio 安裝,並且使用者應該使用 istioctl 或 Helm 安裝 Istio。
有三種不同的安裝方法造成了混淆,為了為使用 Helm 或 istioctl 的使用者(超過 90% 的安裝基礎)提供最佳體驗,我們決定在 Istio 1.23 中正式棄用叢集內操作器。