ArgoCD ApplicationSet - 即使 ApplicationSet 被删除或损坏,如何保留应用程序和资源

问题描述 投票:0回答:5

我有一个

ApplicationSet
,它在 Kubernetes 中创建了一些资源。它运行良好。但是,当我删除这个
ApplicationSet
时,相关的
Application
也会从 Argo 及其资源中删除。 (我知道这是应用程序集控制器所期望的)。但是,我想阻止这种情况发生。

场景:有时,当

ApplicationSet
被损坏时,它会破坏与其关联的
Application
。删除
ApplicationSet
时也一样。

我正在阅读此 document,在 ApplicationSet 中将

.syncPolicy.preserveResourcesOnDeletion
添加到 true,但它没有按预期工作。这是我当前的同步政策:

syncPolicy:
  automated:
    selfHeal: true
  syncOptions:
    - Validate=true
    - CreateNamespace=true
    - preserveResourcesOnDeletion=true

问题:即使

Application
被删除/损坏,我怎样才能保证我的
ApplicationSet
安全?

argocd
5个回答
4
投票

您可以在两个不同的位置设置同步策略:

  1. 在应用程序资源上(即在应用程序集中的
    spec.template
    中)
  2. 在 ApplicationSet 资源上

您正在寻找第二个。在您的 ApplicationSet 资源中进行设置:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
spec:
  syncPolicy:
    preserveResourcesOnDeletion: true

1
投票

安装 argocd 时,您可以设置如下值:

  applicationSet:
    args:
      policy: create-only

因此Argocd只会创建应用程序集一次,即使应用程序集发生问题应用程序也不会受到影响


0
投票

我刚刚注意到用于此目的的syncPolicy应该写成

syncPolicy:   
  preserveResourcesOnDeletion: true   
  automated:     
    selfHeal: true   
  syncOptions:     
    - Validate=true     
    - CreateNamespace=true

0
投票

如果要确保在 ApplicationSet 被删除或损坏时 Kubernetes 资源不被删除,可以考虑以下几种策略:

  • 在ApplicationSet中使用
    applicationsSync
    设置修改策略 [
    create-only
    ,
    create-update
    ,
    create-delete
    ,
    sync
    ] (link)
  • 在ApplicationSet中使用
    resources-finalizer
    来防止应用控制器在删除ApplicationSet时删除Application(链接
  • 在ApplicationSet中使用
    preserveResourcesOnDeletion
    防止子资源被删除(link)

为了安全起见,我已经实施了上述所有策略。

这是我的应用程序集配置的示例:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: myappset
  namespace: argocd
  finalizers:
  - resources-finalizer.argocd.argoproj.io  
spec:
  syncPolicy:
    applicationsSync: create-update
    preserveResourcesOnDeletion: true
  ...
  generators:
  ...
  template:
  ...

更多信息可以在这里找到:


-1
投票

默认情况下,ArgoCD 删除操作默认是级联的,这意味着 AppSet 创建的所有资源都将被删除。

当您尝试删除应用程序/应用程序集时,您需要将级联选项设置为 false ,类似于下面的内容

kubectl 删除应用程序集(名称)--cascade=false

有关更多信息,请查看此处的文档 https://argocd-applicationset.readthedocs.io/en/stable/Application-Deletion/

© www.soinside.com 2019 - 2024. All rights reserved.