使用ArgoCD和Liquibase在有資料庫的Kubernetes中實現持續交付 - Piotr

banq 發表於 2022-01-25
資料庫 IoT Go Kubernetes

圍繞持續交付的最大挑戰之一是與資料庫的整合。因此,我們應該將此整合視為標準配置。是時候將資料庫程式碼視為應用程式程式碼了。否則,我們的 CI/CD 過程在資料庫中失敗。

通常,當我們考慮應用程式的 CI/CD 流程時,我們有多個目標環境。根據雲原生模式,每個應用程式都有自己獨立的資料庫。此外,它在每個環境中都是獨一無二的。因此,每次執行交付管道時,我們都必須更新特定環境中的資料庫例項。我們應該在執行新版本應用程式之前執行此操作(例如,使用藍綠方法)。

這是我們場景的視覺化。我們在三種不同的環境中釋出 Spring Boot 應用程式。這些環境只是 Kubernetes 上不同的名稱空間dev:test和prod. 整個過程由 ArgoCD 和 Liquibase 管理。在dev環境中,我們不使用任何遷移工具。假設我們把它留給開發人員。我們的機制對test和prod名稱空間是有效的。

使用ArgoCD和Liquibase在有資料庫的Kubernetes中實現持續交付 - Piotr

現代 Java 框架(如 Spring Boot)提供與 Liquibase 的內建整合。在這個概念中,我們只需要建立一個 Liquibase 更改日誌並在 Spring 配置中設定它的位置。我們的框架在應用程式啟動時執行這樣一個指令碼。由於它在開發中是一種非常有用的方法,因此我不建議將其用於生產部署。特別是如果您在 Kubernetes 上部署應用程式。為什麼?您將在我在第一段中已經提到的文章中找到詳細的解釋。

 

原始碼

如果您想自己嘗試一下,可以隨時檢視我的原始碼。為此,您需要克隆我的 GitHub 儲存庫

更多點選標題見原文