全新 Application Manager,將 GitOps 導入到 Google Kubernetes Engine

對開發者和應用程式運營商而言,Kubernetes 是管理容器化應用程式的標竿。但同時,他們又經常對 Kubernetes 的生命週期管理(比如建立、發佈、管理 Kubernetes 應用程式)方面感到困擾。

為了簡化應用程式生命週期和設定的管理,Google 推出 Application Manager 應用程式交付解決方案,作為 Google Kubernetes Engine (GKE) 的附加元件。Application Manager 目前為 Beta 版,使開發人員輕鬆建立起自開發到正式環境的應用程式交付流程,同時結合了Google的 best practice 來管理發行版本的設定。透過 Application Manager,您可以在遵循公司政策下,高效且安全地在 GKE 中執行應用程式,從而實作應用程式現代化的目標。

Kubernetes 應用程式的生命週期

Kubernetes 應用程式的生命週期包括三個主要階段:建立、發佈和管理。 建立階段包括編寫應用程式程式碼和特定應用程式的 Kubernetes 設定。發行階段包括對程式碼和/或設定進行變更,然後將這些變更安全地部署到不同的發行環境中。管理階段包括大規模和批次在正式環境管理應用程式。

Kubernetes 應用程式的生命週期

 

此外,Kubernetes 應用程式設定可能很耗時且複雜,無法大規模管理。特別是在測試環境、模擬環境和正式發佈環境中部署的應用程式,可能具有儲存在多個 Git 儲存庫中的重複設定。對任一設定所做的任何變更,都需要複製到其它設定;這樣一來,很可能導致人為錯誤。

Application Manager 遵循 GitOps 原則,利用 Git 儲存庫來啟用宣告性設定管理。它允許您在將變更部署到環境之前,對其進行審核和覆查。它還會自動建立並實作推薦的 Git 儲存庫架構,並允許您使用 Kustomize(Kubernetes 本地設定管理工具)對設定執行客製化的設定。

Application Manager 可作為叢集附加元件在 GKE 叢集內執行,並執行以下任務:

  • 從 Git 儲存庫中(在 git 分支、標籤或提交)提取 Kubernetes 清單,並將清單作為應用程式部署在叢集中。
  • 提供有關已部署的應用程式的中繼資料(例如版本、修訂歷史記錄、執行狀況等),並在 Google Cloud Console 上把資料視覺化。

使用 Application Manager 發佈應用程式

接下來,讓我們深入探討如何使用 Application Manager 發行或部署應用程式。不論是建立 Git 儲存庫、定義應用程式發行環境、在叢集中進行部署,您都能透過在 Application Manager 的命令列界面 appctl 中執行簡單的指令,來完成以上任務。

以下的工作流程範例,說明如何將「bookstore」這個應用程式發佈到模擬環境和正式環境。

首先,透過執行以下指令將其初始化:

appctl init bookstore 
--app-config-repo=github.com/$USER_OR_ORG/bookstore

這將會建立兩個遠程 Git 儲存庫:1. 應用程式儲存庫,用於儲存 kustomize 格式的應用程式設定檔(以簡化設定管理),以及 2. 部署儲存庫,用於儲存自動產生的的設定檔,作為叢集中部署內容的來源。

初始化 Git 儲存庫後,您可以透過執行 appctl env add staging –cluster=$MY_STAGING_CLUSTER 將臨時環境增加到 bookstore 應用程式,並對正式環境執行相同的操作。此時,應用程式儲存庫如下所示:

├── config
│   ├── base  # stores base configuration overlays for all environments
│   │   ├── kustomization.yaml
│   │   └── bookstore.yaml
│   └── envs  # stores configuration overlays for prod and staging
│       ├── prod
│       │   ├── kustomization.yaml
│       │   └── patch-cpu.yaml
│       └── staging
│           ├── kustomization.yaml
│           └── patch-replicas.yaml
└── delivery   # stores information about environment clusters
    └── envs
        ├── prod.yaml
        └── staging.yaml

 

在這邊,我們使用 kustomize 來管理特定環境不同的設定。使用 kustomize,您可以透過修改基礎設定,從而僅使用 Kubernetes API 資源檔案來管理不同環境客製化的 Kubernetes 設定。

當您準備將應用程式發佈到模擬環境時,只需在應用程式儲存庫中使用 git tag 建立一個應用程式版本,然後執行 appctl prepare staging。這將會從應用程式儲存庫中的標記版本中自動產生混合設定,並將其推送到部署儲存庫的模擬分支,以供管理員查看。

借助這種 Google 推薦的儲存庫架構,Application Manager 清晰地把應用程式儲存庫中易於維護的 kustomize 設定與自動產生的部署儲存庫分隔開來,而且後者可以方便地查看單一來源;此外,它還可以避免這兩個儲存庫發生分歧。

如果已經審視過了對混合設定的提交並且要將其合併到部署儲存庫中,請執行 appctl apply staging 將此應用程式部署到模擬叢集。

從模擬到正式的升級就像 appctl apply prod –from-env staging 一樣容易。 如果要在失敗時進行回滾,只需執行 appctl apply staging –from-tag=OLD_VERSION_TAG

此外,您可以透過在腳本或管線中執行此 appctl 工作流程來實作自動化並簡化作業。

您所有 Kubernetes 應用程式的 Application Manager

現在,借助 Application Manager,可以利用 Google 推薦的宣告性方式來輕鬆建立開發到正式環境的應用程式交付流程。另外,您也能上 Google Cloud Marketplace,無縫更新各式 Kubernetes 應用程式,從而使您自動更新和回滾合作夥伴的應用程式。您可以在這裡了解更多資訊。有關 Application Manager 的詳細概述,請參考此展示影片,或此教學課程中的步驟進行操作。

(原文翻譯改編自 Google Cloud。)

相關文章

雲端戰略佈局:Kubernetes 如何簡化混合雲的部署與管理

Skaffold:可重複性使用的簡單 Kubernetes 開發工具

Google 混合雲平台 Anthos 資訊安全一覽:強化應用程式安全


連絡「GCP 專門家」