Repository: argoproj/argo-cd
Pull request #6021 (2021-04-12 16:35:33)

refactor: upgrade redis-ha to 4.12.14 & cleanup generate.sh
Following this [upstream redis-ha PR](https://github.com/DandyDeveloper/charts/pull/94) all the required configurations set using sed in the generate script can now be set via the chart's values.

Signed-off-by: Aniek Gul <aniekgul@hotmail.com>

Checklist:

* [x] Either (a) I've created an [enhancement proposal](https://github.com/argoproj/argo-cd/issues/new/choose) and discussed it with the community, (b) this is a bug fix, or (c) this does not need to be in the release notes.
* [x] The title of the PR states what changed and the related issues number (used for the release note).
* [ ] I've included "Closes [ISSUE #]" or "Fixes [ISSUE #]" in the description to automatically close the associated issue.
* [ ] I've updated both the CLI and UI to expose my feature, or I plan to submit a second PR with them.
* [ ] Does this PR require documentation updates?
* [ ] I've updated documentation as required by this PR.
* [x] Optional. My organization is added to USERS.md.
* [x] I have signed off all my commits as required by [DCO](https://github.com/argoproj/argoproj/tree/master/community#contributing-to-argo)
* [ ] I have written unit and/or e2e tests for my change. PRs without these are unlikely to be merged.
* [x] My build is green ([troubleshooting builds](https://argo-cd.readthedocs.io/en/latest/developer-guide/ci/)). 



codecov[bot]: # [Codecov](https://codecov.io/gh/argoproj/argo-cd/pull/6021?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj) Report
> Merging [#6021](https://codecov.io/gh/argoproj/argo-cd/pull/6021?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj) (466e54f) into [master](https://codecov.io/gh/argoproj/argo-cd/commit/2f92777f719e8ab9e1e917c02140f91f346f8c61?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj) (2f92777) will **decrease** coverage by `0.00%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/argoproj/argo-cd/pull/6021/graphs/tree.svg?width=650&height=150&src=pr&token=kf5kwuegwE&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj)](https://codecov.io/gh/argoproj/argo-cd/pull/6021?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj)

```diff
@@            Coverage Diff             @@
##           master    #6021      +/-   ##
==========================================
- Coverage   40.94%   40.93%   -0.01%     
==========================================
  Files         147      147              
  Lines       19660    19661       +1     
==========================================
  Hits         8049     8049              
- Misses      10507    10508       +1     
  Partials     1104     1104              
```


| [Impacted Files](https://codecov.io/gh/argoproj/argo-cd/pull/6021?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj) | Coverage Δ | |
|---|---|---|
| [util/helm/helm.go](https://codecov.io/gh/argoproj/argo-cd/pull/6021/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj#diff-dXRpbC9oZWxtL2hlbG0uZ28=) | `60.27% <0.00%> (-0.84%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/argoproj/argo-cd/pull/6021?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/argoproj/argo-cd/pull/6021?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj). Last update [2f92777...466e54f](https://codecov.io/gh/argoproj/argo-cd/pull/6021?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=argoproj).

aniekgul: @jannfis fixed the conflict. Unfortunately the new sentinel bind conf will have to be stay as a hack but I can take a look at adding support for it in the upstream chart later.

Patch:
diff --git a/Makefile b/Makefile
index f59965c0b..39259447b 100644
--- a/Makefile
+++ b/Makefile
@@ -77,6 +77,9 @@ define run-in-test-server
 		-e ARGOCD_E2E_TEST=$(ARGOCD_E2E_TEST) \
 		-e ARGOCD_E2E_YARN_HOST=$(ARGOCD_E2E_YARN_HOST) \
 		-e ARGOCD_E2E_DISABLE_AUTH=$(ARGOCD_E2E_DISABLE_AUTH) \
+		-e ARGOCD_TLS_DATA_PATH=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} \
+		-e ARGOCD_SSH_DATA_PATH=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} \
+		-e ARGOCD_GPG_DATA_PATH=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source} \
 		-v ${DOCKER_SRC_MOUNT} \
 		-v ${GOPATH}/pkg/mod:/go/pkg/mod${VOLUME_MOUNT} \
 		-v ${GOCACHE}:/tmp/go-build-cache${VOLUME_MOUNT} \
diff --git a/USERS.md b/USERS.md
index 763645368..b29151bec 100644
--- a/USERS.md
+++ b/USERS.md
@@ -48,6 +48,7 @@ Currently, the following organizations are **officially** using Argo CD:
 1. [hipages](https://hipages.com.au/)
 1. [Honestbank](https://honestbank.com)
 1. [IBM](https://www.ibm.com/)
+1. [Index Exchange](https://www.indexexchange.com/)
 1. [InsideBoard](https://www.insideboard.com)
 1. [Intuit](https://www.intuit.com/)
 1. [JovianX](https://www.jovianx.com/)
diff --git a/docs/operator-manual/resource_actions.md b/docs/operator-manual/resource_actions.md
new file mode 100644
index 000000000..3c219843a
--- /dev/null
+++ b/docs/operator-manual/resource_actions.md
@@ -0,0 +1,59 @@
+# Resource Actions
+
+## Overview
+Argo CD allows operators to define custom actions which users can perform on specific resource types. This is used internally to provide actions like `restart` for a `DaemonSet`, or `retry` for an Argo Rollout.
+
+Operators can add actions to custom resources in form of a Lua script and expand those capabilities.
+
+## Custom Resource Actions
+
+Argo CD supports custom resource actions written in [Lua](https://www.lua.org/). This is useful if you:
+
+    * Have a custom resource for which Argo CD does not provide any built-in actions.
+    * Have a commonly performed manual task that might be error prone if executed by users via `kubectl`
+
+
+You can define your own custom resource actions in the `argocd-cm` ConfigMap.
+
+### Define a Custom Resource Action in `argocd-cm` ConfigMap
+
+Custom resource actions can be defined in `resource.customizations` field of `argocd-cm`. Following example demonstrates a set of custom actions for `CronJob` resources. The customizations key is in the format of `apiGroup/Kind`.
+
+```yaml
+resource.customizations: |
+  batch/CronJob:
+    actions: |
+      discovery.lua: |
+        actions = {}
+        actions["suspend"] = {["disabled"] = true}
+        actions["resume"] = {["disabled"] = true}
+
+        local suspend = false
+        if obj.spec.suspend ~= nil then
+            suspend = obj.spec.suspend
+        end
+        if suspend then
+            actions["resume"]["disabled"] = false
+        else
+            actions["suspend"]["disabled"] = false
+        end
+
+        return actions
+      definitions:
+      - name: suspend
+        action.lua: |
+          obj.spec.suspend = true
+
+          return obj
+      - name: resume
+        action.lua: |
+          if obj.spec.suspend ~= nil and obj.spec.suspend then
+              obj.spec.suspend = false
+          end
+
+          return obj
+```
+
+The `discovery.lua` script must return a table where the key name represents the action name. You can optionally include logic to enable or disable certain actions based on the current object state.
+
+Each action name must be represented in the list of `definitions` with an accompanying `action.lua` script to control the resource modifications. The `obj` is a global variable which contains the resource. Each action script must return an optionally modified version of the resource. In this example, we are simply setting `.spec.suspend` to either `true` or `false`.
diff --git a/docs/user-guide/resource_hooks.md b/docs/user-guide/resource_hooks.md
index bc75874a6..72037dd56 100644
--- a/docs/user-guide/resource_hooks.md
+++ b/docs/user-guide/resource_hooks.md
@@ -67,7 +67,7 @@ The following policies define when the hook will be deleted.
 |--------|-------------|
 | `HookSucceeded` | The hook resource is deleted after the hook succeeded (e.g. Job/Workflow completed successfully). |
 | `HookFailed` | The hook resource is deleted after the hook failed. |
-| `BeforeHookCreation` | Any existing hook resource is deleted before the new one is created (since v1.3). |
+| `BeforeHookCreation` | Any existing hook resource is deleted before the new one is created (since v1.3). It is meant to be used with `/metadata/name`. This is the default deletion policy. |
 
 As an alternative to hook deletion policies, both Jobs and Argo Workflows support the
 [`ttlSecondsAfterFinished`](https://kubernetes.io/docs/concepts/workloads/controllers/ttlafterfinished/)
diff --git a/manifests/README.md b/manifests/README.md
index a02883cbc..72fc12e89 100644
--- a/manifests/README.md
+++ b/manifests/README.md
@@ -17,6 +17,13 @@ Four sets of installation manifests are provided:
   external clusters. Will still be possible to deploy to the same cluster (kubernetes.svc.default)
   with inputted credentials (i.e. `argocd cluster add <CONTEXT> --in-cluster --namespace <YOUR NAMESPACE>`).
 
+  > Note: Argo CD CRDs are not included into [namespace-install.yaml](namespace-install.yaml).
+  > and have to be installed separately. The CRD manifests are located in [manifests/crds](./crds) directory.
+  > Use the following command to install them:
+  > ```bash
+  > kubectl apply -k https://github.com/argoproj/argo-cd/manifests/crds\?ref\=stable
+  > ```
+
 ## High Availability:
 
 * [ha/install.yaml](ha/install.yaml) - the same as install.yaml but with multiple replicas for
diff --git a/manifests/cluster-install/kustomization.yaml b/manifests/cluster-install/kustomization.yaml
index 3f9744f06..7f84ecd8a 100644
--- a/manifests/cluster-install/kustomization.yaml
+++ b/manifests/cluster-install/kustomization.yaml
@@ -4,3 +4,4 @@ kind: Kustomization
 resources:
 - ../namespace-install
 - ../cluster-rbac
+- ../crds
diff --git a/manifests/ha/base/redis-ha/chart/requirements.lock b/manifests/ha/base/redis-ha/chart/requirements.lock
index b604a184e..ef7800378 100644
--- a/manifests/ha/base/redis-ha/chart/requirements.lock
+++ b/manifests/ha/base/redis-ha/chart/requirements.lock
@@ -1,6 +1,6 @@
 dependencies:
 - name: redis-ha
   repository: https://dandydeveloper.github.io/charts
-  version: 4.12.9
-digest: sha256:c36edaae2ca31d21c92b162adbbc80091131c534728fb4879927a8f790874d6e
-generated: "2021-03-06T11:18:40.670161536+01:00"
+  version: 4.12.14
+digest: sha256:fc0ed1b72121f10a6c50cccc605f73582474d03e1453a9c1e5636b84a0ee829d
+generated: "2021-04-12T11:46:20.2865728-04:00"
diff --git a/manifests/ha/base/redis-ha/chart/requirements.yaml b/manifests/ha/base/redis-ha/chart/requirements.yaml
index 147bc3145..49531a9ed 100644
--- a/manifests/ha/base/redis-ha/chart/requirements.yaml
+++ b/manifests/ha/base/redis-ha/chart/requirements.yaml
@@ -1,4 +1,4 @@
 dependencies:
 - name: redis-ha
-  version: 4.12.9
+  version: 4.12.14
   repository: https://dandydeveloper.github.io/charts
diff --git a/manifests/ha/base/redis-ha/chart/upstream.yaml b/manifests/ha/base/redis-ha/chart/upstream.yaml
index 5f440b805..207d81f06 100644
--- a/manifests/ha/base/redis-ha/chart/upstream.yaml
+++ b/manifests/ha/base/redis-ha/chart/upstream.yaml
@@ -5,11 +5,11 @@ apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: argocd-redis-ha
-  namespace: argocd
+  namespace: "argocd"
   labels:
     heritage: Helm
     release: argocd
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     app: argocd-redis-ha
 ---
 # Source: redis-ha/charts/redis-ha/templates/redis-haproxy-serviceaccount.yaml
@@ -17,11 +17,11 @@ apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: argocd-redis-ha-haproxy
-  namespace: argocd
+  namespace: "argocd"
   labels:
     heritage: Helm
     release: argocd
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     app: argocd-redis-ha
 ---
 # Source: redis-ha/charts/redis-ha/templates/redis-ha-configmap.yaml
@@ -29,11 +29,11 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: argocd-redis-ha-configmap
-  namespace: argocd
+  namespace: "argocd"
   labels:
     heritage: Helm
     release: argocd
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     app: argocd-redis-ha
 data:
   redis.conf: |
@@ -326,8 +326,8 @@ data:
     defaults REDIS
       mode tcp
       timeout connect 4s
-      timeout server 330s
-      timeout client 330s
+      timeout server 6m
+      timeout client 6m
       timeout check 2s
 
     listen health_check_http_url
@@ -457,11 +457,11 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: argocd-redis-ha-health-configmap
-  namespace: argocd
+  namespace: "argocd"
   labels:
     heritage: Helm
     release: argocd
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     app: argocd-redis-ha
 data:
   redis_liveness.sh: |
@@ -506,12 +506,12 @@ apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 metadata:
   name: argocd-redis-ha
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
 rules:
 - apiGroups:
     - ""
@@ -525,12 +525,12 @@ apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 metadata:
   name: argocd-redis-ha-haproxy
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     component: argocd-redis-ha-haproxy
 rules:
 - apiGroups:
@@ -545,12 +545,12 @@ apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
 metadata:
   name: argocd-redis-ha
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
 subjects:
 - kind: ServiceAccount
   name: argocd-redis-ha
@@ -564,12 +564,12 @@ apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
 metadata:
   name: argocd-redis-ha-haproxy
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     component: argocd-redis-ha-haproxy
 subjects:
 - kind: ServiceAccount
@@ -584,12 +584,12 @@ apiVersion: v1
 kind: Service
 metadata:
   name: argocd-redis-ha-announce-0
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
   annotations:
     service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
 spec:
@@ -614,12 +614,12 @@ apiVersion: v1
 kind: Service
 metadata:
   name: argocd-redis-ha-announce-1
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
   annotations:
     service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
 spec:
@@ -644,12 +644,12 @@ apiVersion: v1
 kind: Service
 metadata:
   name: argocd-redis-ha-announce-2
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
   annotations:
     service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
 spec:
@@ -674,12 +674,12 @@ apiVersion: v1
 kind: Service
 metadata:
   name: argocd-redis-ha
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
   annotations:
 spec:
   type: ClusterIP
@@ -702,12 +702,12 @@ apiVersion: v1
 kind: Service
 metadata:
   name: argocd-redis-ha-haproxy
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     component: argocd-redis-ha-haproxy
   annotations:
 spec:
@@ -726,12 +726,12 @@ kind: Deployment
 apiVersion: apps/v1
 metadata:
   name: argocd-redis-ha-haproxy
-  namespace: argocd
+  namespace: "argocd"
   labels:
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
 spec:
   strategy:
     type: RollingUpdate
@@ -749,7 +749,7 @@ spec:
         release: argocd
         revision: "1"
       annotations:
-        checksum/config: d2ea567716f714054660c172aa717a4ec9daa16d25dab418d8fd7a0c961b03e3
+        checksum/config: c55502ce732f78a70658dc77f00c02444cd6b6bede4b270f56d082fdaed1dc5f
     spec:
       # Needed when using unmodified rbac-setup.yml
       
@@ -832,13 +832,13 @@ apiVersion: apps/v1
 kind: StatefulSet
 metadata:
   name: argocd-redis-ha-server
-  namespace: argocd
+  namespace: "argocd"
   labels:
     argocd-redis-ha: replica
     app: redis-ha
     heritage: "Helm"
     release: "argocd"
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
   annotations:
     {}
 spec:
diff --git a/manifests/ha/base/redis-ha/chart/values.yaml b/manifests/ha/base/redis-ha/chart/values.yaml
index c704916dc..e0faada5d 100644
--- a/manifests/ha/base/redis-ha/chart/values.yaml
+++ b/manifests/ha/base/redis-ha/chart/values.yaml
@@ -10,6 +10,10 @@ redis-ha:
     enabled: true
     image:
       tag: 2.0.20-alpine
+    timeout:
+      server: 6m
+      client: 6m
+    checkInterval: 3s
   image:
     tag: 6.2.1-alpine
   sentinel:
diff --git a/manifests/ha/base/redis-ha/generate.sh b/manifests/ha/base/redis-ha/generate.sh
index 4b074a378..f91ccf858 100755
--- a/manifests/ha/base/redis-ha/generate.sh
+++ b/manifests/ha/base/redis-ha/generate.sh
@@ -11,7 +11,4 @@ helm template argocd ./chart \
   --no-hooks \
   >> ./chart/upstream_orig.yaml
 
-sed -e 's/check inter 1s/check inter 3s/' ./chart/upstream_orig.yaml >> ./chart/upstream.yaml && rm ./chart/upstream_orig.yaml
-sed -i.bak 's/timeout server 30s/timeout server 6m/' ./chart/upstream.yaml && rm ./chart/upstream.yaml.bak
-sed -i.bak 's/timeout client 30s/timeout client 6m/' ./chart/upstream.yaml && rm ./chart/upstream.yaml.bak
-sed -i.bak -E 's/^([[:space:]]){8}sentinel replaceme argocd/    bind/' ./chart/upstream.yaml && rm ./chart/upstream.yaml.bak
\ No newline at end of file
+sed -E 's/^([[:space:]]){8}sentinel replaceme argocd/    bind/' ./chart/upstream_orig.yaml >> ./chart/upstream.yaml && rm ./chart/upstream_orig.yaml
diff --git a/manifests/ha/cluster-install/kustomization.yaml b/manifests/ha/cluster-install/kustomization.yaml
index f117e10a0..33df3f9ea 100644
--- a/manifests/ha/cluster-install/kustomization.yaml
+++ b/manifests/ha/cluster-install/kustomization.yaml
@@ -4,3 +4,4 @@ kind: Kustomization
 resources:
 - ../namespace-install
 - ../../cluster-rbac
+- ../../crds
\ No newline at end of file
diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml
index 46ce452e1..a2a1c6ce3 100644
--- a/manifests/ha/install.yaml
+++ b/manifests/ha/install.yaml
@@ -2142,7 +2142,7 @@ kind: Role
 metadata:
   labels:
     app: redis-ha
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     component: argocd-redis-ha-haproxy
     heritage: Helm
     release: argocd
@@ -2302,7 +2302,7 @@ kind: RoleBinding
 metadata:
   labels:
     app: redis-ha
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     component: argocd-redis-ha-haproxy
     heritage: Helm
     release: argocd
@@ -2407,7 +2407,7 @@ kind: ConfigMap
 metadata:
   labels:
     app: argocd-redis-ha
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     heritage: Helm
     release: argocd
   name: argocd-redis-ha-health-configmap
@@ -2443,8 +2443,8 @@ data:
     defaults REDIS
       mode tcp
       timeout connect 4s
-      timeout server 330s
-      timeout client 330s
+      timeout server 6m
+      timeout client 6m
       timeout check 2s
 
     listen health_check_http_url
@@ -3202,7 +3202,7 @@ spec:
   template:
     metadata:
       annotations:
-        checksum/config: d2ea567716f714054660c172aa717a4ec9daa16d25dab418d8fd7a0c961b03e3
+        checksum/config: c55502ce732f78a70658dc77f00c02444cd6b6bede4b270f56d082fdaed1dc5f
       labels:
         app.kubernetes.io/name: argocd-redis-ha-haproxy
       name: argocd-redis-ha-haproxy
diff --git a/manifests/ha/namespace-install.yaml b/manifests/ha/namespace-install.yaml
index d7d9c4411..881c0259f 100644
--- a/manifests/ha/namespace-install.yaml
+++ b/manifests/ha/namespace-install.yaml
@@ -1,2023 +1,4 @@
 # This is an auto-generated file. DO NOT EDIT
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  labels:
-    app.kubernetes.io/name: applications.argoproj.io
-    app.kubernetes.io/part-of: argocd
-  name: applications.argoproj.io
-spec:
-  group: argoproj.io
-  names:
-    kind: Application
-    listKind: ApplicationList
-    plural: applications
-    shortNames:
-    - app
-    - apps
-    singular: application
-  scope: Namespaced
-  versions:
-  - additionalPrinterColumns:
-    - jsonPath: .status.sync.status
-      name: Sync Status
-      type: string
-    - jsonPath: .status.health.status
-      name: Health Status
-      type: string
-    - jsonPath: .status.sync.revision
-      name: Revision
-      priority: 10
-      type: string
-    name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: Application is a definition of Application resource.
-        properties:
-          apiVersion:
-            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
-            type: string
-          kind:
-            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
-            type: string
-          metadata:
-            type: object
-          operation:
-            description: Operation contains information about a requested or running operation
-            properties:
-              info:
-                description: Info is a list of informational items for this operation
-                items:
-                  properties:
-                    name:
-                      type: string
-                    value:
-                      type: string
-                  required:
-                  - name
-                  - value
-                  type: object
-                type: array
-              initiatedBy:
-                description: InitiatedBy contains information about who initiated the operations
-                properties:
-                  automated:
-                    description: Automated is set to true if operation was initiated automatically by the application controller.
-                    type: boolean
-                  username:
-                    description: Username contains the name of a user who started operation
-                    type: string
-                type: object
-              retry:
-                description: Retry controls the strategy to apply if a sync fails
-                properties:
-                  backoff:
-                    description: Backoff controls how to backoff on subsequent retries of failed syncs
-                    properties:
-                      duration:
-                        description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
-                        type: string
-                      factor:
-                        description: Factor is a factor to multiply the base duration after each failed retry
-                        format: int64
-                        type: integer
-                      maxDuration:
-                        description: MaxDuration is the maximum amount of time allowed for the backoff strategy
-                        type: string
-                    type: object
-                  limit:
-                    description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
-                    format: int64
-                    type: integer
-                type: object
-              sync:
-                description: Sync contains parameters for the operation
-                properties:
-                  dryRun:
-                    description: DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync
-                    type: boolean
-                  manifests:
-                    description: Manifests is an optional field that overrides sync source with a local directory for development
-                    items:
-                      type: string
-                    type: array
-                  prune:
-                    description: Prune specifies to delete resources from the cluster that are no longer tracked in git
-                    type: boolean
-                  resources:
-                    description: Resources describes which resources shall be part of the sync
-                    items:
-                      description: SyncOperationResource contains resources to sync.
-                      properties:
-                        group:
-                          type: string
-                        kind:
-                          type: string
-                        name:
-                          type: string
-                        namespace:
-                          type: string
-                      required:
-                      - kind
-                      - name
-                      type: object
-                    type: array
-                  revision:
-                    description: Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec.
-                    type: string
-                  source:
-                    description: Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation
-                    properties:
-                      chart:
-                        description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                        type: string
-                      directory:
-                        description: Directory holds path/directory specific options
-                        properties:
-                          exclude:
-                            description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                            type: string
-                          include:
-                            description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                            type: string
-                          jsonnet:
-                            description: Jsonnet holds options specific to Jsonnet
-                            properties:
-                              extVars:
-                                description: ExtVars is a list of Jsonnet External Variables
-                                items:
-                                  description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                  properties:
-                                    code:
-                                      type: boolean
-                                    name:
-                                      type: string
-                                    value:
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                              libs:
-                                description: Additional library search dirs
-                                items:
-                                  type: string
-                                type: array
-                              tlas:
-                                description: TLAS is a list of Jsonnet Top-level Arguments
-                                items:
-                                  description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                  properties:
-                                    code:
-                                      type: boolean
-                                    name:
-                                      type: string
-                                    value:
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                            type: object
-                          recurse:
-                            description: Recurse specifies whether to scan a directory recursively for manifests
-                            type: boolean
-                        type: object
-                      helm:
-                        description: Helm holds helm specific options
-                        properties:
-                          fileParameters:
-                            description: FileParameters are file parameters to the helm template
-                            items:
-                              description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                              properties:
-                                name:
-                                  description: Name is the name of the Helm parameter
-                                  type: string
-                                path:
-                                  description: Path is the path to the file containing the values for the Helm parameter
-                                  type: string
-                              type: object
-                            type: array
-                          parameters:
-                            description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                            items:
-                              description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                              properties:
-                                forceString:
-                                  description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                  type: boolean
-                                name:
-                                  description: Name is the name of the Helm parameter
-                                  type: string
-                                value:
-                                  description: Value is the value for the Helm parameter
-                                  type: string
-                              type: object
-                            type: array
-                          releaseName:
-                            description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                            type: string
-                          valueFiles:
-                            description: ValuesFiles is a list of Helm value files to use when generating a template
-                            items:
-                              type: string
-                            type: array
-                          values:
-                            description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                            type: string
-                          version:
-                            description: Version is the Helm version to use for templating (either "2" or "3")
-                            type: string
-                        type: object
-                      ksonnet:
-                        description: Ksonnet holds ksonnet specific options
-                        properties:
-                          environment:
-                            description: Environment is a ksonnet application environment name
-                            type: string
-                          parameters:
-                            description: Parameters are a list of ksonnet component parameter override values
-                            items:
-                              description: KsonnetParameter is a ksonnet component parameter
-                              properties:
-                                component:
-                                  type: string
-                                name:
-                                  type: string
-                                value:
-                                  type: string
-                              required:
-                              - name
-                              - value
-                              type: object
-                            type: array
-                        type: object
-                      kustomize:
-                        description: Kustomize holds kustomize specific options
-                        properties:
-                          commonAnnotations:
-                            additionalProperties:
-                              type: string
-                            description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                            type: object
-                          commonLabels:
-                            additionalProperties:
-                              type: string
-                            description: CommonLabels is a list of additional labels to add to rendered manifests
-                            type: object
-                          images:
-                            description: Images is a list of Kustomize image override specifications
-                            items:
-                              description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                              type: string
-                            type: array
-                          namePrefix:
-                            description: NamePrefix is a prefix appended to resources for Kustomize apps
-                            type: string
-                          nameSuffix:
-                            description: NameSuffix is a suffix appended to resources for Kustomize apps
-                            type: string
-                          version:
-                            description: Version controls which version of Kustomize to use for rendering manifests
-                            type: string
-                        type: object
-                      path:
-                        description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                        type: string
-                      plugin:
-                        description: ConfigManagementPlugin holds config management plugin specific options
-                        properties:
-                          env:
-                            description: Env is a list of environment variable entries
-                            items:
-                              description: EnvEntry represents an entry in the application's environment
-                              properties:
-                                name:
-                                  description: Name is the name of the variable, usually expressed in uppercase
-                                  type: string
-                                value:
-                                  description: Value is the value of the variable
-                                  type: string
-                              required:
-                              - name
-                              - value
-                              type: object
-                            type: array
-                          name:
-                            type: string
-                        type: object
-                      repoURL:
-                        description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                        type: string
-                      targetRevision:
-                        description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                        type: string
-                    required:
-                    - repoURL
-                    type: object
-                  syncOptions:
-                    description: SyncOptions provide per-sync sync-options, e.g. Validate=false
-                    items:
-                      type: string
-                    type: array
-                  syncStrategy:
-                    description: SyncStrategy describes how to perform the sync
-                    properties:
-                      apply:
-                        description: Apply will perform a `kubectl apply` to perform the sync.
-                        properties:
-                          force:
-                            description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.
-                            type: boolean
-                        type: object
-                      hook:
-                        description: Hook will submit any referenced resources to perform the sync. This is the default strategy
-                        properties:
-                          force:
-                            description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.
-                            type: boolean
-                        type: object
-                    type: object
-                type: object
-            type: object
-          spec:
-            description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision.
-            properties:
-              destination:
-                description: Destination is a reference to the target Kubernetes server and namespace
-                properties:
-                  name:
-                    description: Name is an alternate way of specifying the target cluster by its symbolic name
-                    type: string
-                  namespace:
-                    description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
-                    type: string
-                  server:
-                    description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API
-                    type: string
-                type: object
-              ignoreDifferences:
-                description: IgnoreDifferences is a list of resources and their fields which should be ignored during comparison
-                items:
-                  description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state.
-                  properties:
-                    group:
-                      type: string
-                    jsonPointers:
-                      items:
-                        type: string
-                      type: array
-                    kind:
-                      type: string
-                    name:
-                      type: string
-                    namespace:
-                      type: string
-                  required:
-                  - jsonPointers
-                  - kind
-                  type: object
-                type: array
-              info:
-                description: Info contains a list of information (URLs, email addresses, and plain text) that relates to the application
-                items:
-                  properties:
-                    name:
-                      type: string
-                    value:
-                      type: string
-                  required:
-                  - name
-                  - value
-                  type: object
-                type: array
-              project:
-                description: Project is a reference to the project this application belongs to. The empty string means that application belongs to the 'default' project.
-                type: string
-              revisionHistoryLimit:
-                description: RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
-                format: int64
-                type: integer
-              source:
-                description: Source is a reference to the location of the application's manifests or chart
-                properties:
-                  chart:
-                    description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                    type: string
-                  directory:
-                    description: Directory holds path/directory specific options
-                    properties:
-                      exclude:
-                        description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                        type: string
-                      include:
-                        description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                        type: string
-                      jsonnet:
-                        description: Jsonnet holds options specific to Jsonnet
-                        properties:
-                          extVars:
-                            description: ExtVars is a list of Jsonnet External Variables
-                            items:
-                              description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                              properties:
-                                code:
-                                  type: boolean
-                                name:
-                                  type: string
-                                value:
-                                  type: string
-                              required:
-                              - name
-                              - value
-                              type: object
-                            type: array
-                          libs:
-                            description: Additional library search dirs
-                            items:
-                              type: string
-                            type: array
-                          tlas:
-                            description: TLAS is a list of Jsonnet Top-level Arguments
-                            items:
-                              description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                              properties:
-                                code:
-                                  type: boolean
-                                name:
-                                  type: string
-                                value:
-                                  type: string
-                              required:
-                              - name
-                              - value
-                              type: object
-                            type: array
-                        type: object
-                      recurse:
-                        description: Recurse specifies whether to scan a directory recursively for manifests
-                        type: boolean
-                    type: object
-                  helm:
-                    description: Helm holds helm specific options
-                    properties:
-                      fileParameters:
-                        description: FileParameters are file parameters to the helm template
-                        items:
-                          description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                          properties:
-                            name:
-                              description: Name is the name of the Helm parameter
-                              type: string
-                            path:
-                              description: Path is the path to the file containing the values for the Helm parameter
-                              type: string
-                          type: object
-                        type: array
-                      parameters:
-                        description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                        items:
-                          description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                          properties:
-                            forceString:
-                              description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                              type: boolean
-                            name:
-                              description: Name is the name of the Helm parameter
-                              type: string
-                            value:
-                              description: Value is the value for the Helm parameter
-                              type: string
-                          type: object
-                        type: array
-                      releaseName:
-                        description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                        type: string
-                      valueFiles:
-                        description: ValuesFiles is a list of Helm value files to use when generating a template
-                        items:
-                          type: string
-                        type: array
-                      values:
-                        description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                        type: string
-                      version:
-                        description: Version is the Helm version to use for templating (either "2" or "3")
-                        type: string
-                    type: object
-                  ksonnet:
-                    description: Ksonnet holds ksonnet specific options
-                    properties:
-                      environment:
-                        description: Environment is a ksonnet application environment name
-                        type: string
-                      parameters:
-                        description: Parameters are a list of ksonnet component parameter override values
-                        items:
-                          description: KsonnetParameter is a ksonnet component parameter
-                          properties:
-                            component:
-                              type: string
-                            name:
-                              type: string
-                            value:
-                              type: string
-                          required:
-                          - name
-                          - value
-                          type: object
-                        type: array
-                    type: object
-                  kustomize:
-                    description: Kustomize holds kustomize specific options
-                    properties:
-                      commonAnnotations:
-                        additionalProperties:
-                          type: string
-                        description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                        type: object
-                      commonLabels:
-                        additionalProperties:
-                          type: string
-                        description: CommonLabels is a list of additional labels to add to rendered manifests
-                        type: object
-                      images:
-                        description: Images is a list of Kustomize image override specifications
-                        items:
-                          description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                          type: string
-                        type: array
-                      namePrefix:
-                        description: NamePrefix is a prefix appended to resources for Kustomize apps
-                        type: string
-                      nameSuffix:
-                        description: NameSuffix is a suffix appended to resources for Kustomize apps
-                        type: string
-                      version:
-                        description: Version controls which version of Kustomize to use for rendering manifests
-                        type: string
-                    type: object
-                  path:
-                    description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                    type: string
-                  plugin:
-                    description: ConfigManagementPlugin holds config management plugin specific options
-                    properties:
-                      env:
-                        description: Env is a list of environment variable entries
-                        items:
-                          description: EnvEntry represents an entry in the application's environment
-                          properties:
-                            name:
-                              description: Name is the name of the variable, usually expressed in uppercase
-                              type: string
-                            value:
-                              description: Value is the value of the variable
-                              type: string
-                          required:
-                          - name
-                          - value
-                          type: object
-                        type: array
-                      name:
-                        type: string
-                    type: object
-                  repoURL:
-                    description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                    type: string
-                  targetRevision:
-                    description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                    type: string
-                required:
-                - repoURL
-                type: object
-              syncPolicy:
-                description: SyncPolicy controls when and how a sync will be performed
-                properties:
-                  automated:
-                    description: Automated will keep an application synced to the target revision
-                    properties:
-                      allowEmpty:
-                        description: 'AllowEmpty allows apps have zero live resources (default: false)'
-                        type: boolean
-                      prune:
-                        description: 'Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false)'
-                        type: boolean
-                      selfHeal:
-                        description: 'SelfHeal specifes whether to revert resources back to their desired state upon modification in the cluster (default: false)'
-                        type: boolean
-                    type: object
-                  retry:
-                    description: Retry controls failed sync retry behavior
-                    properties:
-                      backoff:
-                        description: Backoff controls how to backoff on subsequent retries of failed syncs
-                        properties:
-                          duration:
-                            description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
-                            type: string
-                          factor:
-                            description: Factor is a factor to multiply the base duration after each failed retry
-                            format: int64
-                            type: integer
-                          maxDuration:
-                            description: MaxDuration is the maximum amount of time allowed for the backoff strategy
-                            type: string
-                        type: object
-                      limit:
-                        description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
-                        format: int64
-                        type: integer
-                    type: object
-                  syncOptions:
-                    description: Options allow you to specify whole app sync-options
-                    items:
-                      type: string
-                    type: array
-                type: object
-            required:
-            - destination
-            - project
-            - source
-            type: object
-          status:
-            description: ApplicationStatus contains status information for the application
-            properties:
-              conditions:
-                description: Conditions is a list of currently observed application conditions
-                items:
-                  description: ApplicationCondition contains details about an application condition, which is usally an error or warning
-                  properties:
-                    lastTransitionTime:
-                      description: LastTransitionTime is the time the condition was last observed
-                      format: date-time
-                      type: string
-                    message:
-                      description: Message contains human-readable message indicating details about condition
-                      type: string
-                    type:
-                      description: Type is an application condition type
-                      type: string
-                  required:
-                  - message
-                  - type
-                  type: object
-                type: array
-              health:
-                description: Health contains information about the application's current health status
-                properties:
-                  message:
-                    description: Message is a human-readable informational message describing the health status
-                    type: string
-                  status:
-                    description: Status holds the status code of the application or resource
-                    type: string
-                type: object
-              history:
-                description: History contains information about the application's sync history
-                items:
-                  description: RevisionHistory contains history information about a previous sync
-                  properties:
-                    deployStartedAt:
-                      description: DeployStartedAt holds the time the sync operation started
-                      format: date-time
-                      type: string
-                    deployedAt:
-                      description: DeployedAt holds the time the sync operation completed
-                      format: date-time
-                      type: string
-                    id:
-                      description: ID is an auto incrementing identifier of the RevisionHistory
-                      format: int64
-                      type: integer
-                    revision:
-                      description: Revision holds the revision the sync was performed against
-                      type: string
-                    source:
-                      description: Source is a reference to the application source used for the sync operation
-                      properties:
-                        chart:
-                          description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                          type: string
-                        directory:
-                          description: Directory holds path/directory specific options
-                          properties:
-                            exclude:
-                              description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                              type: string
-                            include:
-                              description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                              type: string
-                            jsonnet:
-                              description: Jsonnet holds options specific to Jsonnet
-                              properties:
-                                extVars:
-                                  description: ExtVars is a list of Jsonnet External Variables
-                                  items:
-                                    description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                    properties:
-                                      code:
-                                        type: boolean
-                                      name:
-                                        type: string
-                                      value:
-                                        type: string
-                                    required:
-                                    - name
-                                    - value
-                                    type: object
-                                  type: array
-                                libs:
-                                  description: Additional library search dirs
-                                  items:
-                                    type: string
-                                  type: array
-                                tlas:
-                                  description: TLAS is a list of Jsonnet Top-level Arguments
-                                  items:
-                                    description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                    properties:
-                                      code:
-                                        type: boolean
-                                      name:
-                                        type: string
-                                      value:
-                                        type: string
-                                    required:
-                                    - name
-                                    - value
-                                    type: object
-                                  type: array
-                              type: object
-                            recurse:
-                              description: Recurse specifies whether to scan a directory recursively for manifests
-                              type: boolean
-                          type: object
-                        helm:
-                          description: Helm holds helm specific options
-                          properties:
-                            fileParameters:
-                              description: FileParameters are file parameters to the helm template
-                              items:
-                                description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                                properties:
-                                  name:
-                                    description: Name is the name of the Helm parameter
-                                    type: string
-                                  path:
-                                    description: Path is the path to the file containing the values for the Helm parameter
-                                    type: string
-                                type: object
-                              type: array
-                            parameters:
-                              description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                              items:
-                                description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                                properties:
-                                  forceString:
-                                    description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                    type: boolean
-                                  name:
-                                    description: Name is the name of the Helm parameter
-                                    type: string
-                                  value:
-                                    description: Value is the value for the Helm parameter
-                                    type: string
-                                type: object
-                              type: array
-                            releaseName:
-                              description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                              type: string
-                            valueFiles:
-                              description: ValuesFiles is a list of Helm value files to use when generating a template
-                              items:
-                                type: string
-                              type: array
-                            values:
-                              description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                              type: string
-                            version:
-                              description: Version is the Helm version to use for templating (either "2" or "3")
-                              type: string
-                          type: object
-                        ksonnet:
-                          description: Ksonnet holds ksonnet specific options
-                          properties:
-                            environment:
-                              description: Environment is a ksonnet application environment name
-                              type: string
-                            parameters:
-                              description: Parameters are a list of ksonnet component parameter override values
-                              items:
-                                description: KsonnetParameter is a ksonnet component parameter
-                                properties:
-                                  component:
-                                    type: string
-                                  name:
-                                    type: string
-                                  value:
-                                    type: string
-                                required:
-                                - name
-                                - value
-                                type: object
-                              type: array
-                          type: object
-                        kustomize:
-                          description: Kustomize holds kustomize specific options
-                          properties:
-                            commonAnnotations:
-                              additionalProperties:
-                                type: string
-                              description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                              type: object
-                            commonLabels:
-                              additionalProperties:
-                                type: string
-                              description: CommonLabels is a list of additional labels to add to rendered manifests
-                              type: object
-                            images:
-                              description: Images is a list of Kustomize image override specifications
-                              items:
-                                description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                                type: string
-                              type: array
-                            namePrefix:
-                              description: NamePrefix is a prefix appended to resources for Kustomize apps
-                              type: string
-                            nameSuffix:
-                              description: NameSuffix is a suffix appended to resources for Kustomize apps
-                              type: string
-                            version:
-                              description: Version controls which version of Kustomize to use for rendering manifests
-                              type: string
-                          type: object
-                        path:
-                          description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                          type: string
-                        plugin:
-                          description: ConfigManagementPlugin holds config management plugin specific options
-                          properties:
-                            env:
-                              description: Env is a list of environment variable entries
-                              items:
-                                description: EnvEntry represents an entry in the application's environment
-                                properties:
-                                  name:
-                                    description: Name is the name of the variable, usually expressed in uppercase
-                                    type: string
-                                  value:
-                                    description: Value is the value of the variable
-                                    type: string
-                                required:
-                                - name
-                                - value
-                                type: object
-                              type: array
-                            name:
-                              type: string
-                          type: object
-                        repoURL:
-                          description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                          type: string
-                        targetRevision:
-                          description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                          type: string
-                      required:
-                      - repoURL
-                      type: object
-                  required:
-                  - deployedAt
-                  - id
-                  - revision
-                  type: object
-                type: array
-              observedAt:
-                description: 'ObservedAt indicates when the application state was updated without querying latest git state Deprecated: controller no longer updates ObservedAt field'
-                format: date-time
-                type: string
-              operationState:
-                description: OperationState contains information about any ongoing operations, such as a sync
-                properties:
-                  finishedAt:
-                    description: FinishedAt contains time of operation completion
-                    format: date-time
-                    type: string
-                  message:
-                    description: Message holds any pertinent messages when attempting to perform operation (typically errors).
-                    type: string
-                  operation:
-                    description: Operation is the original requested operation
-                    properties:
-                      info:
-                        description: Info is a list of informational items for this operation
-                        items:
-                          properties:
-                            name:
-                              type: string
-                            value:
-                              type: string
-                          required:
-                          - name
-                          - value
-                          type: object
-                        type: array
-                      initiatedBy:
-                        description: InitiatedBy contains information about who initiated the operations
-                        properties:
-                          automated:
-                            description: Automated is set to true if operation was initiated automatically by the application controller.
-                            type: boolean
-                          username:
-                            description: Username contains the name of a user who started operation
-                            type: string
-                        type: object
-                      retry:
-                        description: Retry controls the strategy to apply if a sync fails
-                        properties:
-                          backoff:
-                            description: Backoff controls how to backoff on subsequent retries of failed syncs
-                            properties:
-                              duration:
-                                description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
-                                type: string
-                              factor:
-                                description: Factor is a factor to multiply the base duration after each failed retry
-                                format: int64
-                                type: integer
-                              maxDuration:
-                                description: MaxDuration is the maximum amount of time allowed for the backoff strategy
-                                type: string
-                            type: object
-                          limit:
-                            description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
-                            format: int64
-                            type: integer
-                        type: object
-                      sync:
-                        description: Sync contains parameters for the operation
-                        properties:
-                          dryRun:
-                            description: DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync
-                            type: boolean
-                          manifests:
-                            description: Manifests is an optional field that overrides sync source with a local directory for development
-                            items:
-                              type: string
-                            type: array
-                          prune:
-                            description: Prune specifies to delete resources from the cluster that are no longer tracked in git
-                            type: boolean
-                          resources:
-                            description: Resources describes which resources shall be part of the sync
-                            items:
-                              description: SyncOperationResource contains resources to sync.
-                              properties:
-                                group:
-                                  type: string
-                                kind:
-                                  type: string
-                                name:
-                                  type: string
-                                namespace:
-                                  type: string
-                              required:
-                              - kind
-                              - name
-                              type: object
-                            type: array
-                          revision:
-                            description: Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec.
-                            type: string
-                          source:
-                            description: Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation
-                            properties:
-                              chart:
-                                description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                                type: string
-                              directory:
-                                description: Directory holds path/directory specific options
-                                properties:
-                                  exclude:
-                                    description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                                    type: string
-                                  include:
-                                    description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                                    type: string
-                                  jsonnet:
-                                    description: Jsonnet holds options specific to Jsonnet
-                                    properties:
-                                      extVars:
-                                        description: ExtVars is a list of Jsonnet External Variables
-                                        items:
-                                          description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                          properties:
-                                            code:
-                                              type: boolean
-                                            name:
-                                              type: string
-                                            value:
-                                              type: string
-                                          required:
-                                          - name
-                                          - value
-                                          type: object
-                                        type: array
-                                      libs:
-                                        description: Additional library search dirs
-                                        items:
-                                          type: string
-                                        type: array
-                                      tlas:
-                                        description: TLAS is a list of Jsonnet Top-level Arguments
-                                        items:
-                                          description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                          properties:
-                                            code:
-                                              type: boolean
-                                            name:
-                                              type: string
-                                            value:
-                                              type: string
-                                          required:
-                                          - name
-                                          - value
-                                          type: object
-                                        type: array
-                                    type: object
-                                  recurse:
-                                    description: Recurse specifies whether to scan a directory recursively for manifests
-                                    type: boolean
-                                type: object
-                              helm:
-                                description: Helm holds helm specific options
-                                properties:
-                                  fileParameters:
-                                    description: FileParameters are file parameters to the helm template
-                                    items:
-                                      description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                                      properties:
-                                        name:
-                                          description: Name is the name of the Helm parameter
-                                          type: string
-                                        path:
-                                          description: Path is the path to the file containing the values for the Helm parameter
-                                          type: string
-                                      type: object
-                                    type: array
-                                  parameters:
-                                    description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                                    items:
-                                      description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                                      properties:
-                                        forceString:
-                                          description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                          type: boolean
-                                        name:
-                                          description: Name is the name of the Helm parameter
-                                          type: string
-                                        value:
-                                          description: Value is the value for the Helm parameter
-                                          type: string
-                                      type: object
-                                    type: array
-                                  releaseName:
-                                    description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                                    type: string
-                                  valueFiles:
-                                    description: ValuesFiles is a list of Helm value files to use when generating a template
-                                    items:
-                                      type: string
-                                    type: array
-                                  values:
-                                    description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                                    type: string
-                                  version:
-                                    description: Version is the Helm version to use for templating (either "2" or "3")
-                                    type: string
-                                type: object
-                              ksonnet:
-                                description: Ksonnet holds ksonnet specific options
-                                properties:
-                                  environment:
-                                    description: Environment is a ksonnet application environment name
-                                    type: string
-                                  parameters:
-                                    description: Parameters are a list of ksonnet component parameter override values
-                                    items:
-                                      description: KsonnetParameter is a ksonnet component parameter
-                                      properties:
-                                        component:
-                                          type: string
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                type: object
-                              kustomize:
-                                description: Kustomize holds kustomize specific options
-                                properties:
-                                  commonAnnotations:
-                                    additionalProperties:
-                                      type: string
-                                    description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                                    type: object
-                                  commonLabels:
-                                    additionalProperties:
-                                      type: string
-                                    description: CommonLabels is a list of additional labels to add to rendered manifests
-                                    type: object
-                                  images:
-                                    description: Images is a list of Kustomize image override specifications
-                                    items:
-                                      description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                                      type: string
-                                    type: array
-                                  namePrefix:
-                                    description: NamePrefix is a prefix appended to resources for Kustomize apps
-                                    type: string
-                                  nameSuffix:
-                                    description: NameSuffix is a suffix appended to resources for Kustomize apps
-                                    type: string
-                                  version:
-                                    description: Version controls which version of Kustomize to use for rendering manifests
-                                    type: string
-                                type: object
-                              path:
-                                description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                                type: string
-                              plugin:
-                                description: ConfigManagementPlugin holds config management plugin specific options
-                                properties:
-                                  env:
-                                    description: Env is a list of environment variable entries
-                                    items:
-                                      description: EnvEntry represents an entry in the application's environment
-                                      properties:
-                                        name:
-                                          description: Name is the name of the variable, usually expressed in uppercase
-                                          type: string
-                                        value:
-                                          description: Value is the value of the variable
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                  name:
-                                    type: string
-                                type: object
-                              repoURL:
-                                description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                                type: string
-                              targetRevision:
-                                description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                                type: string
-                            required:
-                            - repoURL
-                            type: object
-                          syncOptions:
-                            description: SyncOptions provide per-sync sync-options, e.g. Validate=false
-                            items:
-                              type: string
-                            type: array
-                          syncStrategy:
-                            description: SyncStrategy describes how to perform the sync
-                            properties:
-                              apply:
-                                description: Apply will perform a `kubectl apply` to perform the sync.
-                                properties:
-                                  force:
-                                    description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.
-                                    type: boolean
-                                type: object
-                              hook:
-                                description: Hook will submit any referenced resources to perform the sync. This is the default strategy
-                                properties:
-                                  force:
-                                    description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.
-                                    type: boolean
-                                type: object
-                            type: object
-                        type: object
-                    type: object
-                  phase:
-                    description: Phase is the current phase of the operation
-                    type: string
-                  retryCount:
-                    description: RetryCount contains time of operation retries
-                    format: int64
-                    type: integer
-                  startedAt:
-                    description: StartedAt contains time of operation start
-                    format: date-time
-                    type: string
-                  syncResult:
-                    description: SyncResult is the result of a Sync operation
-                    properties:
-                      resources:
-                        description: Resources contains a list of sync result items for each individual resource in a sync operation
-                        items:
-                          description: ResourceResult holds the operation result details of a specific resource
-                          properties:
-                            group:
-                              description: Group specifies the API group of the resource
-                              type: string
-                            hookPhase:
-                              description: HookPhase contains the state of any operation associated with this resource OR hook This can also contain values for non-hook resources.
-                              type: string
-                            hookType:
-                              description: HookType specifies the type of the hook. Empty for non-hook resources
-                              type: string
-                            kind:
-                              description: Kind specifies the API kind of the resource
-                              type: string
-                            message:
-                              description: Message contains an informational or error message for the last sync OR operation
-                              type: string
-                            name:
-                              description: Name specifies the name of the resource
-                              type: string
-                            namespace:
-                              description: Namespace specifies the target namespace of the resource
-                              type: string
-                            status:
-                              description: Status holds the final result of the sync. Will be empty if the resources is yet to be applied/pruned and is always zero-value for hooks
-                              type: string
-                            syncPhase:
-                              description: SyncPhase indicates the particular phase of the sync that this result was acquired in
-                              type: string
-                            version:
-                              description: Version specifies the API version of the resource
-                              type: string
-                          required:
-                          - group
-                          - kind
-                          - name
-                          - namespace
-                          - version
-                          type: object
-                        type: array
-                      revision:
-                        description: Revision holds the revision this sync operation was performed to
-                        type: string
-                      source:
-                        description: Source records the application source information of the sync, used for comparing auto-sync
-                        properties:
-                          chart:
-                            description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                            type: string
-                          directory:
-                            description: Directory holds path/directory specific options
-                            properties:
-                              exclude:
-                                description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                                type: string
-                              include:
-                                description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                                type: string
-                              jsonnet:
-                                description: Jsonnet holds options specific to Jsonnet
-                                properties:
-                                  extVars:
-                                    description: ExtVars is a list of Jsonnet External Variables
-                                    items:
-                                      description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                      properties:
-                                        code:
-                                          type: boolean
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                  libs:
-                                    description: Additional library search dirs
-                                    items:
-                                      type: string
-                                    type: array
-                                  tlas:
-                                    description: TLAS is a list of Jsonnet Top-level Arguments
-                                    items:
-                                      description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                      properties:
-                                        code:
-                                          type: boolean
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                type: object
-                              recurse:
-                                description: Recurse specifies whether to scan a directory recursively for manifests
-                                type: boolean
-                            type: object
-                          helm:
-                            description: Helm holds helm specific options
-                            properties:
-                              fileParameters:
-                                description: FileParameters are file parameters to the helm template
-                                items:
-                                  description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                                  properties:
-                                    name:
-                                      description: Name is the name of the Helm parameter
-                                      type: string
-                                    path:
-                                      description: Path is the path to the file containing the values for the Helm parameter
-                                      type: string
-                                  type: object
-                                type: array
-                              parameters:
-                                description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                                items:
-                                  description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                                  properties:
-                                    forceString:
-                                      description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                      type: boolean
-                                    name:
-                                      description: Name is the name of the Helm parameter
-                                      type: string
-                                    value:
-                                      description: Value is the value for the Helm parameter
-                                      type: string
-                                  type: object
-                                type: array
-                              releaseName:
-                                description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                                type: string
-                              valueFiles:
-                                description: ValuesFiles is a list of Helm value files to use when generating a template
-                                items:
-                                  type: string
-                                type: array
-                              values:
-                                description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                                type: string
-                              version:
-                                description: Version is the Helm version to use for templating (either "2" or "3")
-                                type: string
-                            type: object
-                          ksonnet:
-                            description: Ksonnet holds ksonnet specific options
-                            properties:
-                              environment:
-                                description: Environment is a ksonnet application environment name
-                                type: string
-                              parameters:
-                                description: Parameters are a list of ksonnet component parameter override values
-                                items:
-                                  description: KsonnetParameter is a ksonnet component parameter
-                                  properties:
-                                    component:
-                                      type: string
-                                    name:
-                                      type: string
-                                    value:
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                            type: object
-                          kustomize:
-                            description: Kustomize holds kustomize specific options
-                            properties:
-                              commonAnnotations:
-                                additionalProperties:
-                                  type: string
-                                description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                                type: object
-                              commonLabels:
-                                additionalProperties:
-                                  type: string
-                                description: CommonLabels is a list of additional labels to add to rendered manifests
-                                type: object
-                              images:
-                                description: Images is a list of Kustomize image override specifications
-                                items:
-                                  description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                                  type: string
-                                type: array
-                              namePrefix:
-                                description: NamePrefix is a prefix appended to resources for Kustomize apps
-                                type: string
-                              nameSuffix:
-                                description: NameSuffix is a suffix appended to resources for Kustomize apps
-                                type: string
-                              version:
-                                description: Version controls which version of Kustomize to use for rendering manifests
-                                type: string
-                            type: object
-                          path:
-                            description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                            type: string
-                          plugin:
-                            description: ConfigManagementPlugin holds config management plugin specific options
-                            properties:
-                              env:
-                                description: Env is a list of environment variable entries
-                                items:
-                                  description: EnvEntry represents an entry in the application's environment
-                                  properties:
-                                    name:
-                                      description: Name is the name of the variable, usually expressed in uppercase
-                                      type: string
-                                    value:
-                                      description: Value is the value of the variable
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                              name:
-                                type: string
-                            type: object
-                          repoURL:
-                            description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                            type: string
-                          targetRevision:
-                            description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                            type: string
-                        required:
-                        - repoURL
-                        type: object
-                    required:
-                    - revision
-                    type: object
-                required:
-                - operation
-                - phase
-                - startedAt
-                type: object
-              reconciledAt:
-                description: ReconciledAt indicates when the application state was reconciled using the latest git version
-                format: date-time
-                type: string
-              resources:
-                description: Resources is a list of Kubernetes resources managed by this application
-                items:
-                  description: 'ResourceStatus holds the current sync and health status of a resource TODO: describe members of this type'
-                  properties:
-                    group:
-                      type: string
-                    health:
-                      description: HealthStatus contains information about the currently observed health state of an application or resource
-                      properties:
-                        message:
-                          description: Message is a human-readable informational message describing the health status
-                          type: string
-                        status:
-                          description: Status holds the status code of the application or resource
-                          type: string
-                      type: object
-                    hook:
-                      type: boolean
-                    kind:
-                      type: string
-                    name:
-                      type: string
-                    namespace:
-                      type: string
-                    requiresPruning:
-                      type: boolean
-                    status:
-                      description: SyncStatusCode is a type which represents possible comparison results
-                      type: string
-                    version:
-                      type: string
-                  type: object
-                type: array
-              sourceType:
-                description: SourceType specifies the type of this application
-                type: string
-              summary:
-                description: Summary contains a list of URLs and container images used by this application
-                properties:
-                  externalURLs:
-                    description: ExternalURLs holds all external URLs of application child resources.
-                    items:
-                      type: string
-                    type: array
-                  images:
-                    description: Images holds all images of application child resources.
-                    items:
-                      type: string
-                    type: array
-                type: object
-              sync:
-                description: Sync contains information about the application's current sync status
-                properties:
-                  comparedTo:
-                    description: ComparedTo contains information about what has been compared
-                    properties:
-                      destination:
-                        description: Destination is a reference to the application's destination used for comparison
-                        properties:
-                          name:
-                            description: Name is an alternate way of specifying the target cluster by its symbolic name
-                            type: string
-                          namespace:
-                            description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
-                            type: string
-                          server:
-                            description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API
-                            type: string
-                        type: object
-                      source:
-                        description: Source is a reference to the application's source used for comparison
-                        properties:
-                          chart:
-                            description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                            type: string
-                          directory:
-                            description: Directory holds path/directory specific options
-                            properties:
-                              exclude:
-                                description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                                type: string
-                              include:
-                                description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                                type: string
-                              jsonnet:
-                                description: Jsonnet holds options specific to Jsonnet
-                                properties:
-                                  extVars:
-                                    description: ExtVars is a list of Jsonnet External Variables
-                                    items:
-                                      description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                      properties:
-                                        code:
-                                          type: boolean
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                  libs:
-                                    description: Additional library search dirs
-                                    items:
-                                      type: string
-                                    type: array
-                                  tlas:
-                                    description: TLAS is a list of Jsonnet Top-level Arguments
-                                    items:
-                                      description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                      properties:
-                                        code:
-                                          type: boolean
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                type: object
-                              recurse:
-                                description: Recurse specifies whether to scan a directory recursively for manifests
-                                type: boolean
-                            type: object
-                          helm:
-                            description: Helm holds helm specific options
-                            properties:
-                              fileParameters:
-                                description: FileParameters are file parameters to the helm template
-                                items:
-                                  description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                                  properties:
-                                    name:
-                                      description: Name is the name of the Helm parameter
-                                      type: string
-                                    path:
-                                      description: Path is the path to the file containing the values for the Helm parameter
-                                      type: string
-                                  type: object
-                                type: array
-                              parameters:
-                                description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                                items:
-                                  description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                                  properties:
-                                    forceString:
-                                      description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                      type: boolean
-                                    name:
-                                      description: Name is the name of the Helm parameter
-                                      type: string
-                                    value:
-                                      description: Value is the value for the Helm parameter
-                                      type: string
-                                  type: object
-                                type: array
-                              releaseName:
-                                description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                                type: string
-                              valueFiles:
-                                description: ValuesFiles is a list of Helm value files to use when generating a template
-                                items:
-                                  type: string
-                                type: array
-                              values:
-                                description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                                type: string
-                              version:
-                                description: Version is the Helm version to use for templating (either "2" or "3")
-                                type: string
-                            type: object
-                          ksonnet:
-                            description: Ksonnet holds ksonnet specific options
-                            properties:
-                              environment:
-                                description: Environment is a ksonnet application environment name
-                                type: string
-                              parameters:
-                                description: Parameters are a list of ksonnet component parameter override values
-                                items:
-                                  description: KsonnetParameter is a ksonnet component parameter
-                                  properties:
-                                    component:
-                                      type: string
-                                    name:
-                                      type: string
-                                    value:
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                            type: object
-                          kustomize:
-                            description: Kustomize holds kustomize specific options
-                            properties:
-                              commonAnnotations:
-                                additionalProperties:
-                                  type: string
-                                description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                                type: object
-                              commonLabels:
-                                additionalProperties:
-                                  type: string
-                                description: CommonLabels is a list of additional labels to add to rendered manifests
-                                type: object
-                              images:
-                                description: Images is a list of Kustomize image override specifications
-                                items:
-                                  description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                                  type: string
-                                type: array
-                              namePrefix:
-                                description: NamePrefix is a prefix appended to resources for Kustomize apps
-                                type: string
-                              nameSuffix:
-                                description: NameSuffix is a suffix appended to resources for Kustomize apps
-                                type: string
-                              version:
-                                description: Version controls which version of Kustomize to use for rendering manifests
-                                type: string
-                            type: object
-                          path:
-                            description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                            type: string
-                          plugin:
-                            description: ConfigManagementPlugin holds config management plugin specific options
-                            properties:
-                              env:
-                                description: Env is a list of environment variable entries
-                                items:
-                                  description: EnvEntry represents an entry in the application's environment
-                                  properties:
-                                    name:
-                                      description: Name is the name of the variable, usually expressed in uppercase
-                                      type: string
-                                    value:
-                                      description: Value is the value of the variable
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                              name:
-                                type: string
-                            type: object
-                          repoURL:
-                            description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                            type: string
-                          targetRevision:
-                            description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                            type: string
-                        required:
-                        - repoURL
-                        type: object
-                    required:
-                    - destination
-                    - source
-                    type: object
-                  revision:
-                    description: Revision contains information about the revision the comparison has been performed to
-                    type: string
-                  status:
-                    description: Status is the sync state of the comparison
-                    type: string
-                required:
-                - status
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-    subresources: {}
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  labels:
-    app.kubernetes.io/name: appprojects.argoproj.io
-    app.kubernetes.io/part-of: argocd
-  name: appprojects.argoproj.io
-spec:
-  group: argoproj.io
-  names:
-    kind: AppProject
-    listKind: AppProjectList
-    plural: appprojects
-    shortNames:
-    - appproj
-    - appprojs
-    singular: appproject
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'AppProject provides a logical grouping of applications, providing controls for: * where the apps may deploy to (cluster whitelist) * what may be deployed (repository whitelist, resource whitelist/blacklist) * who can access these applications (roles, OIDC group claims bindings) * and what they can do (RBAC policies) * automation access to these roles (JWT tokens)'
-        properties:
-          apiVersion:
-            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
-            type: string
-          kind:
-            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
-            type: string
-          metadata:
-            type: object
-          spec:
-            description: AppProjectSpec is the specification of an AppProject
-            properties:
-              clusterResourceBlacklist:
-                description: ClusterResourceBlacklist contains list of blacklisted cluster level resources
-                items:
-                  description: GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying concepts during lookup stages without having partially valid types
-                  properties:
-                    group:
-                      type: string
-                    kind:
-                      type: string
-                  required:
-                  - group
-                  - kind
-                  type: object
-                type: array
-              clusterResourceWhitelist:
-                description: ClusterResourceWhitelist contains list of whitelisted cluster level resources
-                items:
-                  description: GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying concepts during lookup stages without having partially valid types
-                  properties:
-                    group:
-                      type: string
-                    kind:
-                      type: string
-                  required:
-                  - group
-                  - kind
-                  type: object
-                type: array
-              description:
-                description: Description contains optional project description
-                type: string
-              destinations:
-                description: Destinations contains list of destinations available for deployment
-                items:
-                  description: ApplicationDestination holds information about the application's destination
-                  properties:
-                    name:
-                      description: Name is an alternate way of specifying the target cluster by its symbolic name
-                      type: string
-                    namespace:
-                      description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
-                      type: string
-                    server:
-                      description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API
-                      type: string
-                  type: object
-                type: array
-              namespaceResourceBlacklist:
-                description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources
-                items:
-                  description: GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying concepts during lookup stages without having partially valid types
-                  properties:
-                    group:
-                      type: string
-                    kind:
-                      type: string
-                  required:
-                  - group
-                  - kind
-                  type: object
-                type: array
-              namespaceResourceWhitelist:
-                description: NamespaceResourceWhitelist contains list of whitelisted namespace level resources
-                items:
-                  description: GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying concepts during lookup stages without having partially valid types
-                  properties:
-                    group:
-                      type: string
-                    kind:
-                      type: string
-                  required:
-                  - group
-                  - kind
-                  type: object
-                type: array
-              orphanedResources:
-                description: OrphanedResources specifies if controller should monitor orphaned resources of apps in this project
-                properties:
-                  ignore:
-                    description: Ignore contains a list of resources that are to be excluded from orphaned resources monitoring
-                    items:
-                      description: OrphanedResourceKey is a reference to a resource to be ignored from
-                      properties:
-                        group:
-                          type: string
-                        kind:
-                          type: string
-                        name:
-                          type: string
-                      type: object
-                    type: array
-                  warn:
-                    description: Warn indicates if warning condition should be created for apps which have orphaned resources
-                    type: boolean
-                type: object
-              roles:
-                description: Roles are user defined RBAC roles associated with this project
-                items:
-                  description: ProjectRole represents a role that has access to a project
-                  properties:
-                    description:
-                      description: Description is a description of the role
-                      type: string
-                    groups:
-                      description: Groups are a list of OIDC group claims bound to this role
-                      items:
-                        type: string
-                      type: array
-                    jwtTokens:
-                      description: JWTTokens are a list of generated JWT tokens bound to this role
-                      items:
-                        description: JWTToken holds the issuedAt and expiresAt values of a token
-                        properties:
-                          exp:
-                            format: int64
-                            type: integer
-                          iat:
-                            format: int64
-                            type: integer
-                          id:
-                            type: string
-                        required:
-                        - iat
-                        type: object
-                      type: array
-                    name:
-                      description: Name is a name for this role
-                      type: string
-                    policies:
-                      description: Policies Stores a list of casbin formated strings that define access policies for the role in the project
-                      items:
-                        type: string
-                      type: array
-                  required:
-                  - name
-                  type: object
-                type: array
-              signatureKeys:
-                description: SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync
-                items:
-                  description: SignatureKey is the specification of a key required to verify commit signatures with
-                  properties:
-                    keyID:
-                      description: The ID of the key in hexadecimal notation
-                      type: string
-                  required:
-                  - keyID
-                  type: object
-                type: array
-              sourceRepos:
-                description: SourceRepos contains list of repository URLs which can be used for deployment
-                items:
-                  type: string
-                type: array
-              syncWindows:
-                description: SyncWindows controls when syncs can be run for apps in this project
-                items:
-                  description: SyncWindow contains the kind, time, duration and attributes that are used to assign the syncWindows to apps
-                  properties:
-                    applications:
-                      description: Applications contains a list of applications that the window will apply to
-                      items:
-                        type: string
-                      type: array
-                    clusters:
-                      description: Clusters contains a list of clusters that the window will apply to
-                      items:
-                        type: string
-                      type: array
-                    duration:
-                      description: Duration is the amount of time the sync window will be open
-                      type: string
-                    kind:
-                      description: Kind defines if the window allows or blocks syncs
-                      type: string
-                    manualSync:
-                      description: ManualSync enables manual syncs when they would otherwise be blocked
-                      type: boolean
-                    namespaces:
-                      description: Namespaces contains a list of namespaces that the window will apply to
-                      items:
-                        type: string
-                      type: array
-                    schedule:
-                      description: Schedule is the time the window will begin, specified in cron format
-                      type: string
-                  type: object
-                type: array
-            type: object
-          status:
-            description: AppProjectStatus contains status information for AppProject CRs
-            properties:
-              jwtTokensByRole:
-                additionalProperties:
-                  description: JWTTokens represents a list of JWT tokens
-                  properties:
-                    items:
-                      items:
-                        description: JWTToken holds the issuedAt and expiresAt values of a token
-                        properties:
-                          exp:
-                            format: int64
-                            type: integer
-                          iat:
-                            format: int64
-                            type: integer
-                          id:
-                            type: string
-                        required:
-                        - iat
-                        type: object
-                      type: array
-                  type: object
-                description: JWTTokensByRole contains a list of JWT tokens issued for a given role
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
----
 apiVersion: v1
 kind: ServiceAccount
 metadata:
@@ -2142,7 +123,7 @@ kind: Role
 metadata:
   labels:
     app: redis-ha
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     component: argocd-redis-ha-haproxy
     heritage: Helm
     release: argocd
@@ -2251,7 +232,7 @@ kind: RoleBinding
 metadata:
   labels:
     app: redis-ha
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     component: argocd-redis-ha-haproxy
     heritage: Helm
     release: argocd
@@ -2322,7 +303,7 @@ kind: ConfigMap
 metadata:
   labels:
     app: argocd-redis-ha
-    chart: redis-ha-4.12.9
+    chart: redis-ha-4.12.14
     heritage: Helm
     release: argocd
   name: argocd-redis-ha-health-configmap
@@ -2358,8 +339,8 @@ data:
     defaults REDIS
       mode tcp
       timeout connect 4s
-      timeout server 330s
-      timeout client 330s
+      timeout server 6m
+      timeout client 6m
       timeout check 2s
 
     listen health_check_http_url
@@ -3117,7 +1098,7 @@ spec:
   template:
     metadata:
       annotations:
-        checksum/config: d2ea567716f714054660c172aa717a4ec9daa16d25dab418d8fd7a0c961b03e3
+        checksum/config: c55502ce732f78a70658dc77f00c02444cd6b6bede4b270f56d082fdaed1dc5f
       labels:
         app.kubernetes.io/name: argocd-redis-ha-haproxy
       name: argocd-redis-ha-haproxy
diff --git a/manifests/ha/namespace-install/kustomization.yaml b/manifests/ha/namespace-install/kustomization.yaml
index 3cf4567ed..852e22250 100644
--- a/manifests/ha/namespace-install/kustomization.yaml
+++ b/manifests/ha/namespace-install/kustomization.yaml
@@ -2,5 +2,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 
 resources:
-- ../../crds
 - ../base
diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml
index 224d80b05..8dda6bbb4 100644
--- a/manifests/namespace-install.yaml
+++ b/manifests/namespace-install.yaml
@@ -1,2023 +1,4 @@
 # This is an auto-generated file. DO NOT EDIT
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  labels:
-    app.kubernetes.io/name: applications.argoproj.io
-    app.kubernetes.io/part-of: argocd
-  name: applications.argoproj.io
-spec:
-  group: argoproj.io
-  names:
-    kind: Application
-    listKind: ApplicationList
-    plural: applications
-    shortNames:
-    - app
-    - apps
-    singular: application
-  scope: Namespaced
-  versions:
-  - additionalPrinterColumns:
-    - jsonPath: .status.sync.status
-      name: Sync Status
-      type: string
-    - jsonPath: .status.health.status
-      name: Health Status
-      type: string
-    - jsonPath: .status.sync.revision
-      name: Revision
-      priority: 10
-      type: string
-    name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: Application is a definition of Application resource.
-        properties:
-          apiVersion:
-            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
-            type: string
-          kind:
-            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
-            type: string
-          metadata:
-            type: object
-          operation:
-            description: Operation contains information about a requested or running operation
-            properties:
-              info:
-                description: Info is a list of informational items for this operation
-                items:
-                  properties:
-                    name:
-                      type: string
-                    value:
-                      type: string
-                  required:
-                  - name
-                  - value
-                  type: object
-                type: array
-              initiatedBy:
-                description: InitiatedBy contains information about who initiated the operations
-                properties:
-                  automated:
-                    description: Automated is set to true if operation was initiated automatically by the application controller.
-                    type: boolean
-                  username:
-                    description: Username contains the name of a user who started operation
-                    type: string
-                type: object
-              retry:
-                description: Retry controls the strategy to apply if a sync fails
-                properties:
-                  backoff:
-                    description: Backoff controls how to backoff on subsequent retries of failed syncs
-                    properties:
-                      duration:
-                        description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
-                        type: string
-                      factor:
-                        description: Factor is a factor to multiply the base duration after each failed retry
-                        format: int64
-                        type: integer
-                      maxDuration:
-                        description: MaxDuration is the maximum amount of time allowed for the backoff strategy
-                        type: string
-                    type: object
-                  limit:
-                    description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
-                    format: int64
-                    type: integer
-                type: object
-              sync:
-                description: Sync contains parameters for the operation
-                properties:
-                  dryRun:
-                    description: DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync
-                    type: boolean
-                  manifests:
-                    description: Manifests is an optional field that overrides sync source with a local directory for development
-                    items:
-                      type: string
-                    type: array
-                  prune:
-                    description: Prune specifies to delete resources from the cluster that are no longer tracked in git
-                    type: boolean
-                  resources:
-                    description: Resources describes which resources shall be part of the sync
-                    items:
-                      description: SyncOperationResource contains resources to sync.
-                      properties:
-                        group:
-                          type: string
-                        kind:
-                          type: string
-                        name:
-                          type: string
-                        namespace:
-                          type: string
-                      required:
-                      - kind
-                      - name
-                      type: object
-                    type: array
-                  revision:
-                    description: Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec.
-                    type: string
-                  source:
-                    description: Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation
-                    properties:
-                      chart:
-                        description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                        type: string
-                      directory:
-                        description: Directory holds path/directory specific options
-                        properties:
-                          exclude:
-                            description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                            type: string
-                          include:
-                            description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                            type: string
-                          jsonnet:
-                            description: Jsonnet holds options specific to Jsonnet
-                            properties:
-                              extVars:
-                                description: ExtVars is a list of Jsonnet External Variables
-                                items:
-                                  description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                  properties:
-                                    code:
-                                      type: boolean
-                                    name:
-                                      type: string
-                                    value:
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                              libs:
-                                description: Additional library search dirs
-                                items:
-                                  type: string
-                                type: array
-                              tlas:
-                                description: TLAS is a list of Jsonnet Top-level Arguments
-                                items:
-                                  description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                  properties:
-                                    code:
-                                      type: boolean
-                                    name:
-                                      type: string
-                                    value:
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                            type: object
-                          recurse:
-                            description: Recurse specifies whether to scan a directory recursively for manifests
-                            type: boolean
-                        type: object
-                      helm:
-                        description: Helm holds helm specific options
-                        properties:
-                          fileParameters:
-                            description: FileParameters are file parameters to the helm template
-                            items:
-                              description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                              properties:
-                                name:
-                                  description: Name is the name of the Helm parameter
-                                  type: string
-                                path:
-                                  description: Path is the path to the file containing the values for the Helm parameter
-                                  type: string
-                              type: object
-                            type: array
-                          parameters:
-                            description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                            items:
-                              description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                              properties:
-                                forceString:
-                                  description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                  type: boolean
-                                name:
-                                  description: Name is the name of the Helm parameter
-                                  type: string
-                                value:
-                                  description: Value is the value for the Helm parameter
-                                  type: string
-                              type: object
-                            type: array
-                          releaseName:
-                            description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                            type: string
-                          valueFiles:
-                            description: ValuesFiles is a list of Helm value files to use when generating a template
-                            items:
-                              type: string
-                            type: array
-                          values:
-                            description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                            type: string
-                          version:
-                            description: Version is the Helm version to use for templating (either "2" or "3")
-                            type: string
-                        type: object
-                      ksonnet:
-                        description: Ksonnet holds ksonnet specific options
-                        properties:
-                          environment:
-                            description: Environment is a ksonnet application environment name
-                            type: string
-                          parameters:
-                            description: Parameters are a list of ksonnet component parameter override values
-                            items:
-                              description: KsonnetParameter is a ksonnet component parameter
-                              properties:
-                                component:
-                                  type: string
-                                name:
-                                  type: string
-                                value:
-                                  type: string
-                              required:
-                              - name
-                              - value
-                              type: object
-                            type: array
-                        type: object
-                      kustomize:
-                        description: Kustomize holds kustomize specific options
-                        properties:
-                          commonAnnotations:
-                            additionalProperties:
-                              type: string
-                            description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                            type: object
-                          commonLabels:
-                            additionalProperties:
-                              type: string
-                            description: CommonLabels is a list of additional labels to add to rendered manifests
-                            type: object
-                          images:
-                            description: Images is a list of Kustomize image override specifications
-                            items:
-                              description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                              type: string
-                            type: array
-                          namePrefix:
-                            description: NamePrefix is a prefix appended to resources for Kustomize apps
-                            type: string
-                          nameSuffix:
-                            description: NameSuffix is a suffix appended to resources for Kustomize apps
-                            type: string
-                          version:
-                            description: Version controls which version of Kustomize to use for rendering manifests
-                            type: string
-                        type: object
-                      path:
-                        description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                        type: string
-                      plugin:
-                        description: ConfigManagementPlugin holds config management plugin specific options
-                        properties:
-                          env:
-                            description: Env is a list of environment variable entries
-                            items:
-                              description: EnvEntry represents an entry in the application's environment
-                              properties:
-                                name:
-                                  description: Name is the name of the variable, usually expressed in uppercase
-                                  type: string
-                                value:
-                                  description: Value is the value of the variable
-                                  type: string
-                              required:
-                              - name
-                              - value
-                              type: object
-                            type: array
-                          name:
-                            type: string
-                        type: object
-                      repoURL:
-                        description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                        type: string
-                      targetRevision:
-                        description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                        type: string
-                    required:
-                    - repoURL
-                    type: object
-                  syncOptions:
-                    description: SyncOptions provide per-sync sync-options, e.g. Validate=false
-                    items:
-                      type: string
-                    type: array
-                  syncStrategy:
-                    description: SyncStrategy describes how to perform the sync
-                    properties:
-                      apply:
-                        description: Apply will perform a `kubectl apply` to perform the sync.
-                        properties:
-                          force:
-                            description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.
-                            type: boolean
-                        type: object
-                      hook:
-                        description: Hook will submit any referenced resources to perform the sync. This is the default strategy
-                        properties:
-                          force:
-                            description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.
-                            type: boolean
-                        type: object
-                    type: object
-                type: object
-            type: object
-          spec:
-            description: ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision.
-            properties:
-              destination:
-                description: Destination is a reference to the target Kubernetes server and namespace
-                properties:
-                  name:
-                    description: Name is an alternate way of specifying the target cluster by its symbolic name
-                    type: string
-                  namespace:
-                    description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
-                    type: string
-                  server:
-                    description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API
-                    type: string
-                type: object
-              ignoreDifferences:
-                description: IgnoreDifferences is a list of resources and their fields which should be ignored during comparison
-                items:
-                  description: ResourceIgnoreDifferences contains resource filter and list of json paths which should be ignored during comparison with live state.
-                  properties:
-                    group:
-                      type: string
-                    jsonPointers:
-                      items:
-                        type: string
-                      type: array
-                    kind:
-                      type: string
-                    name:
-                      type: string
-                    namespace:
-                      type: string
-                  required:
-                  - jsonPointers
-                  - kind
-                  type: object
-                type: array
-              info:
-                description: Info contains a list of information (URLs, email addresses, and plain text) that relates to the application
-                items:
-                  properties:
-                    name:
-                      type: string
-                    value:
-                      type: string
-                  required:
-                  - name
-                  - value
-                  type: object
-                type: array
-              project:
-                description: Project is a reference to the project this application belongs to. The empty string means that application belongs to the 'default' project.
-                type: string
-              revisionHistoryLimit:
-                description: RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions. This should only be changed in exceptional circumstances. Setting to zero will store no history. This will reduce storage used. Increasing will increase the space used to store the history, so we do not recommend increasing it. Default is 10.
-                format: int64
-                type: integer
-              source:
-                description: Source is a reference to the location of the application's manifests or chart
-                properties:
-                  chart:
-                    description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                    type: string
-                  directory:
-                    description: Directory holds path/directory specific options
-                    properties:
-                      exclude:
-                        description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                        type: string
-                      include:
-                        description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                        type: string
-                      jsonnet:
-                        description: Jsonnet holds options specific to Jsonnet
-                        properties:
-                          extVars:
-                            description: ExtVars is a list of Jsonnet External Variables
-                            items:
-                              description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                              properties:
-                                code:
-                                  type: boolean
-                                name:
-                                  type: string
-                                value:
-                                  type: string
-                              required:
-                              - name
-                              - value
-                              type: object
-                            type: array
-                          libs:
-                            description: Additional library search dirs
-                            items:
-                              type: string
-                            type: array
-                          tlas:
-                            description: TLAS is a list of Jsonnet Top-level Arguments
-                            items:
-                              description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                              properties:
-                                code:
-                                  type: boolean
-                                name:
-                                  type: string
-                                value:
-                                  type: string
-                              required:
-                              - name
-                              - value
-                              type: object
-                            type: array
-                        type: object
-                      recurse:
-                        description: Recurse specifies whether to scan a directory recursively for manifests
-                        type: boolean
-                    type: object
-                  helm:
-                    description: Helm holds helm specific options
-                    properties:
-                      fileParameters:
-                        description: FileParameters are file parameters to the helm template
-                        items:
-                          description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                          properties:
-                            name:
-                              description: Name is the name of the Helm parameter
-                              type: string
-                            path:
-                              description: Path is the path to the file containing the values for the Helm parameter
-                              type: string
-                          type: object
-                        type: array
-                      parameters:
-                        description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                        items:
-                          description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                          properties:
-                            forceString:
-                              description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                              type: boolean
-                            name:
-                              description: Name is the name of the Helm parameter
-                              type: string
-                            value:
-                              description: Value is the value for the Helm parameter
-                              type: string
-                          type: object
-                        type: array
-                      releaseName:
-                        description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                        type: string
-                      valueFiles:
-                        description: ValuesFiles is a list of Helm value files to use when generating a template
-                        items:
-                          type: string
-                        type: array
-                      values:
-                        description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                        type: string
-                      version:
-                        description: Version is the Helm version to use for templating (either "2" or "3")
-                        type: string
-                    type: object
-                  ksonnet:
-                    description: Ksonnet holds ksonnet specific options
-                    properties:
-                      environment:
-                        description: Environment is a ksonnet application environment name
-                        type: string
-                      parameters:
-                        description: Parameters are a list of ksonnet component parameter override values
-                        items:
-                          description: KsonnetParameter is a ksonnet component parameter
-                          properties:
-                            component:
-                              type: string
-                            name:
-                              type: string
-                            value:
-                              type: string
-                          required:
-                          - name
-                          - value
-                          type: object
-                        type: array
-                    type: object
-                  kustomize:
-                    description: Kustomize holds kustomize specific options
-                    properties:
-                      commonAnnotations:
-                        additionalProperties:
-                          type: string
-                        description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                        type: object
-                      commonLabels:
-                        additionalProperties:
-                          type: string
-                        description: CommonLabels is a list of additional labels to add to rendered manifests
-                        type: object
-                      images:
-                        description: Images is a list of Kustomize image override specifications
-                        items:
-                          description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                          type: string
-                        type: array
-                      namePrefix:
-                        description: NamePrefix is a prefix appended to resources for Kustomize apps
-                        type: string
-                      nameSuffix:
-                        description: NameSuffix is a suffix appended to resources for Kustomize apps
-                        type: string
-                      version:
-                        description: Version controls which version of Kustomize to use for rendering manifests
-                        type: string
-                    type: object
-                  path:
-                    description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                    type: string
-                  plugin:
-                    description: ConfigManagementPlugin holds config management plugin specific options
-                    properties:
-                      env:
-                        description: Env is a list of environment variable entries
-                        items:
-                          description: EnvEntry represents an entry in the application's environment
-                          properties:
-                            name:
-                              description: Name is the name of the variable, usually expressed in uppercase
-                              type: string
-                            value:
-                              description: Value is the value of the variable
-                              type: string
-                          required:
-                          - name
-                          - value
-                          type: object
-                        type: array
-                      name:
-                        type: string
-                    type: object
-                  repoURL:
-                    description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                    type: string
-                  targetRevision:
-                    description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                    type: string
-                required:
-                - repoURL
-                type: object
-              syncPolicy:
-                description: SyncPolicy controls when and how a sync will be performed
-                properties:
-                  automated:
-                    description: Automated will keep an application synced to the target revision
-                    properties:
-                      allowEmpty:
-                        description: 'AllowEmpty allows apps have zero live resources (default: false)'
-                        type: boolean
-                      prune:
-                        description: 'Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false)'
-                        type: boolean
-                      selfHeal:
-                        description: 'SelfHeal specifes whether to revert resources back to their desired state upon modification in the cluster (default: false)'
-                        type: boolean
-                    type: object
-                  retry:
-                    description: Retry controls failed sync retry behavior
-                    properties:
-                      backoff:
-                        description: Backoff controls how to backoff on subsequent retries of failed syncs
-                        properties:
-                          duration:
-                            description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
-                            type: string
-                          factor:
-                            description: Factor is a factor to multiply the base duration after each failed retry
-                            format: int64
-                            type: integer
-                          maxDuration:
-                            description: MaxDuration is the maximum amount of time allowed for the backoff strategy
-                            type: string
-                        type: object
-                      limit:
-                        description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
-                        format: int64
-                        type: integer
-                    type: object
-                  syncOptions:
-                    description: Options allow you to specify whole app sync-options
-                    items:
-                      type: string
-                    type: array
-                type: object
-            required:
-            - destination
-            - project
-            - source
-            type: object
-          status:
-            description: ApplicationStatus contains status information for the application
-            properties:
-              conditions:
-                description: Conditions is a list of currently observed application conditions
-                items:
-                  description: ApplicationCondition contains details about an application condition, which is usally an error or warning
-                  properties:
-                    lastTransitionTime:
-                      description: LastTransitionTime is the time the condition was last observed
-                      format: date-time
-                      type: string
-                    message:
-                      description: Message contains human-readable message indicating details about condition
-                      type: string
-                    type:
-                      description: Type is an application condition type
-                      type: string
-                  required:
-                  - message
-                  - type
-                  type: object
-                type: array
-              health:
-                description: Health contains information about the application's current health status
-                properties:
-                  message:
-                    description: Message is a human-readable informational message describing the health status
-                    type: string
-                  status:
-                    description: Status holds the status code of the application or resource
-                    type: string
-                type: object
-              history:
-                description: History contains information about the application's sync history
-                items:
-                  description: RevisionHistory contains history information about a previous sync
-                  properties:
-                    deployStartedAt:
-                      description: DeployStartedAt holds the time the sync operation started
-                      format: date-time
-                      type: string
-                    deployedAt:
-                      description: DeployedAt holds the time the sync operation completed
-                      format: date-time
-                      type: string
-                    id:
-                      description: ID is an auto incrementing identifier of the RevisionHistory
-                      format: int64
-                      type: integer
-                    revision:
-                      description: Revision holds the revision the sync was performed against
-                      type: string
-                    source:
-                      description: Source is a reference to the application source used for the sync operation
-                      properties:
-                        chart:
-                          description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                          type: string
-                        directory:
-                          description: Directory holds path/directory specific options
-                          properties:
-                            exclude:
-                              description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                              type: string
-                            include:
-                              description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                              type: string
-                            jsonnet:
-                              description: Jsonnet holds options specific to Jsonnet
-                              properties:
-                                extVars:
-                                  description: ExtVars is a list of Jsonnet External Variables
-                                  items:
-                                    description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                    properties:
-                                      code:
-                                        type: boolean
-                                      name:
-                                        type: string
-                                      value:
-                                        type: string
-                                    required:
-                                    - name
-                                    - value
-                                    type: object
-                                  type: array
-                                libs:
-                                  description: Additional library search dirs
-                                  items:
-                                    type: string
-                                  type: array
-                                tlas:
-                                  description: TLAS is a list of Jsonnet Top-level Arguments
-                                  items:
-                                    description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                    properties:
-                                      code:
-                                        type: boolean
-                                      name:
-                                        type: string
-                                      value:
-                                        type: string
-                                    required:
-                                    - name
-                                    - value
-                                    type: object
-                                  type: array
-                              type: object
-                            recurse:
-                              description: Recurse specifies whether to scan a directory recursively for manifests
-                              type: boolean
-                          type: object
-                        helm:
-                          description: Helm holds helm specific options
-                          properties:
-                            fileParameters:
-                              description: FileParameters are file parameters to the helm template
-                              items:
-                                description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                                properties:
-                                  name:
-                                    description: Name is the name of the Helm parameter
-                                    type: string
-                                  path:
-                                    description: Path is the path to the file containing the values for the Helm parameter
-                                    type: string
-                                type: object
-                              type: array
-                            parameters:
-                              description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                              items:
-                                description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                                properties:
-                                  forceString:
-                                    description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                    type: boolean
-                                  name:
-                                    description: Name is the name of the Helm parameter
-                                    type: string
-                                  value:
-                                    description: Value is the value for the Helm parameter
-                                    type: string
-                                type: object
-                              type: array
-                            releaseName:
-                              description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                              type: string
-                            valueFiles:
-                              description: ValuesFiles is a list of Helm value files to use when generating a template
-                              items:
-                                type: string
-                              type: array
-                            values:
-                              description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                              type: string
-                            version:
-                              description: Version is the Helm version to use for templating (either "2" or "3")
-                              type: string
-                          type: object
-                        ksonnet:
-                          description: Ksonnet holds ksonnet specific options
-                          properties:
-                            environment:
-                              description: Environment is a ksonnet application environment name
-                              type: string
-                            parameters:
-                              description: Parameters are a list of ksonnet component parameter override values
-                              items:
-                                description: KsonnetParameter is a ksonnet component parameter
-                                properties:
-                                  component:
-                                    type: string
-                                  name:
-                                    type: string
-                                  value:
-                                    type: string
-                                required:
-                                - name
-                                - value
-                                type: object
-                              type: array
-                          type: object
-                        kustomize:
-                          description: Kustomize holds kustomize specific options
-                          properties:
-                            commonAnnotations:
-                              additionalProperties:
-                                type: string
-                              description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                              type: object
-                            commonLabels:
-                              additionalProperties:
-                                type: string
-                              description: CommonLabels is a list of additional labels to add to rendered manifests
-                              type: object
-                            images:
-                              description: Images is a list of Kustomize image override specifications
-                              items:
-                                description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                                type: string
-                              type: array
-                            namePrefix:
-                              description: NamePrefix is a prefix appended to resources for Kustomize apps
-                              type: string
-                            nameSuffix:
-                              description: NameSuffix is a suffix appended to resources for Kustomize apps
-                              type: string
-                            version:
-                              description: Version controls which version of Kustomize to use for rendering manifests
-                              type: string
-                          type: object
-                        path:
-                          description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                          type: string
-                        plugin:
-                          description: ConfigManagementPlugin holds config management plugin specific options
-                          properties:
-                            env:
-                              description: Env is a list of environment variable entries
-                              items:
-                                description: EnvEntry represents an entry in the application's environment
-                                properties:
-                                  name:
-                                    description: Name is the name of the variable, usually expressed in uppercase
-                                    type: string
-                                  value:
-                                    description: Value is the value of the variable
-                                    type: string
-                                required:
-                                - name
-                                - value
-                                type: object
-                              type: array
-                            name:
-                              type: string
-                          type: object
-                        repoURL:
-                          description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                          type: string
-                        targetRevision:
-                          description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                          type: string
-                      required:
-                      - repoURL
-                      type: object
-                  required:
-                  - deployedAt
-                  - id
-                  - revision
-                  type: object
-                type: array
-              observedAt:
-                description: 'ObservedAt indicates when the application state was updated without querying latest git state Deprecated: controller no longer updates ObservedAt field'
-                format: date-time
-                type: string
-              operationState:
-                description: OperationState contains information about any ongoing operations, such as a sync
-                properties:
-                  finishedAt:
-                    description: FinishedAt contains time of operation completion
-                    format: date-time
-                    type: string
-                  message:
-                    description: Message holds any pertinent messages when attempting to perform operation (typically errors).
-                    type: string
-                  operation:
-                    description: Operation is the original requested operation
-                    properties:
-                      info:
-                        description: Info is a list of informational items for this operation
-                        items:
-                          properties:
-                            name:
-                              type: string
-                            value:
-                              type: string
-                          required:
-                          - name
-                          - value
-                          type: object
-                        type: array
-                      initiatedBy:
-                        description: InitiatedBy contains information about who initiated the operations
-                        properties:
-                          automated:
-                            description: Automated is set to true if operation was initiated automatically by the application controller.
-                            type: boolean
-                          username:
-                            description: Username contains the name of a user who started operation
-                            type: string
-                        type: object
-                      retry:
-                        description: Retry controls the strategy to apply if a sync fails
-                        properties:
-                          backoff:
-                            description: Backoff controls how to backoff on subsequent retries of failed syncs
-                            properties:
-                              duration:
-                                description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
-                                type: string
-                              factor:
-                                description: Factor is a factor to multiply the base duration after each failed retry
-                                format: int64
-                                type: integer
-                              maxDuration:
-                                description: MaxDuration is the maximum amount of time allowed for the backoff strategy
-                                type: string
-                            type: object
-                          limit:
-                            description: Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
-                            format: int64
-                            type: integer
-                        type: object
-                      sync:
-                        description: Sync contains parameters for the operation
-                        properties:
-                          dryRun:
-                            description: DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync
-                            type: boolean
-                          manifests:
-                            description: Manifests is an optional field that overrides sync source with a local directory for development
-                            items:
-                              type: string
-                            type: array
-                          prune:
-                            description: Prune specifies to delete resources from the cluster that are no longer tracked in git
-                            type: boolean
-                          resources:
-                            description: Resources describes which resources shall be part of the sync
-                            items:
-                              description: SyncOperationResource contains resources to sync.
-                              properties:
-                                group:
-                                  type: string
-                                kind:
-                                  type: string
-                                name:
-                                  type: string
-                                namespace:
-                                  type: string
-                              required:
-                              - kind
-                              - name
-                              type: object
-                            type: array
-                          revision:
-                            description: Revision is the revision (Git) or chart version (Helm) which to sync the application to If omitted, will use the revision specified in app spec.
-                            type: string
-                          source:
-                            description: Source overrides the source definition set in the application. This is typically set in a Rollback operation and is nil during a Sync operation
-                            properties:
-                              chart:
-                                description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                                type: string
-                              directory:
-                                description: Directory holds path/directory specific options
-                                properties:
-                                  exclude:
-                                    description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                                    type: string
-                                  include:
-                                    description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                                    type: string
-                                  jsonnet:
-                                    description: Jsonnet holds options specific to Jsonnet
-                                    properties:
-                                      extVars:
-                                        description: ExtVars is a list of Jsonnet External Variables
-                                        items:
-                                          description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                          properties:
-                                            code:
-                                              type: boolean
-                                            name:
-                                              type: string
-                                            value:
-                                              type: string
-                                          required:
-                                          - name
-                                          - value
-                                          type: object
-                                        type: array
-                                      libs:
-                                        description: Additional library search dirs
-                                        items:
-                                          type: string
-                                        type: array
-                                      tlas:
-                                        description: TLAS is a list of Jsonnet Top-level Arguments
-                                        items:
-                                          description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                          properties:
-                                            code:
-                                              type: boolean
-                                            name:
-                                              type: string
-                                            value:
-                                              type: string
-                                          required:
-                                          - name
-                                          - value
-                                          type: object
-                                        type: array
-                                    type: object
-                                  recurse:
-                                    description: Recurse specifies whether to scan a directory recursively for manifests
-                                    type: boolean
-                                type: object
-                              helm:
-                                description: Helm holds helm specific options
-                                properties:
-                                  fileParameters:
-                                    description: FileParameters are file parameters to the helm template
-                                    items:
-                                      description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                                      properties:
-                                        name:
-                                          description: Name is the name of the Helm parameter
-                                          type: string
-                                        path:
-                                          description: Path is the path to the file containing the values for the Helm parameter
-                                          type: string
-                                      type: object
-                                    type: array
-                                  parameters:
-                                    description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                                    items:
-                                      description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                                      properties:
-                                        forceString:
-                                          description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                          type: boolean
-                                        name:
-                                          description: Name is the name of the Helm parameter
-                                          type: string
-                                        value:
-                                          description: Value is the value for the Helm parameter
-                                          type: string
-                                      type: object
-                                    type: array
-                                  releaseName:
-                                    description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                                    type: string
-                                  valueFiles:
-                                    description: ValuesFiles is a list of Helm value files to use when generating a template
-                                    items:
-                                      type: string
-                                    type: array
-                                  values:
-                                    description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                                    type: string
-                                  version:
-                                    description: Version is the Helm version to use for templating (either "2" or "3")
-                                    type: string
-                                type: object
-                              ksonnet:
-                                description: Ksonnet holds ksonnet specific options
-                                properties:
-                                  environment:
-                                    description: Environment is a ksonnet application environment name
-                                    type: string
-                                  parameters:
-                                    description: Parameters are a list of ksonnet component parameter override values
-                                    items:
-                                      description: KsonnetParameter is a ksonnet component parameter
-                                      properties:
-                                        component:
-                                          type: string
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                type: object
-                              kustomize:
-                                description: Kustomize holds kustomize specific options
-                                properties:
-                                  commonAnnotations:
-                                    additionalProperties:
-                                      type: string
-                                    description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                                    type: object
-                                  commonLabels:
-                                    additionalProperties:
-                                      type: string
-                                    description: CommonLabels is a list of additional labels to add to rendered manifests
-                                    type: object
-                                  images:
-                                    description: Images is a list of Kustomize image override specifications
-                                    items:
-                                      description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                                      type: string
-                                    type: array
-                                  namePrefix:
-                                    description: NamePrefix is a prefix appended to resources for Kustomize apps
-                                    type: string
-                                  nameSuffix:
-                                    description: NameSuffix is a suffix appended to resources for Kustomize apps
-                                    type: string
-                                  version:
-                                    description: Version controls which version of Kustomize to use for rendering manifests
-                                    type: string
-                                type: object
-                              path:
-                                description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                                type: string
-                              plugin:
-                                description: ConfigManagementPlugin holds config management plugin specific options
-                                properties:
-                                  env:
-                                    description: Env is a list of environment variable entries
-                                    items:
-                                      description: EnvEntry represents an entry in the application's environment
-                                      properties:
-                                        name:
-                                          description: Name is the name of the variable, usually expressed in uppercase
-                                          type: string
-                                        value:
-                                          description: Value is the value of the variable
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                  name:
-                                    type: string
-                                type: object
-                              repoURL:
-                                description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                                type: string
-                              targetRevision:
-                                description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                                type: string
-                            required:
-                            - repoURL
-                            type: object
-                          syncOptions:
-                            description: SyncOptions provide per-sync sync-options, e.g. Validate=false
-                            items:
-                              type: string
-                            type: array
-                          syncStrategy:
-                            description: SyncStrategy describes how to perform the sync
-                            properties:
-                              apply:
-                                description: Apply will perform a `kubectl apply` to perform the sync.
-                                properties:
-                                  force:
-                                    description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.
-                                    type: boolean
-                                type: object
-                              hook:
-                                description: Hook will submit any referenced resources to perform the sync. This is the default strategy
-                                properties:
-                                  force:
-                                    description: Force indicates whether or not to supply the --force flag to `kubectl apply`. The --force flag deletes and re-create the resource, when PATCH encounters conflict and has retried for 5 times.
-                                    type: boolean
-                                type: object
-                            type: object
-                        type: object
-                    type: object
-                  phase:
-                    description: Phase is the current phase of the operation
-                    type: string
-                  retryCount:
-                    description: RetryCount contains time of operation retries
-                    format: int64
-                    type: integer
-                  startedAt:
-                    description: StartedAt contains time of operation start
-                    format: date-time
-                    type: string
-                  syncResult:
-                    description: SyncResult is the result of a Sync operation
-                    properties:
-                      resources:
-                        description: Resources contains a list of sync result items for each individual resource in a sync operation
-                        items:
-                          description: ResourceResult holds the operation result details of a specific resource
-                          properties:
-                            group:
-                              description: Group specifies the API group of the resource
-                              type: string
-                            hookPhase:
-                              description: HookPhase contains the state of any operation associated with this resource OR hook This can also contain values for non-hook resources.
-                              type: string
-                            hookType:
-                              description: HookType specifies the type of the hook. Empty for non-hook resources
-                              type: string
-                            kind:
-                              description: Kind specifies the API kind of the resource
-                              type: string
-                            message:
-                              description: Message contains an informational or error message for the last sync OR operation
-                              type: string
-                            name:
-                              description: Name specifies the name of the resource
-                              type: string
-                            namespace:
-                              description: Namespace specifies the target namespace of the resource
-                              type: string
-                            status:
-                              description: Status holds the final result of the sync. Will be empty if the resources is yet to be applied/pruned and is always zero-value for hooks
-                              type: string
-                            syncPhase:
-                              description: SyncPhase indicates the particular phase of the sync that this result was acquired in
-                              type: string
-                            version:
-                              description: Version specifies the API version of the resource
-                              type: string
-                          required:
-                          - group
-                          - kind
-                          - name
-                          - namespace
-                          - version
-                          type: object
-                        type: array
-                      revision:
-                        description: Revision holds the revision this sync operation was performed to
-                        type: string
-                      source:
-                        description: Source records the application source information of the sync, used for comparing auto-sync
-                        properties:
-                          chart:
-                            description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                            type: string
-                          directory:
-                            description: Directory holds path/directory specific options
-                            properties:
-                              exclude:
-                                description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                                type: string
-                              include:
-                                description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                                type: string
-                              jsonnet:
-                                description: Jsonnet holds options specific to Jsonnet
-                                properties:
-                                  extVars:
-                                    description: ExtVars is a list of Jsonnet External Variables
-                                    items:
-                                      description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                      properties:
-                                        code:
-                                          type: boolean
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                  libs:
-                                    description: Additional library search dirs
-                                    items:
-                                      type: string
-                                    type: array
-                                  tlas:
-                                    description: TLAS is a list of Jsonnet Top-level Arguments
-                                    items:
-                                      description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                      properties:
-                                        code:
-                                          type: boolean
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                type: object
-                              recurse:
-                                description: Recurse specifies whether to scan a directory recursively for manifests
-                                type: boolean
-                            type: object
-                          helm:
-                            description: Helm holds helm specific options
-                            properties:
-                              fileParameters:
-                                description: FileParameters are file parameters to the helm template
-                                items:
-                                  description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                                  properties:
-                                    name:
-                                      description: Name is the name of the Helm parameter
-                                      type: string
-                                    path:
-                                      description: Path is the path to the file containing the values for the Helm parameter
-                                      type: string
-                                  type: object
-                                type: array
-                              parameters:
-                                description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                                items:
-                                  description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                                  properties:
-                                    forceString:
-                                      description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                      type: boolean
-                                    name:
-                                      description: Name is the name of the Helm parameter
-                                      type: string
-                                    value:
-                                      description: Value is the value for the Helm parameter
-                                      type: string
-                                  type: object
-                                type: array
-                              releaseName:
-                                description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                                type: string
-                              valueFiles:
-                                description: ValuesFiles is a list of Helm value files to use when generating a template
-                                items:
-                                  type: string
-                                type: array
-                              values:
-                                description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                                type: string
-                              version:
-                                description: Version is the Helm version to use for templating (either "2" or "3")
-                                type: string
-                            type: object
-                          ksonnet:
-                            description: Ksonnet holds ksonnet specific options
-                            properties:
-                              environment:
-                                description: Environment is a ksonnet application environment name
-                                type: string
-                              parameters:
-                                description: Parameters are a list of ksonnet component parameter override values
-                                items:
-                                  description: KsonnetParameter is a ksonnet component parameter
-                                  properties:
-                                    component:
-                                      type: string
-                                    name:
-                                      type: string
-                                    value:
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                            type: object
-                          kustomize:
-                            description: Kustomize holds kustomize specific options
-                            properties:
-                              commonAnnotations:
-                                additionalProperties:
-                                  type: string
-                                description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                                type: object
-                              commonLabels:
-                                additionalProperties:
-                                  type: string
-                                description: CommonLabels is a list of additional labels to add to rendered manifests
-                                type: object
-                              images:
-                                description: Images is a list of Kustomize image override specifications
-                                items:
-                                  description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                                  type: string
-                                type: array
-                              namePrefix:
-                                description: NamePrefix is a prefix appended to resources for Kustomize apps
-                                type: string
-                              nameSuffix:
-                                description: NameSuffix is a suffix appended to resources for Kustomize apps
-                                type: string
-                              version:
-                                description: Version controls which version of Kustomize to use for rendering manifests
-                                type: string
-                            type: object
-                          path:
-                            description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                            type: string
-                          plugin:
-                            description: ConfigManagementPlugin holds config management plugin specific options
-                            properties:
-                              env:
-                                description: Env is a list of environment variable entries
-                                items:
-                                  description: EnvEntry represents an entry in the application's environment
-                                  properties:
-                                    name:
-                                      description: Name is the name of the variable, usually expressed in uppercase
-                                      type: string
-                                    value:
-                                      description: Value is the value of the variable
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                              name:
-                                type: string
-                            type: object
-                          repoURL:
-                            description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                            type: string
-                          targetRevision:
-                            description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                            type: string
-                        required:
-                        - repoURL
-                        type: object
-                    required:
-                    - revision
-                    type: object
-                required:
-                - operation
-                - phase
-                - startedAt
-                type: object
-              reconciledAt:
-                description: ReconciledAt indicates when the application state was reconciled using the latest git version
-                format: date-time
-                type: string
-              resources:
-                description: Resources is a list of Kubernetes resources managed by this application
-                items:
-                  description: 'ResourceStatus holds the current sync and health status of a resource TODO: describe members of this type'
-                  properties:
-                    group:
-                      type: string
-                    health:
-                      description: HealthStatus contains information about the currently observed health state of an application or resource
-                      properties:
-                        message:
-                          description: Message is a human-readable informational message describing the health status
-                          type: string
-                        status:
-                          description: Status holds the status code of the application or resource
-                          type: string
-                      type: object
-                    hook:
-                      type: boolean
-                    kind:
-                      type: string
-                    name:
-                      type: string
-                    namespace:
-                      type: string
-                    requiresPruning:
-                      type: boolean
-                    status:
-                      description: SyncStatusCode is a type which represents possible comparison results
-                      type: string
-                    version:
-                      type: string
-                  type: object
-                type: array
-              sourceType:
-                description: SourceType specifies the type of this application
-                type: string
-              summary:
-                description: Summary contains a list of URLs and container images used by this application
-                properties:
-                  externalURLs:
-                    description: ExternalURLs holds all external URLs of application child resources.
-                    items:
-                      type: string
-                    type: array
-                  images:
-                    description: Images holds all images of application child resources.
-                    items:
-                      type: string
-                    type: array
-                type: object
-              sync:
-                description: Sync contains information about the application's current sync status
-                properties:
-                  comparedTo:
-                    description: ComparedTo contains information about what has been compared
-                    properties:
-                      destination:
-                        description: Destination is a reference to the application's destination used for comparison
-                        properties:
-                          name:
-                            description: Name is an alternate way of specifying the target cluster by its symbolic name
-                            type: string
-                          namespace:
-                            description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
-                            type: string
-                          server:
-                            description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API
-                            type: string
-                        type: object
-                      source:
-                        description: Source is a reference to the application's source used for comparison
-                        properties:
-                          chart:
-                            description: Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
-                            type: string
-                          directory:
-                            description: Directory holds path/directory specific options
-                            properties:
-                              exclude:
-                                description: Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
-                                type: string
-                              include:
-                                description: Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
-                                type: string
-                              jsonnet:
-                                description: Jsonnet holds options specific to Jsonnet
-                                properties:
-                                  extVars:
-                                    description: ExtVars is a list of Jsonnet External Variables
-                                    items:
-                                      description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                      properties:
-                                        code:
-                                          type: boolean
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                  libs:
-                                    description: Additional library search dirs
-                                    items:
-                                      type: string
-                                    type: array
-                                  tlas:
-                                    description: TLAS is a list of Jsonnet Top-level Arguments
-                                    items:
-                                      description: JsonnetVar represents a variable to be passed to jsonnet during manifest generation
-                                      properties:
-                                        code:
-                                          type: boolean
-                                        name:
-                                          type: string
-                                        value:
-                                          type: string
-                                      required:
-                                      - name
-                                      - value
-                                      type: object
-                                    type: array
-                                type: object
-                              recurse:
-                                description: Recurse specifies whether to scan a directory recursively for manifests
-                                type: boolean
-                            type: object
-                          helm:
-                            description: Helm holds helm specific options
-                            properties:
-                              fileParameters:
-                                description: FileParameters are file parameters to the helm template
-                                items:
-                                  description: HelmFileParameter is a file parameter that's passed to helm template during manifest generation
-                                  properties:
-                                    name:
-                                      description: Name is the name of the Helm parameter
-                                      type: string
-                                    path:
-                                      description: Path is the path to the file containing the values for the Helm parameter
-                                      type: string
-                                  type: object
-                                type: array
-                              parameters:
-                                description: Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
-                                items:
-                                  description: HelmParameter is a parameter that's passed to helm template during manifest generation
-                                  properties:
-                                    forceString:
-                                      description: ForceString determines whether to tell Helm to interpret booleans and numbers as strings
-                                      type: boolean
-                                    name:
-                                      description: Name is the name of the Helm parameter
-                                      type: string
-                                    value:
-                                      description: Value is the value for the Helm parameter
-                                      type: string
-                                  type: object
-                                type: array
-                              releaseName:
-                                description: ReleaseName is the Helm release name to use. If omitted it will use the application name
-                                type: string
-                              valueFiles:
-                                description: ValuesFiles is a list of Helm value files to use when generating a template
-                                items:
-                                  type: string
-                                type: array
-                              values:
-                                description: Values specifies Helm values to be passed to helm template, typically defined as a block
-                                type: string
-                              version:
-                                description: Version is the Helm version to use for templating (either "2" or "3")
-                                type: string
-                            type: object
-                          ksonnet:
-                            description: Ksonnet holds ksonnet specific options
-                            properties:
-                              environment:
-                                description: Environment is a ksonnet application environment name
-                                type: string
-                              parameters:
-                                description: Parameters are a list of ksonnet component parameter override values
-                                items:
-                                  description: KsonnetParameter is a ksonnet component parameter
-                                  properties:
-                                    component:
-                                      type: string
-                                    name:
-                                      type: string
-                                    value:
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                            type: object
-                          kustomize:
-                            description: Kustomize holds kustomize specific options
-                            properties:
-                              commonAnnotations:
-                                additionalProperties:
-                                  type: string
-                                description: CommonAnnotations is a list of additional annotations to add to rendered manifests
-                                type: object
-                              commonLabels:
-                                additionalProperties:
-                                  type: string
-                                description: CommonLabels is a list of additional labels to add to rendered manifests
-                                type: object
-                              images:
-                                description: Images is a list of Kustomize image override specifications
-                                items:
-                                  description: KustomizeImage represents a Kustomize image definition in the format [old_image_name=]<image_name>:<image_tag>
-                                  type: string
-                                type: array
-                              namePrefix:
-                                description: NamePrefix is a prefix appended to resources for Kustomize apps
-                                type: string
-                              nameSuffix:
-                                description: NameSuffix is a suffix appended to resources for Kustomize apps
-                                type: string
-                              version:
-                                description: Version controls which version of Kustomize to use for rendering manifests
-                                type: string
-                            type: object
-                          path:
-                            description: Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
-                            type: string
-                          plugin:
-                            description: ConfigManagementPlugin holds config management plugin specific options
-                            properties:
-                              env:
-                                description: Env is a list of environment variable entries
-                                items:
-                                  description: EnvEntry represents an entry in the application's environment
-                                  properties:
-                                    name:
-                                      description: Name is the name of the variable, usually expressed in uppercase
-                                      type: string
-                                    value:
-                                      description: Value is the value of the variable
-                                      type: string
-                                  required:
-                                  - name
-                                  - value
-                                  type: object
-                                type: array
-                              name:
-                                type: string
-                            type: object
-                          repoURL:
-                            description: RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
-                            type: string
-                          targetRevision:
-                            description: TargetRevision defines the revision of the source to sync the application to. In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD. In case of Helm, this is a semver tag for the Chart's version.
-                            type: string
-                        required:
-                        - repoURL
-                        type: object
-                    required:
-                    - destination
-                    - source
-                    type: object
-                  revision:
-                    description: Revision contains information about the revision the comparison has been performed to
-                    type: string
-                  status:
-                    description: Status is the sync state of the comparison
-                    type: string
-                required:
-                - status
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
-    subresources: {}
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  labels:
-    app.kubernetes.io/name: appprojects.argoproj.io
-    app.kubernetes.io/part-of: argocd
-  name: appprojects.argoproj.io
-spec:
-  group: argoproj.io
-  names:
-    kind: AppProject
-    listKind: AppProjectList
-    plural: appprojects
-    shortNames:
-    - appproj
-    - appprojs
-    singular: appproject
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: 'AppProject provides a logical grouping of applications, providing controls for: * where the apps may deploy to (cluster whitelist) * what may be deployed (repository whitelist, resource whitelist/blacklist) * who can access these applications (roles, OIDC group claims bindings) * and what they can do (RBAC policies) * automation access to these roles (JWT tokens)'
-        properties:
-          apiVersion:
-            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
-            type: string
-          kind:
-            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
-            type: string
-          metadata:
-            type: object
-          spec:
-            description: AppProjectSpec is the specification of an AppProject
-            properties:
-              clusterResourceBlacklist:
-                description: ClusterResourceBlacklist contains list of blacklisted cluster level resources
-                items:
-                  description: GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying concepts during lookup stages without having partially valid types
-                  properties:
-                    group:
-                      type: string
-                    kind:
-                      type: string
-                  required:
-                  - group
-                  - kind
-                  type: object
-                type: array
-              clusterResourceWhitelist:
-                description: ClusterResourceWhitelist contains list of whitelisted cluster level resources
-                items:
-                  description: GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying concepts during lookup stages without having partially valid types
-                  properties:
-                    group:
-                      type: string
-                    kind:
-                      type: string
-                  required:
-                  - group
-                  - kind
-                  type: object
-                type: array
-              description:
-                description: Description contains optional project description
-                type: string
-              destinations:
-                description: Destinations contains list of destinations available for deployment
-                items:
-                  description: ApplicationDestination holds information about the application's destination
-                  properties:
-                    name:
-                      description: Name is an alternate way of specifying the target cluster by its symbolic name
-                      type: string
-                    namespace:
-                      description: Namespace specifies the target namespace for the application's resources. The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
-                      type: string
-                    server:
-                      description: Server specifies the URL of the target cluster and must be set to the Kubernetes control plane API
-                      type: string
-                  type: object
-                type: array
-              namespaceResourceBlacklist:
-                description: NamespaceResourceBlacklist contains list of blacklisted namespace level resources
-                items:
-                  description: GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying concepts during lookup stages without having partially valid types
-                  properties:
-                    group:
-                      type: string
-                    kind:
-                      type: string
-                  required:
-                  - group
-                  - kind
-                  type: object
-                type: array
-              namespaceResourceWhitelist:
-                description: NamespaceResourceWhitelist contains list of whitelisted namespace level resources
-                items:
-                  description: GroupKind specifies a Group and a Kind, but does not force a version.  This is useful for identifying concepts during lookup stages without having partially valid types
-                  properties:
-                    group:
-                      type: string
-                    kind:
-                      type: string
-                  required:
-                  - group
-                  - kind
-                  type: object
-                type: array
-              orphanedResources:
-                description: OrphanedResources specifies if controller should monitor orphaned resources of apps in this project
-                properties:
-                  ignore:
-                    description: Ignore contains a list of resources that are to be excluded from orphaned resources monitoring
-                    items:
-                      description: OrphanedResourceKey is a reference to a resource to be ignored from
-                      properties:
-                        group:
-                          type: string
-                        kind:
-                          type: string
-                        name:
-                          type: string
-                      type: object
-                    type: array
-                  warn:
-                    description: Warn indicates if warning condition should be created for apps which have orphaned resources
-                    type: boolean
-                type: object
-              roles:
-                description: Roles are user defined RBAC roles associated with this project
-                items:
-                  description: ProjectRole represents a role that has access to a project
-                  properties:
-                    description:
-                      description: Description is a description of the role
-                      type: string
-                    groups:
-                      description: Groups are a list of OIDC group claims bound to this role
-                      items:
-                        type: string
-                      type: array
-                    jwtTokens:
-                      description: JWTTokens are a list of generated JWT tokens bound to this role
-                      items:
-                        description: JWTToken holds the issuedAt and expiresAt values of a token
-                        properties:
-                          exp:
-                            format: int64
-                            type: integer
-                          iat:
-                            format: int64
-                            type: integer
-                          id:
-                            type: string
-                        required:
-                        - iat
-                        type: object
-                      type: array
-                    name:
-                      description: Name is a name for this role
-                      type: string
-                    policies:
-                      description: Policies Stores a list of casbin formated strings that define access policies for the role in the project
-                      items:
-                        type: string
-                      type: array
-                  required:
-                  - name
-                  type: object
-                type: array
-              signatureKeys:
-                description: SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync
-                items:
-                  description: SignatureKey is the specification of a key required to verify commit signatures with
-                  properties:
-                    keyID:
-                      description: The ID of the key in hexadecimal notation
-                      type: string
-                  required:
-                  - keyID
-                  type: object
-                type: array
-              sourceRepos:
-                description: SourceRepos contains list of repository URLs which can be used for deployment
-                items:
-                  type: string
-                type: array
-              syncWindows:
-                description: SyncWindows controls when syncs can be run for apps in this project
-                items:
-                  description: SyncWindow contains the kind, time, duration and attributes that are used to assign the syncWindows to apps
-                  properties:
-                    applications:
-                      description: Applications contains a list of applications that the window will apply to
-                      items:
-                        type: string
-                      type: array
-                    clusters:
-                      description: Clusters contains a list of clusters that the window will apply to
-                      items:
-                        type: string
-                      type: array
-                    duration:
-                      description: Duration is the amount of time the sync window will be open
-                      type: string
-                    kind:
-                      description: Kind defines if the window allows or blocks syncs
-                      type: string
-                    manualSync:
-                      description: ManualSync enables manual syncs when they would otherwise be blocked
-                      type: boolean
-                    namespaces:
-                      description: Namespaces contains a list of namespaces that the window will apply to
-                      items:
-                        type: string
-                      type: array
-                    schedule:
-                      description: Schedule is the time the window will begin, specified in cron format
-                      type: string
-                  type: object
-                type: array
-            type: object
-          status:
-            description: AppProjectStatus contains status information for AppProject CRs
-            properties:
-              jwtTokensByRole:
-                additionalProperties:
-                  description: JWTTokens represents a list of JWT tokens
-                  properties:
-                    items:
-                      items:
-                        description: JWTToken holds the issuedAt and expiresAt values of a token
-                        properties:
-                          exp:
-                            format: int64
-                            type: integer
-                          iat:
-                            format: int64
-                            type: integer
-                          id:
-                            type: string
-                        required:
-                        - iat
-                        type: object
-                      type: array
-                  type: object
-                description: JWTTokensByRole contains a list of JWT tokens issued for a given role
-                type: object
-            type: object
-        required:
-        - metadata
-        - spec
-        type: object
-    served: true
-    storage: true
----
 apiVersion: v1
 kind: ServiceAccount
 metadata:
diff --git a/manifests/namespace-install/kustomization.yaml b/manifests/namespace-install/kustomization.yaml
index ca0389293..852e22250 100644
--- a/manifests/namespace-install/kustomization.yaml
+++ b/manifests/namespace-install/kustomization.yaml
@@ -2,5 +2,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
 
 resources:
-- ../crds
 - ../base
diff --git a/mkdocs.yml b/mkdocs.yml
index 47e077d50..212ccc172 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -50,6 +50,7 @@ nav:
     - operator-manual/disaster_recovery.md
     - operator-manual/webhook.md
     - operator-manual/health.md
+    - operator-manual/resource_actions.md
     - operator-manual/custom_tools.md
     - operator-manual/custom-styles.md
     - operator-manual/metrics.md
diff --git a/reposerver/repository/repository.go b/reposerver/repository/repository.go
index 11bc40539..6caec6f81 100644
--- a/reposerver/repository/repository.go
+++ b/reposerver/repository/repository.go
@@ -459,6 +459,48 @@ func getHelmRepos(repositories []*v1alpha1.Repository) []helm.HelmRepository {
 	return repos
 }
 
+type dependencies struct {
+	Dependencies []repositories `yaml:"dependencies"`
+}
+
+type repositories struct {
+	Repository string `yaml:"repository"`
+}
+
+func getHelmDependencyRepos(appPath string) ([]*v1alpha1.Repository, error) {
+	repos := make([]*v1alpha1.Repository, 0)
+	f, err := ioutil.ReadFile(fmt.Sprintf("%s/%s", appPath, "Chart.yaml"))
+	if err != nil {
+		return nil, err
+	}
+
+	d := &dependencies{}
+	if err = yaml.Unmarshal(f, d); err != nil {
+		return nil, err
+	}
+
+	for _, r := range d.Dependencies {
+		if u, err := url.Parse(r.Repository); err == nil && u.Scheme == "https" {
+			repo := &v1alpha1.Repository{
+				Repo: r.Repository,
+				Name: u.Host,
+			}
+			repos = append(repos, repo)
+		}
+	}
+
+	return repos, nil
+}
+
+func repoExists(repo string, repos []*v1alpha1.Repository) bool {
+	for _, r := range repos {
+		if repo == r.Repo {
+			return true
+		}
+	}
+	return false
+}
+
 func isConcurrencyAllowed(appPath string) bool {
 	if _, err := os.Stat(path.Join(appPath, allowConcurrencyFile)); err == nil {
 		return true
@@ -586,11 +628,23 @@ func helmTemplate(appPath string, repoRoot string, env *v1alpha1.Env, q *apiclie
 	for i, j := range templateOpts.SetFile {
 		templateOpts.SetFile[i] = env.Envsubst(j)
 	}
-	h, err := helm.NewHelmApp(appPath, getHelmRepos(q.Repos), isLocal, version)
 
+	repos, err := getHelmDependencyRepos(appPath)
+	if err != nil {
+		return nil, err
+	}
+
+	for _, r := range repos {
+		if !repoExists(r.Repo, q.Repos) {
+			q.Repos = append(q.Repos, r)
+		}
+	}
+
+	h, err := helm.NewHelmApp(appPath, getHelmRepos(q.Repos), isLocal, version)
 	if err != nil {
 		return nil, err
 	}
+
 	defer h.Dispose()
 	err = h.Init()
 	if err != nil {
diff --git a/util/webhook/webhook.go b/util/webhook/webhook.go
index cd2019cc8..c8269f0e0 100644
--- a/util/webhook/webhook.go
+++ b/util/webhook/webhook.go
@@ -341,7 +341,7 @@ func (a *ArgoCDWebhookHandler) Handler(w http.ResponseWriter, r *http.Request) {
 	case r.Header.Get("X-Hook-UUID") != "":
 		payload, err = a.bitbucket.Parse(r, bitbucket.RepoPushEvent)
 	case r.Header.Get("X-Event-Key") != "":
-		payload, err = a.bitbucketserver.Parse(r, bitbucketserver.RepositoryReferenceChangedEvent)
+		payload, err = a.bitbucketserver.Parse(r, bitbucketserver.RepositoryReferenceChangedEvent, bitbucketserver.DiagnosticsPingEvent)
 	default:
 		log.Debug("Ignoring unknown webhook event")
 		http.Error(w, "Unknown webhook event", http.StatusBadRequest)


Test patch:
diff --git a/reposerver/repository/repository_test.go b/reposerver/repository/repository_test.go
index bf2a366c0..5302c3bd8 100644
--- a/reposerver/repository/repository_test.go
+++ b/reposerver/repository/repository_test.go
@@ -1480,3 +1480,14 @@ func TestTestRepoOCI(t *testing.T) {
 	assert.Error(t, err)
 	assert.Equal(t, "OCI Helm repository URL should include hostname and port only", err.Error())
 }
+
+func Test_getHelmDependencyRepos(t *testing.T) {
+	repo1 := "https://charts.bitnami.com/bitnami"
+	repo2 := "https://eventstore.github.io/EventStore.Charts"
+
+	repos, err := getHelmDependencyRepos("../../util/helm/testdata/dependency")
+	assert.NoError(t, err)
+	assert.Equal(t, len(repos), 2)
+	assert.Equal(t, repos[0].Repo, repo1)
+	assert.Equal(t, repos[1].Repo, repo2)
+}
diff --git a/test/container/Procfile b/test/container/Procfile
index ac86e9ef3..ca35e1479 100644
--- a/test/container/Procfile
+++ b/test/container/Procfile
@@ -8,3 +8,4 @@ sshd: sudo sh -c "test $ARGOCD_E2E_TEST = true && /usr/sbin/sshd -p 2222 -D -e"
 fcgiwrap: sudo sh -c "test $ARGOCD_E2E_TEST = true && (fcgiwrap -s unix:/var/run/fcgiwrap.socket & sleep 1 && chmod 777 /var/run/fcgiwrap.socket && wait)"
 nginx: sudo sh -c "test $ARGOCD_E2E_TEST = true && nginx -g 'daemon off;' -c $(pwd)/test/fixture/testrepos/nginx.conf"
 helm-registry: sudo sh -c "registry serve /etc/docker/registry/config.yml"
+dev-mounter: test "$ARGOCD_E2E_TEST" != "true" && go run hack/dev-mounter/main.go --configmap argocd-ssh-known-hosts-cm=${ARGOCD_SSH_DATA_PATH:-/tmp/argocd-local/ssh} --configmap argocd-tls-certs-cm=${ARGOCD_TLS_DATA_PATH:-/tmp/argocd-local/tls} --configmap argocd-gpg-keys-cm=${ARGOCD_GPG_DATA_PATH:-/tmp/argocd-local/gpg/source}
diff --git a/util/webhook/webhook_test.go b/util/webhook/webhook_test.go
index 54b8f01a6..a16392b22 100644
--- a/util/webhook/webhook_test.go
+++ b/util/webhook/webhook_test.go
@@ -85,6 +85,20 @@ func TestBitbucketServerRepositoryReferenceChangedEvent(t *testing.T) {
 	hook.Reset()
 }
 
+func TestBitbucketServerRepositoryDiagnosticPingEvent(t *testing.T) {
+	hook := test.NewGlobal()
+	h := NewMockHandler()
+	eventJSON := "{\"test\": true}"
+	req := httptest.NewRequest("POST", "/api/webhook", bytes.NewBufferString(eventJSON))
+	req.Header.Set("X-Event-Key", "diagnostics:ping")
+	w := httptest.NewRecorder()
+	h.Handler(w, req)
+	assert.Equal(t, w.Code, http.StatusOK)
+	expectedLogResult := "Ignoring webhook event"
+	assert.Equal(t, expectedLogResult, hook.LastEntry().Message)
+	hook.Reset()
+}
+
 func TestGogsPushEvent(t *testing.T) {
 	hook := test.NewGlobal()
 	h := NewMockHandler()