从Gitlab CI管道在AWS EFS中部署文件的最佳实践是什么?
当前,我们通过ssh将文件从gitlab.com部署到EFS到已安装EFS的EC2实例之一。有更好的方法吗?在我们的EC2实例中向ssh授予对gitlab的访问权限不是很热衷
答案 0 :(得分:0)
如果您希望文件最终存储在EFS上,则最终必须从安装了EFS卷的系统 somewhere 那里将其写入。除了写入EFS提供的安装在nfs上的卷外,无法写入EFS。 (EFS提供了FileSync服务,AFAICT只是将创建EC2实例并通过该实例将数据移动到EFS的过程进行了包装,但看起来比进行中的文件操作更适合迁移)。
这不一定意味着您必须允许gitlab ssh进入。您可以让gitlab将文件暂存到某个位置并通知系统。或者,您可以让系统轮询更改。但是这些似乎都不像您的实现那么简单。
另一个选择是限制ssh用户可以执行的操作。要确定gitlab文件复制过程的确切运行方式,需要花一些时间进行探索。如果它仅使用SFTP或SCP,则应该能够将用户限制于此范围,并且用户文件系统权限可能会阻止用户写入不适当的位置。
作为一般性说明,这些天我看不到很多devops构建流程将代码复制到共享文件系统。 NFS是共享文件的有效解决方案,但有其自身的陷阱。取而代之的是,部署过程通常会构建某种程序包,然后使用部署挂钩(“连续交付”样式)自动进行该程序包的部署,或者手动更新部署自动化以升级版本。通常,将两者结合起来可以为开发环境提供连续的交付过程,并为生产提供手动版本设置。