问题描述
在一个类似Databricks的SaaS项目中,我们可能会发布项目的2.0.0版本,并进行自动化测试和部署到开发环境,自动化推进到非生产环境等等。但是在生产环境中,可能会有200个实例同时运行。
针对使用GitLab CI,如何最佳地管理这200个实例/生产环境?显然不希望使用200个由合并控制的分支来进行部署。如何在这么多环境中获得全面的概览?如何确保它们被完整部署?如何查看它们的版本和部署进度?如何确保成功的流水线中已经完成了冒烟测试?
有人暗示Spinnaker可能是填补这个空白的好工具。如果是这样,有人能解释一下吗?还有其他更好的选择吗?
解决方案
请注意以下操作可能涉及第三方工具的使用,操作前请做好相关备份。
使用GitLab操作仪表板
在GitLab中,有一个名为”GitLab操作仪表板”(GitLab Operations Dashboard)的功能,你可以通过链接(https://docs.gitlab.com/ee/user/operations_dashboard/)了解更多详情。
但是需要注意,该功能目前对项目数量和个人使用有一些限制,对于公司/团队规模的使用可能不太适合。虽然目前功能有限,但据了解GitLab正在努力扩展其功能以适应更广泛的用途。
考虑现代持续交付工具
针对部署到大量节点/实例的需求,现代持续交付工具如Spinnaker、Argo、Flux、Jenkins X等(取决于你的技术栈和用例,大多数是针对Kubernetes的)是有帮助的。它们可以帮助你将特定的代码库(一组构件)部署到大量的节点/实例上。
然而,这些工具并不能帮助你进行版本管理或跟踪版本。它们主要用于根据你指定的版本在大规模上进行部署。
如果你需要解决版本管理问题,可以考虑集成一些工具。例如,项目RelizaHub可以与任何CI/CD解决方案集成,用于解决版本控制问题。你可以查看最新的演示视频https://www.youtube.com/watch?v=PzdZjMby6Is,了解它如何帮助跨不同环境进行版本管理,并查看特定版本何时在哪个实例上部署。
在选择适合你的解决方案时,需根据项目需求和技术栈做出合适的决策。