TL;博士
在CI/CD管道中对没有公共端点的数据库运行迁移的最佳流/最佳实践是什么?
GH actions -> connect to remote db (somehow) -> run migration on said db和如何在部署失败时回滚。
问题
我需要设置一个流来部署应用程序,并相应地进行数据库迁移。我遇到的主要问题是,在与应用程序服务匹配的私有VPC中,最好将数据库设置为运行,而不需要具有公共端点。但是在这种情况下,如何从CI/CD管道运行迁移呢?
当前场景
这里的堆栈是nodejs、typeorm、弹性豆柄(EBS)和AWS。
dbmigrations/dev:latestfargate服务启动,并运行fargate任务成功运行的migrations.中。
- b) Exit if all tasks ran succesfully -> Deploy Succesful.下一个场景
现在,我在AWS上使用以下堆栈:nodejs、prisma和"App“、"RDS”。
我仍然希望在私有VPC中运行数据库,但我不确定如何对私有数据库运行prisma迁移。此外,我认为有一个比运行单独的坞容器来运行数据库迁移更简单的解决方案,因为这可能会导致部署的应用程序和数据库之间的误同步。
我知道有像liquibase & flyway这样的工具,但是两者都是付费的(我认为),而且由于prisma本身带有迁移流,我不明白为什么我需要另一个迁移工具来完成这样的任务。
提前感谢!
PS:我正在使用Github动作,但我更多的是寻找一个通用的流程。我不需要代码示例(因为我确信这也适用于其他管道服务)
发布于 2022-11-21 15:47:02
的确,您不应该在不需要从internet访问的数据库或实例上公开公共IP。但是,开发人员仍然应该可以访问这些服务器进行维护/调试等。
下面是一个Bastion主机,它是一个中央安全代理,允许您连接到私有服务器。您可以通过Bastion打开到RDS的隧道并运行迁移。
在AWS上还有较新的更安全的解决方案(不过,您仍然需要堡垒),称为Session Manager,它允许您更安全地连接到服务器( https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html )
https://stackoverflow.com/questions/74520523
复制相似问题