【发布时间】:2020-12-27 14:24:17
【问题描述】:
我们有一个 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 同步。
有没有办法控制项目内应用程序之间同步的顺序/依赖关系?
我看到有人提到“app-of-apps”模式,在这种模式下,您有一个应用程序可以部署所有其他应用程序。这样做是否允许我们利用 SyncWave 来确保应用程序 A 在尝试同步应用程序 B 和 C 之前完全解析?如果没有,还有其他方法吗?
【问题讨论】:
标签: kubernetes microservices argocd gitops