1

让我对感到困惑的部分是建议将源代码与清单分开,例如,这就是不得不说的:

强烈建议使用不同的 Git 存储库来保存您的 kubernetes 清单(与您的应用程序源代码分开)。有关更多理由,请参阅最佳实践。

在一个典型的项目中,我会使用来设置一个测试环境,然后为每个 PR 删除环境on_stop但是,如果我将清单与源代码分开,则不清楚应该监视什么。

为了举例,假设我们有两个存储库:

  • foo托管应用程序代码
  • bar托管不同应用程序的清单

认为:

  1. 我在分支feature-001中创建了一个新foo分支。
  2. 每次我们向feature-001它添加提交时,都会创建一个新的镜像 ( foo:$COMMIT_SHA)。

我将如何创建一个控制的应用程序来监视这个分支的变化?

我当然可以使用 CLI 创建应用程序:

argocd app create "foo-$COMMIT_SHA" --repo https://github.com/gajus/bar.git --path bar -p image=foo:$COMMIT_SHA

但是 ArgoCD 怎么知道跟踪这个分支的变化?,即当一个新的 Docker 镜像从这个分支发布时,feature-001我如何告诉

4

1 回答 1

3

我将如何创建一个argocd受控的应用程序来监视这个分支的变化?

我不确定您为什么要取消 CLI 选项。CLI 可以创建一个应用程序,包括指向一个 git 修订版(可以是一个分支)。

例如:

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_SHAfrom repo提交foo到 repo bar,而其他人则使用模板语言并注入变量。

基于您的担忧,我将假设您遵循从 repofoo到 repo的提交bar方法。如果是这种情况,我建议将标志添加--upsert到 CLI 命令中,并且每次在分支管道中运行相同的 CLI 命令。

注意:此处添加的奖励选项是为类似--label branch=${BRANCH_NAME}. 然后可以使用它来定期查找/清理任何分支部署。

于 2020-10-01T19:32:22.590 回答