当前位置:Gxlcms > 数据库问题 > 如何使用 Spinnaker 和 Kubernetes 进行数据库变更发布

如何使用 Spinnaker 和 Kubernetes 进行数据库变更发布

时间:2021-07-01 10:21:17 帮助过:14人阅读

对于本教程,我们将使用 Go 编写的示例应用程序。此示例应用程序包含一个简单的 API 服务器以及一个用于上下迁移数据库的命令。我们将设置一个简单的持续部署 Pipeline ,将新的 Docker 镜像推送到镜像注册中心(Quay)时执行两项操作:

1. 使用新镜像运行数据库迁移

2. 部署新的 API 服务器

这个示例证明使用 Spinnaker 可以轻松实现整个部署流程的自动化,并确保我们以安全可重复的方式进行部署。

作为参考,我们将要部署的镜像是通过 Server 命令在3000端口上发布一个 API 服务器。要执行数据库迁移,我们将使用相同的 Docker 镜像,但不是执行该 Server 命令,而是使用该 Migrate 命令。以下是我们示例应用程序的 --help 输出:

用法:

  • golang-sample-service [command]

可用命令:

  • Help 有关任何命令

  • Migrate 帮助执行数据库迁移

  • Server 启动应用程序服务器

部署 API 服务器

首先,我们将使用 Spinnaker 建立一个简单的部署流程。这个 Pipeline 将把一个新的镜像推送到注册中心。

首先,我们需要配置触发器:

技术分享图片


然后,我们将通过单击“添加阶段”并选择“部署”来配置部署阶段。

技术分享图片


从那里,我们可以添加一个新的服务器组,使用触发镜像,并在“容器”部分下配置它的端口:

技术分享图片


技术分享图片


现在这些步骤已经完成,我们可以通过导航返回到“Pipeline”选项卡并执行 Pipeline 来测试我们的 Pipeline。这将把我们服务的第一个实例部署到我们的目标 Kubernetes 帐户。

技术分享图片


然后,我们可以通过导航到“Clusters”选项卡并查看我们的服务是否健康(由服务器组下的绿色实例表示)来验证我们的服务是否正在运行。

技术分享图片


数据库升级

我们教程的下一步将是将我们的数据库变更发布添加到我们的 Pipeline 中。为此,我们将利用 Run Job 阶段,并将其作为部署我们的应用程序的先决条件。这个阶段将通过 Docker 镜像触发我们的 Pipeline,并运行一个 Kubernetes Pod 来执行数据库迁移。如果 Pod 成功退出,该阶段将被视为成功,并进入我们现有的部署阶段。

首先,我们将添加 Run Job 阶段并对其进行配置。我们不需要为这个工作公开任何端口,但是我们需要添加一些额外的环境变量,以便我们的迁移框架知道如何连接到我们的数据库。对于本教程,我简单地连接到集群内 Postgres 数据库,但是您的应用程序可以轻松连接到 AWS 或其他数据库解决方案中的 RDS 实例。

我们将通过添加一个 Run Job 阶段开始,就像我们添加部署阶段一样:

技术分享图片


然后,我们将通过选择触发镜像来配置我们的工作,覆盖“参数”并在“容器”部分下添加我们的环境变量:

注意:迁移数据库的命令是 migrate up --dir={migrations-directory}

技术分享图片


技术分享图片


一旦我们的作业配置好了,我们所要做的就是配置部署阶段,依靠 Run Job 阶段的成功,通过导航到部署阶段并从 “depends on” 部分选择 “Run Database Migrations”:

技术分享图片


再次,我们可以执行我们的 Pipeline,现在,在部署阶段之前,我们将运行数据库迁移作为部署 Pipeline 的一部分。

技术分享图片


结论

以安全可靠的方式将软件交付给生产是一个难题。更糟糕的是,今天可用的工具只能解决一小部分问题。 Spinnaker 是一种减轻这种负担的方法,而不必像 Jenkins 一样将多个脚本和系统与 CI 平台粘合在一起。通过使用 Spinnaker Pipeline,我们可以使用现成的普通阶段来构建简单或复杂的部署,以满足您的公司的需求。

原文链接:

https://blog.spinnaker.io/deploying-database-migrations-with-spinnaker-and-kubernetes-6e6761f9d28a

作者:靳日阳,JFrog 研发工程师

具有多年软件开发经验;对Java主流技术、前沿框架都具有丰富的开发经验;擅长Linux服务器,对优化,部署等有深入研究,熟悉Jenkins,持续集成及交付,DevOps等。

欢迎转载,但转载请注明作者与出处。谢谢!


如何使用 Spinnaker 和 Kubernetes 进行数据库变更发布

标签:sof   lang   成功   tail   and   证明   单击   用法   eric   

人气教程排行