From c2034525d655884a9a8b176a8447663db8f07c9c Mon Sep 17 00:00:00 2001 From: Samuel Attwood Date: Mon, 7 Nov 2022 14:20:03 -0500 Subject: [PATCH] Charts CI ``` Updated: argo/argo-cd: - 5.13.4 bitnami/mariadb: - 11.3.4 redpanda/redpanda: - 2.2.8 ``` --- assets/argo/argo-cd-5.13.4.tgz | Bin 0 -> 117445 bytes assets/bitnami/mariadb-11.3.4.tgz | Bin 0 -> 47131 bytes assets/redpanda/redpanda-2.2.8.tgz | Bin 0 -> 28968 bytes charts/argo/argo-cd/5.13.4/.helmignore | 4 + charts/argo/argo-cd/5.13.4/Chart.lock | 6 + charts/argo/argo-cd/5.13.4/Chart.yaml | 31 + charts/argo/argo-cd/5.13.4/README.md | 1103 +++ .../argo-cd/5.13.4/charts/redis-ha/Chart.yaml | 21 + .../argo-cd/5.13.4/charts/redis-ha/README.md | 396 + .../charts/redis-ha/templates/NOTES.txt | 25 + .../charts/redis-ha/templates/_configs.tpl | 693 ++ .../charts/redis-ha/templates/_helpers.tpl | 94 + .../redis-ha/templates/redis-auth-secret.yaml | 15 + .../templates/redis-ha-announce-service.yaml | 60 + .../templates/redis-ha-configmap.yaml | 37 + .../redis-ha-exporter-script-configmap.yaml | 14 + .../templates/redis-ha-health-configmap.yaml | 20 + .../templates/redis-ha-network-policy.yaml | 87 + .../redis-ha/templates/redis-ha-pdb.yaml | 21 + .../templates/redis-ha-prometheus-rule.yaml | 17 + .../redis-ha/templates/redis-ha-role.yaml | 19 + .../templates/redis-ha-rolebinding.yaml | 19 + .../redis-ha/templates/redis-ha-secret.yaml | 32 + .../redis-ha/templates/redis-ha-service.yaml | 57 + .../templates/redis-ha-serviceaccount.yaml | 27 + .../templates/redis-ha-servicemonitor.yaml | 36 + .../templates/redis-ha-statefulset.yaml | 589 ++ .../templates/redis-haproxy-deployment.yaml | 201 + .../redis-ha/templates/redis-haproxy-pdb.yaml | 18 + .../templates/redis-haproxy-role.yaml | 22 + .../templates/redis-haproxy-rolebinding.yaml | 22 + .../templates/redis-haproxy-service.yaml | 54 + .../redis-haproxy-serviceaccount.yaml | 15 + .../redis-haproxy-servicemonitor.yaml | 36 + .../redis-ha/templates/redis-tls-secret.yaml | 27 + .../templates/sentinel-auth-secret.yaml | 15 + .../tests/test-redis-ha-configmap.yaml | 32 + .../templates/tests/test-redis-ha-pod.yaml | 29 + .../5.13.4/charts/redis-ha/values.yaml | 701 ++ .../argo/argo-cd/5.13.4/templates/NOTES.txt | 74 + .../argo/argo-cd/5.13.4/templates/_common.tpl | 65 + .../argo-cd/5.13.4/templates/_helpers.tpl | 219 + .../argo-cd/5.13.4/templates/_versions.tpl | 78 + .../5.13.4/templates/aggregate-roles.yaml | 70 + .../clusterrole.yaml | 23 + .../clusterrolebinding.yaml | 16 + .../metrics.yaml | 25 + .../networkpolicy.yaml | 19 + .../argocd-application-controller/pdb.yaml | 26 + .../prometheusrule.yaml | 22 + .../argocd-application-controller/role.yaml | 36 + .../rolebinding.yaml | 14 + .../serviceaccount.yaml | 18 + .../servicemonitor.yaml | 49 + .../statefulset.yaml | 307 + .../argocd-applicationset/deployment.yaml | 155 + .../argocd-applicationset/metrics.yaml | 25 + .../argocd-applicationset/networkpolicy.yaml | 25 + .../templates/argocd-applicationset/pdb.yaml | 26 + .../templates/argocd-applicationset/role.yaml | 87 + .../argocd-applicationset/rolebinding.yaml | 16 + .../argocd-applicationset/service.yaml | 24 + .../argocd-applicationset/serviceaccount.yaml | 18 + .../argocd-applicationset/servicemonitor.yaml | 51 + .../webhook-ingress.yaml | 89 + .../templates/argocd-configs/argocd-cm.yaml | 16 + .../argocd-configs/argocd-cmd-params-cm.yaml | 14 + .../argocd-dex-server-tls-secret.yaml | 24 + .../argocd-configs/argocd-gpg-keys-cm.yaml | 16 + .../argocd-notifications-cm.yaml | 27 + .../argocd-notifications-secret.yaml | 19 + .../argocd-configs/argocd-rbac-cm.yaml | 18 + .../argocd-configs/argocd-secret.yaml | 45 + .../argocd-configs/argocd-server-tls.yaml | 21 + .../argocd-ssh-known-hosts-cm.yaml | 13 + .../argocd-configs/argocd-styles-cm.yaml | 11 + .../argocd-configs/argocd-tls-certs-cm.yaml | 15 + .../argocd-configs/cluster-secrets.yaml | 31 + .../argocd-configs/externalredis-secret.yaml | 22 + .../repository-credentials-secret.yaml | 20 + .../argocd-configs/repository-secret.yaml | 20 + .../bots/slack/deployment.yaml | 57 + .../argocd-notifications/bots/slack/pdb.yaml | 26 + .../argocd-notifications/bots/slack/role.yaml | 27 + .../bots/slack/rolebinding.yaml | 13 + .../bots/slack/service.yaml | 19 + .../bots/slack/serviceaccount.yaml | 15 + .../argocd-notifications/deployment.yaml | 111 + .../argocd-notifications/metrics.yaml | 25 + .../argocd-notifications/networkpolicy.yaml | 19 + .../templates/argocd-notifications/pdb.yaml | 26 + .../templates/argocd-notifications/role.yaml | 44 + .../argocd-notifications/rolebinding.yaml | 16 + .../argocd-notifications/serviceaccount.yaml | 18 + .../argocd-notifications/servicemonitor.yaml | 44 + .../argocd-repo-server/clusterrole.yaml | 23 + .../clusterrolebinding.yaml | 16 + .../argocd-repo-server/deployment.yaml | 347 + .../templates/argocd-repo-server/hpa.yaml | 44 + .../templates/argocd-repo-server/metrics.yaml | 25 + .../argocd-repo-server/networkpolicy.yaml | 41 + .../templates/argocd-repo-server/pdb.yaml | 26 + .../templates/argocd-repo-server/role.yaml | 12 + .../argocd-repo-server/rolebinding.yaml | 16 + .../templates/argocd-repo-server/service.yaml | 23 + .../argocd-repo-server/serviceaccount.yaml | 18 + .../argocd-repo-server/servicemonitor.yaml | 49 + .../templates/argocd-server/aws/service.yaml | 24 + .../templates/argocd-server/certificate.yaml | 32 + .../templates/argocd-server/clusterrole.yaml | 47 + .../argocd-server/clusterrolebinding.yaml | 16 + .../templates/argocd-server/deployment.yaml | 409 + .../argocd-server/gke/backendconfig.yaml | 10 + .../argocd-server/gke/frontendconfig.yaml | 10 + .../argocd-server/gke/managedcertificate.yaml | 11 + .../5.13.4/templates/argocd-server/hpa.yaml | 44 + .../templates/argocd-server/ingress-grpc.yaml | 89 + .../templates/argocd-server/ingress.yaml | 113 + .../templates/argocd-server/metrics.yaml | 25 + .../argocd-server/networkpolicy.yaml | 16 + .../argocd-server/openshift/route.yaml | 26 + .../5.13.4/templates/argocd-server/pdb.yaml | 26 + .../5.13.4/templates/argocd-server/role.yaml | 44 + .../templates/argocd-server/rolebinding.yaml | 14 + .../templates/argocd-server/service.yaml | 52 + .../argocd-server/serviceaccount.yaml | 18 + .../argocd-server/servicemonitor.yaml | 49 + .../templates/crds/crd-application.yaml | 2165 ++++++ .../templates/crds/crd-applicationset.yaml | 6769 +++++++++++++++++ .../5.13.4/templates/crds/crd-extension.yaml | 104 + .../5.13.4/templates/crds/crd-project.yaml | 331 + .../5.13.4/templates/dex/deployment.yaml | 185 + .../5.13.4/templates/dex/networkpolicy.yaml | 31 + .../argo-cd/5.13.4/templates/dex/pdb.yaml | 26 + .../argo-cd/5.13.4/templates/dex/role.yaml | 18 + .../5.13.4/templates/dex/rolebinding.yaml | 16 + .../argo-cd/5.13.4/templates/dex/service.yaml | 35 + .../5.13.4/templates/dex/serviceaccount.yaml | 15 + .../5.13.4/templates/dex/servicemonitor.yaml | 49 + .../5.13.4/templates/extra-manifests.yaml | 4 + .../templates/networkpolicy-default-deny.yaml | 12 + .../5.13.4/templates/redis/deployment.yaml | 125 + .../5.13.4/templates/redis/metrics.yaml | 30 + .../5.13.4/templates/redis/networkpolicy.yaml | 36 + .../argo-cd/5.13.4/templates/redis/pdb.yaml | 27 + .../5.13.4/templates/redis/service.yaml | 25 + .../templates/redis/serviceaccount.yaml | 15 + .../templates/redis/servicemonitor.yaml | 50 + charts/argo/argo-cd/5.13.4/values.yaml | 2924 +++++++ charts/bitnami/mariadb/11.3.4/.helmignore | 21 + charts/bitnami/mariadb/11.3.4/Chart.lock | 6 + charts/bitnami/mariadb/11.3.4/Chart.yaml | 34 + charts/bitnami/mariadb/11.3.4/README.md | 556 ++ .../mariadb/11.3.4/charts/common/.helmignore | 22 + .../mariadb/11.3.4/charts/common/Chart.yaml | 23 + .../mariadb/11.3.4/charts/common/README.md | 350 + .../charts/common/templates/_affinities.tpl | 98 + .../charts/common/templates/_capabilities.tpl | 154 + .../charts/common/templates/_errors.tpl | 23 + .../charts/common/templates/_images.tpl | 76 + .../charts/common/templates/_ingress.tpl | 68 + .../charts/common/templates/_labels.tpl | 18 + .../11.3.4/charts/common/templates/_names.tpl | 70 + .../charts/common/templates/_secrets.tpl | 165 + .../charts/common/templates/_storage.tpl | 23 + .../charts/common/templates/_tplvalues.tpl | 13 + .../11.3.4/charts/common/templates/_utils.tpl | 62 + .../charts/common/templates/_warnings.tpl | 14 + .../templates/validations/_cassandra.tpl | 72 + .../common/templates/validations/_mariadb.tpl | 103 + .../common/templates/validations/_mongodb.tpl | 108 + .../common/templates/validations/_mysql.tpl | 103 + .../templates/validations/_postgresql.tpl | 129 + .../common/templates/validations/_redis.tpl | 76 + .../templates/validations/_validations.tpl | 46 + .../mariadb/11.3.4/charts/common/values.yaml | 5 + .../mariadb/11.3.4/templates/NOTES.txt | 75 + .../mariadb/11.3.4/templates/_helpers.tpl | 149 + .../mariadb/11.3.4/templates/extra-list.yaml | 4 + .../templates/networkpolicy-egress.yaml | 33 + .../11.3.4/templates/primary/configmap.yaml | 18 + .../primary/initialization-configmap.yaml | 11 + .../primary/networkpolicy-ingress.yaml | 56 + .../mariadb/11.3.4/templates/primary/pdb.yaml | 25 + .../11.3.4/templates/primary/statefulset.yaml | 389 + .../mariadb/11.3.4/templates/primary/svc.yaml | 61 + .../11.3.4/templates/prometheusrules.yaml | 26 + .../mariadb/11.3.4/templates/role.yaml | 21 + .../mariadb/11.3.4/templates/rolebinding.yaml | 21 + .../11.3.4/templates/secondary/configmap.yaml | 18 + .../secondary/networkpolicy-ingress.yaml | 49 + .../11.3.4/templates/secondary/pdb.yaml | 25 + .../templates/secondary/statefulset.yaml | 360 + .../11.3.4/templates/secondary/svc.yaml | 63 + .../mariadb/11.3.4/templates/secrets.yaml | 35 + .../11.3.4/templates/serviceaccount.yaml | 19 + .../11.3.4/templates/servicemonitor.yaml | 48 + .../bitnami/mariadb/11.3.4/values.schema.json | 176 + charts/bitnami/mariadb/11.3.4/values.yaml | 1299 ++++ charts/redpanda/redpanda/2.2.8/.helmignore | 23 + charts/redpanda/redpanda/2.2.8/Chart.yaml | 29 + charts/redpanda/redpanda/2.2.8/LICENSE | 201 + charts/redpanda/redpanda/2.2.8/README.md | 46 + .../01-one-node-cluster-no-tls-no-sasl.yaml | 24 + .../ci/02-one-node-cluster-tls-no-sasl.yaml | 24 + .../ci/03-one-node-cluster-no-tls-sasl.yaml | 24 + .../ci/04-one-node-cluster-tls-sasl.yaml | 24 + charts/redpanda/redpanda/2.2.8/ci/ct.yaml | 18 + .../redpanda/2.2.8/templates/NOTES.txt | 76 + .../redpanda/2.2.8/templates/_helpers.tpl | 412 + .../2.2.8/templates/cert-issuers.yaml | 91 + .../redpanda/2.2.8/templates/certs.yaml | 46 + .../redpanda/2.2.8/templates/configmap.yaml | 230 + .../2.2.8/templates/poddisruptionbudget.yaml | 37 + .../templates/post-install-upgrade-job.yaml | 119 + .../2.2.8/templates/post-upgrade.yaml | 86 + .../2.2.8/templates/service.internal.yaml | 41 + .../2.2.8/templates/serviceaccount.yaml | 37 + .../2.2.8/templates/services.nodeport.yaml | 82 + .../redpanda/2.2.8/templates/statefulset.yaml | 364 + .../templates/tests/test-api-status.yaml | 55 + .../tests/test-kafka-internal-tls-status.yaml | 79 + .../tests/test-kafka-produce-consume.yaml | 78 + .../tests/test-kafka-sasl-status.yaml | 94 + .../tests/test-kafka-sasl-tls-status.yaml | 101 + .../test-pandaproxy-internal-tls-status.yaml | 79 + .../tests/test-pandaproxy-status.yaml | 44 + ...st-schemaregistry-internal-tls-status.yaml | 77 + .../tests/test-schemaregistry-status.yaml | 46 + .../redpanda/2.2.8/values.schema.json | 890 +++ charts/redpanda/redpanda/2.2.8/values.yaml | 608 ++ index.yaml | 106 + .../overlay/app-readme.md | 0 .../overlay/questions.yaml | 0 .../{kubecost => cost-analyzer}/upstream.yaml | 0 235 files changed, 31381 insertions(+) create mode 100644 assets/argo/argo-cd-5.13.4.tgz create mode 100644 assets/bitnami/mariadb-11.3.4.tgz create mode 100644 assets/redpanda/redpanda-2.2.8.tgz create mode 100644 charts/argo/argo-cd/5.13.4/.helmignore create mode 100644 charts/argo/argo-cd/5.13.4/Chart.lock create mode 100644 charts/argo/argo-cd/5.13.4/Chart.yaml create mode 100644 charts/argo/argo-cd/5.13.4/README.md create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/Chart.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/README.md create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/NOTES.txt create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/_configs.tpl create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/_helpers.tpl create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-auth-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-announce-service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-configmap.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-exporter-script-configmap.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-health-configmap.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-network-policy.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-prometheus-rule.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-ha-statefulset.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-haproxy-deployment.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-haproxy-pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-haproxy-role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-haproxy-rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-haproxy-service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-haproxy-serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-haproxy-servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/redis-tls-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/sentinel-auth-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/tests/test-redis-ha-configmap.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/templates/tests/test-redis-ha-pod.yaml create mode 100644 charts/argo/argo-cd/5.13.4/charts/redis-ha/values.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/NOTES.txt create mode 100644 charts/argo/argo-cd/5.13.4/templates/_common.tpl create mode 100644 charts/argo/argo-cd/5.13.4/templates/_helpers.tpl create mode 100644 charts/argo/argo-cd/5.13.4/templates/_versions.tpl create mode 100644 charts/argo/argo-cd/5.13.4/templates/aggregate-roles.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/clusterrole.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/clusterrolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/metrics.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/networkpolicy.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/prometheusrule.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-application-controller/statefulset.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/deployment.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/metrics.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/networkpolicy.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-applicationset/webhook-ingress.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-cm.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-cmd-params-cm.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-dex-server-tls-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-gpg-keys-cm.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-notifications-cm.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-notifications-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-rbac-cm.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-server-tls.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-ssh-known-hosts-cm.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-styles-cm.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/argocd-tls-certs-cm.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/cluster-secrets.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/externalredis-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/repository-credentials-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-configs/repository-secret.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/bots/slack/deployment.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/bots/slack/pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/bots/slack/role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/bots/slack/rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/bots/slack/service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/bots/slack/serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/deployment.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/metrics.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/networkpolicy.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-notifications/servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/clusterrole.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/clusterrolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/deployment.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/hpa.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/metrics.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/networkpolicy.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-repo-server/servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/aws/service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/certificate.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/clusterrole.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/clusterrolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/deployment.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/gke/backendconfig.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/gke/frontendconfig.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/gke/managedcertificate.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/hpa.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/ingress-grpc.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/ingress.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/metrics.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/networkpolicy.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/openshift/route.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/argocd-server/servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/crds/crd-application.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/crds/crd-applicationset.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/crds/crd-extension.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/crds/crd-project.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/dex/deployment.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/dex/networkpolicy.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/dex/pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/dex/role.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/dex/rolebinding.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/dex/service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/dex/serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/dex/servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/extra-manifests.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/networkpolicy-default-deny.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/redis/deployment.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/redis/metrics.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/redis/networkpolicy.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/redis/pdb.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/redis/service.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/redis/serviceaccount.yaml create mode 100644 charts/argo/argo-cd/5.13.4/templates/redis/servicemonitor.yaml create mode 100644 charts/argo/argo-cd/5.13.4/values.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/.helmignore create mode 100644 charts/bitnami/mariadb/11.3.4/Chart.lock create mode 100644 charts/bitnami/mariadb/11.3.4/Chart.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/README.md create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/.helmignore create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/Chart.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/README.md create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_affinities.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_capabilities.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_errors.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_images.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_ingress.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_labels.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_names.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_secrets.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_storage.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_tplvalues.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_utils.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/_warnings.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/validations/_cassandra.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/validations/_mariadb.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/validations/_mongodb.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/validations/_mysql.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/validations/_postgresql.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/validations/_redis.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/templates/validations/_validations.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/charts/common/values.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/NOTES.txt create mode 100644 charts/bitnami/mariadb/11.3.4/templates/_helpers.tpl create mode 100644 charts/bitnami/mariadb/11.3.4/templates/extra-list.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/networkpolicy-egress.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/primary/configmap.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/primary/initialization-configmap.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/primary/networkpolicy-ingress.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/primary/pdb.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/primary/statefulset.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/primary/svc.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/prometheusrules.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/role.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/rolebinding.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/secondary/configmap.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/secondary/networkpolicy-ingress.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/secondary/pdb.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/secondary/statefulset.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/secondary/svc.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/secrets.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/serviceaccount.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/templates/servicemonitor.yaml create mode 100644 charts/bitnami/mariadb/11.3.4/values.schema.json create mode 100644 charts/bitnami/mariadb/11.3.4/values.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/.helmignore create mode 100644 charts/redpanda/redpanda/2.2.8/Chart.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/LICENSE create mode 100644 charts/redpanda/redpanda/2.2.8/README.md create mode 100644 charts/redpanda/redpanda/2.2.8/ci/01-one-node-cluster-no-tls-no-sasl.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/ci/02-one-node-cluster-tls-no-sasl.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/ci/03-one-node-cluster-no-tls-sasl.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/ci/04-one-node-cluster-tls-sasl.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/ci/ct.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/NOTES.txt create mode 100644 charts/redpanda/redpanda/2.2.8/templates/_helpers.tpl create mode 100644 charts/redpanda/redpanda/2.2.8/templates/cert-issuers.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/certs.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/configmap.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/poddisruptionbudget.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/post-install-upgrade-job.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/post-upgrade.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/service.internal.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/serviceaccount.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/services.nodeport.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/statefulset.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-api-status.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-kafka-internal-tls-status.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-kafka-produce-consume.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-kafka-sasl-status.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-kafka-sasl-tls-status.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-pandaproxy-internal-tls-status.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-pandaproxy-status.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-schemaregistry-internal-tls-status.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/templates/tests/test-schemaregistry-status.yaml create mode 100644 charts/redpanda/redpanda/2.2.8/values.schema.json create mode 100644 charts/redpanda/redpanda/2.2.8/values.yaml mode change 100755 => 100644 index.yaml rename packages/kubecost/{kubecost => cost-analyzer}/overlay/app-readme.md (100%) rename packages/kubecost/{kubecost => cost-analyzer}/overlay/questions.yaml (100%) rename packages/kubecost/{kubecost => cost-analyzer}/upstream.yaml (100%) diff --git a/assets/argo/argo-cd-5.13.4.tgz b/assets/argo/argo-cd-5.13.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..9cce23a739357eebf11f14bfc6791f87bf3c7098 GIT binary patch literal 117445 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𝔭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�vc3f2z2l__v%zgW+xFr559kHAzO~@ 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 literal 0 HcmV?d00001 diff --git a/assets/redpanda/redpanda-2.2.8.tgz b/assets/redpanda/redpanda-2.2.8.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f8113cd40237efb96cbbec7f667cddce1865e554 GIT binary patch literal 28968 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

Z2!)aCsG4h_0r;Ji*I^cf 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

OwlX%xG>TUxi5y2CD}Mec$%0GHoK*xu9V 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.22.0-0' + catalog.cattle.io/release-name: argo-cd +apiVersion: v2 +appVersion: v2.5.1 +dependencies: +- condition: redis-ha.enabled + name: redis-ha + repository: file://./charts/redis-ha + version: 4.22.3 +description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool + for Kubernetes. +home: https://github.com/argoproj/argo-helm +icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png +keywords: +- argoproj +- argocd +- gitops +kubeVersion: '>=1.22.0-0' +maintainers: +- name: argoproj + url: https://argoproj.github.io/ +name: argo-cd +sources: +- https://github.com/argoproj/argo-helm/tree/main/charts/argo-cd +- https://github.com/argoproj/argo-cd +version: 5.13.4 diff --git a/charts/argo/argo-cd/5.13.4/README.md b/charts/argo/argo-cd/5.13.4/README.md new file mode 100644 index 000000000..b40f2354b --- /dev/null +++ b/charts/argo/argo-cd/5.13.4/README.md @@ -0,0 +1,1103 @@ +# Argo CD Chart + +A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. + +Source code can be found here: + +* +* + +This is a **community maintained** chart. This chart installs [argo-cd](https://argo-cd.readthedocs.io/en/stable/), a declarative, GitOps continuous delivery tool for Kubernetes. + +The default installation is intended to be similar to the provided Argo CD [releases](https://github.com/argoproj/argo-cd/releases). + +If you want to avoid including sensitive information unencrypted (clear text) in your version control, make use of the [declarative set up](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/) of Argo CD. +For instance, rather than adding repositories and their keys in your Helm values, you could deploy [SealedSecrets](https://github.com/bitnami-labs/sealed-secrets) with contents as seen in this [repositories section](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#repositories) or any other secrets manager service (i.e. HashiCorp Vault, AWS/GCP Secrets Manager, etc.). + +## High Availability + +This chart installs the non-HA version of Argo CD by default. If you want to run Argo CD in HA mode, you can use one of the example values in the next sections. +Please also have a look into the upstream [Operator Manual regarding High Availability](https://argo-cd.readthedocs.io/en/stable/operator-manual/high_availability/) to understand how scaling of Argo CD works in detail. + +> **Warning:** +> You need at least 3 worker nodes as the HA mode of redis enforces Pods to run on separate nodes. + +### HA mode with autoscaling + +```yaml +redis-ha: + enabled: true + +controller: + replicas: 1 + +server: + autoscaling: + enabled: true + minReplicas: 2 + +repoServer: + autoscaling: + enabled: true + minReplicas: 2 + +applicationSet: + replicaCount: 2 +``` + +### HA mode without autoscaling + +```yaml +redis-ha: + enabled: true + +controller: + replicas: 1 + +server: + replicas: 2 + +repoServer: + replicas: 2 + +applicationSet: + replicaCount: 2 +``` + +### Synchronizing Changes from Original Repository + +In the original [Argo CD repository](https://github.com/argoproj/argo-cd/) an [`manifests/install.yaml`](https://github.com/argoproj/argo-cd/blob/master/manifests/install.yaml) is generated using `kustomize`. It's the basis for the installation as [described in the docs](https://argo-cd.readthedocs.io/en/stable/getting_started/#1-install-argo-cd). + +When installing Argo CD using this helm chart the user should have a similar experience and configuration rolled out. Hence, it makes sense to try to achieve a similar output of rendered `.yaml` resources when calling `helm template` using the default settings in `values.yaml`. + +To update the templates and default settings in `values.yaml` it may come in handy to look up the diff of the `manifests/install.yaml` between two versions accordingly. This can either be done directly via github and look for `manifests/install.yaml`: + +https://github.com/argoproj/argo-cd/compare/v1.8.7...v2.0.0#files_bucket + +Or you clone the repository and do a local `git-diff`: + +```bash +git clone https://github.com/argoproj/argo-cd.git +cd argo-cd +git diff v1.8.7 v2.0.0 -- manifests/install.yaml +``` + +Changes in the `CustomResourceDefinition` resources shall be fixed easily by copying 1:1 from the [`manifests/crds` folder](https://github.com/argoproj/argo-cd/tree/master/manifests/crds) into this [`charts/argo-cd/templates/crds` folder](https://github.com/argoproj/argo-helm/tree/master/charts/argo-cd/templates/crds). + +## Upgrading + +### Custom resource definitions + +Some users would prefer to install the CRDs _outside_ of the chart. You can disable the CRD installation of this chart by using `--set crds.install=false` when installing the chart. + +Helm cannot upgrade custom resource definitions in the `/crds` folder [by design](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#some-caveats-and-explanations). Starting with 5.2.0, the CRDs have been moved to `/templates` to address this design decision. + +If you are using Argo CD chart version prior to 5.2.0 or have elected to manage the Argo CD CRDs outside of the chart, please use `kubectl` to upgrade CRDs manually from [templates/crds](templates/crds/) folder or via the manifests from the upstream project repo: + +```bash +kubectl apply -k "https://github.com/argoproj/argo-cd/manifests/crds?ref=" + +# Eg. version v2.4.9 +kubectl apply -k "https://github.com/argoproj/argo-cd/manifests/crds?ref=v2.4.9" +``` + +### 5.10.0 + +This version hardens security by configuring default container security contexts. +The change aligns chart with [supported versions](https://argo-cd.readthedocs.io/en/stable/operator-manual/installation/#supported-versions) by upstream and adds requirement for minimum Kubernetes version >= 1.22. + +### 5.5.20 + +This version moved API version templates into dedicated helper. If you are using these in your umbrella +chart please migrate your templates to pattern `argo-cd.apiVersion.`. + +### 5.5.0 + +This version introduces new `configs.params` section that replaces command line arguments for containers. +Please refer to documentation in values.yaml for migrating the configuration. + +### 5.2.0 + +Custom resource definitions were moved to `templates` folder so they can be managed by Helm. + +To adopt already created CRDs, please use following command: + +```bash +YOUR_ARGOCD_NAMESPACE="" # e.g. argo-cd +YOUR_ARGOCD_RELEASENAME="" # e.g. argo-cd + +for crd in "applications.argoproj.io" "applicationsets.argoproj.io" "argocdextensions.argoproj.io" "appprojects.argoproj.io"; do + kubectl label --overwrite crd $crd app.kubernetes.io/managed-by=Helm + kubectl annotate --overwrite crd $crd meta.helm.sh/release-namespace="$YOUR_ARGOCD_NAMESPACE" + kubectl annotate --overwrite crd $crd meta.helm.sh/release-name="$YOUR_ARGOCD_RELEASENAME" +done +``` + +### 5.0.0 + +This version **removes support for**: + +- deprecated repository credentials (parameter `configs.repositoryCredentials`) +- option to run application controller as a Deployment +- the parameters `server.additionalApplications` and `server.additionalProjects` + +Please carefully read the following section if you are using these parameters! + +In order to upgrade Applications and Projects safely against CRDs' upgrade, `server.additionalApplications` and `server.additionalProjects` are moved to [argocd-apps](../argocd-apps). + +If you are using `server.additionalApplications` or `server.additionalProjects`, you can adopt to [argocd-apps](../argocd-apps) as below: + +1. Add [helm.sh/resource-policy annotation](https://helm.sh/docs/howto/charts_tips_and_tricks/#tell-helm-not-to-uninstall-a-resource) to avoid resources being removed by upgrading Helm chart + +You can keep your existing CRDs by adding `"helm.sh/resource-policy": keep` on `additionalAnnotations`, under `server.additionalApplications` and `server.additionalProjects` blocks, and running `helm upgrade`. + +e.g: + +```yaml +server: + additionalApplications: + - name: guestbook + namespace: argocd + additionalLabels: {} + additionalAnnotations: + "helm.sh/resource-policy": keep # <-- add this + finalizers: + - resources-finalizer.argocd.argoproj.io + project: guestbook + source: + repoURL: https://github.com/argoproj/argocd-example-apps.git + targetRevision: HEAD + path: guestbook + directory: + recurse: true + destination: + server: https://kubernetes.default.svc + namespace: guestbook + syncPolicy: + automated: + prune: false + selfHeal: false + ignoreDifferences: + - group: apps + kind: Deployment + jsonPointers: + - /spec/replicas + info: + - name: url + value: https://argoproj.github.io/ +``` + +You can also keep your existing CRDs by running the following scripts. + +```bash +# keep Applications +for app in "guestbook"; do + kubectl annotate --overwrite application $app helm.sh/resource-policy=keep +done + +# keep Projects +for project in "guestbook"; do + kubectl annotate --overwrite appproject $project helm.sh/resource-policy=keep +done +``` + +2. Upgrade argo-cd Helm chart to v5.0.0 + +3. Remove keep [helm.sh/resource-policy annotation](https://helm.sh/docs/howto/charts_tips_and_tricks/#tell-helm-not-to-uninstall-a-resource) + +```bash +# delete annotations from Applications +for app in "guestbook"; do + kubectl annotate --overwrite application $app helm.sh/resource-policy- +done + +# delete annotations from Projects +for project in "guestbook"; do + kubectl annotate --overwrite appproject $project helm.sh/resource-policy- +done +``` + +4. Adopt existing resources to [argocd-apps](../argocd-apps) + +### 4.9.0 + +This version starts to use upstream image with applicationset binary. Start command was changed from `applicationset-controller` to `argocd-applicationset-controller` + +### 4.3.* + +With this minor version, the notification notifier's `service.slack` is no longer configured by default. + +### 4.0.0 and above + +This helm chart version deploys Argo CD v2.3. The Argo CD Notifications and ApplicationSet are part of Argo CD now. You no longer need to install them separately. The Notifications and ApplicationSet components **are bundled into default** Argo CD installation. +Please read the [v2.2 to 2.3 upgrade instructions] in the upstream repository. + +### 3.13.0 + +This release removes the flag `--staticassets` from argocd server as it has been dropped upstream. If this flag needs to be enabled e.g for older releases of Argo CD, it can be passed via the `server.extraArgs` field + +### 3.10.2 + +Argo CD has recently deprecated the flag `--staticassets` and from chart version `3.10.2` has been disabled by default +It can be re-enabled by setting `server.staticAssets.enabled` to true + +### 3.8.1 + +This bugfix version potentially introduces a rename (and recreation) of one or more ServiceAccounts. It _only happens_ when you use one of these customization: + +```yaml +# Case 1) - only happens when you do not specify a custom name (repoServer.serviceAccount.name) +repoServer: + serviceAccount: + create: true + +# Case 2) +controller: + serviceAccount: + name: "" # or + +# Case 3) +dex: + serviceAccount: + name: "" # or + +# Case 4) +server: + serviceAccount: + name: "" # or +``` + +Please check if you are affected by one of these cases **before you upgrade**, especially when you use **cloud IAM roles for service accounts.** (eg. IRSA on AWS or Workload Identity for GKE) + +### 3.2.* + +With this minor version we introduced the evaluation for the ingress manifest (depending on the capabilities version), See [Pull Request](https://github.com/argoproj/argo-helm/pull/637). +[Issue 703](https://github.com/argoproj/argo-helm/issues/703) reported that the capabilities evaluation is **not handled correctly when deploying the chart via an Argo CD instance**, +especially deploying on clusters running a cluster version prior to `1.19` (which misses `Ingress` on apiVersion `networking.k8s.io/v1`). + +If you are running a cluster version prior to `1.19` you can avoid this issue by directly installing chart version `3.6.0` and setting `kubeVersionOverride` like: + +```yaml +kubeVersionOverride: "1.18.0" +``` + +Then you should no longer encounter this issue. + +### 3.0.0 and above + +Helm apiVersion switched to `v2`. Requires Helm `3.0.0` or above to install. [Read More](https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/) on how to migrate your release from Helm 2 to Helm 3. + +### 2.14.7 and above + +The `matchLabels` key in the Argo CD Application Controller is no longer hard-coded. Note that labels are immutable so caution should be exercised when making changes to this resource. + +### 2.10.x to 2.11.0 + +The application controller is now available as a `StatefulSet` when the `controller.enableStatefulSet` flag is set to true. Depending on your Helm deployment this may be a downtime or breaking change if enabled when using HA and will become the default in 3.x. + +### 1.8.7 to 2.x.x + +`controller.extraArgs`, `repoServer.extraArgs` and `server.extraArgs` are now arrays of strings instead of a map + +What was + +```yaml +server: + extraArgs: + insecure: "" +``` + +is now + +```yaml +server: + extraArgs: + - --insecure +``` + +## Prerequisites + +- Kubernetes: `>=1.22.0-0` +- Helm v3.0.0+ + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +$ helm repo add argo https://argoproj.github.io/argo-helm +"argo" has been added to your repositories + +$ helm install my-release argo/argo-cd +NAME: my-release +... +``` + +## General parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| apiVersionOverrides.autoscaling | string | `""` | String to override apiVersion of autoscaling rendered by this helm chart | +| apiVersionOverrides.certmanager | string | `""` | String to override apiVersion of cert-manager resources rendered by this helm chart | +| apiVersionOverrides.cloudgoogle | string | `""` | String to override apiVersion of GKE resources rendered by this helm chart | +| apiVersionOverrides.ingress | string | `""` | String to override apiVersion of ingresses rendered by this helm chart | +| apiVersionOverrides.pdb | string | `""` | String to override apiVersion of pod disruption budgets rendered by this helm chart | +| crds.annotations | object | `{}` | Annotations to be added to all CRDs | +| crds.install | bool | `true` | Install and upgrade CRDs | +| crds.keep | bool | `true` | Keep CRDs on chart uninstall | +| createAggregateRoles | bool | `false` | Create clusterroles that extend existing clusterroles to interact with argo-cd crds | +| extraObjects | list | `[]` | Array of extra K8s manifests to deploy | +| fullnameOverride | string | `""` | String to fully override `"argo-cd.fullname"` | +| kubeVersionOverride | string | `""` | Override the Kubernetes version, which is used to evaluate certain manifests | +| nameOverride | string | `"argocd"` | Provide a name in place of `argocd` | +| openshift.enabled | bool | `false` | enables using arbitrary uid for argo repo server | + +## Global Configs + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| global.additionalLabels | object | `{}` | Common labels for the all resources | +| global.hostAliases | list | `[]` | Mapping between IP and hostnames that will be injected as entries in the pod's hosts files | +| global.image.imagePullPolicy | string | `"IfNotPresent"` | If defined, a imagePullPolicy applied to all Argo CD deployments | +| global.image.repository | string | `"quay.io/argoproj/argocd"` | If defined, a repository applied to all Argo CD deployments | +| global.image.tag | string | `""` | Overrides the global Argo CD image tag whose default is the chart appVersion | +| global.imagePullSecrets | list | `[]` | Secrets with credentials to pull images from a private registry | +| global.logging.format | string | `"text"` | Set the global logging format. Either: `text` or `json` | +| global.logging.level | string | `"info"` | Set the global logging level. One of: `debug`, `info`, `warn` or `error` | +| global.networkPolicy.create | bool | `false` | Create NetworkPolicy objects for all components | +| global.networkPolicy.defaultDenyIngress | bool | `false` | Default deny all ingress traffic | +| global.podAnnotations | object | `{}` | Annotations for the all deployed pods | +| global.podLabels | object | `{}` | Labels for the all deployed pods | +| global.revisionHistoryLimit | int | `3` | Number of old deployment ReplicaSets to retain. The rest will be garbage collected. | +| global.securityContext | object | `{}` (See [values.yaml]) | Toggle and define pod-level security context. | + +## Argo CD Configs + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| configs.clusterCredentials | list | `[]` (See [values.yaml]) | Provide one or multiple [external cluster credentials] | +| configs.cm."admin.enabled" | bool | `true` | Enable local admin user | +| configs.cm."application.instanceLabelKey" | string | Defaults to app.kubernetes.io/instance | The name of tracking label used by Argo CD for resource pruning | +| configs.cm."exec.enabled" | bool | `false` | Enable exec feature in Argo UI | +| configs.cm."server.rbac.log.enforce.enable" | bool | `false` | Enable logs RBAC enforcement | +| configs.cm."timeout.hard.reconciliation" | int | `0` | Timeout to refresh application data as well as target manifests cache | +| configs.cm."timeout.reconciliation" | string | `"180s"` | Timeout to discover if a new manifests version got published to the repository | +| configs.cm.annotations | object | `{}` | Annotations to be added to argocd-cm configmap | +| configs.cm.create | bool | `true` | Create the argocd-cm configmap for [Declarative setup] | +| configs.cm.url | string | `""` | Argo CD's externally facing base URL (optional). Required when configuring SSO | +| configs.credentialTemplates | object | `{}` | Repository credentials to be used as Templates for other repos | +| configs.credentialTemplatesAnnotations | object | `{}` | Annotations to be added to `configs.credentialTemplates` Secret | +| configs.gpgKeys | object | `{}` (See [values.yaml]) | [GnuPG](https://argo-cd.readthedocs.io/en/stable/user-guide/gpg-verification/) keys to add to the key ring | +| configs.gpgKeysAnnotations | object | `{}` | GnuPG key ring annotations | +| configs.knownHosts.data.ssh_known_hosts | string | See [values.yaml] | Known Hosts | +| configs.knownHostsAnnotations | object | `{}` | Known Hosts configmap annotations | +| configs.params."controller.operation.processors" | int | `10` | Number of application operation processors | +| configs.params."controller.repo.server.timeout.seconds" | int | `60` | Repo server RPC call timeout seconds. | +| configs.params."controller.self.heal.timeout.seconds" | int | `5` | Specifies timeout between application self heal attempts | +| configs.params."controller.status.processors" | int | `20` | Number of application status processors | +| configs.params."otlp.address" | string | `""` | Open-Telemetry collector address: (e.g. "otel-collector:4317") | +| configs.params."reposerver.parallelism.limit" | int | `0` | Limit on number of concurrent manifests generate requests. Any value less the 1 means no limit. | +| configs.params."server.basehref" | string | `"/"` | Value for base href in index.html. Used if Argo CD is running behind reverse proxy under subpath different from / | +| configs.params."server.disable.auth" | bool | `false` | Disable Argo CD RBAC for user authentication | +| configs.params."server.enable.gzip" | bool | `false` | Enable GZIP compression | +| configs.params."server.insecure" | bool | `false` | Run server without TLS | +| configs.params."server.rootpath" | string | `""` | Used if Argo CD is running behind reverse proxy under subpath different from / | +| configs.params."server.staticassets" | string | `"/shared/app"` | Directory path that contains additional static assets | +| configs.params."server.x.frame.options" | string | `"sameorigin"` | Set X-Frame-Options header in HTTP responses to value. To disable, set to "". | +| configs.params.annotations | object | `{}` | Annotations to be added to the argocd-cmd-params-cm ConfigMap | +| configs.rbac."policy.csv" | string | `''` (See [values.yaml]) | File containing user-defined policies and role definitions. | +| configs.rbac."policy.default" | string | `""` | The name of the default role which Argo CD will falls back to, when authorizing API requests (optional). If omitted or empty, users may be still be able to login, but will see no apps, projects, etc... | +| configs.rbac.annotations | object | `{}` | Annotations to be added to argocd-rbac-cm configmap | +| configs.rbac.create | bool | `true` | Create the argocd-rbac-cm configmap with ([Argo CD RBAC policy]) definitions. If false, it is expected the configmap will be created by something else. Argo CD will not work if there is no configmap created with the name above. | +| configs.rbac.scopes | string | `"[groups]"` | OIDC scopes to examine during rbac enforcement (in addition to `sub` scope). The scope value can be a string, or a list of strings. | +| configs.repositories | object | `{}` | Repositories list to be used by applications | +| configs.repositoriesAnnotations | object | `{}` | Annotations to be added to `configs.repositories` Secret | +| configs.secret.annotations | object | `{}` | Annotations to be added to argocd-secret | +| configs.secret.argocdServerAdminPassword | string | `""` | Bcrypt hashed admin password | +| configs.secret.argocdServerAdminPasswordMtime | string | `""` (defaults to current time) | Admin password modification time. Eg. `"2006-01-02T15:04:05Z"` | +| configs.secret.bitbucketServerSecret | string | `""` | Shared secret for authenticating BitbucketServer webhook events | +| configs.secret.bitbucketUUID | string | `""` | UUID for authenticating Bitbucket webhook events | +| configs.secret.createSecret | bool | `true` | Create the argocd-secret | +| configs.secret.extra | object | `{}` | add additional secrets to be added to argocd-secret | +| configs.secret.githubSecret | string | `""` | Shared secret for authenticating GitHub webhook events | +| configs.secret.gitlabSecret | string | `""` | Shared secret for authenticating GitLab webhook events | +| configs.secret.gogsSecret | string | `""` | Shared secret for authenticating Gogs webhook events | +| configs.styles | string | `""` (See [values.yaml]) | Define custom [CSS styles] for your argo instance. This setting will automatically mount the provided CSS and reference it in the argo configuration. | +| configs.tlsCerts | object | See [values.yaml] | TLS certificate | +| configs.tlsCertsAnnotations | object | `{}` | TLS certificate configmap annotations | + +## Argo CD Controller + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| controller.affinity | object | `{}` | Assign custom [affinity] rules to the deployment | +| controller.args | object | `{}` | DEPRECATED - Application controller commandline flags | +| controller.clusterAdminAccess.enabled | bool | `true` | Enable RBAC for local cluster deployments | +| controller.clusterRoleRules.enabled | bool | `false` | Enable custom rules for the application controller's ClusterRole resource | +| controller.clusterRoleRules.rules | list | `[]` | List of custom rules for the application controller's ClusterRole resource | +| controller.containerPort | int | `8082` | Application controller listening port | +| controller.containerSecurityContext | object | See [values.yaml] | Application controller container-level security context | +| controller.env | list | `[]` | Environment variables to pass to application controller | +| controller.envFrom | list | `[]` (See [values.yaml]) | envFrom to pass to application controller | +| controller.extraArgs | list | `[]` | Additional command line arguments to pass to application controller | +| controller.extraContainers | list | `[]` | Additional containers to be added to the application controller pod | +| controller.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the application controller | +| controller.image.repository | string | `""` (defaults to global.image.repository) | Repository to use for the application controller | +| controller.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the application controller | +| controller.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | +| controller.initContainers | list | `[]` | Init containers to add to the application controller pod | +| controller.metrics.applicationLabels.enabled | bool | `false` | Enables additional labels in argocd_app_labels metric | +| controller.metrics.applicationLabels.labels | list | `[]` | Additional labels | +| controller.metrics.enabled | bool | `false` | Deploy metrics service | +| controller.metrics.rules.enabled | bool | `false` | Deploy a PrometheusRule for the application controller | +| controller.metrics.rules.spec | list | `[]` | PrometheusRule.Spec for the application controller | +| controller.metrics.service.annotations | object | `{}` | Metrics service annotations | +| controller.metrics.service.labels | object | `{}` | Metrics service labels | +| controller.metrics.service.portName | string | `"http-metrics"` | Metrics service port name | +| controller.metrics.service.servicePort | int | `8082` | Metrics service port | +| controller.metrics.serviceMonitor.additionalLabels | object | `{}` | Prometheus ServiceMonitor labels | +| controller.metrics.serviceMonitor.annotations | object | `{}` | Prometheus ServiceMonitor annotations | +| controller.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor | +| controller.metrics.serviceMonitor.interval | string | `"30s"` | Prometheus ServiceMonitor interval | +| controller.metrics.serviceMonitor.metricRelabelings | list | `[]` | Prometheus [MetricRelabelConfigs] to apply to samples before ingestion | +| controller.metrics.serviceMonitor.namespace | string | `""` | Prometheus ServiceMonitor namespace | +| controller.metrics.serviceMonitor.relabelings | list | `[]` | Prometheus [RelabelConfigs] to apply to samples before scraping | +| controller.metrics.serviceMonitor.scheme | string | `""` | Prometheus ServiceMonitor scheme | +| controller.metrics.serviceMonitor.selector | object | `{}` | Prometheus ServiceMonitor selector | +| controller.metrics.serviceMonitor.tlsConfig | object | `{}` | Prometheus ServiceMonitor tlsConfig | +| controller.name | string | `"application-controller"` | Application controller name string | +| controller.nodeSelector | object | `{}` | [Node selector] | +| controller.pdb.annotations | object | `{}` | Annotations to be added to application controller pdb | +| controller.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the application controller | +| controller.pdb.labels | object | `{}` | Labels to be added to application controller pdb | +| controller.pdb.maxUnavailable | string | `""` | Number of pods that are unavailble after eviction as number or percentage (eg.: 50%). | +| controller.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) | +| controller.podAnnotations | object | `{}` | Annotations to be added to application controller pods | +| controller.podLabels | object | `{}` | Labels to be added to application controller pods | +| controller.priorityClassName | string | `""` | Priority class for the application controller pods | +| controller.readinessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| controller.readinessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| controller.readinessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| controller.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| controller.readinessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| controller.replicas | int | `1` | The number of application controller pods to run. Additional replicas will cause sharding of managed clusters across number of replicas. | +| controller.resources | object | `{}` | Resource limits and requests for the application controller pods | +| controller.serviceAccount.annotations | object | `{}` | Annotations applied to created service account | +| controller.serviceAccount.automountServiceAccountToken | bool | `true` | Automount API credentials for the Service Account | +| controller.serviceAccount.create | bool | `true` | Create a service account for the application controller | +| controller.serviceAccount.labels | object | `{}` | Labels applied to created service account | +| controller.serviceAccount.name | string | `"argocd-application-controller"` | Service account name | +| controller.tolerations | list | `[]` | [Tolerations] for use with node taints | +| controller.topologySpreadConstraints | list | `[]` | Assign custom [TopologySpreadConstraints] rules to the application controller | +| controller.volumeMounts | list | `[]` | Additional volumeMounts to the application controller main container | +| controller.volumes | list | `[]` | Additional volumes to the application controller pod | + +## Argo Repo Server + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| repoServer.affinity | object | `{}` | Assign custom [affinity] rules to the deployment | +| repoServer.autoscaling.behavior | object | `{}` | Configures the scaling behavior of the target in both Up and Down directions. This is only available on HPA apiVersion `autoscaling/v2beta2` and newer | +| repoServer.autoscaling.enabled | bool | `false` | Enable Horizontal Pod Autoscaler ([HPA]) for the repo server | +| repoServer.autoscaling.maxReplicas | int | `5` | Maximum number of replicas for the repo server [HPA] | +| repoServer.autoscaling.minReplicas | int | `1` | Minimum number of replicas for the repo server [HPA] | +| repoServer.autoscaling.targetCPUUtilizationPercentage | int | `50` | Average CPU utilization percentage for the repo server [HPA] | +| repoServer.autoscaling.targetMemoryUtilizationPercentage | int | `50` | Average memory utilization percentage for the repo server [HPA] | +| repoServer.clusterAdminAccess.enabled | bool | `false` | Enable RBAC for local cluster deployments | +| repoServer.clusterRoleRules.enabled | bool | `false` | Enable custom rules for the Repo server's Cluster Role resource | +| repoServer.clusterRoleRules.rules | list | `[]` | List of custom rules for the Repo server's Cluster Role resource | +| repoServer.containerPort | int | `8081` | Configures the repo server port | +| repoServer.containerSecurityContext | object | See [values.yaml] | Repo server container-level security context | +| repoServer.env | list | `[]` | Environment variables to pass to repo server | +| repoServer.envFrom | list | `[]` (See [values.yaml]) | envFrom to pass to repo server | +| repoServer.extraArgs | list | `[]` | Additional command line arguments to pass to repo server | +| repoServer.extraContainers | list | `[]` | Additional containers to be added to the repo server pod | +| repoServer.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the repo server | +| repoServer.image.repository | string | `""` (defaults to global.image.repository) | Repository to use for the repo server | +| repoServer.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the repo server | +| repoServer.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | +| repoServer.initContainers | list | `[]` | Init containers to add to the repo server pods | +| repoServer.livenessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| repoServer.livenessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| repoServer.livenessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| repoServer.livenessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| repoServer.livenessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| repoServer.metrics.enabled | bool | `false` | Deploy metrics service | +| repoServer.metrics.service.annotations | object | `{}` | Metrics service annotations | +| repoServer.metrics.service.labels | object | `{}` | Metrics service labels | +| repoServer.metrics.service.portName | string | `"http-metrics"` | Metrics service port name | +| repoServer.metrics.service.servicePort | int | `8084` | Metrics service port | +| repoServer.metrics.serviceMonitor.additionalLabels | object | `{}` | Prometheus ServiceMonitor labels | +| repoServer.metrics.serviceMonitor.annotations | object | `{}` | Prometheus ServiceMonitor annotations | +| repoServer.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor | +| repoServer.metrics.serviceMonitor.interval | string | `"30s"` | Prometheus ServiceMonitor interval | +| repoServer.metrics.serviceMonitor.metricRelabelings | list | `[]` | Prometheus [MetricRelabelConfigs] to apply to samples before ingestion | +| repoServer.metrics.serviceMonitor.namespace | string | `""` | Prometheus ServiceMonitor namespace | +| repoServer.metrics.serviceMonitor.relabelings | list | `[]` | Prometheus [RelabelConfigs] to apply to samples before scraping | +| repoServer.metrics.serviceMonitor.scheme | string | `""` | Prometheus ServiceMonitor scheme | +| repoServer.metrics.serviceMonitor.selector | object | `{}` | Prometheus ServiceMonitor selector | +| repoServer.metrics.serviceMonitor.tlsConfig | object | `{}` | Prometheus ServiceMonitor tlsConfig | +| repoServer.name | string | `"repo-server"` | Repo server name | +| repoServer.nodeSelector | object | `{}` | [Node selector] | +| repoServer.pdb.annotations | object | `{}` | Annotations to be added to repo server pdb | +| repoServer.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the repo server | +| repoServer.pdb.labels | object | `{}` | Labels to be added to repo server pdb | +| repoServer.pdb.maxUnavailable | string | `""` | Number of pods that are unavailble after eviction as number or percentage (eg.: 50%). | +| repoServer.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) | +| repoServer.podAnnotations | object | `{}` | Annotations to be added to repo server pods | +| repoServer.podLabels | object | `{}` | Labels to be added to repo server pods | +| repoServer.priorityClassName | string | `""` | Priority class for the repo server | +| repoServer.rbac | list | `[]` | Repo server rbac rules | +| repoServer.readinessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| repoServer.readinessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| repoServer.readinessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| repoServer.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| repoServer.readinessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| repoServer.replicas | int | `1` | The number of repo server pods to run | +| repoServer.resources | object | `{}` | Resource limits and requests for the repo server pods | +| repoServer.service.annotations | object | `{}` | Repo server service annotations | +| repoServer.service.labels | object | `{}` | Repo server service labels | +| repoServer.service.port | int | `8081` | Repo server service port | +| repoServer.service.portName | string | `"https-repo-server"` | Repo server service port name | +| repoServer.serviceAccount.annotations | object | `{}` | Annotations applied to created service account | +| repoServer.serviceAccount.automountServiceAccountToken | bool | `true` | Automount API credentials for the Service Account | +| repoServer.serviceAccount.create | bool | `true` | Create repo server service account | +| repoServer.serviceAccount.labels | object | `{}` | Labels applied to created service account | +| repoServer.serviceAccount.name | string | `""` | Repo server service account name | +| repoServer.tolerations | list | `[]` | [Tolerations] for use with node taints | +| repoServer.topologySpreadConstraints | list | `[]` | Assign custom [TopologySpreadConstraints] rules to the repo server | +| repoServer.volumeMounts | list | `[]` | Additional volumeMounts to the repo server main container | +| repoServer.volumes | list | `[]` | Additional volumes to the repo server pod | + +## Argo Server + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| server.GKEbackendConfig.enabled | bool | `false` | Enable BackendConfig custom resource for Google Kubernetes Engine | +| server.GKEbackendConfig.spec | object | `{}` | [BackendConfigSpec] | +| server.GKEfrontendConfig.enabled | bool | `false` | Enable FrontConfig custom resource for Google Kubernetes Engine | +| server.GKEfrontendConfig.spec | object | `{}` | [FrontendConfigSpec] | +| server.GKEmanagedCertificate.domains | list | `["argocd.example.com"]` | Domains for the Google Managed Certificate | +| server.GKEmanagedCertificate.enabled | bool | `false` | Enable ManagedCertificate custom resource for Google Kubernetes Engine. | +| server.affinity | object | `{}` | Assign custom [affinity] rules to the deployment | +| server.autoscaling.behavior | object | `{}` | Configures the scaling behavior of the target in both Up and Down directions. This is only available on HPA apiVersion `autoscaling/v2beta2` and newer | +| server.autoscaling.enabled | bool | `false` | Enable Horizontal Pod Autoscaler ([HPA]) for the Argo CD server | +| server.autoscaling.maxReplicas | int | `5` | Maximum number of replicas for the Argo CD server [HPA] | +| server.autoscaling.minReplicas | int | `1` | Minimum number of replicas for the Argo CD server [HPA] | +| server.autoscaling.targetCPUUtilizationPercentage | int | `50` | Average CPU utilization percentage for the Argo CD server [HPA] | +| server.autoscaling.targetMemoryUtilizationPercentage | int | `50` | Average memory utilization percentage for the Argo CD server [HPA] | +| server.certificate.additionalHosts | list | `[]` | Certificate Subject Alternate Names (SANs) | +| server.certificate.domain | string | `"argocd.example.com"` | Certificate primary domain (commonName) | +| server.certificate.duration | string | `""` (defaults to 2160h = 90d if not specified) | The requested 'duration' (i.e. lifetime) of the certificate. | +| server.certificate.enabled | bool | `false` | Deploy a Certificate resource (requires cert-manager) | +| server.certificate.issuer.group | string | `""` | Certificate issuer group. Set if using an external issuer. Eg. `cert-manager.io` | +| server.certificate.issuer.kind | string | `""` | Certificate issuer kind. Either `Issuer` or `ClusterIssuer` | +| server.certificate.issuer.name | string | `""` | Certificate isser name. Eg. `letsencrypt` | +| server.certificate.privateKey.algorithm | string | `"RSA"` | Algorithm used to generate certificate private key. One of: `RSA`, `Ed25519` or `ECDSA` | +| server.certificate.privateKey.encoding | string | `"PKCS1"` | The private key cryptography standards (PKCS) encoding for private key. Either: `PCKS1` or `PKCS8` | +| server.certificate.privateKey.rotationPolicy | string | `"Never"` | Rotation policy of private key when certificate is re-issued. Either: `Never` or `Always` | +| server.certificate.privateKey.size | int | `2048` | Key bit size of the private key. If algorithm is set to `Ed25519`, size is ignored. | +| server.certificate.renewBefore | string | `""` (defaults to 360h = 15d if not specified) | How long before the expiry a certificate should be renewed. | +| server.certificate.secretName | string | `"argocd-server-tls"` | The name of the Secret that will be automatically created and managed by this Certificate resource | +| server.certificateSecret.annotations | object | `{}` | Annotations to be added to argocd-server-tls secret | +| server.certificateSecret.crt | string | `""` | Certificate data | +| server.certificateSecret.enabled | bool | `false` | Create argocd-server-tls secret | +| server.certificateSecret.key | string | `""` | Private Key of the certificate | +| server.certificateSecret.labels | object | `{}` | Labels to be added to argocd-server-tls secret | +| server.clusterAdminAccess.enabled | bool | `true` | Enable RBAC for local cluster deployments | +| server.containerPort | int | `8080` | Configures the server port | +| server.containerSecurityContext | object | See [values.yaml] | Server container-level security context | +| server.env | list | `[]` | Environment variables to pass to Argo CD server | +| server.envFrom | list | `[]` (See [values.yaml]) | envFrom to pass to Argo CD server | +| server.extensions.containerSecurityContext | object | See [values.yaml] | Server UI extensions container-level security context | +| server.extensions.enabled | bool | `false` | Enable support for Argo UI extensions | +| server.extensions.image.imagePullPolicy | string | `"IfNotPresent"` | Image pull policy for extensions | +| server.extensions.image.repository | string | `"ghcr.io/argoproj-labs/argocd-extensions"` | Repository to use for extensions image | +| server.extensions.image.tag | string | `"v0.1.0"` | Tag to use for extensions image | +| server.extensions.resources | object | `{}` | Resource limits and requests for the argocd-extensions container | +| server.extraArgs | list | `[]` | Additional command line arguments to pass to Argo CD server | +| server.extraContainers | list | `[]` | Additional containers to be added to the server pod | +| server.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the Argo CD server | +| server.image.repository | string | `""` (defaults to global.image.repository) | Repository to use for the Argo CD server | +| server.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the Argo CD server | +| server.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | +| server.ingress.annotations | object | `{}` | Additional ingress annotations | +| server.ingress.enabled | bool | `false` | Enable an ingress resource for the Argo CD server | +| server.ingress.extraPaths | list | `[]` | Additional ingress paths | +| server.ingress.hosts | list | `[]` | List of ingress hosts | +| server.ingress.https | bool | `false` | Uses `server.service.servicePortHttps` instead `server.service.servicePortHttp` | +| server.ingress.ingressClassName | string | `""` | Defines which ingress controller will implement the resource | +| server.ingress.labels | object | `{}` | Additional ingress labels | +| server.ingress.pathType | string | `"Prefix"` | Ingress path type. One of `Exact`, `Prefix` or `ImplementationSpecific` | +| server.ingress.paths | list | `["/"]` | List of ingress paths | +| server.ingress.tls | list | `[]` | Ingress TLS configuration | +| server.ingressGrpc.annotations | object | `{}` | Additional ingress annotations for dedicated [gRPC-ingress] | +| server.ingressGrpc.awsALB.backendProtocolVersion | string | `"HTTP2"` | Backend protocol version for the AWS ALB gRPC service | +| server.ingressGrpc.awsALB.serviceType | string | `"NodePort"` | Service type for the AWS ALB gRPC service | +| server.ingressGrpc.enabled | bool | `false` | Enable an ingress resource for the Argo CD server for dedicated [gRPC-ingress] | +| server.ingressGrpc.extraPaths | list | `[]` | Additional ingress paths for dedicated [gRPC-ingress] | +| server.ingressGrpc.hosts | list | `[]` | List of ingress hosts for dedicated [gRPC-ingress] | +| server.ingressGrpc.https | bool | `false` | Uses `server.service.servicePortHttps` instead `server.service.servicePortHttp` | +| server.ingressGrpc.ingressClassName | string | `""` | Defines which ingress controller will implement the resource [gRPC-ingress] | +| server.ingressGrpc.isAWSALB | bool | `false` | Setup up gRPC ingress to work with an AWS ALB | +| server.ingressGrpc.labels | object | `{}` | Additional ingress labels for dedicated [gRPC-ingress] | +| server.ingressGrpc.pathType | string | `"Prefix"` | Ingress path type for dedicated [gRPC-ingress]. One of `Exact`, `Prefix` or `ImplementationSpecific` | +| server.ingressGrpc.paths | list | `["/"]` | List of ingress paths for dedicated [gRPC-ingress] | +| server.ingressGrpc.tls | list | `[]` | Ingress TLS configuration for dedicated [gRPC-ingress] | +| server.initContainers | list | `[]` | Init containers to add to the server pod | +| server.lifecycle | object | `{}` | Specify postStart and preStop lifecycle hooks for your argo-cd-server container | +| server.livenessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| server.livenessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| server.livenessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| server.livenessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| server.livenessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| server.metrics.enabled | bool | `false` | Deploy metrics service | +| server.metrics.service.annotations | object | `{}` | Metrics service annotations | +| server.metrics.service.labels | object | `{}` | Metrics service labels | +| server.metrics.service.portName | string | `"http-metrics"` | Metrics service port name | +| server.metrics.service.servicePort | int | `8083` | Metrics service port | +| server.metrics.serviceMonitor.additionalLabels | object | `{}` | Prometheus ServiceMonitor labels | +| server.metrics.serviceMonitor.annotations | object | `{}` | Prometheus ServiceMonitor annotations | +| server.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor | +| server.metrics.serviceMonitor.interval | string | `"30s"` | Prometheus ServiceMonitor interval | +| server.metrics.serviceMonitor.metricRelabelings | list | `[]` | Prometheus [MetricRelabelConfigs] to apply to samples before ingestion | +| server.metrics.serviceMonitor.namespace | string | `""` | Prometheus ServiceMonitor namespace | +| server.metrics.serviceMonitor.relabelings | list | `[]` | Prometheus [RelabelConfigs] to apply to samples before scraping | +| server.metrics.serviceMonitor.scheme | string | `""` | Prometheus ServiceMonitor scheme | +| server.metrics.serviceMonitor.selector | object | `{}` | Prometheus ServiceMonitor selector | +| server.metrics.serviceMonitor.tlsConfig | object | `{}` | Prometheus ServiceMonitor tlsConfig | +| server.name | string | `"server"` | Argo CD server name | +| server.nodeSelector | object | `{}` | [Node selector] | +| server.pdb.annotations | object | `{}` | Annotations to be added to Argo CD server pdb | +| server.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the Argo CD server | +| server.pdb.labels | object | `{}` | Labels to be added to Argo CD server pdb | +| server.pdb.maxUnavailable | string | `""` | Number of pods that are unavailble after eviction as number or percentage (eg.: 50%). | +| server.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) | +| server.podAnnotations | object | `{}` | Annotations to be added to server pods | +| server.podLabels | object | `{}` | Labels to be added to server pods | +| server.priorityClassName | string | `""` | Priority class for the Argo CD server | +| server.readinessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| server.readinessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| server.readinessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| server.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| server.readinessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| server.replicas | int | `1` | The number of server pods to run | +| server.resources | object | `{}` | Resource limits and requests for the Argo CD server | +| server.route.annotations | object | `{}` | Openshift Route annotations | +| server.route.enabled | bool | `false` | Enable an OpenShift Route for the Argo CD server | +| server.route.hostname | string | `""` | Hostname of OpenShift Route | +| server.route.termination_policy | string | `"None"` | Termination policy of Openshift Route | +| server.route.termination_type | string | `"passthrough"` | Termination type of Openshift Route | +| server.service.annotations | object | `{}` | Server service annotations | +| server.service.externalIPs | list | `[]` | Server service external IPs | +| server.service.externalTrafficPolicy | string | `""` | Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints | +| server.service.labels | object | `{}` | Server service labels | +| server.service.loadBalancerIP | string | `""` | LoadBalancer will get created with the IP specified in this field | +| server.service.loadBalancerSourceRanges | list | `[]` | Source IP ranges to allow access to service from | +| server.service.namedTargetPort | bool | `true` | Use named target port for argocd | +| server.service.nodePortHttp | int | `30080` | Server service http port for NodePort service type (only if `server.service.type` is set to "NodePort") | +| server.service.nodePortHttps | int | `30443` | Server service https port for NodePort service type (only if `server.service.type` is set to "NodePort") | +| server.service.servicePortHttp | int | `80` | Server service http port | +| server.service.servicePortHttpName | string | `"http"` | Server service http port name, can be used to route traffic via istio | +| server.service.servicePortHttps | int | `443` | Server service https port | +| server.service.servicePortHttpsName | string | `"https"` | Server service https port name, can be used to route traffic via istio | +| server.service.sessionAffinity | string | `""` | Used to maintain session affinity. Supports `ClientIP` and `None` | +| server.service.type | string | `"ClusterIP"` | Server service type | +| server.serviceAccount.annotations | object | `{}` | Annotations applied to created service account | +| server.serviceAccount.automountServiceAccountToken | bool | `true` | Automount API credentials for the Service Account | +| server.serviceAccount.create | bool | `true` | Create server service account | +| server.serviceAccount.labels | object | `{}` | Labels applied to created service account | +| server.serviceAccount.name | string | `"argocd-server"` | Server service account name | +| server.tolerations | list | `[]` | [Tolerations] for use with node taints | +| server.topologySpreadConstraints | list | `[]` | Assign custom [TopologySpreadConstraints] rules to the Argo CD server | +| server.volumeMounts | list | `[]` | Additional volumeMounts to the server main container | +| server.volumes | list | `[]` | Additional volumes to the server pod | + +### Using AWS ALB Ingress Controller With GRPC + +If you are using an AWS ALB Ingress controller, you will need to set `server.ingressGrpc.isAWSALB` to `true`. This will create a second service with the annotation `alb.ingress.kubernetes.io/backend-protocol-version: HTTP2` and modify the server ingress to add a condition annotation to route GRPC traffic to the new service. + +Example: + +```yaml +server: + ingress: + enabled: true + annotations: + alb.ingress.kubernetes.io/backend-protocol: HTTPS + alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]' + alb.ingress.kubernetes.io/scheme: internal + alb.ingress.kubernetes.io/target-type: ip + ingressGrpc: + enabled: true + isAWSALB: true + awsALB: + serviceType: ClusterIP +``` + +## Dex + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| dex.affinity | object | `{}` | Assign custom [affinity] rules to the deployment | +| dex.certificateSecret.annotations | object | `{}` | Annotations to be added to argocd-dex-server-tls secret | +| dex.certificateSecret.ca | string | `""` | Certificate authority. Required for self-signed certificates. | +| dex.certificateSecret.crt | string | `""` | Certificate data. Must contain SANs of Dex service (ie: argocd-dex-server, argocd-dex-server.argo-cd.svc) | +| dex.certificateSecret.enabled | bool | `false` | Create argocd-dex-server-tls secret | +| dex.certificateSecret.key | string | `""` | Certificate private key | +| dex.certificateSecret.labels | object | `{}` | Labels to be added to argocd-dex-server-tls secret | +| dex.containerPortGrpc | int | `5557` | Container port for gRPC access | +| dex.containerPortHttp | int | `5556` | Container port for HTTP access | +| dex.containerPortMetrics | int | `5558` | Container port for metrics access | +| dex.containerSecurityContext | object | See [values.yaml] | Dex container-level security context | +| dex.enabled | bool | `true` | Enable dex | +| dex.env | list | `[]` | Environment variables to pass to the Dex server | +| dex.envFrom | list | `[]` (See [values.yaml]) | envFrom to pass to the Dex server | +| dex.extraArgs | list | `[]` | Additional command line arguments to pass to the Dex server | +| dex.extraContainers | list | `[]` | Additional containers to be added to the dex pod | +| dex.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Dex imagePullPolicy | +| dex.image.repository | string | `"ghcr.io/dexidp/dex"` | Dex image repository | +| dex.image.tag | string | `"v2.35.3-distroless"` | Dex image tag | +| dex.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | +| dex.initContainers | list | `[]` | Init containers to add to the dex pod | +| dex.initImage.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Argo CD init image imagePullPolicy | +| dex.initImage.repository | string | `""` (defaults to global.image.repository) | Argo CD init image repository | +| dex.initImage.tag | string | `""` (defaults to global.image.tag) | Argo CD init image tag | +| dex.livenessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for Dex >= 2.28.0 | +| dex.livenessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| dex.livenessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| dex.livenessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| dex.livenessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| dex.livenessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| dex.metrics.enabled | bool | `false` | Deploy metrics service | +| dex.metrics.service.annotations | object | `{}` | Metrics service annotations | +| dex.metrics.service.labels | object | `{}` | Metrics service labels | +| dex.metrics.service.portName | string | `"http-metrics"` | Metrics service port name | +| dex.metrics.serviceMonitor.additionalLabels | object | `{}` | Prometheus ServiceMonitor labels | +| dex.metrics.serviceMonitor.annotations | object | `{}` | Prometheus ServiceMonitor annotations | +| dex.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor | +| dex.metrics.serviceMonitor.interval | string | `"30s"` | Prometheus ServiceMonitor interval | +| dex.metrics.serviceMonitor.metricRelabelings | list | `[]` | Prometheus [MetricRelabelConfigs] to apply to samples before ingestion | +| dex.metrics.serviceMonitor.namespace | string | `""` | Prometheus ServiceMonitor namespace | +| dex.metrics.serviceMonitor.relabelings | list | `[]` | Prometheus [RelabelConfigs] to apply to samples before scraping | +| dex.metrics.serviceMonitor.scheme | string | `""` | Prometheus ServiceMonitor scheme | +| dex.metrics.serviceMonitor.selector | object | `{}` | Prometheus ServiceMonitor selector | +| dex.metrics.serviceMonitor.tlsConfig | object | `{}` | Prometheus ServiceMonitor tlsConfig | +| dex.name | string | `"dex-server"` | Dex name | +| dex.nodeSelector | object | `{}` | [Node selector] | +| dex.pdb.annotations | object | `{}` | Annotations to be added to Dex server pdb | +| dex.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the Dex server | +| dex.pdb.labels | object | `{}` | Labels to be added to Dex server pdb | +| dex.pdb.maxUnavailable | string | `""` | Number of pods that are unavailble after eviction as number or percentage (eg.: 50%). | +| dex.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) | +| dex.podAnnotations | object | `{}` | Annotations to be added to the Dex server pods | +| dex.podLabels | object | `{}` | Labels to be added to the Dex server pods | +| dex.priorityClassName | string | `""` | Priority class for dex | +| dex.readinessProbe.enabled | bool | `false` | Enable Kubernetes readiness probe for Dex >= 2.28.0 | +| dex.readinessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| dex.readinessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| dex.readinessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| dex.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| dex.readinessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| dex.resources | object | `{}` | Resource limits and requests for dex | +| dex.serviceAccount.annotations | object | `{}` | Annotations applied to created service account | +| dex.serviceAccount.automountServiceAccountToken | bool | `true` | Automount API credentials for the Service Account | +| dex.serviceAccount.create | bool | `true` | Create dex service account | +| dex.serviceAccount.name | string | `"argocd-dex-server"` | Dex service account name | +| dex.servicePortGrpc | int | `5557` | Service port for gRPC access | +| dex.servicePortGrpcName | string | `"grpc"` | Service port name for gRPC access | +| dex.servicePortHttp | int | `5556` | Service port for HTTP access | +| dex.servicePortHttpName | string | `"http"` | Service port name for HTTP access | +| dex.servicePortMetrics | int | `5558` | Service port for metrics access | +| dex.tolerations | list | `[]` | [Tolerations] for use with node taints | +| dex.topologySpreadConstraints | list | `[]` | Assign custom [TopologySpreadConstraints] rules to dex | +| dex.volumeMounts | list | `[]` | Additional volumeMounts to the dex main container | +| dex.volumes | list | `[]` | Additional volumes to the dex pod | + +## Redis + +### Option 1 - Single Redis instance (default option) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| redis.affinity | object | `{}` | Assign custom [affinity] rules to the deployment | +| redis.containerPort | int | `6379` | Redis container port | +| redis.containerSecurityContext | object | See [values.yaml] | Redis container-level security context | +| redis.enabled | bool | `true` | Enable redis | +| redis.env | list | `[]` | Environment variables to pass to the Redis server | +| redis.envFrom | list | `[]` (See [values.yaml]) | envFrom to pass to the Redis server | +| redis.extraArgs | list | `[]` | Additional command line arguments to pass to redis-server | +| redis.extraContainers | list | `[]` | Additional containers to be added to the redis pod | +| redis.image.imagePullPolicy | string | `"IfNotPresent"` | Redis imagePullPolicy | +| redis.image.repository | string | `"public.ecr.aws/docker/library/redis"` | Redis repository | +| redis.image.tag | string | `"7.0.5-alpine"` | Redis tag | +| redis.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | +| redis.initContainers | list | `[]` | Init containers to add to the redis pod | +| redis.metrics.containerPort | int | `9121` | Port to use for redis-exporter sidecar | +| redis.metrics.containerSecurityContext | object | See [values.yaml] | Redis exporter security context | +| redis.metrics.enabled | bool | `false` | Deploy metrics service and redis-exporter sidecar | +| redis.metrics.image.imagePullPolicy | string | `"IfNotPresent"` | redis-exporter image PullPolicy | +| redis.metrics.image.repository | string | `"public.ecr.aws/bitnami/redis-exporter"` | redis-exporter image repository | +| redis.metrics.image.tag | string | `"1.26.0-debian-10-r2"` | redis-exporter image tag | +| redis.metrics.resources | object | `{}` | Resource limits and requests for redis-exporter sidecar | +| redis.metrics.service.annotations | object | `{}` | Metrics service annotations | +| redis.metrics.service.clusterIP | string | `"None"` | Metrics service clusterIP. `None` makes a "headless service" (no virtual IP) | +| redis.metrics.service.labels | object | `{}` | Metrics service labels | +| redis.metrics.service.portName | string | `"http-metrics"` | Metrics service port name | +| redis.metrics.service.servicePort | int | `9121` | Metrics service port | +| redis.metrics.service.type | string | `"ClusterIP"` | Metrics service type | +| redis.metrics.serviceMonitor.additionalLabels | object | `{}` | Prometheus ServiceMonitor labels | +| redis.metrics.serviceMonitor.annotations | object | `{}` | Prometheus ServiceMonitor annotations | +| redis.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor | +| redis.metrics.serviceMonitor.interval | string | `"30s"` | Interval at which metrics should be scraped | +| redis.metrics.serviceMonitor.metricRelabelings | list | `[]` | Prometheus [MetricRelabelConfigs] to apply to samples before ingestion | +| redis.metrics.serviceMonitor.namespace | string | `""` | Prometheus ServiceMonitor namespace | +| redis.metrics.serviceMonitor.relabelings | list | `[]` | Prometheus [RelabelConfigs] to apply to samples before scraping | +| redis.metrics.serviceMonitor.scheme | string | `""` | Prometheus ServiceMonitor scheme | +| redis.metrics.serviceMonitor.selector | object | `{}` | Prometheus ServiceMonitor selector | +| redis.metrics.serviceMonitor.tlsConfig | object | `{}` | Prometheus ServiceMonitor tlsConfig | +| redis.name | string | `"redis"` | Redis name | +| redis.nodeSelector | object | `{}` | [Node selector] | +| redis.pdb.annotations | object | `{}` | Annotations to be added to Redis pdb | +| redis.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the Redis | +| redis.pdb.labels | object | `{}` | Labels to be added to Redis pdb | +| redis.pdb.maxUnavailable | string | `""` | Number of pods that are unavailble after eviction as number or percentage (eg.: 50%). | +| redis.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) | +| redis.podAnnotations | object | `{}` | Annotations to be added to the Redis server pods | +| redis.podLabels | object | `{}` | Labels to be added to the Redis server pods | +| redis.priorityClassName | string | `""` | Priority class for redis | +| redis.resources | object | `{}` | Resource limits and requests for redis | +| redis.securityContext | object | See [values.yaml] | Redis pod-level security context | +| redis.service.annotations | object | `{}` | Redis service annotations | +| redis.service.labels | object | `{}` | Additional redis service labels | +| redis.serviceAccount.annotations | object | `{}` | Annotations applied to created service account | +| redis.serviceAccount.automountServiceAccountToken | bool | `false` | Automount API credentials for the Service Account | +| redis.serviceAccount.create | bool | `false` | Create a service account for the redis pod | +| redis.serviceAccount.name | string | `""` | Service account name for redis pod | +| redis.servicePort | int | `6379` | Redis service port | +| redis.tolerations | list | `[]` | [Tolerations] for use with node taints | +| redis.topologySpreadConstraints | list | `[]` | Assign custom [TopologySpreadConstraints] rules to redis | +| redis.volumeMounts | list | `[]` | Additional volumeMounts to the redis container | +| redis.volumes | list | `[]` | Additional volumes to the redis pod | + +### Option 2 - Redis HA + +This option uses the following third-party chart to bootstrap a clustered Redis: https://github.com/DandyDeveloper/charts/tree/master/charts/redis-ha. +For all available configuration options, please read upstream README and/or chart source. +The main options are listed here: + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| redis-ha.enabled | bool | `false` | Enables the Redis HA subchart and disables the custom Redis single node deployment | +| redis-ha.exporter.enabled | bool | `true` | If `true`, the prometheus exporter sidecar is enabled | +| redis-ha.haproxy.enabled | bool | `true` | Enabled HAProxy LoadBalancing/Proxy | +| redis-ha.haproxy.metrics.enabled | bool | `true` | HAProxy enable prometheus metric scraping | +| redis-ha.image.tag | string | `"7.0.5-alpine"` | Redis tag | +| redis-ha.persistentVolume.enabled | bool | `false` | Configures persistency on Redis nodes | +| redis-ha.redis.config | object | See [values.yaml] | Any valid redis config options in this section will be applied to each server (see `redis-ha` chart) | +| redis-ha.redis.config.save | string | `'""'` | Will save the DB if both the given number of seconds and the given number of write operations against the DB occurred. `""` is disabled | +| redis-ha.redis.masterGroupName | string | `"argocd"` | Redis convention for naming the cluster group: must match `^[\\w-\\.]+$` and can be templated | +| redis-ha.topologySpreadConstraints.enabled | bool | `false` | Enable Redis HA topology spread constraints | +| redis-ha.topologySpreadConstraints.maxSkew | string | `""` (defaults to `1`) | Max skew of pods tolerated | +| redis-ha.topologySpreadConstraints.topologyKey | string | `""` (defaults to `topology.kubernetes.io/zone`) | Topology key for spread | +| redis-ha.topologySpreadConstraints.whenUnsatisfiable | string | `""` (defaults to `ScheduleAnyway`) | Enforcement policy, hard or soft | +| redis-ha.exporter.image | string | `nil` (follows subchart default) | Exporter image | +| redis-ha.exporter.tag | string | `nil` (follows subchart default) | Exporter tag | +| redis-ha.haproxy.image.repository | string | `nil` (follows subchart default) | HAProxy Image Repository | +| redis-ha.haproxy.image.tag | string | `nil` (follows subchart default) | HAProxy Image Tag | +| redis-ha.image.repository | string | `nil` (follows subchart default) | Redis image repository | + +### Option 3 - External Redis + +If you want to use an existing Redis (eg. a managed service from a cloud provider), you can use these parameters: + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| externalRedis.existingSecret | string | `""` | The name of an existing secret with Redis credentials (must contain key `redis-password`). When it's set, the `externalRedis.password` parameter is ignored | +| externalRedis.host | string | `""` | External Redis server host | +| externalRedis.password | string | `""` | External Redis password | +| externalRedis.port | int | `6379` | External Redis server port | +| externalRedis.secretAnnotations | object | `{}` | External Redis Secret annotations | +| externalRedis.username | string | `""` | External Redis username | + +## ApplicationSet + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| applicationSet.affinity | object | `{}` | Assign custom [affinity] rules | +| applicationSet.args.debug | bool | `false` | Print debug logs | +| applicationSet.args.dryRun | bool | `false` | Enable dry run mode | +| applicationSet.args.enableLeaderElection | bool | `false` | The default leader election setting | +| applicationSet.args.metricsAddr | string | `":8080"` | The default metric address | +| applicationSet.args.policy | string | `"sync"` | How application is synced between the generator and the cluster | +| applicationSet.args.probeBindAddr | string | `":8081"` | The default health check port | +| applicationSet.containerSecurityContext | object | See [values.yaml] | ApplicationSet controller container-level security context | +| applicationSet.enabled | bool | `true` | Enable ApplicationSet controller | +| applicationSet.extraArgs | list | `[]` | List of extra cli args to add | +| applicationSet.extraContainers | list | `[]` | Additional containers to be added to the applicationset controller pod | +| applicationSet.extraEnv | list | `[]` | Environment variables to pass to the controller | +| applicationSet.extraEnvFrom | list | `[]` (See [values.yaml]) | envFrom to pass to the controller | +| applicationSet.extraVolumeMounts | list | `[]` | List of extra mounts to add (normally used with extraVolumes) | +| applicationSet.extraVolumes | list | `[]` | List of extra volumes to add | +| applicationSet.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the application set controller | +| applicationSet.image.repository | string | `""` (defaults to global.image.repository) | Repository to use for the application set controller | +| applicationSet.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the application set controller | +| applicationSet.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | If defined, uses a Secret to pull an image from a private Docker registry or repository. | +| applicationSet.livenessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for ApplicationSet controller | +| applicationSet.livenessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| applicationSet.livenessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| applicationSet.livenessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| applicationSet.livenessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| applicationSet.livenessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| applicationSet.logFormat | string | `""` (defaults to global.logging.format) | ApplicationSet controller log format. Either `text` or `json` | +| applicationSet.logLevel | string | `""` (defaults to global.logging.level) | ApplicationSet controller log level. One of: `debug`, `info`, `warn`, `error` | +| applicationSet.metrics.enabled | bool | `false` | Deploy metrics service | +| applicationSet.metrics.service.annotations | object | `{}` | Metrics service annotations | +| applicationSet.metrics.service.labels | object | `{}` | Metrics service labels | +| applicationSet.metrics.service.portName | string | `"http-metrics"` | Metrics service port name | +| applicationSet.metrics.service.servicePort | int | `8085` | Metrics service port | +| applicationSet.metrics.serviceMonitor.additionalLabels | object | `{}` | Prometheus ServiceMonitor labels | +| applicationSet.metrics.serviceMonitor.annotations | object | `{}` | Prometheus ServiceMonitor annotations | +| applicationSet.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor | +| applicationSet.metrics.serviceMonitor.interval | string | `"30s"` | Prometheus ServiceMonitor interval | +| applicationSet.metrics.serviceMonitor.metricRelabelings | list | `[]` | Prometheus [MetricRelabelConfigs] to apply to samples before ingestion | +| applicationSet.metrics.serviceMonitor.namespace | string | `""` | Prometheus ServiceMonitor namespace | +| applicationSet.metrics.serviceMonitor.relabelings | list | `[]` | Prometheus [RelabelConfigs] to apply to samples before scraping | +| applicationSet.metrics.serviceMonitor.scheme | string | `""` | Prometheus ServiceMonitor scheme | +| applicationSet.metrics.serviceMonitor.selector | object | `{}` | Prometheus ServiceMonitor selector | +| applicationSet.metrics.serviceMonitor.tlsConfig | object | `{}` | Prometheus ServiceMonitor tlsConfig | +| applicationSet.name | string | `"applicationset-controller"` | Application Set controller name string | +| applicationSet.nodeSelector | object | `{}` | [Node selector] | +| applicationSet.pdb.annotations | object | `{}` | Annotations to be added to ApplicationSet controller pdb | +| applicationSet.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the ApplicationSet controller | +| applicationSet.pdb.labels | object | `{}` | Labels to be added to ApplicationSet controller pdb | +| applicationSet.pdb.maxUnavailable | string | `""` | Number of pods that are unavailble after eviction as number or percentage (eg.: 50%). | +| applicationSet.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) | +| applicationSet.podAnnotations | object | `{}` | Annotations for the controller pods | +| applicationSet.podLabels | object | `{}` | Labels for the controller pods | +| applicationSet.priorityClassName | string | `""` | If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default. | +| applicationSet.readinessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for ApplicationSet controller | +| applicationSet.readinessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded | +| applicationSet.readinessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated | +| applicationSet.readinessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] | +| applicationSet.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed | +| applicationSet.readinessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out | +| applicationSet.replicaCount | int | `1` | The number of ApplicationSet controller pods to run | +| applicationSet.resources | object | `{}` | Resource limits and requests for the controller pods. | +| applicationSet.service.annotations | object | `{}` | Application set service annotations | +| applicationSet.service.labels | object | `{}` | Application set service labels | +| applicationSet.service.port | int | `7000` | Application set service port | +| applicationSet.service.portName | string | `"webhook"` | Application set service port name | +| applicationSet.serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| applicationSet.serviceAccount.create | bool | `true` | Specifies whether a service account should be created | +| applicationSet.serviceAccount.labels | object | `{}` | Labels applied to created service account | +| applicationSet.serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | +| applicationSet.tolerations | list | `[]` | [Tolerations] for use with node taints | +| applicationSet.webhook.ingress.annotations | object | `{}` | Additional ingress annotations | +| applicationSet.webhook.ingress.enabled | bool | `false` | Enable an ingress resource for Webhooks | +| applicationSet.webhook.ingress.extraPaths | list | `[]` | Additional ingress paths | +| applicationSet.webhook.ingress.hosts | list | `[]` | List of ingress hosts | +| applicationSet.webhook.ingress.ingressClassName | string | `""` | Defines which ingress controller will implement the resource | +| applicationSet.webhook.ingress.labels | object | `{}` | Additional ingress labels | +| applicationSet.webhook.ingress.pathType | string | `"Prefix"` | Ingress path type. One of `Exact`, `Prefix` or `ImplementationSpecific` | +| applicationSet.webhook.ingress.paths | list | `["/api/webhook"]` | List of ingress paths | +| applicationSet.webhook.ingress.tls | list | `[]` | Ingress TLS configuration | + +## Notifications + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| notifications.affinity | object | `{}` | Assign custom [affinity] rules | +| notifications.argocdUrl | string | `nil` | Argo CD dashboard url; used in place of {{.context.argocdUrl}} in templates | +| notifications.bots.slack.affinity | object | `{}` | Assign custom [affinity] rules | +| notifications.bots.slack.containerSecurityContext | object | See [values.yaml] | Slack bot container-level security Context | +| notifications.bots.slack.enabled | bool | `false` | Enable slack bot | +| notifications.bots.slack.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the Slack bot | +| notifications.bots.slack.image.repository | string | `""` (defaults to global.image.repository) | Repository to use for the Slack bot | +| notifications.bots.slack.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the Slack bot | +| notifications.bots.slack.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | +| notifications.bots.slack.nodeSelector | object | `{}` | [Node selector] | +| notifications.bots.slack.pdb.annotations | object | `{}` | Annotations to be added to Slack bot pdb | +| notifications.bots.slack.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the Slack bot | +| notifications.bots.slack.pdb.labels | object | `{}` | Labels to be added to Slack bot pdb | +| notifications.bots.slack.pdb.maxUnavailable | string | `""` | Number of pods that are unavailble after eviction as number or percentage (eg.: 50%). | +| notifications.bots.slack.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) | +| notifications.bots.slack.resources | object | `{}` | Resource limits and requests for the Slack bot | +| notifications.bots.slack.service.annotations | object | `{}` | Service annotations for Slack bot | +| notifications.bots.slack.service.port | int | `80` | Service port for Slack bot | +| notifications.bots.slack.service.type | string | `"LoadBalancer"` | Service type for Slack bot | +| notifications.bots.slack.serviceAccount.annotations | object | `{}` | Annotations applied to created service account | +| notifications.bots.slack.serviceAccount.create | bool | `true` | Specifies whether a service account should be created | +| notifications.bots.slack.serviceAccount.name | string | `"argocd-notifications-bot"` | The name of the service account to use. | +| notifications.bots.slack.tolerations | list | `[]` | [Tolerations] for use with node taints | +| notifications.cm.create | bool | `true` | Whether helm chart creates controller config map | +| notifications.containerSecurityContext | object | See [values.yaml] | Notification controller container-level security Context | +| notifications.context | object | `{}` | Define user-defined context | +| notifications.enabled | bool | `true` | Enable notifications controller | +| notifications.extraArgs | list | `[]` | Extra arguments to provide to the controller | +| notifications.extraEnv | list | `[]` | Additional container environment variables | +| notifications.extraEnvFrom | list | `[]` (See [values.yaml]) | envFrom to pass to the controller | +| notifications.extraVolumeMounts | list | `[]` | List of extra mounts to add (normally used with extraVolumes) | +| notifications.extraVolumes | list | `[]` | List of extra volumes to add | +| notifications.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the notifications controller | +| notifications.image.repository | string | `""` (defaults to global.image.repository) | Repository to use for the notifications controller | +| notifications.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the notifications controller | +| notifications.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | +| notifications.logFormat | string | `""` (defaults to global.logging.format) | Application controller log format. Either `text` or `json` | +| notifications.logLevel | string | `""` (defaults to global.logging.level) | Application controller log level. One of: `debug`, `info`, `warn`, `error` | +| notifications.metrics.enabled | bool | `false` | Enables prometheus metrics server | +| notifications.metrics.port | int | `9001` | Metrics port | +| notifications.metrics.service.annotations | object | `{}` | Metrics service annotations | +| notifications.metrics.service.labels | object | `{}` | Metrics service labels | +| notifications.metrics.service.portName | string | `"http-metrics"` | Metrics service port name | +| notifications.metrics.serviceMonitor.additionalLabels | object | `{}` | Prometheus ServiceMonitor labels | +| notifications.metrics.serviceMonitor.annotations | object | `{}` | Prometheus ServiceMonitor annotations | +| notifications.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor | +| notifications.metrics.serviceMonitor.scheme | string | `""` | Prometheus ServiceMonitor scheme | +| notifications.metrics.serviceMonitor.selector | object | `{}` | Prometheus ServiceMonitor selector | +| notifications.metrics.serviceMonitor.tlsConfig | object | `{}` | Prometheus ServiceMonitor tlsConfig | +| notifications.name | string | `"notifications-controller"` | Notifications controller name string | +| notifications.nodeSelector | object | `{}` | [Node selector] | +| notifications.notifiers | object | See [values.yaml] | Configures notification services such as slack, email or custom webhook | +| notifications.pdb.annotations | object | `{}` | Annotations to be added to notifications controller pdb | +| notifications.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the notifications controller | +| notifications.pdb.labels | object | `{}` | Labels to be added to notifications controller pdb | +| notifications.pdb.maxUnavailable | string | `""` | Number of pods that are unavailble after eviction as number or percentage (eg.: 50%). | +| notifications.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) | +| notifications.podAnnotations | object | `{}` | Annotations to be applied to the controller Pods | +| notifications.podLabels | object | `{}` | Labels to be applied to the controller Pods | +| notifications.priorityClassName | string | `""` | Priority class for the controller pods | +| notifications.resources | object | `{}` | Resource limits and requests for the controller | +| notifications.secret.annotations | object | `{}` | key:value pairs of annotations to be added to the secret | +| notifications.secret.create | bool | `true` | Whether helm chart creates controller secret | +| notifications.secret.items | object | `{}` | Generic key:value pairs to be inserted into the secret | +| notifications.serviceAccount.annotations | object | `{}` | Annotations applied to created service account | +| notifications.serviceAccount.create | bool | `true` | Specifies whether a service account should be created | +| notifications.serviceAccount.labels | object | `{}` | Labels applied to created service account | +| notifications.serviceAccount.name | string | `"argocd-notifications-controller"` | The name of the service account to use. | +| notifications.subscriptions | list | `[]` | Contains centrally managed global application subscriptions | +| notifications.templates | object | `{}` | The notification template is used to generate the notification content | +| notifications.tolerations | list | `[]` | [Tolerations] for use with node taints | +| notifications.triggers | object | `{}` | The trigger defines the condition when the notification should be sent | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs) + +[Argo CD RBAC policy]: https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/ +[affinity]: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ +[BackendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig#backendconfigspec_v1beta1_cloudgooglecom +[CSS styles]: https://argo-cd.readthedocs.io/en/stable/operator-manual/custom-styles/ +[external cluster credentials]: https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#clusters +[FrontendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters +[Declarative setup]: https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup +[gRPC-ingress]: https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/ +[HPA]: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ +[MetricRelabelConfigs]: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs +[Node selector]: https://kubernetes.io/docs/user-guide/node-selection/ +[PodDisruptionBudget]: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#pod-disruption-budgets +[probe]: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes +[RelabelConfigs]: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config +[Tolerations]: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +[TopologySpreadConstraints]: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +[values.yaml]: values.yaml +[v2.2 to 2.3 upgrade instructions]: https://github.com/argoproj/argo-cd/blob/v2.3.0/docs/operator-manual/upgrading/2.2-2.3.md diff --git a/charts/argo/argo-cd/5.13.4/charts/redis-ha/Chart.yaml b/charts/argo/argo-cd/5.13.4/charts/redis-ha/Chart.yaml new file mode 100644 index 000000000..567db2ecd --- /dev/null +++ b/charts/argo/argo-cd/5.13.4/charts/redis-ha/Chart.yaml @@ -0,0 +1,21 @@ +apiVersion: v2 +appVersion: 7.0.4 +description: This Helm chart provides a highly available Redis implementation with + a master/slave configuration and uses Sentinel sidecars for failover management +home: http://redis.io/ +icon: https://upload.wikimedia.org/wikipedia/en/thumb/6/6b/Redis_Logo.svg/1200px-Redis_Logo.svg.png +keywords: +- redis +- keyvalue +- database +maintainers: +- email: salimsalaues@gmail.com + name: ssalaues +- email: aaron.layfield@gmail.com + name: dandydeveloper +name: redis-ha +sources: +- https://redis.io/download +- https://github.com/DandyDeveloper/charts/blob/master/charts/redis-ha +- https://github.com/oliver006/redis_exporter +version: 4.22.3 diff --git a/charts/argo/argo-cd/5.13.4/charts/redis-ha/README.md b/charts/argo/argo-cd/5.13.4/charts/redis-ha/README.md new file mode 100644 index 000000000..5be76f3e3 --- /dev/null +++ b/charts/argo/argo-cd/5.13.4/charts/redis-ha/README.md @@ -0,0 +1,396 @@ +# Redis + +[Redis](http://redis.io/) is an advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs. + +## TL;DR + +```bash +helm repo add dandydev https://dandydeveloper.github.io/charts +helm install dandydev/redis-ha +``` + +By default this chart install 3 pods total: + +* one pod containing a redis master and sentinel container (optional prometheus metrics exporter sidecar available) +* two pods each containing a redis slave and sentinel containers (optional prometheus metrics exporter sidecars available) + +## Introduction + +This chart bootstraps a [Redis](https://redis.io) highly available master/slave statefulset in a [Kubernetes](http://kubernetes.io) cluster using the Helm package manager. + +## Prerequisites + +* Kubernetes 1.8+ with Beta APIs enabled +* PV provisioner support in the underlying infrastructure + +## Upgrading the Chart + +Please note that there have been a number of changes simplifying the redis management strategy (for better failover and elections) in the 3.x version of this chart. These changes allow the use of official [redis](https://hub.docker.com/_/redis/) images that do not require special RBAC or ServiceAccount roles. As a result when upgrading from version >=2.0.1 to >=3.0.0 of this chart, `Role`, `RoleBinding`, and `ServiceAccount` resources should be deleted manually. + +### Upgrading the chart from 3.x to 4.x + +Starting from version `4.x` HAProxy sidecar prometheus-exporter removed and replaced by the embedded [HAProxy metrics endpoint](https://github.com/haproxy/haproxy/tree/master/contrib/prometheus-exporter), as a result when upgrading from version 3.x to 4.x section `haproxy.exporter` should be removed and the `haproxy.metrics` need to be configured for fit your needs. + +## Installing the Chart + +To install the chart + +```bash +helm repo add dandydev https://dandydeveloper.github.io/charts +helm install dandydev/redis-ha +``` + +The command deploys Redis on the Kubernetes cluster in the default configuration. By default this chart install one master pod containing redis master container and sentinel container along with 2 redis slave pods each containing their own sentinel sidecars. The [configuration](#configuration) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall/delete the deployment: + +```bash +helm delete +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +## Configuration + +The following table lists the configurable parameters of the Redis chart and their default values. + +| Parameter | Description | Default | +|:--------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------| +| `image.repository` | Redis image repository | `redis` | +| `image.tag` | Redis image tag | `6.2.5-alpine` | +| `image.pullPolicy` | Redis image pull policy | `IfNotPresent` | +| `imagePullSecrets` | Reference to one or more secrets to be used when pulling redis images | [] | +| `tag` | Redis tag | `6.2.5-alpine` | +| `replicas` | Number of redis master/slave pods | `3` | +| `podManagementPolicy` | The statefulset pod management policy | `OrderedReady` | +| `ro_replicas` | Comma separated list of slaves which never get promoted to be master. Count starts with 0. Allowed values 1-9. i.e. 3,4 - 3th and 4th redis slave never make it to be master, where master is index 0. | ``| +| `serviceAccount.create` | Specifies whether a ServiceAccount should be created | `true` | +| `serviceAccount.name` | The name of the ServiceAccount to create | Generated using the redis-ha.fullname template | +| `serviceAccount.automountToken` | Opt in/out of automounting API credentials into container | `false` | +| `serviceAnnotations` | Annotations to set on Redis HA service | `null` | +| `serviceLabels` | Labels to set on Redis HA service | `{}` | +| `rbac.create` | Create and use RBAC resources | `true` | +| `redis.port` | Port to access the redis service | `6379` | +| `redis.tlsPort` | TLS Port to access the redis service |``| +| `redis.tlsReplication` | Configures redis with tls-replication parameter, if true sets "tls-replication yes" in redis.conf |``| +| `redis.authClients` | It is possible to disable client side certificates authentication when "authClients" is set to "no" |``| +| `redis.livenessProbe.initialDelaySeconds` | Initial delay in seconds for liveness probe | `30` | +| `redis.livenessProbe.periodSeconds` | Period in seconds after which liveness probe will be repeated | `15` | +| `redis.livenessProbe.timeoutSeconds` | Timeout seconds for liveness probe | `15` | +| `redis.livenessProbe.successThreshold` | Success threshold for liveness probe | `1` | +| `redis.livenessProbe.failureThreshold` | Failure threshold for liveness probe | `5` | +| `redis.readinessProbe.initialDelaySeconds` | Initial delay in seconds for readiness probe | `30` | +| `redis.readinessProbe.periodSeconds` | Period in seconds after which readiness probe will be repeated | `15` | +| `redis.readinessProbe.timeoutSeconds` | Timeout seconds for readiness probe | `15` | +| `redis.readinessProbe.successThreshold` | Success threshold for readiness probe | `1` | +| `redis.readinessProbe.failureThreshold` | Failure threshold for readiness probe | `5` | +| `redis.masterGroupName` | Redis convention for naming the cluster group: must match `^[\\w-\\.]+$` and can be templated | `mymaster` | +| `redis.disableCommands` | Array with commands to disable | `["FLUSHDB","FLUSHALL"]` | +| `redis.config` | Any valid redis config options in this section will be applied to each server (see below) | see values.yaml | +| `redis.customConfig` | Allows for custom redis.conf files to be applied. If this is used then `redis.config` is ignored |``| +| `redis.resources` | CPU/Memory for master/slave nodes resource requests/limits | `{}` | +| `redis.lifecycle` | Container Lifecycle Hooks for redis container | see values.yaml | +| `redis.annotations` | Annotations for the redis statefulset | `{}` | +| `redis.updateStategy.type`| Update strategy for redis statefulSet | `RollingUpdate` | +| `redis.extraVolumeMounts` | Extra volume mounts for Redis container | `[]` | +| `sentinel.port` | Port to access the sentinel service | `26379` | +| `sentinel.bind` | Configure the 'bind' directive to bind to a list of network interfaces | `` | +| `sentinel.tlsPort` | TLS Port to access the sentinel service |``| +| `sentinel.tlsReplication` | Configures sentinel with tls-replication parameter, if true sets "tls-replication yes" in sentinel.conf |``| +| `sentinel.authClients` | It is possible to disable client side certificates authentication when "authClients" is set to "no" |``| +| `sentinel.livenessProbe.initialDelaySeconds` | Initial delay in seconds for liveness probe | `30` | +| `sentinel.livenessProbe.periodSeconds` | Period in seconds after which liveness probe will be repeated | `15` | +| `sentinel.livenessProbe.timeoutSeconds` | Timeout seconds for liveness probe | `15` | +| `sentinel.livenessProbe.successThreshold` | Success threshold for liveness probe | `1` | +| `sentinel.livenessProbe.failureThreshold` | Failure threshold for liveness probe | `5` | +| `sentinel.readinessProbe.initialDelaySeconds` | Initial delay in seconds for readiness probe | `30` | +| `sentinel.readinessProbe.periodSeconds` | Period in seconds after which readiness probe will be repeated | `15` | +| `sentinel.readinessProbe.timeoutSeconds` | Timeout seconds for readiness probe | `15` | +| `sentinel.readinessProbe.successThreshold` | Success threshold for readiness probe | `3` | +| `sentinel.readinessProbe.failureThreshold` | Failure threshold for readiness probe | `5` | +| `sentinel.auth` | Enables or disables sentinel AUTH (Requires `sentinel.password` to be set) | `false` | +| `sentinel.password` | A password that configures a `requirepass` in the conf parameters (Requires `sentinel.auth: enabled`) |``| +| `sentinel.existingSecret` | An existing secret containing a key defined by `sentinel.authKey` that configures `requirepass` in the conf parameters (Requires `sentinel.auth: enabled`, cannot be used in conjunction with `.Values.sentinel.password`) |``| +| `sentinel.authKey` | The key holding the sentinel password in an existing secret. | `sentinel-password` | +| `sentinel.quorum` | Minimum number of servers necessary to maintain quorum | `2` | +| `sentinel.config` | Valid sentinel config options in this section will be applied as config options to each sentinel (see below) | see values.yaml | +| `sentinel.customConfig` | Allows for custom sentinel.conf files to be applied. If this is used then `sentinel.config` is ignored |``| +| `sentinel.resources` | CPU/Memory for sentinel node resource requests/limits | `{}` | +| `sentinel.lifecycle` | Container Lifecycle Hooks for sentinel container | `{}` | +| `sentinel.extraVolumeMounts` | Extra volume mounts for Sentinel container | `[]` | +| `init.resources` | CPU/Memory for init Container node resource requests/limits | `{}` | +| `auth` | Enables or disables redis AUTH (Requires `redisPassword` to be set) | `false` | +| `redisPassword` | A password that configures a `requirepass` and `masterauth` in the conf parameters (Requires `auth: enabled`) |``| +| `authKey` | The key holding the redis password in an existing secret. | `auth` | +| `existingSecret` | An existing secret containing a key defined by `authKey` that configures `requirepass` and `masterauth` in the conf parameters (Requires `auth: enabled`, cannot be used in conjunction with `.Values.redisPassword`) |``| +| `nodeSelector` | Node labels for pod assignment | `{}` | +| `tolerations` | Toleration labels for pod assignment | `[]` | +| `hardAntiAffinity` | Whether the Redis server pods should be forced to run on separate nodes. | `true` | +| `additionalAffinities` | Additional affinities to add to the Redis server pods. | `{}` | +| `securityContext` | Security context to be added to the Redis StatefulSet. | `{runAsUser: 1000, fsGroup: 1000, runAsNonRoot: true}` | +| `containerSecurityContext` | Security context to be added to the Redis containers. | `{ runAsNonRoot: true, allowPrivilegeEscalation: false, seccompProfile: { type: RuntimeDefault }, capabilities: { drop: [ "ALL" ] }` | +| `affinity` | Override all other affinity settings with a string. | `""` | +| `labels` | Labels for the Redis pod. | `{}` | +| `configmap.labels` | Labels for the Redis configmap. | `{}` | +| `configmapTest.image.repository` | Repository of the configmap shellcheck test image. | `koalaman/shellcheck` | +| `configmapTest.image.tag` | Tag of the configmap shellcheck test image. | `v0.5.0` | +| `configmapTest.resources` | Resources for the ConfigMap tests. | `{}` | +| `persistentVolume.size` | Size for the volume | 10Gi | +| `persistentVolume.annotations` | Annotations for the volume | `{}` | +| `persistentVolume.labels` | Labels for the volume | `{}` | +| `emptyDir` | Configuration of `emptyDir`, used only if persistentVolume is disabled and no hostPath specified | `{}` | +| `exporter.enabled` | If `true`, the prometheus exporter sidecar is enabled | `false` | +| `exporter.image` | Exporter image | `oliver006/redis_exporter` | +| `exporter.tag` | Exporter tag | `v1.27.0` | +| `exporter.port` | Exporter port | `9121` | +| `exporter.portName` | Exporter port name | `exporter-port` | +| `exporter.address` | Redis instance Hostname/Address Exists to circumvent some issues with issues in IPv6 hostname resolution | `localhost` | +| `exporter.annotations` | Prometheus scrape annotations | `{prometheus.io/path: /metrics, prometheus.io/port: "9121", prometheus.io/scrape: "true"}` | +| `exporter.extraArgs` | Additional args for the exporter | `{}` | +| `exporter.script` | A custom custom Lua script that will be mounted to exporter for collection of custom metrics. Creates a ConfigMap and sets env var `REDIS_EXPORTER_SCRIPT`. | | +| `exporter.serviceMonitor.enabled` | Use servicemonitor from prometheus operator | `false` | +| `exporter.serviceMonitor.namespace` | Namespace the service monitor is created in | `default` | +| `exporter.serviceMonitor.interval` | Scrape interval, If not set, the Prometheus default scrape interval is used | `nil` | +| `exporter.serviceMonitor.telemetryPath` | Path to redis-exporter telemetry-path | `/metrics` | +| `exporter.serviceMonitor.labels` | Labels for the servicemonitor passed to Prometheus Operator | `{}` | +| `exporter.serviceMonitor.timeout` | How long until a scrape request times out. If not set, the Prometheus default scape timeout is used | `nil` | +| `haproxy.enabled` | Enabled HAProxy LoadBalancing/Proxy | `false` | +| `haproxy.replicas` | Number of HAProxy instances | `3` | +| `haproxy.servicePort` | Modify HAProxy service port | `6379` | +| `haproxy.containerPort` | Modify HAProxy deployment container port | `6379` +| `haproxy.image.repository`| HAProxy Image Repository | `haproxy` | +| `haproxy.image.tag` | HAProxy Image Tag | `2.4.2` | +| `haproxy.image.pullPolicy`| HAProxy Image PullPolicy | `IfNotPresent` | +| `haproxy.imagePullSecrets`| Reference to one or more secrets to be used when pulling haproxy images | [] | +| `haproxy.tls.enabled` | If "true" this will enable TLS termination on haproxy | `false` +| `haproxy.tls.secretName` | Secret containing the .pem file | `""` +| `haproxy.tls.certMountPath` | Path to mount the secret that contains the certificates. haproxy | `false` +| `haproxy.tls.secretName` | Secret containing the .pem file | `""` +| `haproxy.annotations` | HAProxy template annotations | `{}` | +| `haproxy.customConfig` | Allows for custom config-haproxy.cfg file to be applied. If this is used then default config will be overwriten |``| +| `haproxy.extraConfig` | Allows to place any additional configuration section to add to the default config-haproxy.cfg |``| +| `haproxy.resources` | HAProxy resources | `{}` | +| `haproxy.emptyDir` | Configuration of `emptyDir` | `{}` | +| `haproxy.labels` | Labels for the HAProxy pod | `{}` | +| `haproxy.service.type` | HAProxy service type "ClusterIP", "LoadBalancer" or "NodePort" | `ClusterIP` | +| `haproxy.service.nodePort` | HAProxy service nodePort value (haproxy.service.type must be NodePort) | not set | +| `haproxy.image.serviceAccountName`| HAProxy serviceAccountName | `default` +| `haproxy.service.externalTrafficPolicy`| HAProxy service externalTrafficPolicy value (haproxy.service.type must be LoadBalancer) | not set | +| `haproxy.service.annotations` | HAProxy service annotations | `{}` | +| `haproxy.service.labels` | HAProxy service labels | `{}` | +| `haproxy.stickyBalancing` | HAProxy sticky load balancing to Redis nodes. Helps with connections shutdown. | `false` | +| `haproxy.hapreadport.enable` | Enable a read only port for redis slaves | `false` | +| `haproxy.hapreadport.port` | Haproxy port for read only redis slaves | `6380` | +| `haproxy.metrics.enabled` | HAProxy enable prometheus metric scraping | `false` | +| `haproxy.metrics.port` | HAProxy prometheus metrics scraping port | `9101` | +| `haproxy.metrics.portName` | HAProxy metrics scraping port name | `http-exporter-port` | +| `haproxy.metrics.scrapePath` | HAProxy prometheus metrics scraping port | `/metrics` | +| `haproxy.metrics.serviceMonitor.enabled` | Use servicemonitor from prometheus operator for HAProxy metrics | `false` | +| `haproxy.metrics.serviceMonitor.namespace` | Namespace the service monitor for HAProxy metrics is created in | `default` | +| `haproxy.metrics.serviceMonitor.interval` | Scrape interval, If not set, the Prometheus default scrape interval is used | `nil` | +| `haproxy.metrics.serviceMonitor.telemetryPath` | Path to HAProxy metrics telemetry-path | `/metrics` | +| `haproxy.metrics.serviceMonitor.labels` | Labels for the HAProxy metrics servicemonitor passed to Prometheus Operator | `{}` | +| `haproxy.metrics.serviceMonitor.timeout` | How long until a scrape request times out. If not set, the Prometheus default scape timeout is used | `nil` | +| `haproxy.init.resources` | Extra init resources | `{}` | +| `haproxy.timeout.connect` | haproxy.cfg `timeout connect` setting | `4s` | +| `haproxy.timeout.server` | haproxy.cfg `timeout server` setting | `30s` | +| `haproxy.timeout.client` | haproxy.cfg `timeout client` setting | `30s` | +| `haproxy.timeout.check` | haproxy.cfg `timeout check` setting | `2s` | +| `haproxy.checkInterval` | haproxy.cfg `check inter` setting | `1s` | +| `haproxy.checkFall` | haproxy.cfg `check fall` setting | `1` | +| `haproxy.priorityClassName` | priorityClassName for `haproxy` deployment | not set | +| `haproxy.securityContext` | Security context to be added to the HAProxy deployment. | `{runAsUser: 99, fsGroup: 99, runAsNonRoot: true}` | +| `haproxy.containerSecurityContext` | Security context to be added to the HAProxy containers. | `{ runAsNonRoot: true, allowPrivilegeEscalation: false, seccompProfile: { type: RuntimeDefault }, capabilities: { drop: [ "ALL" ] }` | +| `haproxy.hardAntiAffinity` | Whether the haproxy pods should be forced to run on separate nodes. | `true` | +| `haproxy.affinity` | Override all other haproxy affinity settings with a string. | `""` | +| `haproxy.additionalAffinities` | Additional affinities to add to the haproxy server pods. | `{}` | +| `haproxy.tests.resources` | Pod resources for the tests against HAProxy. | `{}` | +| `haproxy.IPv6.enabled` | Disables certain binding options to support non-IPv6 environments. | `true` | +| `podDisruptionBudget` | Pod Disruption Budget rules | `{}` | +| `nameOverride` | Override the chart name | `""` | +| `fullnameOverride` | Fully override the release name and chart name | `""` | +| `priorityClassName` | priorityClassName for `redis-ha-statefulset` | not set | +| `hostPath.path` | Use this path on the host for data storage | not set | +| `hostPath.chown` | Run an init-container as root to set ownership on the hostPath | `true` | +| `sysctlImage.enabled` | Enable an init container to modify Kernel settings | `false` | +| `sysctlImage.command` | sysctlImage command to execute | [] | +| `sysctlImage.registry` | sysctlImage Init container registry | `docker.io` | +| `sysctlImage.repository` | sysctlImage Init container name | `busybox` | +| `sysctlImage.tag` | sysctlImage Init container tag | `1.31.1` | +| `sysctlImage.pullPolicy` | sysctlImage Init container pull policy | `Always` | +| `sysctlImage.mountHostSys`| Mount the host `/sys` folder to `/host-sys` | `false` | +| `sysctlImage.resources` | sysctlImage resources | `{}` | +| `schedulerName` | Alternate scheduler name | `nil` | +| `tls.secretName` | The name of secret if you want to use your own TLS certificates. The secret should contains keys named by "tls.certFile" - the certificate, "tls.keyFile" - the private key, "tls.caCertFile" - the certificate of CA and "tls.dhParamsFile" - the dh parameter file | ``| +| `tls.certFile` | Name of certificate file | `redis.crt` | +| `tls.keyFile` | Name of key file | `redis.key` | +| `tls.dhParamsFile` | Name of Diffie-Hellman (DH) key exchange parameters file |`` | +| `tls.caCertFile` | Name of CA certificate file | `ca.crt` | +| `restore.s3.source` | Restore init container - AWS S3 location of dump - i.e. s3://bucket/dump.rdb | `false` | +| `restore.existingSecret` | Set to true to use existingSecret for the AWS S3 or SSH credentials | `false` | +| `topologySpreadConstraints.enabled` | Enable topology spread constraints |`false`| +| `topologySpreadConstraints.maxSkew` | Max skew of pods tolerated |`1`| +| `topologySpreadConstraints.topologyKey` | Topology key for spread |`topology.kubernetes.io/zone`| +| `topologySpreadConstraints.whenUnsatisfiable` | Enforcement policy, hard or soft |`ScheduleAnyway`| +| `restore.s3.access_key` | Restore init container - AWS AWS_ACCESS_KEY_ID to access restore.s3.source |``| +| `restore.s3.secret_key` | Restore init container - AWS AWS_SECRET_ACCESS_KEY to access restore.s3.source |``| +| `restore.s3.region` | Restore init container - AWS AWS_REGION to access restore.s3.source |``| +| `restore.ssh.source` | Restore init container - SSH scp location of dump - i.e. user@server:/path/dump.rdb | `false` | +| `restore.ssh.key` | Restore init container - SSH private key to scp restore.ssh.source to init container. Key should be in one line separated with \n. i.e. -----BEGIN RSA PRIVATE KEY-----\n...\n...\n-----END RSA PRIVATE KEY----- |`` | +| `extraContainers` | Extra containers to include in StatefulSet |`[]`| +| `extraInitContainers` | Extra init containers to include in StatefulSet |`[]`| +| `extraVolumes` | Extra volumes to include in StatefulSet |`[]`| +| `extraLabels` | Labels that should be applied to all created resources |`{}`| +| `networkPolicy.enabled` | Create NetworkPolicy for Redis StatefulSet pods |`false`| +| `networkPolicy.labels` | Labels for NetworkPolicy |`{}`| +| `networkPolicy.annotations` | Annotations for NetworkPolicy |`{}`| +| `networkPolicy.ingressRules[].selectors` | Label selector query to define resources for this ingress rule |`[]`| +| `networkPolicy.ingressRules[].ports` | The destination ports for the ingress rule |`[{port: redis.port, protocol: TCP}, {port: sentinel.port, protocol: TCP}]`| +| `networkPolicy.egressRules[].selectors` | Label selector query to define resources for this egress rule |`[]`| +| `networkPolicy.egressRules[].ports` | The destination ports for the egress rule |``| +| `splitBrainDetection.interval` | Interval between redis sentinel and server split brain checks (in seconds) |`60`| +| `splitBrainDetection.resources` | splitBrainDetection resources |`{}`| + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```bash +$ helm repo add dandydev https://dandydeveloper.github.io/charts +$ helm install \ + --set image=redis \ + --set tag=5.0.5-alpine \ + dandydev/redis-ha +``` + +The above command sets the Redis server within `default` namespace. + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, + +```bash +helm install -f values.yaml dandydev/redis-ha +``` + +> **Tip**: You can use the default [values.yaml](values.yaml) + +## Custom Redis and Sentinel config options + +This chart allows for most redis or sentinel config options to be passed as a key value pair through the `values.yaml` under `redis.config` and `sentinel.config`. See links below for all available options. + +[Example redis.conf](http://download.redis.io/redis-stable/redis.conf) +[Example sentinel.conf](http://download.redis.io/redis-stable/sentinel.conf) + +For example `repl-timeout 60` would be added to the `redis.config` section of the `values.yaml` as: + +```yml + repl-timeout: "60" +``` + +Note: + +1. Some config options should be renamed by redis version,e.g.: + + ```yml + # In redis 5.x,see https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf + min-replicas-to-write: 1 + min-replicas-max-lag: 5 + + # In redis 4.x and redis 3.x,see https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf and https://raw.githubusercontent.com/antirez/redis/3.0/redis.conf + min-slaves-to-write 1 + min-slaves-max-lag 5 + ``` + +Sentinel options supported must be in the the `sentinel