Spinnaker - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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 文件

上的 Spinnaker 架構和工作流程 AWS。

其中:

  • 步驟 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 可確保部署最新的應用程式版本,同時遵循定義的部署策略,例如藍/綠或金絲雀部署。