【发布时间】:2018-08-29 19:59:09
【问题描述】:
从 Gitlab CI 管道在 aws EFS 中部署文件的最佳实践是什么?
目前,我们通过 ssh 将文件从 gitlab.com 部署到 EFS 到挂载 EFS 的 EC2 实例之一。有没有更好的方法来做到这一点?不太喜欢让 ssh 访问我们的 EC2 实例的 gitlab
【问题讨论】:
标签: amazon-web-services gitlab-ci amazon-efs
从 Gitlab CI 管道在 aws EFS 中部署文件的最佳实践是什么?
目前,我们通过 ssh 将文件从 gitlab.com 部署到 EFS 到挂载 EFS 的 EC2 实例之一。有没有更好的方法来做到这一点?不太喜欢让 ssh 访问我们的 EC2 实例的 gitlab
【问题讨论】:
标签: amazon-web-services gitlab-ci amazon-efs
如果您希望文件最终存储在 EFS 上,那么最终您将不得不从安装了 EFS 卷的系统某处将它们写入那里。除了写入它提供的安装了 nfs 的卷之外,没有其他方法可以写入 EFS。 (EFS 提供 FileSync 服务,AFAICT 仅包装了创建 EC2 实例并通过它将数据移动到 EFS 的过程,但与正在进行的文件操作相比,这看起来更适合迁移)。
这并不一定意味着您必须允许 gitlab 进入。您可以让 gitlab 在某处暂存文件并通知系统。或者您可以让系统轮询更改。但这些似乎都不像您的实现那么简单。
另一个选项是限制 ssh 用户可以执行的操作。这需要一些调查才能准确确定 gitlab 文件复制过程的功能。如果它只使用 SFTP 或 SCP,您应该能够将用户限制在此范围内,并且用户文件系统权限可以防止用户写入不适当的位置。
作为一般说明,这些天我没有看到很多 devops 构建流程将代码复制到共享文件系统。 NFS 是共享文件的有效解决方案,但也有其自身的缺陷。相反,部署过程通常会构建某种包,然后使用部署挂钩(“持续交付”风格)自动部署包,或者手动更新部署自动化以升级版本。通常将两者结合起来,为开发环境提供持续交付过程,并为生产提供手动版本设置。
【讨论】: