首页 > 解决方案 > 你如何发布微服务?

问题描述

这个问题更多地与 CI/CD 实践和基础设施相关联。在我们遵循的版本中,我们将一组微服务 docker 镜像标签组合为一个版本,并执行 CI/CD 管道并将该 version.yaml 推广到登台和生产 - 比如说一种 Mono-release 模式。这样做的问题是,在某一时刻,我们需要序列化并且其他更改必须等待,直到一个单一版本经过测试并标记为准备好进入下一阶段。关于这里的更多描述。

另一种选择是微发布策略,其中每个微服务通过 CI/CD 管道通过生产并行发布。但这是否意味着管道的数量与微服务的数量一样多?替代方案可能有一个管道,但并行测试用例和轮询 CD - 有点像 GitOps 方式,它采用最新的生产标记 Docker 图像。

关于 MS 发布方式的信息似乎很少。大多数人都在谈论接口级别或 API 级别的版本控制和发布,这并不是我真正想要的。

标签: microservicesrelease-management

解决方案


假设您的组织正在开发微服务架构中的服务,并且正在部署在 Kubernetes 集群中,您必须使用一些 CD 工具(持续交付工具)来发布新的微服务服务,甚至更新微服务。

看看像 Jenkins ( https://www.jenkins.io )、DroneIO ( https://drone.io ) 这样的工具......一些组织使用 Python 脚本或 Go 等等......我个人,不喜欢这种方法,我认为最好的解决方案是从持续集成和交付组的 CNCF Landscape ( https://landscape.cncf.io/zoom=150 ) 中选择一个工具,这些是市场上测试和使用的工具.

另一种选择是微发布策略,其中每个微服务通过 CI/CD 管道通过生产并行发布。但这是否意味着管道的数量与微服务的数量一样多?

在某些工具中,您可以有一个参数化管道,该管道根据接收到的参数构建项目,但我认为最好的解决方案是每个服务都有一个管道,以及一些参数化管道来部署或应用特定测试、存档资产等。 ..就像你说的微发布策略


推荐阅读