ArgoCD - 在具有多个应用程序的 monorepo 中部署一个应用程序时,所有应用程序都会重新同步触发

ahn*_*suk 6 argo argocd

全部 !:)

\n

I\xe2\x80\x99m 使用具有多应用程序架构的单一存储库。

\n
- foo\n  - dev\n  - alp\n  - prd\n- bar\n  - dev\n  - alp\n  - prd\n- argocd\n  - dev\n    - foo-application (argo cd app, target revision : master, destination cluster : dev, path: foo/dev)\n    - bar-application (argo cd app, target revision : master, destination cluster : dev, path: bar/dev)\n  - alp\n    - foo-application (argo cd app, target revision : master, destination cluster: alp, path: foo/alp)\n    - bar-application (argo cd app, target revision : master, destination cluster: alp, path: bar/alp)\n  - ...\n
Run Code Online (Sandbox Code Playgroud)\n

最近我发现合并到master分支也会触发与其他应用程序的同步,尽管目标路径目录没有变化。

\n

因此,每当一个应用程序被修改并合并到主应用程序时,多个应用程序就会变得不同步 -> 正在同步 -> 已同步 。:(

\n

在我看来,如果目标路径没有代码变化,即使分支的git sha值发生变化,synced也是维持的。

\n

但它不是\xe2\x80\x99t。当目标分支的git sha发生改变时,通过改变缓存key来无条件触发ArgoCD。

\n

为了解决这个问题,为每个应用程序创建一个清单存储库似乎很浪费。

\n

在寻找解决方案时,我遇到了这个功能。

\n

webhook 和清单路径注释

\n

然而,根据文档,这似乎与 GitHub Webhook 一起使用时有效。

\n

目前我们使用 ArgoCD 每 3 分钟轮询一次存储库。这个注释在这种情况下不起作用吗?

\n

小智 0

是的,manifest-generate-paths注释仅适用于 webhook。但是,请看一下: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/#selective-sync

如果您将其添加到应用程序的syncPolicy中:

    syncOptions:
    - ApplyOutOfSyncOnly=true
Run Code Online (Sandbox Code Playgroud)

Argo 仅当资源清单发生更改时才会同步资源