我们有一个 ArgoCD 项目。在这个项目中,我们有多个应用程序(我们称它们为 A、B 和 C),它们通过 Kafka 集群相互传递消息。为此,需要创建主题。
App A 负责管理 Kafka 集群(除其他外)。我们在应用程序 A 中有一个 PreSync Hook ,用于在更新应用程序 B 和 C 所依赖的其他资源之前创建和配置主题。
这意味着我们需要应用 A 在其他应用之前同步以确保顺利推出。为了尝试解决这个问题,我们将应用程序 A 添加到 SyncWave -1
, 其他人默认 0
kind: Application
metadata:
name: "A"
annotations:
argocd.argoproj.io/sync-wave: "-1"
我们最初的假设(也许是愚蠢的)是同步协调应用 项目内 ,不过好像只适用于在应用程序内 .所以发生的情况是应用 A 中的资源等待 PreSync Hook 按预期供应主题,但应用 B 和 C 不等待应用 A 同步。
有没有办法控制项目内应用程序之间同步的顺序/依赖关系?
我已经看到提到“应用程序的应用程序”模式,其中您有一个应用程序可以部署所有其他应用程序。这样做是否允许我们利用 SyncWave 来确保应用 A 在尝试同步应用 B 和 C 之前完全解析?如果没有,还有其他方法吗?
最佳答案
我们有一个应用程序的应用程序(引导应用程序),这就是我们在应用程序之间编排同步波的方式。我没有运气但是也向每个应用程序的 list 中添加了同步波。从文档看来, list 是按种类应用的(例如,首先是 namespace ),然后按名称的字母顺序(不区分大小写)。
关于kubernetes - 应用程序之间的 ArgoCD 同步波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63806794/