如何解决当托管清单与源代码分开时,如何创建功能分支?
令我感到困惑的gitops部分是关于将源代码与清单分开的建议,例如argocd对此要说的是:
强烈建议使用其他Git存储库来保存kubernetes清单(与应用程序源代码分开)。有关更多理由,请参见best practices。
在一个典型的项目中,我将使用gitlab设置测试环境,然后使用on_stop
action删除每个PR的环境。但是,如果我将清单文件与源代码分开,则不清楚argocd应该在看什么。
为示例起见,假设我们有两个存储库:
-
foo
托管应用代码 -
bar
托管不同应用的清单
假设:
我将如何创建一个argocd受控的应用程序来监视此分支的更改?
我当然可以使用CLI创建应用程序:
argocd app create "foo-$COMMIT_SHA" --repo https://github.com/gajus/bar.git --path bar -p image=foo:$COMMIT_SHA
但是ArgoCD如何知道要跟踪该feature-001
分支的更改?即从该分支发布新的Docker映像时,如何告诉argocd部署该应用程序的新版本?
解决方法
我将如何创建一个
argocd
受控的应用程序来监视此分支的更改?
我不确定您为什么不使用CLI选项。 CLI可以创建一个应用程序,其中包括指向git修订版(can be a branch)。
例如:
argocd app create "foo-$COMMIT_NAME"
--repo https://github.com/gajus/bar.git
--path bar
--revision $BRANCH_NAME
--parameter image=foo:$COMMIT_SHA
--sync-policy automated
请注意此处设置的自动同步策略。这意味着对修订的任何更新都将更新分支。
从该分支发布新的Docker映像时,我如何告诉argocd部署该应用程序的新版本
以上答案解释了ArgoCD应用程序如何跟踪git的变化,但是这个问题暗示了更新部署/复制清单清单中的标签的问题。这在很大程度上取决于您如何为主分支执行此操作。有些人将进行硬编码,另一些人将$COMMIT_SHA
从仓库foo
提交到仓库bar
,而其他人则使用模板语言并注入变量。
基于您的关注,我将假设您遵循从仓库foo
到仓库bar
的提交方式。如果是这种情况,我建议将标志--upsert
添加到CLI命令中,并在分支管道中每次都运行相同的CLI命令。
注意:此处添加的奖励选项是为--label branch=${BRANCH_NAME}
之类的东西添加一个附加标志。然后可以将其用于定期查找/清除任何分支部署。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。