本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Spinnaker
雖然 Spinnaker 並非專門設計為 GitOps 工具,但您可以將其設定為實作 GitOps 原則,尤其是在將其用於雲端原生和 Kubernetes 部署時。
GitOps 支援
| 區域圖 | 工具功能 |
|---|---|
宣告式組態 |
Spinnaker 使用宣告管道定義,通常會儲存為 JSON 或 YAML 檔案。這些管道定義可以在 Git 儲存庫中進行版本控制,以符合 GitOps 實務。 |
IaC |
Spinnaker 支援將基礎設施和部署組態定義為程式碼。這些定義可以存放在 Git 儲存庫中,並可做為單一事實來源。 |
多雲端部署 |
Spinnaker 旨在跨多個雲端提供者和 Kubernetes 叢集運作。它可在各種環境中實現一致的 GitOps 實務。 |
管道做為程式碼 |
Spinnaker 管道可以定義為程式碼,並存放在 Git 儲存庫中。這允許版本控制和檢閱部署程序。 |
自動化部署 |
您可以設定 Spinnaker 根據 Git 儲存庫中的變更自動啟動部署。此工具支援 GitOps 核心的持續部署實務。 |
不可變基礎設施 |
Spinnaker 提升使用不可變的基礎設施,這是 GitOps 中的關鍵概念。它鼓勵部署新的執行個體,而不是修改現有的執行個體。 |
轉返和版本控制 |
Spinnaker 提供強大的復原功能,並快速還原至先前的已知良好狀態。它支援部署的版本控制,以符合 GitOps 可追蹤性原則。 |
核准工作流程 |
Spinnaker 在管道中包含手動判斷階段,以支援環境之間的受控促銷。這支援部署和版本之間的 GitOps 分離實務。 |
Canary 和藍/綠部署 |
Spinnaker 支援進階部署策略,以符合 GitOps 安全且受控版本的實務。 |
與版本控制系統整合 |
Spinnaker 可以與各種 Git 供應商整合,以根據儲存庫事件啟動管道。 |
Kubernetes 整合 |
Spinnaker 為 Kubernetes 提供原生支援,並支援 Kubernetes 資源的 GitOps 樣式管理。 |
成品管理 |
Spinnaker 支援成品管理和版本控制,這對維護 GitOps 工作流程至關重要。 |
可觀測性和監控 |
Spinnaker 提供與監控工具的整合,以支援 GitOps 的可觀測性方面。 |
稽核線索 |
Spinnaker 提供詳細的部署日誌和歷史記錄,支援 GitOps 的可稽核性原則。 |
角色型存取控制 (RBAC) |
此工具實作 RBAC 以精細控制誰可以執行哪些動作,以符合 GitOps 安全實務。 |
範本化和參數化 |
Spinnaker 支援管道定義中的範本,以啟用可重複使用和參數化的部署。 |
環境提升 |
Spinnaker 以受控制的方式促進環境之間的應用程式提升 (例如,從預備到生產)。 |
與 CI 工具整合 |
Spinnaker 可以與各種持續整合 (CI) 工具整合,以提供符合 GitOps 原則的完整 CI/CD 管道。 |
自訂階段和擴充功能 |
此工具支援自訂階段和延伸,因此團隊可以實作根據其需求量身打造的 GitOps 工作流程。 |
集中式管理 |
Spinnaker 提供集中式平台,用於管理跨多個環境和雲端提供者的部署。 |
雖然 Spinnaker 主要不是以 GitOps 工具行銷,但其彈性和強大的功能集使其能夠實作 GitOps 工作流程,尤其是在複雜的多雲端環境中。Spinnaker 與 Argo CD 或 Flux 等專用 GitOps 工具之間的主要區別在於,Spinnaker 提供更全面的持續交付平台,具有進階部署策略和多雲端支援。
Spinnaker 的優勢在於能夠跨各種雲端提供者處理複雜的部署案例,以及其對進階部署策略的支援。正確設定 Spinnaker 時,可以有效實作 GitOps 原則。對於想要在各種複雜環境中採用 GitOps 實務的組織而言,這使其成為強大的工具。
如需詳細資訊,請參閱 Spinnaker 文件
架構
下圖說明使用 Spinnaker 和 Jenkins X 的 GitOps 驅動 CD 工作流程。如需詳細資訊,請參閱 Spinnaker 文件
其中:
-
步驟 1:程式碼遞交。開發人員將應用程式程式碼變更遞交至 Git 儲存庫。這些變更可能包括應用程式本身、Dockerfiles 或 Kubernetes 資訊清單的更新。
-
步驟 2:Jenkins 建置和建立映像。Jenkins 是由 Git 儲存庫透過 Webhook 或輪詢自動觸發。Jenkins 會建置應用程式、建立 Docker 映像,並將建置映像推送至設定的 Docker 登錄檔 (例如 Amazon ECR 或 Docker Hub)。
-
步驟 3:Spinnaker 影像監控和管道觸發。Spinnaker 會持續監控 Docker 登錄檔是否有新映像。偵測到新的映像版本時,Spinnaker 會自動觸發管道以啟動部署程序。
-
步驟 4:部署至目標命名空間。Spinnaker 會將新的 Docker 映像部署到 Amazon EKS。根據管道組態,映像會部署到叢集中的目標命名空間。Spinnaker 可確保部署最新的應用程式版本,同時遵循定義的部署策略,例如藍/綠或金絲雀部署。