摘要:在最新發布的 v0.4.0 版本中,Kurator 進一步豐富了分散式雲原生場景下的應用統一管理能力,以便更好地滿足多雲環境的複雜需求。
本文分享自華為雲社群《Kurator v0.4.0:引領分散式雲原生管理的全新篇章》,作者:華為云云原生團隊。
Kurator 是一款開源的分散式雲原生平臺,融合了眾多主流的雲原生軟體棧,如Kubernetes、Istio、Prometheus 等,旨在幫助使用者構建和管理自己的分散式雲原生基礎設施,以推動企業的數位化轉型。Kurator 體現了「基礎設施即程式碼」的理念,允許使用者以宣告方式管理雲、邊緣或本地環境的基礎設施。同時,其「開箱即用」的特性,使使用者可以一鍵安裝雲原生軟體棧。而藉助Fleet,Kurator更提供了多雲、多叢集的統一管理,極大提升了管理效率。
在最新發布的 v0.4.0 版本中,Kurator 進一步豐富了分散式雲原生場景下的應用統一管理能力,以便更好地滿足多雲環境的複雜需求。此次更新主要包括以下四個方面:
⦁ 採用了GitOps方式並利用Fleet來實現多雲環境下的統一應用分發。這種新的方法將降低多雲異構環境設定的複雜性,簡化了分散式部署的管理過程。
⦁ 為使用者提供了一種基於Fleet、Prometheus和Thanos的統一叢集指標監控方案。這種方案旨在提高在複雜的多雲、多叢集環境中的指標監控的全面性、準確性和實時性,從而提高運維效率並降低運維複雜性。
⦁ 通過利用Kyverno和Fleet,為多雲、多叢集環境下的策略管理提供了統一的解決方案。這一功能的加入將提高策略管理的效率,保證了在所有叢集中的策略一致性和安全性。
⦁ 新增了一種名為"Attached Cluster"的叢集型別。這種叢集型別使得Kurator能夠納管任何地點、由任何工具搭建的Kubernetes叢集,進一步加強了Kurator對分散式雲環境的管理。
隨著多雲、多叢集的普及,如何有效在分散式雲原生環境中部署和分發應用成為日益重要的話題。為此,Kurator 推出了統一應用分發功能,目標是解決以下問題:
Kurator 的統一應用分發功能採用 GitOps 方式,使得一鍵將應用部署到多個雲環境成為可能,同時簡化了設定流程。這種方法確保了各叢集中的應用版本保持一致,也能及時進行版本更新。在 Kurator 宿主叢集上,使用者可以對所有叢集的應用部署情況進行統一的檢視和管理,從而提高運維效率。
Kurator應用管理架構圖
Kurator 基於 FluxCD,通過自動化的應用同步和部署流程,優化了部署效率和準確性。藉助於 Fleet 的優勢,它還能靈活地適應各種不同的業務和叢集需求,滿足使用者對於應用分發的多樣化需求。
Kurator 的統一應用分發功能提供了豐富而靈活的設定選項,使用者可以通過 YAML 組態檔定義應用的源、同步策略等關鍵引數。同時,Kurator 還支援多種型別的源(包括 gitRepository,helmRelease等)和同步策略的組合。
以下是一個統一應用分發的例子:
apiVersion: apps.kurator.dev/v1alpha1 kind: Application metadata: name: gitrepo-kustomization-demo namespace: default spec: source: gitRepository: interval: 3m0s ref: branch: master timeout: 1m0s url: https://github.com/stefanprodan/podinfo syncPolicies: - destination: fleet: quickstart kustomization: interval: 5m0s path: ./deploy/webapp prune: true timeout: 2m0s - destination: fleet: quickstart kustomization: targetNamespace: default interval: 5m0s path: ./kustomize prune: true timeout: 2m0s
此範例設定表達瞭如何藉助 Kurator 實現多叢集統一應用分發:從 Git 源中獲取應用設定,然後通過 Fleet 進行同步和部署。使用者只需簡單的設定,即可迅速將應用部署到多個叢集中。
關於更多例以及其他相關資訊,請參考:https://kurator.dev/docs/fleet-manager/application/
在複雜的多雲、多叢集環境中,統一的叢集指標監控可以提升工作效率並且降低運維複雜性。對於許多企業來說,他們面臨的挑戰是如何在各個叢集間進行有效的監控和管理,以確保服務的穩定性和優化資源使用率。
單一的監控工具常常無法滿足全面、及時和準確的監控需求。這就需要運維人員分別進入每個叢集進行檢查,不僅增加了工作量,也可能導致關鍵指標資訊的遺漏或延誤。而且,由於不同的叢集可能有不同的需求,管理工作變得更加複雜。
為解決上述問題,Kurator 提供了一種基於 Prometheus、Thanos、Grafana 以及 Fleet 的多叢集指標監控方案,使使用者能夠輕鬆實現多叢集的統一指標監控。
統一監控架構圖
通常,叢集許可權和遠端儲存設定完成後,我們可以將在多叢集環境中實現統一指標監控的過程概括如下:
每個叢集執行一個 Prometheus 範例,負責收集原生的監控資料;
每個Prometheus 範例都附帶一個 Thanos Sidecar,這個 Sidecar 將 Prometheus 收集到的資料推播到遠端儲存;
Thanos Query 從所有的 Thanos Sidecar 和遠端儲存中聚合資料,並提供一個統一的查詢介面;
Grafana 連線到 Thanos Query,從而能夠展示所有叢集的統一監控檢視。
藉助於 Kurator 的 Fleet 的能力,使用者無需親自處理上述複雜流程。使用者只需在 Fleet 中定義相關設定,Fleet Manager 就能自動完成上述流程。
下面是一個可以完成上述流程的 Fleet 設定範例:
apiVersion: fleet.kurator.dev/v1alpha1 kind: Fleet metadata: name: quickstart namespace: default spec: clusters: - name: kurator-member1 kind: AttachedCluster - name: kurator-member2 kind: AttachedCluster plugin: metric: thanos: objectStoreConfig: secretName: thanos-objstore grafana: {}
在執行上述設定後,Fleet Manager 將會在 kurator-member1 與 kurator-member2 這兩個叢集上分別安裝 Prometheus 和 Thanos Sidecar。然後,使用者便可以在 Kurator 主機上通過 Grafana 儀表板檢視所有叢集的統一監控檢視。
關於使用統一叢集指標監控的更多細節,請參考:https://kurator.dev/docs/fleet-manager/metric-plugin/
在分散式雲環境中,為了滿足多雲、多叢集的統一安全保護需求,Kurator 引入了統一策略管理功能,以解決以下問題:
無法統籌多個叢集的策略管理,跨叢集應用同一策略
多個子叢集策略分散管理,冗餘且複雜度較高,無法統一高效設定和管理
無法統一限制多個叢集資源使用情況,以保證所有叢集遵循相同的操作規則和業務需求
Kurator 的策略管理能力基於 Kyverno,並利用 Fleet 實現應用策略的跨叢集分發和應用。這種機制允許策略在整個叢叢集組中被統一和高效地管理,避免了在每個子叢集單獨管理策略的複雜性。
統一策略管理架構圖
Kurator 提供的策略管理能力與在單一 Kubernetes 叢集中的策略管理幾乎無異,使用者可以快速熟悉和上手。下面是一個使用 Kurator 在 Fleet 中實現統一策略管理的範例:
apiVersion: fleet.kurator.dev/v1alpha1 kind: Fleet metadata: name: quickstart namespace: default spec: clusters: - name: kurator-member1 kind: AttachedCluster - name: kurator-member2 kind: Cluster - name: kurator-member3 kind: CustomCluster plugin: policy: kyverno: podSecurity: standard: baseline severity: high validationFailureAction: Audit
在上述組態檔中,我們為 Fleet 中的叢集統一應用了 podSecurityStandard 為 baseline,podSecuritySeverity 為 high 的 Pod 安全策略。當Pod設定違背安全策略時,在其建立過程將會在PolicyReport中記錄相應事件;而當 validationFailureAction 設定為Enforce時,非法資源的建立或者更新就會被攔截。Fleet 中的所有叢集都將運用此策略,應用運維和開發人員將在遵循該 Pod 安全性規定的前提下調整和設定應用。 藉助 Kurator 的統一策略管理能力,可以有效提高策略管理的效率,同時保證所有叢集中策略的一致性和安全性。
關於 Kurator 統一策略管理的更多資訊,請參考:https://kurator.dev/docs/fleet-manager/policy/
在雲原生的世界裡,基礎設施的複雜性和多樣性是無法避免的問題。對於大型組織或公司來說,他們可能已經在不同的環境下部署了多個 Kubernetes 叢集,而這些叢集可能是由各種不同的工具建立的,並分佈在世界各地。為了更好地解決這個問題,Kurator 在最新的版本中引入了一種新的叢集型別,即 AttachedCluster。
AttachedCluster 的主要目的是為了管理那些並非由Kurator建立,卻又需要被納入到Kurator艦隊管理範圍的 Kubernetes 叢集。這些叢集可以由任何工具建立,並位於任何地方。引入這種新的叢集型別 ,使得Kurator的管理能力得以延伸,實現對真正的分散式雲環境的高效管理。 在實際使用中,使用者需要為預計要接入 Kurator 管理的 Kubernetes 叢集建立 AttachedCluster 資源。這些資源中包含了叢集的連線和身份驗證資訊,這些資訊通過 Secret 進行安全儲存和管理。有了這些資訊,Kurator 就能夠與這些叢集進行有效的互動和管理。]
下面是一個範例:
apiVersion: cluster.kurator.dev/v1alpha1 kind: AttachedCluster metadata: name: kurator-member1 namespace: default spec: kubeconfig: name: kurator-member1 key: kurator-member1.config
資源建立完成後,使用者還需要將這些 AttachedCluster 資源加入到 Kurator Fleet 中,從而將這些叢集納入 Kurator 的管理範圍。這樣一來,無論這些叢集在何處,由何種工具建立,都能夠在 Kurator 中進行統一的管理和監控。
下面是一個將上述 AttachedCluster 加入 Fleet 的例子:
apiVersion: fleet.kurator.dev/v1alpha1 kind: Fleet metadata: name: quickstart namespace: default spec: clusters: # 在此處新增 AttachedCluster 或者其他型別的叢集 - name: kurator-member1 kind: AttachedCluster
對於使用者來說,Kurator 通過引入 AttachedCluster,在統一平臺上實現了對所有 Kubernetes 叢集的便捷管理,避免了在各種工具之間的頻繁切換,有效地監控與管理了分散式雲環境中各個叢集。這個改進,不僅強化了 Kurator 在雲原生領域中的管理能力,也擴充套件了其管理範圍,使得 Kurator 在處理複雜多樣的雲端計算環境中的適應力和管理效率得到了顯著提升。
Release Notes:https://github.com/kurator-dev/kurator/releases/tag/v0.4.0
統一應用分發檔案:https://kurator.dev/docs/fleet-manager/application/
統一叢集指標監控檔案:https://kurator.dev/docs/fleet-manager/metric-plugin/
統一策略管理檔案:https://kurator.dev/docs/fleet-manager/policy/
AttachedCluster檔案:https://kurator.dev/docs/fleet-manager/manage-attachedcluster/
Fleet Manager 檔案:https://kurator.dev/docs/fleet-manager/
GitHub地址:https://github.com/kurator-dev/kurator
Kurator主頁:https://kurator.dev/
Slack地址:https://join.slack.com/t/kurator-hq/shared_invite/zt-1sowqzfnl-Vu1AhxgAjSr1XnaFoogq0A