圍繞 Kubernetes 的 8 大 DevOps 生產關鍵實踐

本文主要介紹 DevOps 的 8 大關鍵實踐在 Kubernetes 平臺下如何落地,結合我們目前基於 Kubernetes 平臺的 DevOps 實踐談談是如何貫徹相關理念的,這裏不會對其具體實現細節進行深入講解,只做一個大致的概括的描述,分享下已有的實踐,具體實踐細節有時間了會單獨整理一篇文章分享。

DevOps 簡介

DevOps 集文化理念、實踐和工具於一身,可以提高企業高速交付應用程序和服務的能力,與使用傳統軟件開發和基礎設施管理流程相比,能夠幫助企業更快地發展和改進產品。

Goals

The goals of DevOps span the entire delivery pipeline. They include:

  • Improved deployment frequency;
  • Faster time to market;
  • Lower failure rate of new releases;
  • Shortened lead time between fixes;
  • Faster mean time to recovery (in the event of a new release crashing or otherwise disabling the current system).

DevOps 的 8 大關鍵實踐在Kubernetes 平臺下的落地

下面爲基於 Kubernetes 的 CI/CD 流水線整體實踐,使用 Kubernetes + Docker + Jenkins + Helm + Harbor等雲原生工具鏈來構建 CI/CD 管道,基於雲平臺構建:

圖中採用gcr 谷歌鏡像倉庫,本地測試可以使用Harbor作爲私有鏡像倉庫。

1. Configuration Management
關於配置文件的管理我們統一使用 Kubernetes 提供的 configmap 和 secret 資源對象來實現,對於一般的應用配置使用 configmap 管理,對於敏感數據使用 secret 存儲。

2. Release Management
關於發佈管理,使用 Helm 工具統一以 Chart 的方式打包併發布應用,維護每個微服務的歷史版本,可以按需回滾。應用的鏡像版本統一存儲到一個 Docker 私服。

3. Continuous Integration
關於持續集成整合了一套完全開源的工具鏈:Gitlab + Maven + Jenkins + TestNg + SonarQuebe + Allure。Jenkins 運行在 Kubernetes 集羣中,所有的工具鏈都以容器的方式運行,按需定義並使用,無需單獨安裝維護。
img

4. Continuous Deployment
關於持續部署方面做需要形成完整的 Pipeline和適配的Pipeline,整個自動化 Pipeline 進行到預發佈環境,對於生產環境發佈,研發人員自助式點擊另一個單獨的部署 Pipeline Job 進行部署,選擇鏡像版本進行發佈。
img

5. Infrastructure as Code
基礎架構即代碼的指的是所有軟件基礎設施的管理維護都以代碼的方式管理起來,對於基礎設施資源的創建、銷燬、變更,不再是人工通過界面化點觸式管理,所有這些更改都基於代碼的提交變更和一套自動化框架。比如知名的 Terraform 就是一個業界比較流行的 IaC 框架,專門用於代碼化管理雲基礎設施。在 Infrastructure as Code 方面,其實 Kubernetes 完全契合這一點,所有的基礎架構及應用服務都可以被抽象成 API 資源對象,我們只需要按需定義 yaml 資源文件即可快速生成相應的資源。比如我們需要一個 Redis 中間件,那麼只需要編寫一個聲明式 yaml 文件,定義需要的配置、版本等信息即可以容器的方式在 k8s 集羣中運行起來。最終只需要在 git 代碼倉庫維護這些 yaml 文件即可。
img

6. Test Automation
關於測試自動化,目前主要有三種類型的測試:單元測試、後端接口測試、UI 自動化測試。所有的這些測試都集成在 Jenkins pipeline 中。後端接口測試和 UI 測試除了在自動化 Pipeline 中運行,還會每天定時跑測試,最終的測試報告統一收集到 Reportportal 報表平臺。
img

7. Application Performance Monitoring
關於應用監控採用雲原生架構下的最佳實踐: Prometheus 監控棧
img

8.Log collection

關於日誌採集基於 EFK 技術棧
img

相關文檔

https://www.wikiwand.com/en/DevOps#/Definitions_and_history

https://qhh.me/2019/09/07/%E5%9F%BA%E4%BA%8E-Kubernetes-%E7%9A%84-7-%E5%A4%A7-DevOps-%E5%85%B3%E9%94%AE%E5%AE%9E%E8%B7%B5/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章