受疫情影響,許多企業重視起內部流程的改善與自動化技術。而遠程工作的增加,也讓團隊或部門間的協作成為焦點,以上因素都讓 DevOps 成為許多企業關注的議題。其中,Kubernetes(K8s)是實現 DevOps 的強大工具,但使用上卻受限於地端環境而易遭受諸多不便。長年榮獲 Google Cloud 合作夥伴獎的 Cloud Ace,此次整理了雲端版代管式 K8s:Google Kubernetes Engine(GKE)的 3 大特色與 DevOps 實踐架構,協助企業能更輕易地應用 DevOps 實現數位轉型。
▲ 深入了解 DevOps 解決方案
GKE 是什麼?雲端版代管式 K8s!
GKE 三大特色
GKE 是由 Google Cloud 提供的雲端版代管式 K8s,架構上雖與 K8s 大同小異,但在實際使用上還是有許多區別,以下我們分別從資源調度、安全性與軟硬體設置這三個面向了解它的特色。
資源調度
GKE 可依據 CPU 與資源使用率等指標自動調度 Pod 資源與 Node pool 中的 Node 數量,而在分析資源用量上還可透過垂直自動調度 Pod 功能(Vertical Pod Autoscaling),持續分析 Pod 的 CPU 和記憶體用量,以自動調整 CPU 和記憶體要求。最重要的是在資源不足的情況下,GKE 可向上擴充至 15,000 個 Node,等需求下降後也能自動刪減,避免造成多餘開銷。
安全性
主要內容分為三大類,包含身分識別、網路安全與應用程式安全。首先在身分識別上,GKE 除具備專案層級的使用者身份識別(IAM),也有 Cluster 層級的 Role-Based Access Control(RABC)可限制使用者權限。而在網路安全面則有專案層級的 VPC Firewall 和 Cluster 層級的 Private Cluster Mode 與 Network Policy。最後在應用程式安全上支援映像檔弱點掃描、應用程式部署的雙重認證,及第三方應用程式或不受信任程式碼部署時的 GKE SandBox 等。
軟硬體設置
在軟硬體設置上 GKE 也提供諸多功能,以下介紹四項主要功能。第一,GKE 會檢測 Node 健康狀態,一但有 Node 出問題就會觸發自動修復來確保所有 Node 能正常運行。第二是每當 K8s 發布新版本,GKE 會自動更新至最新版。第三是可在配置時限制每個容器的所需資源,更妥善地管理 Cluster 內的資源消耗。第四,它預設使用由 Google Cloud 打造及管理的 Container-Optimized OS,因此具有強化版的安全防護能力。
GKE 相較於 K8s 的優勢
了解完 GKE 主要特色後,下面進一步認識使用 GKE 和自建 K8s 相比有哪些優勢!我們分別從雲端與地端、代管及自建兩大面向分析之間的差異。
雲地差異
- 設備規格
在雲端上,使用者可依需求調整要使用的機器規格與數量。而在地端我們只能使用自行購買的機器,當使用量超出或遠低於當前所擁有的機器承受能力時,就需負擔額外損失。
- 設備維護
在雲端上所有設備都由雲端供應商維護,使用者不需擔心設備損壞或折舊。相較之下,地端所有設備需自行維護,一但碰上人為疏失或自然災害就可能造成設備損壞甚至資料丟失。
- 權限控管
在雲端上使用 GKE,基本權限的控管都可經由 IAM 結合 RABC 操作。但在地端,由於多數原生 K8s 使用的服務是開源的,因此不同服務的權限可能需各自管理,進而增加管理的複雜度。
代管與自建的差異
- 軟體的安裝與更新
在雲端代管環境裡,基礎的 K8s 工具由雲端供應商負責安裝與更新,因此在創建 GKE Cluster 時,系統會直接在5分鐘內配置好基礎的 K8s。相較之下自建 K8s 的初始配置工作就複雜許多,從最初的 Node、PKI 再到 etcd,繁雜的設置步驟多達十幾步,從開始到讓 K8s 真正能運作基本上得耗時一兩天。
- 服務的串接
雲端代管的另一大特色,就是實行 DevOps 的需求基本上可靠 GKE 串接 Google Cloud 其他服務一次滿足,包含 CI/CD 工具、監控工具、映像庫、代碼庫和大數據分析等,且這些服務都能利用 IAM 控管權限。而若是自建 K8s,所有額外服務都須透過其他設置來串接與維護。
- 額外的服務
此外 GKE 身為代管服務,組件也由雲端供應商維護,例如 Cluster 中的 Control Plane。因此操作時我們只需關注 Worker Node 的設置即可,不需煩惱 Master Node 的設置。此外 GKE 還具備 Node Pool 功能,可歸類不同性能的機器,在部署不同性質的應用程式時可指定合適的 Node Pool 進行部署。最後,Node Pool 甚至還有 Autosacling 功能,透過監測部署容器的資源使用量,可自動創建合適的 Node Pool。
GKE 為何是優秀的 DevOps 工具?
減少組織間的穀倉效應
在 GKE 環境中,所有設定如機器、容器、服務與權限管理,都能以 Yaml 檔操作,使部署的框架與流程統一且透明,哪些部門對什麼物件進行了怎樣的配置都能一覽無遺。這一方面確定了權責的劃分,另一方面也避免了過往不同部署與管理方式所造成的部門隔閡。
持續改善
GKE 是基於 Docker 容器的管理工具,因此 GKE 中運行的應用程式是經過解耦的(應用程式被拆分成多個不同功能的模組),也就是微服務的概念。輕量化應用程式在提高部署效率的同時,也能針對不同模組進行細部的更新迭代與除錯,解決以往一體式應用程式的缺陷。另外透過與 Google Cloud 串接,所有發布的應用程式版本都會被保存下來,若新版本出現問題,也能立即退回可正常運行的舊版。
讓任何事情可被量測
有賴於 GKE 帶來的一致性開發環境, 在與 Google Cloud 串接後整體的運作流程都清楚且透明。從前期的應用程式編寫到測試再到部署維運,所有步驟都有各自的服務能保存紀錄,在發生問題時可快速找到發生問題的節點以排除故障。
應用 GKE 和其他 Google Cloud 工具的 DevOps 實踐架構
透過上文我們了解 GKE 有許多勝過 K8s 的優勢和滿足 DevOps 原則的特點,但在雲端上究竟要如何以 GKE 規劃出一套省時省力的 DevOps 實踐架構呢?一起透過下方的架構圖來了解吧!
CI/CD 工具
CI/CD 工具是實踐 DevOps 不可或缺的一環,因為它的概念就是自動化軟體交付與架構變更,讓構建、測試與軟體發布更敏捷頻繁且可靠。
Cloud Source Repository
Cloud Source Repository 是 Google Cloud 提供的原始碼管理庫,功能與 GitHub 相似,是利於多人協作開發的代碼庫,可用來儲存與同步多個開發人員的程式碼更動。
Cloud Build
為無伺服器的 CI/CD 服務,可支援各種程式設計語言版本的應用程式。主要運作模式是透過設定觸發器(Trigger)來監控目標代碼庫(Repository),並根據代碼庫的更動來進行創建、保存與部署 Image 等行為。
Artifact Registry
Artifact Registry 可用來儲存容器要使用的 Image。上述提到 Cloud Build 在偵測到 Source Repository 更新後會自動創建 Image,而此 Image 會被存到指定的 Artifact Registry,且每次創建都會留下對應版本,確保部署新功能導致服務出問題時能快速退回上一個可正常運行的版本。
Cloud Deploy
Cloud Deploy 為全代管的 CD 工具,與 Cloud Build 不同的是其主要用在建立不同 Cluster 間的 CD Pipeline。透過 Pipeline,正式部屬前我們可先在測試用的 Cluster 確認新服務運行狀態,順利運行後再推送到用於實際生產環境的 Cluster。
維運監控工具
CI/CD 工具提供自動化的整合與部署,但還須加入維運與監控才是完整的 DevOps,而 Google Cloud 上就有 Cloud Operation Tools 這一系列的維運監控工具,一起認識它的具體功能吧。
Cloud Operation Tools
Cloud Operation Tools 在創建 GKE 時會被自動啟用,其中最主要的工具是 Cloud Mointoring 與 Cloud Logging。前者提供了客製化指標,使用者可根據需求設置對應指標,創建 Dashbroad 進行監控,且能針對各個指標設置對應閾值,一旦超出範圍就會發出警告。而後者則保留了所有操作紀錄,讓我們除了發生錯誤時可透過 Log 排除故障,也能針對特定 Log 設置警告,在相同錯誤發生時快速收到相關消息。
結論
透過以上介紹,相信大家已明白為什麼 GKE 與各類 Google Cloud 服務的結合,能更有效率地實踐 DevOps。GKE 在具備 K8s 功能的同時又兼具雲端優勢,讓我們在設備與服務的選擇上有更多彈性,而在維護與管理面的負擔也大幅降低,有效彌補了過往以 K8s 實踐 DevOps 的不足之處。
關於 Cloud Ace
Cloud Ace 為亞洲據點最多的 Google Cloud 合作夥伴,擁有 12 項 Google 專業領域認證與超過 400 張的專業證照, 集團服務過全球超過 500 家企業。如有 Google Cloud 產品導入或客製化專案開發需求,歡迎與我們聯繫。
- Mail:marketing@tw.cloud-ace.com
- Phone:+886-2-2377-2766
- Facebook :Cloud Ace Taiwan
- LinkedIn:Cloud Ace Taiwan
- YouTube:Cloud Ace Taiwan
- 本文內容由 Cloud Ace 提供
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!