123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- apiVersion: apps/v1
- kind: StatefulSet
- metadata:
- {{- with (mergeOverwrite (deepCopy .Values.global.statefulsetAnnotations) .Values.controller.statefulsetAnnotations) }}
- annotations:
- {{- range $key, $value := . }}
- {{ $key }}: {{ $value | quote }}
- {{- end }}
- {{- end }}
- name: {{ template "argo-cd.controller.fullname" . }}
- namespace: {{ .Release.Namespace | quote }}
- labels:
- {{- include "argo-cd.labels" (dict "context" . "component" .Values.controller.name "name" .Values.controller.name) | nindent 4 }}
- spec:
- replicas: {{ .Values.controller.replicas }}
- # TODO: Remove for breaking release as history limit cannot be patched
- revisionHistoryLimit: 5
- serviceName: {{ include "argo-cd.controller.fullname" . }}
- selector:
- matchLabels:
- {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.controller.name) | nindent 6 }}
- template:
- metadata:
- annotations:
- checksum/cmd-params: {{ include (print $.Template.BasePath "/argocd-configs/argocd-cmd-params-cm.yaml") . | sha256sum }}
- {{- if (hasKey .Values.server "configEnabled") | ternary .Values.server.configEnabled .Values.configs.cm.create }}
- checksum/cm: {{ include (print $.Template.BasePath "/argocd-configs/argocd-cm.yaml") . | sha256sum }}
- {{- end }}
- {{- with (mergeOverwrite (deepCopy .Values.global.podAnnotations) .Values.controller.podAnnotations) }}
- {{- range $key, $value := . }}
- {{ $key }}: {{ $value | quote }}
- {{- end }}
- {{- end }}
- labels:
- {{- include "argo-cd.labels" (dict "context" . "component" .Values.controller.name "name" .Values.controller.name) | nindent 8 }}
- {{- with (mergeOverwrite (deepCopy .Values.global.podLabels) .Values.controller.podLabels) }}
- {{- toYaml . | nindent 8 }}
- {{- end }}
- spec:
- {{- with .Values.controller.imagePullSecrets | default .Values.global.imagePullSecrets }}
- imagePullSecrets:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.global.hostAliases }}
- hostAliases:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.global.securityContext }}
- securityContext:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.controller.priorityClassName | default .Values.global.priorityClassName }}
- priorityClassName: {{ . }}
- {{- end }}
- {{- if .Values.controller.terminationGracePeriodSeconds }}
- terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
- {{- end }}
- serviceAccountName: {{ include "argo-cd.controller.serviceAccountName" . }}
- containers:
- - args:
- - /usr/local/bin/argocd-application-controller
- - --metrics-port={{ .Values.controller.containerPorts.metrics }}
- {{- if .Values.controller.metrics.applicationLabels.enabled }}
- {{- range .Values.controller.metrics.applicationLabels.labels }}
- - --metrics-application-labels
- - {{ . }}
- {{- end }}
- {{- end }}
- {{- with .Values.controller.args.statusProcessors }}
- - --status-processors
- - {{ . | quote }}
- {{- end }}
- {{- with .Values.controller.args.operationProcessors }}
- - --operation-processors
- - {{ . | quote }}
- {{- end }}
- {{- with .Values.controller.args.appResyncPeriod }}
- - --app-resync
- - {{ . | quote }}
- {{- end }}
- {{- with .Values.controller.args.appHardResyncPeriod }}
- - --app-hard-resync
- - {{ . | quote }}
- {{- end }}
- {{- with .Values.controller.args.selfHealTimeout }}
- - --self-heal-timeout-seconds
- - {{ . | quote }}
- {{- end }}
- {{- with .Values.controller.args.repoServerTimeoutSeconds }}
- - --repo-server-timeout-seconds
- - {{ . | quote }}
- {{- end }}
- {{- with .Values.controller.logFormat }}
- - --logformat
- - {{ . | quote }}
- {{- end }}
- {{- with .Values.controller.logLevel }}
- - --loglevel
- - {{ . | quote }}
- {{- end }}
- {{- with .Values.controller.extraArgs }}
- {{- toYaml . | nindent 8 }}
- {{- end }}
- image: {{ default .Values.global.image.repository .Values.controller.image.repository }}:{{ default (include "argo-cd.defaultTag" .) .Values.controller.image.tag }}
- imagePullPolicy: {{ default .Values.global.image.imagePullPolicy .Values.controller.image.imagePullPolicy }}
- name: {{ .Values.controller.name }}
- env:
- {{- with (concat .Values.global.env .Values.controller.env) }}
- {{- toYaml . | nindent 10 }}
- {{- end }}
- - name: ARGOCD_CONTROLLER_REPLICAS
- value: {{ .Values.controller.replicas | quote }}
- - name: ARGOCD_RECONCILIATION_TIMEOUT
- valueFrom:
- configMapKeyRef:
- name: argocd-cm
- key: timeout.reconciliation
- optional: true
- - name: ARGOCD_HARD_RECONCILIATION_TIMEOUT
- valueFrom:
- configMapKeyRef:
- name: argocd-cm
- key: timeout.hard.reconciliation
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: repo.server
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_TIMEOUT_SECONDS
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.repo.server.timeout.seconds
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_STATUS_PROCESSORS
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.status.processors
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_OPERATION_PROCESSORS
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.operation.processors
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_LOGFORMAT
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.log.format
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_LOGLEVEL
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.log.level
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_METRICS_CACHE_EXPIRATION
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.metrics.cache.expiration
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_SELF_HEAL_TIMEOUT_SECONDS
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.self.heal.timeout.seconds
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_PLAINTEXT
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.repo.server.plaintext
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER_STRICT_TLS
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.repo.server.strict.tls
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_PERSIST_RESOURCE_HEALTH
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.resource.health.persist
- optional: true
- - name: ARGOCD_APP_STATE_CACHE_EXPIRATION
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.app.state.cache.expiration
- optional: true
- - name: REDIS_SERVER
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: redis.server
- optional: true
- - name: REDIS_COMPRESSION
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: redis.compression
- optional: true
- - name: REDISDB
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: redis.db
- optional: true
- - name: REDIS_USERNAME
- valueFrom:
- secretKeyRef:
- name: {{ default (include "argo-cd.redis.fullname" .) .Values.externalRedis.existingSecret }}
- key: redis-username
- optional: true
- - name: REDIS_PASSWORD
- valueFrom:
- secretKeyRef:
- name: {{ default (include "argo-cd.redis.fullname" .) .Values.externalRedis.existingSecret }}
- key: redis-password
- optional: true
- - name: ARGOCD_DEFAULT_CACHE_EXPIRATION
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.default.cache.expiration
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_OTLP_ADDRESS
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: otlp.address
- optional: true
- - name: ARGOCD_APPLICATION_NAMESPACES
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: application.namespaces
- optional: true
- - name: ARGOCD_CONTROLLER_SHARDING_ALGORITHM
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.sharding.algorithm
- optional: true
- - name: ARGOCD_APPLICATION_CONTROLLER_KUBECTL_PARALLELISM_LIMIT
- valueFrom:
- configMapKeyRef:
- name: argocd-cmd-params-cm
- key: controller.kubectl.parallelism.limit
- optional: true
- {{- with .Values.controller.envFrom }}
- envFrom:
- {{- toYaml . | nindent 10 }}
- {{- end }}
- ports:
- - name: metrics
- containerPort: {{ .Values.controller.containerPorts.metrics }}
- protocol: TCP
- readinessProbe:
- httpGet:
- path: /healthz
- port: metrics
- initialDelaySeconds: {{ .Values.controller.readinessProbe.initialDelaySeconds }}
- periodSeconds: {{ .Values.controller.readinessProbe.periodSeconds }}
- timeoutSeconds: {{ .Values.controller.readinessProbe.timeoutSeconds }}
- successThreshold: {{ .Values.controller.readinessProbe.successThreshold }}
- failureThreshold: {{ .Values.controller.readinessProbe.failureThreshold }}
- resources:
- {{- toYaml .Values.controller.resources | nindent 10 }}
- {{- with .Values.controller.containerSecurityContext }}
- securityContext:
- {{- toYaml . | nindent 10 }}
- {{- end }}
- workingDir: /home/argocd
- volumeMounts:
- {{- with .Values.controller.volumeMounts }}
- {{- toYaml . | nindent 8 }}
- {{- end }}
- - mountPath: /app/config/controller/tls
- name: argocd-repo-server-tls
- - mountPath: /home/argocd
- name: argocd-home
- {{- with .Values.controller.extraContainers }}
- {{- tpl (toYaml .) $ | nindent 6 }}
- {{- end }}
- {{- with .Values.controller.initContainers }}
- initContainers:
- {{- tpl (toYaml .) $ | nindent 6 }}
- {{- end }}
- {{- with include "argo-cd.affinity" (dict "context" . "component" .Values.controller) }}
- affinity:
- {{- trim . | nindent 8 }}
- {{- end }}
- {{- with .Values.controller.nodeSelector | default .Values.global.nodeSelector }}
- nodeSelector:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.controller.tolerations | default .Values.global.tolerations }}
- tolerations:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.controller.topologySpreadConstraints | default .Values.global.topologySpreadConstraints }}
- topologySpreadConstraints:
- {{- range $constraint := . }}
- - {{ toYaml $constraint | nindent 8 | trim }}
- {{- if not $constraint.labelSelector }}
- labelSelector:
- matchLabels:
- {{- include "argo-cd.selectorLabels" (dict "context" $ "name" $.Values.controller.name) | nindent 12 }}
- {{- end }}
- {{- end }}
- {{- end }}
- volumes:
- {{- with .Values.controller.volumes }}
- {{- toYaml . | nindent 6 }}
- {{- end }}
- - name: argocd-home
- emptyDir: {}
- - name: argocd-repo-server-tls
- secret:
- secretName: argocd-repo-server-tls
- optional: true
- items:
- - key: tls.crt
- path: tls.crt
- - key: tls.key
- path: tls.key
- - key: ca.crt
- path: ca.crt
- {{- if .Values.controller.hostNetwork }}
- hostNetwork: {{ .Values.controller.hostNetwork }}
- {{- end }}
- {{- with .Values.controller.dnsConfig }}
- dnsConfig:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- dnsPolicy: {{ .Values.controller.dnsPolicy }}
|