Argo Rollout 提供一种名为 Waves 的可插拔机制来解决依赖项排序问题。使用 Waves,可以为每个 Kubernetes 对象配置一个数字标签,然后定义 Waves 依赖关系。Argo Rollout 将首先通过跨所有对象的 Waves 标签排序来确定要部署的对象。然后,对于相同 Wave 标签的对象,将使用其定义的依赖关系进行排序。
下面是一个具有两个 Wave 的示例应用程序的部署清单。我们定义了 Wave 1 和 Wave 2,并使用它们来控制运行 Redis 和 Postgres 镜像的 Pod 的部署顺序。
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: example
spec:
strategy:
blueGreen:
activeService: example
autoPromotionEnabled: false
postPromotionAnalysis:
enabled: false
previewReplicaCount: 1
template:
metadata:
labels:
app: example
spec:
wave: "1"
containers:
- name: redis
image: redis
ports:
- containerPort: 6379
wave: "2"
containers:
- name: postgres
image: postgres
ports:
- containerPort: 5432