microservices - 你如何发布微服务?
问题描述
这个问题更多地与 CI/CD 实践和基础设施相关联。在我们遵循的版本中,我们将一组微服务 docker 镜像标签组合为一个版本,并执行 CI/CD 管道并将该 version.yaml 推广到登台和生产 - 比如说一种 Mono-release 模式。这样做的问题是,在某一时刻,我们需要序列化并且其他更改必须等待,直到一个单一版本经过测试并标记为准备好进入下一阶段。关于这里的更多描述。
另一种选择是微发布策略,其中每个微服务通过 CI/CD 管道通过生产并行发布。但这是否意味着管道的数量与微服务的数量一样多?替代方案可能有一个管道,但并行测试用例和轮询 CD - 有点像 GitOps 方式,它采用最新的生产标记 Docker 图像。
关于 MS 发布方式的信息似乎很少。大多数人都在谈论接口级别或 API 级别的版本控制和发布,这并不是我真正想要的。
解决方案
假设您的组织正在开发微服务架构中的服务,并且正在部署在 Kubernetes 集群中,您必须使用一些 CD 工具(持续交付工具)来发布新的微服务服务,甚至更新微服务。
看看像 Jenkins ( https://www.jenkins.io )、DroneIO ( https://drone.io ) 这样的工具......一些组织使用 Python 脚本或 Go 等等......我个人,不喜欢这种方法,我认为最好的解决方案是从持续集成和交付组的 CNCF Landscape ( https://landscape.cncf.io/zoom=150 ) 中选择一个工具,这些是市场上测试和使用的工具.
另一种选择是微发布策略,其中每个微服务通过 CI/CD 管道通过生产并行发布。但这是否意味着管道的数量与微服务的数量一样多?
在某些工具中,您可以有一个参数化管道,该管道根据接收到的参数构建项目,但我认为最好的解决方案是每个服务都有一个管道,以及一些参数化管道来部署或应用特定测试、存档资产等。 ..就像你说的微发布策略
推荐阅读
- typescript - How do I hide the Jest types so I can use Mocha?
- javascript - i am generating a dropdown menu using the DOM and filling the options with data received from an API
- r - 导入多个文件,然后将计算输出到一个文件中
- php - php 执行 npm 运行构建
- sql - 如何使用来自另一个表的查询更新表 Microsoft Access
- python - Python钢琴瓷砖机器人
- c - 程序按用户打印出基本详细信息。输出中不断出现错误
- javascript - Javascript selenium,等到页面完全加载
- ios - iOS Storyboard:垂直居中所有子视图,无论是1还是2(动态确定)
- android - 如何在遵循 CLEAN 架构原则的多模块应用程序中有效地使用 Hilt?