跳至主要内容

Istio

注意

Rancher-Istio 將在 Rancher v2.12.0 中被棄用;請改用 SUSE Rancher Application Collection 構建的 Istio 以增強安全性(包含在 SUSE Rancher Prime 訂閱中)。

詳細資訊可以在此公告中找到。

Istio 是一個開源工具,使 DevOps 團隊更容易觀察、保護、控制和排除複雜微服務網路中的流量問題。

隨著微服務網路的變化和成長,它們之間的互動可能變得越來越難以管理和理解。在這種情況下,將服務網格作為單獨的基礎設施層是很有用的。Istio 的服務網格讓你可以操作微服務之間的流量,而無需直接變更微服務。

我們對 Istio 的整合設計使 Rancher 操作人員(例如管理員或叢集擁有者)可以將 Istio 交付給開發人員團隊。然後開發人員可以使用 Istio 來實施安全性原則、排除問題或管理綠/藍部署、金絲雀部署或 A/B 測試的流量。

此核心服務網格提供的功能包括但不限於以下內容:

  • 流量管理,例如入站和出站路由、斷路、鏡像。
  • 安全性,具有用於驗證和授權流量和使用者的資源,包括 mTLS。
  • 可觀察性,包括日誌、指標和分散式流量流。

在設定 istio 後,你可以透過 Rancher UI、kubectl 或 istioctl 利用 Istio 的控制平面功能。

Istio 需要由 cluster-admin 設定後才能在專案中使用。

Rancher v2.5 的新功能​

Istio 的整體架構已經簡化。透過組合 Pilot、Citadel、Galley 和 sidecar injector,建立了一個單一元件 Istiod。Node Agent 功能也已合併到 istio-agent 中。

先前由 Istio 安裝的附加元件(cert-manager、Grafana、Jaeger、Kiali、Prometheus、Zipkin)現在需要單獨安裝。Istio 將支援來自 Istio 專案的整合安裝,並將維持與非 Istio 專案整合的相容性。

Prometheus 整合仍可透過安裝 Rancher Monitoring 或安裝你自己的 Prometheus operator 來使用。Rancher 的 Istio 圖表也會預設安裝 Kiali,以確保你可以立即獲得微服務的完整圖像。

Istio 已從使用 Helm 作為安裝 Istio 的方式遷移,現在透過 istioctl 二進位檔或 Istio Operator 提供安裝。為了確保與 Istio 最簡單的互動,Rancher 的 Istio 將維護一個 Helm 圖表,該圖表利用 istioctl 二進位檔來管理你的 Istio 安裝。

此 Helm 圖表將透過 UI 中的 Apps and Marketplace 提供。有權存取 Rancher Chart 目錄的使用者需要設定 Istio,然後才能在專案中使用。

與 Istio 捆綁的工具​

我們的 Istio 安裝程式將 istioctl 二進位檔命令包裝在方便的 Helm 圖表中,包括允許複雜自訂的覆蓋檔案選項。

它還包括以下內容:

Kiali​

Kiali 是一個全面的視覺化輔助工具,用於繪製整個服務網格中的流量流。它允許你查看它們如何連接,包括它們之間的流量速率和延遲。

你可以檢查服務網格的健康狀況,或深入查看單一元件的傳入和傳出請求。

備註

對於 Istio 安裝版本 103.1.0+up1.19.6 及更高版本,Kiali 使用令牌值作為其身分驗證策略。Rancher 中 Kiali 服務帳戶的名稱為 kiali。如果你正在編寫需要輸入 Kiali 服務帳戶名稱的命令(例如,如果你嘗試產生或檢索工作階段令牌),請使用此名稱。有關更多資訊,請參閱 Kiali 令牌身分驗證 FAQ。

Jaeger​

我們的 Istio 安裝程式包括 Jaeger 的快速啟動、一體化安裝,這是一個用於追蹤分散式系統的工具。

請注意,這不是 Jaeger 的生產級部署。此部署使用記憶體內儲存元件,而建議在生產環境中使用持久儲存元件。有關你可能需要哪種部署策略的更多資訊,請參閱 Jaeger 文件。

先決條件​

在啟用 Istio 之前,我們建議你確認 Rancher 工作節點有足夠的 CPU 和記憶體來執行 Istio 的所有元件。

如果你在 RKE2 叢集上安裝 Istio,則需要一些額外的步驟。有關詳細資訊,請參閱此章節。

設定指南​

有關如何設定 Istio 並在專案中使用它的說明,請參閱設定指南。

移除 Istio​

要從叢集、命名空間或工作負載移除 Istio 元件,請參閱解除安裝 Istio 章節。

存取視覺化​

預設情況下,只有 cluster-admin 有權存取 Kiali。有關如何允許 admin、edit 或 views 角色存取它們的說明,請參閱此章節。

備註

對於 Istio 安裝版本 103.1.0+up1.19.6 及更高版本,Kiali 使用令牌值作為其身分驗證策略。Rancher 中 Kiali 服務帳戶的名稱為 kiali。如果你正在編寫需要輸入 Kiali 服務帳戶名稱的命令(例如,如果你嘗試產生或檢索工作階段令牌),請使用此名稱。有關更多資訊,請參閱 Kiali 令牌身分驗證 FAQ。

在叢集中設定 Istio 後,Grafana、Prometheus 和 Kiali 可在 Rancher UI 中使用。

要存取 Grafana 和 Prometheus 視覺化,

  1. 在左上角,點擊 ☰ > Cluster Management。
  2. 在 Clusters 頁面上,前往你想要查看視覺化的叢集,然後點擊 Explore。
  3. 在左側導覽列中,點擊 Monitoring。
  4. 點擊 Grafana 或任何其他儀表板。

要存取 Kiali 視覺化,

  1. 在左上角,點擊 ☰ > Cluster Management。
  2. 在 Clusters 頁面上,前往你想要查看 Kiali 的叢集,然後點擊 Explore。
  3. 在左側導覽列中,點擊 Istio。
  4. 點擊 Kiali。從這裡你可以存取 Traffic Graph 標籤或 Traffic Metrics 標籤以查看網路視覺化和指標。

預設情況下,所有命名空間都將由 prometheus 獲取並為 Kiali 圖表提供資料。如果你想要為 prometheus 資料抓取使用不同的配置,請參閱選擇器/抓取配置設定。

你對視覺化的存取權限取決於你的角色。Grafana 和 Prometheus 僅適用於 cluster-admin 角色。Kiali UI 預設僅適用於 cluster-admin,但 cluster-admin 可以透過編輯 Istio values.yaml 允許其他角色存取它們。

架構​

Istio 安裝一個服務網格,該網格使用 Envoy sidecar 代理來攔截到每個工作負載的流量。這些 sidecar 攔截和管理服務到服務的通訊,允許對叢集內的流量進行細緻的觀察和控制。

只有注入了 Istio sidecar 的工作負載才能被 Istio 追蹤和控制。

當命名空間啟用 Istio 時,在命名空間中部署的新工作負載將自動擁有 Istio sidecar。你需要在先前存在的工作負載中手動啟用 Istio。

有關 Istio sidecar 的更多資訊,請參閱 Istio sidecar 注入文件,有關 Istio 架構的更多資訊,請參閱 Istio 架構文件

多個 Ingress​

預設情況下,每個 Rancher 配置的叢集都有一個 NGINX ingress 控制器允許流量進入叢集。Istio 也會預設將 ingress 閘道安裝到 istio-system 命名空間中。結果是你的叢集中將有兩個 ingress。

在啟用 Istio 的叢集中,你可以有兩個 ingress:預設的 Nginx ingress 和預設的 Istio 控制器。

可以透過覆蓋檔案啟用額外的 Istio Ingress 閘道。

Egress 支援​

預設情況下,Egress 閘道是停用的,但可以透過 values.yaml 或透過覆蓋檔案在安裝或升級時啟用。

在 RKE2 叢集上安裝 Istio 的額外步驟​

要在 RKE2 叢集上安裝 Istio,請按照此章節中的步驟操作。

在隔離環境中升級 Istio​

Istio Pod 安全性原則現在預設啟用。rancher-istio 圖表中新增了一個新值 installer.releaseMirror.enabled,用於啟用和停用支援隔離環境升級的伺服器。請注意,installer.releaseMirror.enabled 預設設定為 false。你可以在安裝或升級時根據需要設定此值。請按照以下步驟操作:

  1. 在 Rancher UI 中配置隔離環境的 Rancher 實例和隔離環境的自訂叢集。
  2. 在叢集中安裝 Monitoring:Cluster Explorer -> Apps & Marketplace -> Charts -> Monitoring。
  3. 將 Istio 所需的所有映像拉取到你將在隔離環境中使用的私有登錄檔。
  4. 在叢集中安裝 Istio:Cluster Explorer -> Apps & Marketplace -> Charts -> Istio。
備註

你可以在全新的 Istio 安裝上啟用 Jaeger 和 Kiali。為了確保 Jaeger 和 Kiali 正常運作,在安裝期間將 values.yaml 中的 installer.releaseMirror.enabled 設定為 true。

  1. 升級 Istio 安裝。
警告

如果你還沒有這樣做,請設定 installer.releaseMirror.enabled=true 以升級 Istio。