如何使用通用軟體簡化CI/CD?
為了自動化部署過程,CI/CD需要上下文:部署配置、構建配置、工件、版本號、依賴關係、環境變數、測試結果等。這些資料並不存在於一個地方——它通常分散在多個系統和工具中。
例如,部署配置可能儲存在一個單獨的YAML檔案中,環境變數可能在指令碼或部署清單中定義,版本號可能在電子表格中手動跟蹤。
太多的事實來源可能會導致幾個問題,包括複雜性增加、後設資料不一致、難以更新資料,最重要的是,無法應用自動化。作為內部開發人員入口網站的核心,軟體目錄可以提供一個解決方案。
第一步:可以儲存CI/CD資料的軟體目錄
第一步是建立一個包含正確資料的軟體目錄。它應該是一個通用軟體目錄,允許新增具有不同資產和關係的資料型別,提供靈活性,使每個人都可以將自己的資料模型新增到目錄中。
內部開發人員門戶是平臺工程的核心。它向開發人員提供了作為平臺一部分構建的自助服務操作,還提供了軟體目錄。
這就是它變得有趣的地方。從開發人員的經驗來看,軟體目錄可以解釋為一個經過編輯的白名單資料儲存,旨在幫助開發人員克服認知負荷。
但這並不是故事的全部。實際上,使用CI/CD的軟體目錄是非常強大的。軟體目錄可以儲存有關構建、環境、雲等的資料。這種型別的軟體目錄對於為CI/CD上下文建立一個單一的事實來源是非常有益的。
平臺工程團隊正在積極實現這些好處,尤其是在CI/CD後設資料方面。他們使用軟體目錄作為CI/CD事實的單一來源,並且還使用軟體目錄中的CI/CD資料作為其自動化工作流的一部分。
透過在軟體目錄中包含有關叢集、環境、雲區域和供應商的相關資料,CI/CD過程可以更加智慧和自動化,從而實現更好的工程。它將CI/CD與所需的上下文資料解耦,分離控制元件,並使故障和管道破裂的故障排除更加容易。
透過開發人員門戶,這些功能還幫助平臺工程團隊為開發人員提供更好的部署過程可見性,因為他們可以實時檢視部署狀態和發生的任何錯誤。
下一步:版本控制和安全
一旦建立了軟體目錄,當CI/CD資料還用於版本控制和安全性時,它的單個事實來源的好處就可以得到進一步的發揮。
跟蹤對後設資料和配置檔案所做的所有更改可以提高後設資料隨時間變化的可跟蹤性。這對於審計目的和理解部署過程的演變非常有用。
此外,它還推動了更好的協作(透過版本和更改跟蹤)、更快的問題解決以及快速恢復到以前版本的能力,並提高了合規性。當CI/CD資料是碎片化的時,這很難做到,但使用軟體目錄要容易得多。
軟體目錄通常確保只有授權使用者才能訪問和修改後設資料,從而降低未經授權訪問、資料洩露和其他安全事件的風險。例如,導致S3儲存桶公開或將具有個人身份資訊的服務暴露在網際網路上的錯誤配置。
工作原理
軟體目錄本質上是一個集中的資料庫,儲存與CI/CD過程相關的所有後設資料。它可以透過RESTAPI進行訪問和修改,RESTAPI使CI/CD管道能夠以程式設計方式與後設資料儲存進行互動。資料型別、資產和關係可以在需要時輕鬆新增,因為不同的組織執行DevOp的方式不同。
應該訪問和儲存哪些資料?這取決於我們所稱的資料模型,即管道中重要的資產和類別。例如:
你可以按不同的類別組織目錄,每個類別都包含與CI/CD過程的特定方面相關的後設資料。例如,可能有一個用於部署配置的類別、一個用於環境變數的類別和一個用於版本控制的類別。
在每個類別中,都會有不同的後設資料項或關鍵字。例如,在部署配置類別中,可能存在部署目標、部署策略和部署版本的後設資料項。
CI/CD管道可以透過使用RESTAPI與後設資料儲存互動,指定要訪問的類別和後設資料項。例如,為了檢索特定應用程式的部署目標,CI/CD管道可能會向部署配置類別傳送GET請求,指定部署目標的後設資料項。
圖形資料庫對軟體目錄的重要性
圖形資料庫對於軟體目錄來說很方便。由於軟體目錄中的不同實體具有複雜的關係(例如,服務部署在雲賬戶中K8s叢集中的名稱空間上),並且這些關係很重要,因此需要能夠方便地查詢它們。圖形資料庫可以做到這一點。這在CI/CD管道的上下文中特別有用,因為開發人員、DevOps和機器需要能夠快速訪問有關係統不同部分如何相關的資訊。
假設我們想要識別使用特定映象版本的所有服務。如果沒有後設資料儲存,需要手動搜尋各種服務的配置和文件,以找到匹配的配置和檔案。但是使用圖形資料庫,我們可以為每個服務建立節點,並將它們連結到它們使用的映象版本。這使我們能夠快速查詢圖表,找到使用所需映象版本的所有服務。我們可以從查詢映象版本節點開始,然後遍歷它與服務節點的關係。我們甚至可以向節點新增其他資訊,例如服務執行的環境、上次更新的日期以及任何相關的警報或問題。這提供了整個系統的全面檢視,並使我們能夠輕鬆跟蹤和管理服務。
假設我們想識別在特定地區執行的所有服務(例如,如果正在運維一個大型雲平臺,為不同地區的客戶提供服務)。如果沒有圖形資料庫,我們將需要在不同的資料來源上執行多個查詢,並嘗試將資訊拼湊在一起。然而,對於圖形資料庫,我們可以在一個查詢中完成。
這種原生查詢複雜關係的能力對於使開發人員和機器能夠更有效地執行影響分析、管理配置、執行連續測試和管理釋出至關重要。這不僅簡化了CI/CD過程,還有助於確保系統的整體穩定性和可靠性。
軟體目錄必須API優先
現在我們需要考慮如何輕鬆地將資料匯入軟體目錄。輕鬆地將資料攝入軟體目錄需要API優先的方法。這包括來自雲提供商、Kubernetes(用於叢集資料)、git提供商、基礎設施即程式碼(IaC)工具(如Terraform或Crossplane)等的資料。
API優先的方法還可以輕鬆地構建與其他工具和系統的整合,例如建立一個包含有關基礎設施和應用程式資訊的儀表板。這可以幫助構建一個更全面、更有用的後設資料儲存,從而提供基礎設施和應用程式的整體檢視。
結論
平臺工程和用作開發人員核心介面的內部開發人員門戶的興起,也為建立一個不僅對開發人員有用的軟體目錄提供了機會。具有CI/CD後設資料的軟體目錄可以建立單一的事實來源,解決版本和安全問題,並允許部署過程的自動化等。
來自 “ 開源雲中文社群 ”, 原文作者:開源雲中文社群;原文連結:https://mp.weixin.qq.com/s/xQfvWBzVlVXJCZ8yPNJCpg,如有侵權,請聯絡管理員刪除。
相關文章
- 簡述如何使用ArgoCD實現CI/CD部署? - redditGo
- DevOps,CI,CD,自動化簡單介紹dev
- CI & CD ?
- CI/CD理解
- 使用Kubernetes-Jenkins實現CI/CDJenkins
- 應該使用什麼 CI/CD 工具?
- 使用Github Action 進行CI-CDGithub
- 如何提高CI/CD管道安全性?
- CI/CD的概述
- 使用 Gitlab CI/CD 實現自動化釋出站點到 IISGitlab
- Flutter App 使用 Github Actions 進行 CI/CDFlutterAPPGithub
- 微服務架構下 CI/CD 如何落地微服務架構
- 簡談企業Power BI CI/CD實施框架框架
- Drone CI/CD 介紹
- 前端初探 Gitlab CI/CD前端Gitlab
- Gitlab-CI/CD 2Gitlab
- gitlab 實現CI/CDGitlab
- 利用開源軟體搭建JAVA工程CI&CD自動化工具鏈Java
- 微軟釋出Azure Pipelines,開源專案可無限制使用CI/CD微軟
- 使用Github Actions + Watchtower 實現專案CI/CDGithub
- 使用Spring Boot設定GitLab CI/CD管道 - MarcusSpring BootGitlab
- java ci/cd環境搭建Java
- Android Gitlab CI/CD指令碼AndroidGitlab指令碼
- 什麼是 CI/CD? - reddit
- 使用Kubernetes實現CI/CD幾個注意點 - harness
- jenkins如何構建github上的程式碼(ci cd)JenkinsGithub
- CISO 如何在CI/CD環境中維護安全
- Jenkins與Docker的自動化CI/CD實戰(一)JenkinsDocker
- CI和CD之間的真正區別 -Fire CI
- 基於 GitLab CI 的前端工程CI/CD實踐Gitlab前端
- .NetCore 配合 Gitlab CI&CD 實踐 - 單體專案NetCoreGitlab
- [小團隊自動化] (一) Drone CI For Github —— 打造自己的CI/CD工作流Github
- Tekton雲原生CI/CD介紹
- 純 Git 實現前端 CI/CDGit前端
- .Net在Windows上使用Jenkins做CI/CD的那些事WindowsJenkins
- 通用自動化測試軟體 — TAE
- Jenkins在Java web專案CI/CD中的簡單應用JenkinsJavaWeb
- Drone CI For Github —— 打造自己的CI/CD工作流(一)Github