You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在删除或损坏ApplicationSet时保留Application及资源?

解决ApplicationSet删除/损坏时保留Application的方案

首先纠正你当前的配置误区:你把preserveResourcesOnDeletion放在了ApplicationSet的syncPolicy.syncOptions里,但这个参数是Application级的同步选项,作用是让Application删除时保留其管理的K8s底层资源,而非控制ApplicationSet对Application的删除行为。

要实现你的需求,分两种核心场景处理:

一、删除ApplicationSet时保留生成的Application

在ApplicationSet的spec根层级添加preserveResourcesOnDeletion: true,这才是控制ApplicationSet删除时是否保留其生成的Application资源的关键配置。示例完整配置片段:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: your-appset
spec:
  preserveResourcesOnDeletion: true  # 核心配置:放在spec根节点下
  generators:
    # 你的生成器配置(如List、Cluster等)
  template:
    spec:
      syncPolicy:
        automated:
          selfHeal: true
        syncOptions:
          - Validate=true
          - CreateNamespace=true
          - preserveResourcesOnDeletion=true  # 此配置作用于Application,保留其管理的底层资源

添加后,当ApplicationSet被删除时,所有由它生成的Application资源会被保留,不会被自动清理。

二、ApplicationSet损坏时避免Application被销毁

这里的“损坏”通常指ApplicationSet定义变更、控制器异常等导致其试图删除/修改已生成的Application,可通过以下方式防护:

  • 关闭Application的自动修复:如果业务允许,将ApplicationSet模板中Application的selfHeal设为false。这样即使ApplicationSet定义出现问题,控制器不会自动修改或删除已存在的Application,但代价是后续无法通过ApplicationSet自动同步Application的配置变更。
  • 给Application添加保护注解与Finalizer:在ApplicationSet的模板中,为生成的Application添加防护注解和Finalizer,阻止意外删除:
template:
  metadata:
    annotations:
      argocd.argoproj.io/preserve-resources-on-deletion: "true"
    finalizers:
      - resources-finalizer.argocd.argoproj.io
  • 解除Application与ApplicationSet的关联:如果需要长期保留某个Application,可以手动删除该Application上的app.kubernetes.io/instance标签(标签值对应ApplicationSet的名称),之后ApplicationSet控制器会停止对该Application的管理,即使ApplicationSet损坏或删除,该Application也不受影响。

关键区分

  • ApplicationSet层级的preserveResourcesOnDeletion:控制ApplicationSet删除时是否保留其生成的Application资源。
  • Application层级的preserveResourcesOnDeletion:控制Application删除时是否保留其管理的Pod、Deployment等底层K8s资源。

内容的提问来源于stack exchange,提问作者Keet Sugathadasa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:35:20