我们有一个 ArgoCD 项目。在这个项目中,我们有多个应用程序(我们称它们为 A、B 和 C),它们通过 Kafka 集群相互传递消息。为此,需要创建主题。
应用 A 负责管理 Kafka 集群(除其他外)。我们在应用 A 中有一个 PreSync 挂钩,用于在更新应用 B 和 C 所依赖的其他资源之前创建和配置主题。
这意味着我们需要应用 A 在其他应用之前同步,以确保顺利推出。为了尝试管理这一点,我们将应用程序 A 添加到 SyncWave-1
中,其他默认设置为0
kind: Application
metadata:
name: "A"
annotations:
argocd.argoproj.io/sync-wave: "-1"
我们最初的假设(可能是愚蠢的)是在项目中应用同步协调,然而,它似乎只在应用程序中应用。
因此,应用 A 中的资源会等待 PreSync 挂钩按预期配置主题,但应用 B 和 C 不会等待应用 A 同步。
有没有办法控制项目内应用程序之间同步的顺序/依赖关系?
我看到有人提到“应用程序应用程序”模式,在这种模式下,您有一个应用程序可以部署所有其他应用程序。这样做是否允许我们利用 SyncWave 来确保应用程序 A 在尝试同步应用程序 B 和 C 之前完全解析?如果没有,还有其他方法吗?