Istio 已棄用其叢集內操作器

如果您正在叢集中執行操作器控制器,您需要知道什麼。

2024 年 8 月 14 日 | Mitch Connors - Microsoft,代表 Istio 技術監督委員會

Istio 的叢集內操作器已在 Istio 1.23 中棄用。使用此操作器的使用者(我們估計少於 10% 的使用者)需要遷移到其他安裝和升級機制,才能升級到 Istio 1.24 或更高版本。繼續閱讀以瞭解我們為何做出此變更,以及操作器使用者需要做什麼。

這會影響您嗎?

此棄用只會影響 叢集內操作器的使用者。使用 istioctl install 命令和 IstioOperator YAML 檔案安裝 Istio 的使用者不受影響

要判斷您是否受到影響,請執行 kubectl get deployment -n istio-system istio-operatorkubectl 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 工具(如 FluxArgo 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 中正式棄用叢集內操作器。

分享這篇文章