[英]What is the best practice for Docker CD/CI workflow?
我对docker worlflow还是很陌生,我想知道对docker CD / CI工作流采取的最佳做法是什么...目前,大多数文章似乎并未真正谈论docker的“部署”部分,仅注册。
我想做的事:
为了实现步骤1-5,我具有以下堆栈。
用户推送到gitlab-> Gitlab webhook通知jenkins-> jenkins构建项目->将映像存储在gitlab docker注册表中。
我正在使用Rancher进行Docker映像部署...我真的很喜欢Rancher的分布式性。 也就是说,我可以指定要运行的docker映像,而rancher负责部署容器的服务器。
理想情况下,我希望步骤6是“分布式的”(即,我不想ssh进入服务器并运行docker run {imagename}
),并拥有某些服务来进行部署
目前有什么可以让我实现的目标吗?
关于最后一步,以Rancher为例(许多其他人也提供了类似的REST API),如果需要在Rancher自定义中定义自己的堆栈,则可以让Jenkins调用Rancher API进行服务升级。服务目录。
我也在寻找轻量级的解决方案,并且很高兴知道替代方案。
有很多不同的方法可以实现这一目标。
最简单的方法之一是使用配置管理工具来协调新映像的部署。 Ansible是一个不错的选择,但是其他人像木偶或厨师也可以。 这些工具将使您完全控制必须部署在何处的内容。 如本示例所述,您可以轻松滚动更新而不会造成任何流量中断。
另一种方法是依靠群集本身来自动部署服务。 这种方法通常称为编排。 诸如kubernetes之类的工具或最近带有一些魔术的docker swarm都是不错的选择。
顺便提一下,后一种方法趋向于微服务体系结构,似乎更有吸引力,但实现起来实际上更复杂。 它对集群执行的服务的构建方式进行了一些假设。 但是,第一种方法将适合任何类型的软件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.