應用的多集群分發面臨很多挑戰,例如維護多個集群的KubeConfig入口不唯一,同應用在不同集群的差異化配置,缺少統一的視圖查看應用在多集群的部署情況,同應用同時部署多個集群風險高等,您可以通過ACK One艦隊管理的應用分發來解決以上問題。本文介紹ACK One艦隊管理應用分發的原理和功能。
背景信息
ACK One艦隊的應用分發功能通過托管開源社區項目KubeVela實現,KubeVela是一個現代化應用交付與管理平臺,簡化了面向多集群的應用交付過程。ACK One艦隊的應用分發提供了統一標準的Kubernetes API接口,實現了Kubernetes原生資源在多集群間的分發,支持不同集群部署的差異化配置,支持基于工作流的集群間灰度發布。通過ACK One Fleet實例,您可以體驗到開源社區項目KubeVela的豐富應用交付能力,同時免除您自建以及后期運維工作量。
應用分發原理
基于角色扮演的應用分發
用戶(User A)在創建或修改應用后,Fleet實例會將應用所引用的資源下發到關聯集群中,此時應用分發會扮演應用創建者或修改者的身份(User A),向關聯集群發起資源創建或修改請求,在關聯集群上看到的應用相關資源的創建者或修改者為用戶User A。滿足關聯集群獨立審計要求,并提升多集群安全水位。基于角色扮演的應用分發原理如下圖所示。
實現階段
ACK One Fleet實例的應用分發功能實現包含以下兩個階段:
在Fleet實例中創建應用相關的Kubernetes原生資源,由第二階段定義分發規則,分發到關聯集群。目前應用分發支持的資源如下:
說明Fleet實例不會監視資源的創建,所以不會觸發相應的資源創建,例如Deployment不會觸發Pod的創建,Service不會觸發Endpoint的創建。
Kind
apiVersion
Deployment
apps/v1
Service
v1
Ingress
networking.k8s.io/v1
ConfigMap
v1
Secret
v1
StatefulSet
apps/v1
PersistentVolumeClaim
v1
ServiceExport
multicluster.x-k8s.io/v1alpha1
ServiceImport
multicluster.x-k8s.io/v1alpha1
HorizontalPodAutoscaler
autoscaling/v1
在Fleet實例上創建分發規則,包括引用第一階段創建的Kubernetes資源、選擇分發目標集群、差異化配置、工作流和實現應用的多集群分發。
功能介紹
功能 | 描述 | 參考文檔 |
應用復制分發 | 您可以通過訪問ACK One Fleet實例,向多個集群下發Deployment、Service和Ingress等Kubernetes原生資源,包括創建應用相關的Kubernetes原生資源、創建應用部署目標、創建應用等,實現多集群復制部署和查看應用狀態。 | |
應用分發差異化配置 | 您可以在ACK One艦隊管理的Fleet實例上進行多集群應用分發差異化配置,實現同一個應用在不同目標關聯集群上的配置不同,例如副本數量、鏡像、環境變量等。 | |
應用集群間灰度分發 | 在應用的多集群分發部署中,您可以使用ACK One應用發布的工作流功能,實現應用在集群之間分批發布。例如,您可以將應用先發布到測試集群,經驗證后再發布到生產集群,用來控制發布風險。 | |
選擇分發目標集群 | 您通過訪問ACK One Fleet實例使用應用分發功能時,需要定義應用分發的目標集群。ACK One支持通過關聯集群名稱和給關聯集群打標的方式選擇目標集群。 | |
差異化規則 | 您可以在ACK One Fleet實例上進行多集群應用分發差異化配置,實現同一個應用在不同目標集群上的配置不同。 | |
應用容器水平伸縮(HPA) | 您可以在ACK One應用分發中使用容器水平伸縮(HPA)控制關聯集群的應用副本數。 |
ACK One用戶交流群
ACK One開放了Kubevela的下列能力,如果您需要更多能力,歡迎使用釘釘搜索群號35688562加入釘釘交流群獲得支持。