使用ArgoCD和Liquibase在有数据库的Kubernetes中实现持续交付 - Piotr


围绕持续交付的最大挑战之一是与数据库的集成。因此,我们应该将此集成视为标准配置。是时候将数据库代码视为应用程序代码了。否则,我们的 CI/CD 过程在数据库中失败。
通常,当我们考虑应用程序的 CI/CD 流程时,我们有多个目标环境。根据云原生模式,每个应用程序都有自己独立的数据库。此外,它在每个环境中都是独一无二的。因此,每次运行交付管道时,我们都必须更新特定环境中的数据库实例。我们应该在运行新版本应用程序之前执行此操作(例如,使用蓝绿方法)。
这是我们场景的可视化。我们在三种不同的环境中发布 Spring Boot 应用程序。这些环境只是 Kubernetes 上不同的命名空间dev:test和prod. 整个过程由 ArgoCD 和 Liquibase 管理。在dev环境中,我们不使用任何迁移工具。假设我们把它留给开发人员。我们的机制对test和prod命名空间是有效的。

现代 Java 框架(如 Spring Boot)提供与 Liquibase 的内置集成。在这个概念中,我们只需要创建一个 Liquibase 更改日志并在 Spring 配置中设置它的位置。我们的框架在应用程序启动时运行这样一个脚本。由于它在开发中是一种非常有用的方法,因此我不建议将其用于生产部署。特别是如果您在 Kubernetes 上部署应用程序。为什么?您将在我在第一段中已经提到的文章中找到详细的解释。
 
源代码

如果您想自己尝试一下,可以随时查看我的源代码。为此,您需要克隆我的 GitHub 存储库
更多点击标题见原文