首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在远程/云管理DB上运行迁移?(通过CI/CD)

如何在远程/云管理DB上运行迁移?(通过CI/CD)
EN

Stack Overflow用户
提问于 2022-11-21 14:31:56
回答 1查看 47关注 0票数 1

TL;博士

在CI/CD管道中对没有公共端点的数据库运行迁移的最佳流/最佳实践是什么?

GH actions -> connect to remote db (somehow) -> run migration on said db和如何在部署失败时回滚。

问题

我需要设置一个流来部署应用程序,并相应地进行数据库迁移。我遇到的主要问题是,在与应用程序服务匹配的私有VPC中,最好将数据库设置为运行,而不需要具有公共端点。但是在这种情况下,如何从CI/CD管道运行迁移呢?

当前场景

这里的堆栈是nodejstypeorm、弹性豆柄(EBS)和AWS。

  1. 构建对接者映像应用程序代码&将其推送到私有的ECR中,它单独地打包迁移并将其推送到单独的私有
  2. 。当迁移映像被推送到dbmigrations/dev:latest
  3. As时,一个与RDS位于同一个VPC中的fargate服务启动,并运行fargate任务成功运行的migrations.
  4. If,将应用程序代码部署到EBS
    • 构建新的码头映像
    • ,如果在部署到EBS
      • 时出现了问题,请将
      • 推送到另一个包含“回滚”migration
      • boot的另一个service

中。

代码语言:javascript
复制
- b) Exit if all tasks ran succesfully -> Deploy Succesful.

下一个场景

现在,我在AWS上使用以下堆栈:nodejsprisma和"App“、"RDS”。

我仍然希望在私有VPC中运行数据库,但我不确定如何对私有数据库运行prisma迁移。此外,我认为有一个比运行单独的坞容器来运行数据库迁移更简单的解决方案,因为这可能会导致部署的应用程序和数据库之间的误同步。

我知道有像liquibase & flyway这样的工具,但是两者都是付费的(我认为),而且由于prisma本身带有迁移流,我不明白为什么我需要另一个迁移工具来完成这样的任务。

提前感谢!

PS:我正在使用Github动作,但我更多的是寻找一个通用的流程。我不需要代码示例(因为我确信这也适用于其他管道服务)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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 )

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74520523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档