ArgoCD的ApplicationSet是一种声明应用程序和资源的高级资源。但是,如果ApplicationSet被删除或损坏,其中的应用程序和资源可能会丢失。下面是一种解决方法,以确保即使ApplicationSet被删除,这些应用程序和资源也会继续存在。
一种解决方法是使用ArgoCD的Project和Namespace资源。这些资源可以让您将应用程序和资源分组到一个共同的命名空间中。通过创建一个名为“保留”的ArgoCD项目,您可以在其中创建一个名为“reserved”命名空间,并将所有未来需要保留的应用程序和资源分配给该命名空间。这样,即使删除了原始的ApplicationSet,这些应用程序和资源仍将在“保留”项目的“保留”命名空间中继续存在。
以下是一个示例Project和Namespace的YAML文件:
apiVersion: argoproj.io/v1alpha1
kind: Project
metadata:
name: reserved
spec:
clusterResourceWhitelist:
- group: ""
kind: Namespace
name: reserved
---
apiVersion: v1
kind: Namespace
metadata:
name: reserved
labels:
app.kubernetes.io/part-of: reserved-ns
您可以使用以下命令创建项目和命名空间:
kubectl apply -f .yaml
要确保所有保留应用程序和资源属于此命名空间,请在每个应用程序规范中使用如下指定:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
... # your usual application spec
project: reserved
source:
namespace: reserved
这将确保此应用程序属于保留命名空
上一篇:ArgoCD安装问题