2023年十大開源人工智能趨勢(shì)
Sveltos 簡(jiǎn)化了 Kubernetes 附加組件跨集群部署,基于集群運(yùn)行時(shí)自動(dòng)升級(jí)并提供事件驅(qū)動(dòng)的工作流自動(dòng)化框架。
Kubernetes 本身并不是一個(gè)完整的解決方案。要構(gòu)建生產(chǎn)集群,您需要各種附加組件。如果您要管理多個(gè)集群,那不是一件容易的事。
Sveltos是一個(gè)開源項(xiàng)目,它提供聲明式 API,允許跨多個(gè) Kubernetes 集群部署 Kubernetes 附加組件。Helm 圖表和資源 YAML 都可以傳遞給 Sveltos。
例如,只需發(fā)布以下 ClusterProfile 實(shí)例就足以在一組托管集群中部署 Kyverno Helm 圖表:
或者,如果您有 Kubernetes 資源 YAML,只需使用數(shù)據(jù)創(chuàng)建一個(gè) ConfigMap(如果數(shù)據(jù)是機(jī)密的,則為 Secret),然后讓 Sveltos 引用這樣的 ConfigMap(Secret)實(shí)例。
kubectl create configmap contour-gateway --from-file=<File with contour YAML>
讓事情變得更復(fù)雜的是,有時(shí),您需要部署的附加組件取決于集群運(yùn)行時(shí)狀態(tài)。
例如,您已經(jīng)在一組集群中部署了 Calico v3.24。當(dāng)這些集群升級(jí)到 Kubernetes v1.25 時(shí),您希望 Calico 也升級(jí)到 v3.25。
如果您正在管理數(shù)十個(gè)這樣的集群,那么在升級(jí) Kubernetes 版本時(shí)手動(dòng)升級(jí) Calico 并不理想。為此,您需要一個(gè)自動(dòng)化解決方案。
然后簡(jiǎn)單地創(chuàng)建以下分類器實(shí)例:
以上分類器實(shí)例將讓 Sveltos 通過(guò)自動(dòng)添加來(lái)管理集群標(biāo)簽:
- 標(biāo)簽 kubernetes: v1–24 到任何運(yùn)行 Kubernetes 版本 v1.24.x 的集群
- 標(biāo)簽 kubernetes: v1–25 到任何運(yùn)行 Kubernetes 版本 v1.25.x 的集群。
由于這些標(biāo)簽和上面的 ClusterProfile 實(shí)例:
- calico 版本 v3.24.5 將部署在任何運(yùn)行 Kubernetes 版本 v1.24.x 的集群中
- calico 版本 v3.25.0 將部署在任何運(yùn)行 Kubernetes 版本 v1.25.x 的集群中
您無(wú)需采取任何行動(dòng)。隨著集群的升級(jí),Sveltos 也會(huì)升級(jí) Calico。
當(dāng)托管集群中的事件導(dǎo)致需要部署附加組件時(shí),事情可能會(huì)變得更加復(fù)雜。例如,每當(dāng)某個(gè)命名空間中的服務(wù)被創(chuàng)建時(shí),添加一個(gè) HTTPRoute 以通過(guò)網(wǎng)關(guān) API 公開此類服務(wù)。
Sveltos Events 是一個(gè)用于 Kubernetes 的事件驅(qū)動(dòng)的工作流自動(dòng)化框架,可幫助您在各種事件上觸發(fā) K8s 附加組件部署。
- 定義事件是什么(Sveltos 支持 Lua 腳本);
- 定義發(fā)生此類事件時(shí)要部署的附加組件。插件可以表示為模板,Sveltos 將在部署時(shí)使用來(lái)自托管集群的信息實(shí)例化這些插件。
此 EventSource 將事件定義為在命名空間 eng 中創(chuàng)建/刪除服務(wù),暴露端口 443 或端口 8443。
當(dāng)托管集群中發(fā)生此類事件時(shí),我們要部署一個(gè) HTTPRoute 實(shí)例:
如您所見,要部署的內(nèi)容是在 ConfigMap 中定義的,并以模板的形式表示。
資源包含每個(gè)托管集群中與上面定義的 EventSource 匹配的所有服務(wù)實(shí)例。