映射与应用程序代码版本相对应的配置和基础设施的版本控制

问题描述 投票:0回答:1

我有一个具有如下结构的应用程序 服务 A - 应用程序和环境配置、基础设施依赖项(队列、数据库等)等。 服务B - 应用程序和环境配置

遵循此处回复中的建议,我的申请可以采用以下任一结构(答案 1) Git(SCM).

-Service A
    src
    config
    infra
--Service B 
    src
    config
    infra

or 

答案2:

--Service A
    src
--Service B
    src
-Config (here there are configuration common to services/crosscutting + service specific)
     common.yml
     --service A
       application.test.yml
       :
     --service B
       application.dev.yml
-Infra
     env

从多个帖子来看,普遍的共识似乎是与主存储库有单独的代码和配置。通过配置,我的意思是现在说 .env 文件,它对于不同的环境是不同的。

如果是这样,那么如何维护 3 的版本控制。即示例

Version 2.0.0 
App code    - src depends on AWS SQS queue
Config code - .env for App code 2.0.0 that has SQS specific params also 
Infra code  - Cloud formation (general + SQS)

Version 3.0.0 
App code  - src depends on Kafka 
Config code - .env for App code 3.0.0 that has Kafka specific params 
Infra code - cf templates (general + Kafka )

我们如何对其进行版本控制,以便 AppCode 3.0.0 具有相应的配置和 IAC。使用 monorepo 概念,我们的问题是不同的团队进行基础设施并拥有自己的流程。

PS - 我无法评论和询问原来的问题,因为我没有足够的积分,因此有一个单独的问题。

git terraform configuration version-control devops
1个回答
0
投票

我对这个案例的建议是: 从主分支为每个服务创建一个分支:

开发团队A

git checkout -b 服务-a master

将您的更改提交到服务分支

git commit -m“所有更改”

创建标签版本2.0.0

git tag -a v2.0.0 -m "2.0.0 版本描述"

将标签推送到远程存储库

git推送原点v2.0.0


开发团队A

对服务 b 做同样的事情

git checkout -b 服务-b master

将更改提交到 service-b 分支

git commit -m“所有更改”

创建标签版本3.0.0

git tag -a v3.0.0 -m "3.0.0 版本说明"

将标签推送到远程存储库

git推送原点v3.0.0

主要思想是为每个服务创建一个分支。此外,您可以创建一个通用基础设施文件夹,并在版本控制存储库中创建策略来授予特定用户权限,以避免开发团队根据 Terraform 经验进行更改。

© www.soinside.com 2019 - 2024. All rights reserved.