Kubernetes 如何管理基于微服务的应用程序的逻辑分组,以确保CI/CD管道的版本兼容性?

Kubernetes 如何管理基于微服务的应用程序的逻辑分组,以确保CI/CD管道的版本兼容性?,kubernetes,continuous-integration,microservices,devops,continuous-deployment,Kubernetes,Continuous Integration,Microservices,Devops,Continuous Deployment,对于基于微服务体系结构的应用程序,我试图了解一个标准流程,即如何在独立部署的微服务之间逻辑地分组和管理正确的版本兼容性。让我用实际情况来阐述: 比如说,我正在构建一个由10个微服务组成的软件应用程序。所有的微服务都有其独立的存储库(分支工作流等)和独立的CI/CD管道。 每当将任何更改推送到相应微服务的“主”分支时,都会触发CI/CD管道 考虑到Helm chart和基于Kubernetes的部署,所有的微服务在第一次部署时都将使用1.0版进行部署,我们的系统将正常工作。对于后续版本,我们可能只

对于基于微服务体系结构的应用程序,我试图了解一个标准流程,即如何在独立部署的微服务之间逻辑地分组和管理正确的版本兼容性。让我用实际情况来阐述:

比如说,我正在构建一个由10个微服务组成的软件应用程序。所有的微服务都有其独立的存储库(分支工作流等)和独立的CI/CD管道。 每当将任何更改推送到相应微服务的“主”分支时,都会触发CI/CD管道

考虑到Helm chart和基于Kubernetes的部署,所有的微服务在第一次部署时都将使用1.0版进行部署,我们的系统将正常工作。对于后续版本,我们可能只有两个服务可以部署。因此,在两次产品发布之后,每个微服务都将处于不同的版本,以便在该时间点组成一个应用程序

我的问题是:

  • 如何对独立部署的微服务进行逻辑分组,以便部署或回滚到早期版本,即如何确定早期版本的不同微服务的版本

  • 是否有任何现有工具或标准实践来跟踪给定版本的每个微服务的版本,以便无缝回滚到预期版本

  • 如果不是自动化解决方案,那么解决此类需求的正确方法是什么


  • 感谢您在这方面的想法和建议。

    考虑一下kuberenets: 1.头盔是很好的部署和跟踪工具。 2.本机k8s部署工作得很好,您需要正确使用部署,尤其是k8s命令中的look--record标志,例如

    使用AWS ECS群集: 1.他们有任务定义和任务。我想这对你很有用

    没有docker compose、swarm和其他工具的指针。但是您可以随时使用git的强大功能和一些脚本。
    其想法是创建一个文件,列出服务/容器/代码的所有版本。并用代码在git中提交该文件。为了简单起见,把它做成标签。脚本应将此状态文件与当前状态进行比较,并仅应用特定更改。再看看。它只不过是由许多git项目组成的一组,它通过每个项目的提交id跟踪每个项目的状态。这在你提到的情况下帮助了我们

    这是一个相当新的问题,我们刚刚推出了一个新工具来解决这个问题。这里还有我关于这个主题的帖子:。目前,我们正处于MVP阶段,许多工作正在进行中-如果我们的方向对您有意义,请参阅本视频教程

    如果您决定实施,并且在集成方面有任何问题或需要帮助,请给我贴上标签,我非常愿意为您提供帮助

    总结一下我们正在做的几件事——我们将面向开发人员的项目(映射到源代码的项目)表示为项目,将面向客户的项目(客户看到的捆绑包)表示为产品

    我们说,产品本质上是项目的组成部分,并提供工具,使您可以将不同版本的项目编译成所谓的产品包。然后,您可以将其集成到任何CI或CD工具中,或者在尚未配置CICD的情况下手动启动

    除此之外,是的,我强烈推荐helm和kubernetes,这是我们在新项目中使用的。(我还可以将ArgoCD和Spinnaker添加到现有工具中)。但仅仅跟踪不同版本的微服务的排列并确定哪些配置是好的,哪些不在不同的环境之间是不够的