diff --git a/charts/argo-cd/Chart.yaml b/charts/argo-cd/Chart.yaml index df01cfe03..cc2e0870b 100644 --- a/charts/argo-cd/Chart.yaml +++ b/charts/argo-cd/Chart.yaml @@ -3,7 +3,7 @@ appVersion: v2.5.2 kubeVersion: ">=1.22.0-0" description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. name: argo-cd -version: 5.13.9 +version: 5.14.0 home: https://github.com/argoproj/argo-helm icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png sources: @@ -23,4 +23,5 @@ dependencies: condition: redis-ha.enabled annotations: artifacthub.io/changes: | - - "[Changed]: Document imporatant changes in changelog" + - "[Add]: Support to deploy argocd-repo-server as a StatefulSet" + - "[Add]: Creation of PVC for argocd-repo-server" diff --git a/charts/argo-cd/templates/_helpers.tpl b/charts/argo-cd/templates/_helpers.tpl index 5bdbd8719..324ad83ec 100644 --- a/charts/argo-cd/templates/_helpers.tpl +++ b/charts/argo-cd/templates/_helpers.tpl @@ -217,3 +217,20 @@ Merge Argo Params Configuration with Preset Configuration {{ $key }}: {{ toString $value | toYaml }} {{- end }} {{- end -}} + +{{/* +Return a PersistentVolumeClaim structure +*/}} +{{- define "argo-cd.repoServer.persistentVolumeClaim" -}} +- apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: {{ .name }} + spec: + accessModes: {{ .context.accessModes }} + resources: + requests: + storage: {{ .context.storage }} + storageClassName: {{ .context.storageClassName }} + volumeMode: Filesystem +{{- end -}} diff --git a/charts/argo-cd/templates/argocd-repo-server/deployment.yaml b/charts/argo-cd/templates/argocd-repo-server/deployment.yaml index 3437b8d33..904020b97 100755 --- a/charts/argo-cd/templates/argocd-repo-server/deployment.yaml +++ b/charts/argo-cd/templates/argocd-repo-server/deployment.yaml @@ -1,10 +1,17 @@ apiVersion: apps/v1 +{{- if .Values.repoServer.enableStatefulSet }} +kind: StatefulSet +{{- else }} kind: Deployment +{{- end }} metadata: name: {{ template "argo-cd.repoServer.fullname" . }} labels: {{- include "argo-cd.labels" (dict "context" . "component" .Values.repoServer.name "name" .Values.repoServer.name) | nindent 4 }} spec: + {{- if .Values.repoServer.enableStatefulSet }} + serviceName: {{ template "argo-cd.repoServerServiceAccountName" . }} + {{- end }} {{- if not .Values.repoServer.autoscaling.enabled }} replicas: {{ .Values.repoServer.replicas }} {{- end }} @@ -289,14 +296,22 @@ spec: {{- with .Values.repoServer.volumes }} {{- toYaml . | nindent 6 }} {{- end }} + {{- if not $.Values.repoServer.volumeClaimTemplates.helm_working_dir }} - name: helm-working-dir emptyDir: {} + {{- end }} + {{- if not $.Values.repoServer.volumeClaimTemplates.plugins }} - name: plugins emptyDir: {} + {{- end }} + {{- if not $.Values.repoServer.volumeClaimTemplates.var_files }} - name: var-files emptyDir: {} - - name: tmp + {{- end }} + {{- if not $.Values.repoServer.volumeClaimTemplates.tmp_dir }} + - name: tmp-dir emptyDir: {} + {{- end }} - name: ssh-known-hosts configMap: name: argocd-ssh-known-hosts-cm @@ -306,8 +321,10 @@ spec: - name: gpg-keys configMap: name: argocd-gpg-keys-cm + {{- if not $.Values.repoServer.volumeClaimTemplates.gpg_keyring }} - name: gpg-keyring emptyDir: {} + {{- end }} - name: argocd-repo-server-tls secret: secretName: argocd-repo-server-tls @@ -345,3 +362,21 @@ spec: {{- with .Values.repoServer.priorityClassName }} priorityClassName: {{ . }} {{- end }} +{{- if .Values.repoServer.volumeClaimTemplates }} + volumeClaimTemplates: +{{- if .Values.repoServer.volumeClaimTemplates.gpg_keyring }} +{{- include "argo-cd.repoServer.persistentVolumeClaim" (dict "context" .Values.repoServer.volumeClaimTemplates.gpg_keyring "name" "gpg-keyring" ) | nindent 4 }} +{{- end }} +{{- if .Values.repoServer.volumeClaimTemplates.helm_working_dir }} +{{- include "argo-cd.repoServer.persistentVolumeClaim" (dict "context" .Values.repoServer.volumeClaimTemplates.helm_working_dir "name" "helm-working-dir" ) | nindent 4 }} +{{- end }} +{{- if .Values.repoServer.volumeClaimTemplates.tmp_dir }} +{{- include "argo-cd.repoServer.persistentVolumeClaim" (dict "context" .Values.repoServer.volumeClaimTemplates.tmp_dir "name" "tmp-dir" ) | nindent 4 }} +{{- end }} +{{- if .Values.repoServer.volumeClaimTemplates.var_files }} +{{- include "argo-cd.repoServer.persistentVolumeClaim" (dict "context" .Values.repoServer.volumeClaimTemplates.var_files "name" "var-files" ) | nindent 4 }} +{{- end }} +{{- if .Values.repoServer.volumeClaimTemplates.plugins }} +{{- include "argo-cd.repoServer.persistentVolumeClaim" (dict "context" .Values.repoServer.volumeClaimTemplates.plugins "name" "plugins" ) | nindent 4 }} +{{- end }} +{{- end }} diff --git a/charts/argo-cd/values.yaml b/charts/argo-cd/values.yaml index 1dfae6c10..7b42a06a6 100755 --- a/charts/argo-cd/values.yaml +++ b/charts/argo-cd/values.yaml @@ -1951,6 +1951,32 @@ repoServer: # - name: custom-tools # emptyDir: {} + # deploy argocd-repo-server as a statefulset (in this case it is mandatory to have a service account) + enableStatefulSet: false + + # create a list of persistent volumes to be created with your deployment or statefulset + volumeClaimTemplates: {} + # tmp_dir: + # accessModes: [ReadWriteOnce] + # storage: 1Gi + # storageClassName: gp2-topology-aware + # gpg_keyring: + # accessModes: [ReadWriteOnce] + # storage: 1Gi + # storageClassName: gp2-topology-aware + # helm_working_dir: + # accessModes: [ReadWriteOnce] + # storage: 1Gi + # storageClassName: gp2-topology-aware + # var_files: + # accessModes: [ReadWriteOnce] + # storage: 1Gi + # storageClassName: gp2-topology-aware + # plugins: + # accessModes: [ReadWriteOnce] + # storage: 1Gi + # storageClassName: gp2-topology-aware + # -- [Node selector] nodeSelector: {} # -- [Tolerations] for use with node taints