【问题标题】:How to achieve rolling release updates / rollback without docker?如何在没有 docker 的情况下实现滚动发布更新/回滚?
【发布时间】:2020-05-14 08:10:04
【问题描述】:

由于某些限制,我无法使用 docker,更不用说 Docker Swarm 和 Kubernetes 等 docker 编排工具了。

我还是想实现一个基本的 CI/CD 流程。

更具体地说,我想要一个系统来部署新版本,同时监控我的服务(即进行健康检查),如果出现故障,它会重新部署服务或回滚到以前的版本。

我可以使用哪些工具?

【问题讨论】:

  • 可能是个坏建议,但您可以考虑重建基础。码头工人等。只是 linux 容器和一堆管理它们的代码。你能运行 linux 容器并编写自己的管理引擎吗?您将拥有能够阅读 Docker 源代码的优势,因为它是免费提供的。
  • 你能指定你的堆栈吗?否则这个问题太笼统了。一般答案 - 是的,您可以,但您必须依赖特定于您的堆栈的工具。
  • @taleodor、Java、Spring Boot、MySQL、Linux

标签: microservices devops continuous-deployment


【解决方案1】:

对于堆栈中的基本 CI/CD,最好的选择是由 Ansible 之类的东西设置的 bash 脚本。如果您在云上并且需要大规模(远远超出基本),请考虑 Spinnaker(这将是 VM 级别的不可变基础架构方法)。

请注意,无论如何这是上一代的方法。但是你的 bash 脚本和基本案例的工具可能看起来像这样:

  1. 用于部署的 Ansible / Chef
  2. 服务发现的 Consul - 您也可以在那里进行基本的健康检查
  3. 一些负载均衡工具,如haproxy、nginx、traefik

您在 cron 上的 bash 脚本将按照以下方式运行:

  1. 拉取指定版本的 fat jar,启动 spring boot 进程,进行健康检查,在 consul 上注册服务
  2. 如果一切正常,将负载平衡器(即 haproxy)切换到这个新进程,然后终止旧进程
  3. 在 x 分钟内再次检查,如果有问题 - 回滚

这里将使用 Consul 跨多个节点进行同步。

再次注意,这是上一代的方法。现代容器编排工具可以为您完成大量此类工作,因此您无需编写所有这些内容。

【讨论】:

    猜你喜欢
    • 2013-12-11
    • 2022-12-17
    • 2012-09-13
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    相关资源
    最近更新 更多