Merge pull request #69 from codefresh-io/CR-22894-argo-cd-2-10-helm-5-55

feat: argo 2.10 on helm base 5.55
This commit is contained in:
Oleksandr Saulyak 2024-04-12 14:48:59 +03:00 committed by GitHub
commit ca1ded9260
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 428 additions and 40 deletions

View file

@ -124,7 +124,7 @@ helm install charts/argo-workflows -n argo
argo version argo version
``` ```
Follow [these](https://argoproj.github.io/argo-workflows/quick-start/#submitting-an-example-workflow) instructions for running a hello world workflow. Follow [these](https://argo-workflows.readthedocs.io/en/stable/quick-start/#submitting-an-example-workflow) instructions for running a hello world workflow.
### Testing Argo CD Changes ### Testing Argo CD Changes

View file

@ -1,9 +1,9 @@
apiVersion: v2 apiVersion: v2
appVersion: v2.9-2024.4.10-dcc1723fd appVersion: v2.10-2024.3.29-1dcc54e29
kubeVersion: ">=1.23.0-0" kubeVersion: ">=1.23.0-0"
description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes.
name: argo-cd name: argo-cd
version: 5.53.12-10-cap-2.9-2024.4.10-dcc1723fd version: 5.55.0-1-cap-2.10-2024.3.29-1dcc54e29
home: https://github.com/argoproj/argo-helm home: https://github.com/argoproj/argo-helm
icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
sources: sources:
@ -27,4 +27,4 @@ annotations:
url: https://argoproj.github.io/argo-helm/pgp_keys.asc url: https://argoproj.github.io/argo-helm/pgp_keys.asc
artifacthub.io/changes: | artifacthub.io/changes: |
- kind: changed - kind: changed
description: Upgrade argo-cd to v2.9-2024.4.10-dcc1723fd which includes fix for application versions description: Upgrade argo-cd to v2.10-2024.3.29-1dcc54e29

View file

@ -1044,6 +1044,18 @@ server:
| redis.exporter.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the redis-exporter | | redis.exporter.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the redis-exporter |
| redis.exporter.image.repository | string | `"public.ecr.aws/bitnami/redis-exporter"` | Repository to use for the redis-exporter | | redis.exporter.image.repository | string | `"public.ecr.aws/bitnami/redis-exporter"` | Repository to use for the redis-exporter |
| redis.exporter.image.tag | string | `"1.57.0"` | Tag to use for the redis-exporter | | redis.exporter.image.tag | string | `"1.57.0"` | Tag to use for the redis-exporter |
| redis.exporter.livenessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for Redis exporter |
| redis.exporter.livenessProbe.failureThreshold | int | `5` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded |
| redis.exporter.livenessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before [probe] is initiated |
| redis.exporter.livenessProbe.periodSeconds | int | `15` | How often (in seconds) to perform the [probe] |
| redis.exporter.livenessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed |
| redis.exporter.livenessProbe.timeoutSeconds | int | `15` | Number of seconds after which the [probe] times out |
| redis.exporter.readinessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for Redis exporter (optional) |
| redis.exporter.readinessProbe.failureThreshold | int | `5` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded |
| redis.exporter.readinessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before [probe] is initiated |
| redis.exporter.readinessProbe.periodSeconds | int | `15` | How often (in seconds) to perform the [probe] |
| redis.exporter.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed |
| redis.exporter.readinessProbe.timeoutSeconds | int | `15` | Number of seconds after which the [probe] times out |
| redis.exporter.resources | object | `{}` | Resource limits and requests for redis-exporter sidecar | | redis.exporter.resources | object | `{}` | Resource limits and requests for redis-exporter sidecar |
| redis.extraArgs | list | `[]` | Additional command line arguments to pass to 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.extraContainers | list | `[]` | Additional containers to be added to the redis pod |
@ -1052,6 +1064,12 @@ server:
| redis.image.tag | string | `"7.0.15-alpine"` | Redis tag | | redis.image.tag | string | `"7.0.15-alpine"` | Redis tag |
| redis.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry | | 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.initContainers | list | `[]` | Init containers to add to the redis pod |
| redis.livenessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for Redis server |
| redis.livenessProbe.failureThreshold | int | `5` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded |
| redis.livenessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before [probe] is initiated |
| redis.livenessProbe.periodSeconds | int | `15` | How often (in seconds) to perform the [probe] |
| redis.livenessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed |
| redis.livenessProbe.timeoutSeconds | int | `15` | Number of seconds after which the [probe] times out |
| redis.metrics.enabled | bool | `false` | Deploy metrics service | | redis.metrics.enabled | bool | `false` | Deploy metrics service |
| redis.metrics.service.annotations | object | `{}` | Metrics service annotations | | 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.clusterIP | string | `"None"` | Metrics service clusterIP. `None` makes a "headless service" (no virtual IP) |
@ -1079,6 +1097,12 @@ server:
| redis.podAnnotations | object | `{}` | Annotations to be added to the Redis server pods | | 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.podLabels | object | `{}` | Labels to be added to the Redis server pods |
| redis.priorityClassName | string | `""` (defaults to global.priorityClassName) | Priority class for redis pods | | redis.priorityClassName | string | `""` (defaults to global.priorityClassName) | Priority class for redis pods |
| redis.readinessProbe.enabled | bool | `false` | Enable Kubernetes liveness probe for Redis server |
| redis.readinessProbe.failureThreshold | int | `5` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded |
| redis.readinessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before [probe] is initiated |
| redis.readinessProbe.periodSeconds | int | `15` | How often (in seconds) to perform the [probe] |
| redis.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed |
| redis.readinessProbe.timeoutSeconds | int | `15` | Number of seconds after which the [probe] times out |
| redis.resources | object | `{}` | Resource limits and requests for redis | | redis.resources | object | `{}` | Resource limits and requests for redis |
| redis.securityContext | object | See [values.yaml] | Redis pod-level security context | | redis.securityContext | object | See [values.yaml] | Redis pod-level security context |
| redis.service.annotations | object | `{}` | Redis service annotations | | redis.service.annotations | object | `{}` | Redis service annotations |

View file

@ -122,6 +122,18 @@ spec:
name: argocd-cm name: argocd-cm
key: timeout.hard.reconciliation key: timeout.hard.reconciliation
optional: true optional: true
- name: ARGOCD_RECONCILIATION_JITTER
valueFrom:
configMapKeyRef:
key: timeout.reconciliation.jitter
name: argocd-cm
optional: true
- name: ARGOCD_REPO_ERROR_GRACE_PERIOD_SECONDS
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: controller.repo.error.grace.period.seconds
optional: true
- name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER - name: ARGOCD_APPLICATION_CONTROLLER_REPO_SERVER
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:
@ -236,6 +248,18 @@ spec:
name: argocd-cmd-params-cm name: argocd-cmd-params-cm
key: otlp.address key: otlp.address
optional: true optional: true
- name: ARGOCD_APPLICATION_CONTROLLER_OTLP_INSECURE
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: otlp.insecure
optional: true
- name: ARGOCD_APPLICATION_CONTROLLER_OTLP_HEADERS
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: otlp.headers
optional: true
- name: ARGOCD_APPLICATION_NAMESPACES - name: ARGOCD_APPLICATION_NAMESPACES
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:
@ -254,6 +278,24 @@ spec:
name: argocd-cmd-params-cm name: argocd-cmd-params-cm
key: controller.kubectl.parallelism.limit key: controller.kubectl.parallelism.limit
optional: true optional: true
- name: ARGOCD_K8SCLIENT_RETRY_MAX
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: controller.k8sclient.retry.max
optional: true
- name: ARGOCD_K8SCLIENT_RETRY_BASE_BACKOFF
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: controller.k8sclient.retry.base.backoff
optional: true
- name: ARGOCD_APPLICATION_CONTROLLER_SERVER_SIDE_DIFF
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: controller.diff.server.side
optional: true
{{- with .Values.controller.envFrom }} {{- with .Values.controller.envFrom }}
envFrom: envFrom:
{{- toYaml . | nindent 10 }} {{- toYaml . | nindent 10 }}

View file

@ -210,6 +210,12 @@ spec:
name: argocd-cmd-params-cm name: argocd-cmd-params-cm
key: applicationsetcontroller.allowed.scm.providers key: applicationsetcontroller.allowed.scm.providers
optional: true optional: true
- name: ARGOCD_APPLICATIONSET_CONTROLLER_ENABLE_SCM_PROVIDERS
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: applicationsetcontroller.enable.scm.providers
optional: true
{{- with .Values.applicationSet.extraEnvFrom }} {{- with .Values.applicationSet.extraEnvFrom }}
envFrom: envFrom:
{{- toYaml . | nindent 12 }} {{- toYaml . | nindent 12 }}

View file

@ -10,13 +10,42 @@ rules:
{{- toYaml . | nindent 2 }} {{- toYaml . | nindent 2 }}
{{- end }} {{- end }}
- apiGroups: - apiGroups:
- "argoproj.io" - argoproj.io
resources: resources:
- "applications" - applications
- appprojects
verbs: verbs:
- get - get
- list - list
- watch - watch
- update - update
- patch - patch
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- list
- watch
{{- if .Values.notifications.cm.create }}
- apiGroups:
- ""
resourceNames:
- argocd-notifications-cm
resources:
- configmaps
verbs:
- get
{{- end }}
{{- if .Values.notifications.secret.create }}
- apiGroups:
- ""
resourceNames:
- argocd-notifications-secret
resources:
- secrets
verbs:
- get
{{- end }}
{{- end }} {{- end }}

View file

@ -91,6 +91,12 @@ spec:
key: application.namespaces key: application.namespaces
name: argocd-cmd-params-cm name: argocd-cmd-params-cm
optional: true optional: true
- name: ARGOCD_NOTIFICATION_CONTROLLER_SELF_SERVICE_NOTIFICATION_ENABLED
valueFrom:
configMapKeyRef:
key: notificationscontroller.selfservice.enabled
name: argocd-cmd-params-cm
optional: true
{{- with .Values.notifications.extraEnvFrom }} {{- with .Values.notifications.extraEnvFrom }}
envFrom: envFrom:
{{- toYaml . | nindent 12 }} {{- toYaml . | nindent 12 }}

View file

@ -205,6 +205,18 @@ spec:
name: argocd-cmd-params-cm name: argocd-cmd-params-cm
key: otlp.address key: otlp.address
optional: true optional: true
- name: ARGOCD_REPO_SERVER_OTLP_INSECURE
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: otlp.insecure
optional: true
- name: ARGOCD_REPO_SERVER_OTLP_HEADERS
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: otlp.headers
optional: true
- name: ARGOCD_REPO_SERVER_MAX_COMBINED_DIRECTORY_MANIFESTS_SIZE - name: ARGOCD_REPO_SERVER_MAX_COMBINED_DIRECTORY_MANIFESTS_SIZE
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:
@ -253,6 +265,18 @@ spec:
key: reposerver.enable.git.submodule key: reposerver.enable.git.submodule
name: argocd-cmd-params-cm name: argocd-cmd-params-cm
optional: true optional: true
- name: ARGOCD_GIT_LS_REMOTE_PARALLELISM_LIMIT
valueFrom:
configMapKeyRef:
key: reposerver.git.lsremote.parallelism.limit
name: argocd-cmd-params-cm
optional: true
- name: ARGOCD_GIT_REQUEST_TIMEOUT
valueFrom:
configMapKeyRef:
key: reposerver.git.request.timeout
name: argocd-cmd-params-cm
optional: true
- name: CODEFRESH_URL - name: CODEFRESH_URL
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:

View file

@ -287,6 +287,18 @@ spec:
name: argocd-cmd-params-cm name: argocd-cmd-params-cm
key: otlp.address key: otlp.address
optional: true optional: true
- name: ARGOCD_SERVER_OTLP_INSECURE
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: otlp.insecure
optional: true
- name: ARGOCD_SERVER_OTLP_HEADERS
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: otlp.headers
optional: true
- name: ARGOCD_APPLICATION_NAMESPACES - name: ARGOCD_APPLICATION_NAMESPACES
valueFrom: valueFrom:
configMapKeyRef: configMapKeyRef:
@ -299,6 +311,24 @@ spec:
name: argocd-cmd-params-cm name: argocd-cmd-params-cm
key: server.enable.proxy.extension key: server.enable.proxy.extension
optional: true optional: true
- name: ARGOCD_K8SCLIENT_RETRY_MAX
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: server.k8sclient.retry.max
optional: true
- name: ARGOCD_K8SCLIENT_RETRY_BASE_BACKOFF
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: server.k8sclient.retry.base.backoff
optional: true
- name: ARGOCD_API_CONTENT_TYPES
valueFrom:
configMapKeyRef:
name: argocd-cmd-params-cm
key: server.api.content.types
optional: true
{{- with .Values.server.envFrom }} {{- with .Values.server.envFrom }}
envFrom: envFrom:
{{- toYaml . | nindent 10 }} {{- toYaml . | nindent 10 }}

View file

@ -330,6 +330,12 @@ spec:
description: CommonLabels is a list of additional labels description: CommonLabels is a list of additional labels
to add to rendered manifests to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether description: ForceCommonAnnotations specifies whether
to force applying common annotations to resources for to force applying common annotations to resources for
@ -658,6 +664,12 @@ spec:
description: CommonLabels is a list of additional labels description: CommonLabels is a list of additional labels
to add to rendered manifests to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether description: ForceCommonAnnotations specifies whether
to force applying common annotations to resources to force applying common annotations to resources
@ -1103,6 +1115,12 @@ spec:
description: CommonLabels is a list of additional labels to description: CommonLabels is a list of additional labels to
add to rendered manifests add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize components
to add to the kustomization before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether to force description: ForceCommonAnnotations specifies whether to force
applying common annotations to resources for Kustomize apps applying common annotations to resources for Kustomize apps
@ -1421,6 +1439,12 @@ spec:
description: CommonLabels is a list of additional labels description: CommonLabels is a list of additional labels
to add to rendered manifests to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize components
to add to the kustomization before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether to description: ForceCommonAnnotations specifies whether to
force applying common annotations to resources for Kustomize force applying common annotations to resources for Kustomize
@ -1892,6 +1916,12 @@ spec:
description: CommonLabels is a list of additional labels description: CommonLabels is a list of additional labels
to add to rendered manifests to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether description: ForceCommonAnnotations specifies whether
to force applying common annotations to resources to force applying common annotations to resources
@ -2224,6 +2254,12 @@ spec:
description: CommonLabels is a list of additional description: CommonLabels is a list of additional
labels to add to rendered manifests labels to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether description: ForceCommonAnnotations specifies whether
to force applying common annotations to resources to force applying common annotations to resources
@ -2700,6 +2736,13 @@ spec:
description: CommonLabels is a list of additional description: CommonLabels is a list of additional
labels to add to rendered manifests labels to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before
building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies description: ForceCommonAnnotations specifies
whether to force applying common annotations whether to force applying common annotations
@ -3049,6 +3092,13 @@ spec:
description: CommonLabels is a list of additional description: CommonLabels is a list of additional
labels to add to rendered manifests labels to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of
kustomize components to add to the kustomization
before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies description: ForceCommonAnnotations specifies
whether to force applying common annotations whether to force applying common annotations
@ -3513,6 +3563,12 @@ spec:
description: CommonLabels is a list of additional description: CommonLabels is a list of additional
labels to add to rendered manifests labels to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether description: ForceCommonAnnotations specifies whether
to force applying common annotations to resources to force applying common annotations to resources
@ -3855,6 +3911,13 @@ spec:
description: CommonLabels is a list of additional description: CommonLabels is a list of additional
labels to add to rendered manifests labels to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before
building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether description: ForceCommonAnnotations specifies whether
to force applying common annotations to resources to force applying common annotations to resources
@ -4341,6 +4404,12 @@ spec:
description: CommonLabels is a list of additional description: CommonLabels is a list of additional
labels to add to rendered manifests labels to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether description: ForceCommonAnnotations specifies whether
to force applying common annotations to resources to force applying common annotations to resources
@ -4683,6 +4752,13 @@ spec:
description: CommonLabels is a list of additional description: CommonLabels is a list of additional
labels to add to rendered manifests labels to add to rendered manifests
type: object type: object
components:
description: Components specifies a list of kustomize
components to add to the kustomization before
building
items:
type: string
type: array
forceCommonAnnotations: forceCommonAnnotations:
description: ForceCommonAnnotations specifies whether description: ForceCommonAnnotations specifies whether
to force applying common annotations to resources to force applying common annotations to resources

View file

@ -15290,6 +15290,8 @@ spec:
- metadata - metadata
- spec - spec
type: object type: object
templatePatch:
type: string
required: required:
- generators - generators
- template - template

View file

@ -14,7 +14,7 @@ metadata:
app.kubernetes.io/part-of: argocd app.kubernetes.io/part-of: argocd
{{- with .Values.crds.additionalLabels }} {{- with .Values.crds.additionalLabels }}
{{- toYaml . | nindent 4}} {{- toYaml . | nindent 4}}
{{- end }} {{- end }}
name: appprojects.argoproj.io name: appprojects.argoproj.io
spec: spec:
group: argoproj.io group: argoproj.io
@ -99,7 +99,8 @@ spec:
properties: properties:
name: name:
description: Name is an alternate way of specifying the target description: Name is an alternate way of specifying the target
cluster by its symbolic name cluster by its symbolic name. This must be set if Server is
not set.
type: string type: string
namespace: namespace:
description: Namespace specifies the target namespace for the description: Namespace specifies the target namespace for the
@ -107,8 +108,9 @@ spec:
namespace-scoped resources that have not set a value for .metadata.namespace namespace-scoped resources that have not set a value for .metadata.namespace
type: string type: string
server: server:
description: Server specifies the URL of the target cluster description: Server specifies the URL of the target cluster's
and must be set to the Kubernetes control plane API Kubernetes control plane API. This must be set if Name is
not set.
type: string type: string
type: object type: object
type: array type: array

View file

@ -72,6 +72,32 @@ spec:
envFrom: envFrom:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
{{- if .Values.redis.livenessProbe.enabled }}
livenessProbe:
initialDelaySeconds: {{ .Values.redis.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.redis.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.redis.livenessProbe.timeoutSeconds }}
successThreshold: {{ .Values.redis.livenessProbe.successThreshold }}
failureThreshold: {{ .Values.redis.livenessProbe.failureThreshold }}
exec:
command:
- sh
- -c
- /health/redis_liveness.sh
{{- end }}
{{- if .Values.redis.readinessProbe.enabled }}
readinessProbe:
initialDelaySeconds: {{ .Values.redis.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.redis.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.redis.readinessProbe.timeoutSeconds }}
successThreshold: {{ .Values.redis.readinessProbe.successThreshold }}
failureThreshold: {{ .Values.redis.readinessProbe.failureThreshold }}
exec:
command:
- sh
- -c
- /health/redis_readiness.sh
{{- end }}
ports: ports:
- name: redis - name: redis
containerPort: {{ .Values.redis.containerPorts.redis }} containerPort: {{ .Values.redis.containerPorts.redis }}
@ -82,8 +108,10 @@ spec:
securityContext: securityContext:
{{- toYaml . | nindent 10 }} {{- toYaml . | nindent 10 }}
{{- end }} {{- end }}
{{- with .Values.redis.volumeMounts }}
volumeMounts: volumeMounts:
- mountPath: /health
name: health
{{- with .Values.redis.volumeMounts }}
{{- toYaml . | nindent 10 }} {{- toYaml . | nindent 10 }}
{{- end }} {{- end }}
{{- if .Values.redis.exporter.enabled }} {{- if .Values.redis.exporter.enabled }}
@ -102,6 +130,28 @@ spec:
- name: metrics - name: metrics
containerPort: {{ .Values.redis.containerPorts.metrics }} containerPort: {{ .Values.redis.containerPorts.metrics }}
protocol: TCP protocol: TCP
{{- if .Values.redis.exporter.livenessProbe.enabled }}
livenessProbe:
httpGet:
path: /metrics
port: {{ .Values.redis.containerPorts.metrics }}
initialDelaySeconds: {{ .Values.redis.exporter.livenessProbe.initialDelaySeconds }}
timeoutSeconds: {{ .Values.redis.exporter.livenessProbe.timeoutSeconds }}
periodSeconds: {{ .Values.redis.exporter.livenessProbe.periodSeconds }}
successThreshold: {{ .Values.redis.exporter.livenessProbe.successThreshold }}
failureThreshold: {{ .Values.redis.exporter.livenessProbe.failureThreshold }}
{{- end }}
{{- if .Values.redis.exporter.readinessProbe.enabled }}
readinessProbe:
httpGet:
path: /metrics
port: {{ .Values.redis.containerPorts.metrics }}
initialDelaySeconds: {{ .Values.redis.exporter.readinessProbe.initialDelaySeconds }}
timeoutSeconds: {{ .Values.redis.exporter.readinessProbe.timeoutSeconds }}
periodSeconds: {{ .Values.redis.exporter.readinessProbe.periodSeconds }}
successThreshold: {{ .Values.redis.exporter.readinessProbe.successThreshold }}
failureThreshold: {{ .Values.redis.exporter.readinessProbe.failureThreshold }}
{{- end }}
resources: resources:
{{- toYaml .Values.redis.exporter.resources | nindent 10 }} {{- toYaml .Values.redis.exporter.resources | nindent 10 }}
{{- with .Values.redis.exporter.containerSecurityContext }} {{- with .Values.redis.exporter.containerSecurityContext }}
@ -139,8 +189,12 @@ spec:
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- with .Values.redis.volumes }}
volumes: volumes:
- name: health
configMap:
name: {{ include "argo-cd.redis.fullname" . }}-health-configmap
defaultMode: 0755
{{- with .Values.redis.volumes }}
{{- toYaml . | nindent 8}} {{- toYaml . | nindent 8}}
{{- end }} {{- end }}
{{- with .Values.redis.dnsConfig }} {{- with .Values.redis.dnsConfig }}

View file

@ -0,0 +1,35 @@
{{- $redisHa := index .Values "redis-ha" -}}
{{- if and .Values.redis.enabled (not $redisHa.enabled) -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "argo-cd.redis.fullname" . }}-health-configmap
namespace: {{ .Release.Namespace | quote }}
labels:
{{- include "argo-cd.labels" (dict "context" . "component" .Values.redis.name "name" .Values.redis.name) | nindent 4 }}
data:
redis_liveness.sh: |
response=$(
redis-cli \
-h localhost \
-p {{ .Values.redis.containerPorts.redis }} \
ping
)
if [ "$response" != "PONG" ] && [ "${response:0:7}" != "LOADING" ] ; then
echo "$response"
exit 1
fi
echo "response=$response"
redis_readiness.sh: |
response=$(
redis-cli \
-h localhost \
-p {{ .Values.redis.containerPorts.redis }} \
ping
)
if [ "$response" != "PONG" ] ; then
echo "$response"
exit 1
fi
echo "response=$response"
{{- end }}

View file

@ -1225,6 +1225,35 @@ redis:
drop: drop:
- ALL - ALL
## Probes for Redis exporter (optional)
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
readinessProbe:
# -- Enable Kubernetes liveness probe for Redis exporter (optional)
enabled: false
# -- Number of seconds after the container has started before [probe] is initiated
initialDelaySeconds: 30
# -- How often (in seconds) to perform the [probe]
periodSeconds: 15
# -- Number of seconds after which the [probe] times out
timeoutSeconds: 15
# -- Minimum consecutive successes for the [probe] to be considered successful after having failed
successThreshold: 1
# -- Minimum consecutive failures for the [probe] to be considered failed after having succeeded
failureThreshold: 5
livenessProbe:
# -- Enable Kubernetes liveness probe for Redis exporter
enabled: false
# -- Number of seconds after the container has started before [probe] is initiated
initialDelaySeconds: 30
# -- How often (in seconds) to perform the [probe]
periodSeconds: 15
# -- Number of seconds after which the [probe] times out
timeoutSeconds: 15
# -- Minimum consecutive successes for the [probe] to be considered successful after having failed
successThreshold: 1
# -- Minimum consecutive failures for the [probe] to be considered failed after having succeeded
failureThreshold: 5
# -- Resource limits and requests for redis-exporter sidecar # -- Resource limits and requests for redis-exporter sidecar
resources: {} resources: {}
# limits: # limits:
@ -1254,6 +1283,35 @@ redis:
# - secretRef: # - secretRef:
# name: secret-name # name: secret-name
## Probes for Redis server (optional)
## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
readinessProbe:
# -- Enable Kubernetes liveness probe for Redis server
enabled: false
# -- Number of seconds after the container has started before [probe] is initiated
initialDelaySeconds: 30
# -- How often (in seconds) to perform the [probe]
periodSeconds: 15
# -- Number of seconds after which the [probe] times out
timeoutSeconds: 15
# -- Minimum consecutive successes for the [probe] to be considered successful after having failed
successThreshold: 1
# -- Minimum consecutive failures for the [probe] to be considered failed after having succeeded
failureThreshold: 5
livenessProbe:
# -- Enable Kubernetes liveness probe for Redis server
enabled: false
# -- Number of seconds after the container has started before [probe] is initiated
initialDelaySeconds: 30
# -- How often (in seconds) to perform the [probe]
periodSeconds: 15
# -- Number of seconds after which the [probe] times out
timeoutSeconds: 15
# -- Minimum consecutive successes for the [probe] to be considered successful after having failed
successThreshold: 1
# -- Minimum consecutive failures for the [probe] to be considered failed after having succeeded
failureThreshold: 5
# -- Additional containers to be added to the redis pod # -- Additional containers to be added to the redis pod
## Note: Supports use of custom Helm templates ## Note: Supports use of custom Helm templates
extraContainers: [] extraContainers: []

View file

@ -3,8 +3,8 @@ appVersion: v3.5.4
name: argo-workflows name: argo-workflows
description: A Helm chart for Argo Workflows description: A Helm chart for Argo Workflows
type: application type: application
version: 0.40.9 version: 0.40.10
icon: https://argoproj.github.io/argo-workflows/assets/logo.png icon: https://argo-workflows.readthedocs.io/en/stable/assets/logo.png
home: https://github.com/argoproj/argo-helm home: https://github.com/argoproj/argo-helm
sources: sources:
- https://github.com/argoproj/argo-workflows - https://github.com/argoproj/argo-workflows
@ -16,5 +16,5 @@ annotations:
fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
url: https://argoproj.github.io/argo-helm/pgp_keys.asc url: https://argoproj.github.io/argo-helm/pgp_keys.asc
artifacthub.io/changes: | artifacthub.io/changes: |
- kind: added - kind: fixed
description: Add MySQL persistence support explicitly on README description: Update argo-workflows documentation links to readthedocs

View file

@ -78,7 +78,7 @@ For full list of changes, please check ArtifactHub [changelog].
### High Availability ### High Availability
This chart installs the non-HA version of Argo Workflows by default. If you want to run in HA mode, you can use [these example values](ci/ha-values.yaml) as a starting point. This chart installs the non-HA version of Argo Workflows by default. If you want to run in HA mode, you can use [these example values](ci/ha-values.yaml) as a starting point.
Please see the upstream [Operator Manual's High Availability page](https://argoproj.github.io/argo-workflows/high-availability/) to understand how to scale Argo Workflows in depth. Please see the upstream [Operator Manual's High Availability page](https://argo-workflows.readthedocs.io/en/stable/high-availability/) to understand how to scale Argo Workflows in depth.
### Workflow controller ### Workflow controller
@ -354,7 +354,7 @@ Fields to note:
| artifactRepository.azure | object | `{}` (See [values.yaml]) | Store artifact in Azure Blob Storage | | artifactRepository.azure | object | `{}` (See [values.yaml]) | Store artifact in Azure Blob Storage |
| artifactRepository.gcs | object | `{}` (See [values.yaml]) | Store artifact in a GCS object store | | artifactRepository.gcs | object | `{}` (See [values.yaml]) | Store artifact in a GCS object store |
| artifactRepository.s3 | object | See [values.yaml] | Store artifact in a S3-compliant object store | | artifactRepository.s3 | object | See [values.yaml] | Store artifact in a S3-compliant object store |
| artifactRepositoryRef | object | `{}` (See [values.yaml]) | The section of [artifact repository ref](https://argoproj.github.io/argo-workflows/artifact-repository-ref/). Each map key is the name of configmap | | artifactRepositoryRef | object | `{}` (See [values.yaml]) | The section of [artifact repository ref](https://argo-workflows.readthedocs.io/en/stable/artifact-repository-ref/). Each map key is the name of configmap |
| customArtifactRepository | object | `{}` | The section of custom artifact repository. Utilize a custom artifact repository that is not one of the current base ones (s3, gcs, azure) | | customArtifactRepository | object | `{}` | The section of custom artifact repository. Utilize a custom artifact repository that is not one of the current base ones (s3, gcs, azure) |
| useStaticCredentials | bool | `true` | Use static credentials for S3 (eg. when not using AWS IRSA) | | useStaticCredentials | bool | `true` | Use static credentials for S3 (eg. when not using AWS IRSA) |
@ -381,7 +381,7 @@ Fields to note:
[affinity]: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ [affinity]: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
[BackendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig#backendconfigspec_v1beta1_cloudgooglecom [BackendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig#backendconfigspec_v1beta1_cloudgooglecom
[FrontendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters [FrontendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters
[links]: https://argoproj.github.io/argo-workflows/links/ [links]: https://argo-workflows.readthedocs.io/en/stable/links/
[columns]: https://github.com/argoproj/argo-workflows/pull/10693 [columns]: https://github.com/argoproj/argo-workflows/pull/10693
[Node selector]: https://kubernetes.io/docs/user-guide/node-selection/ [Node selector]: https://kubernetes.io/docs/user-guide/node-selection/
[Pod Disruption Budget]: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ [Pod Disruption Budget]: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
@ -390,5 +390,5 @@ Fields to note:
[TopologySpreadConstraints]: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ [TopologySpreadConstraints]: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
[values.yaml]: values.yaml [values.yaml]: values.yaml
[changelog]: https://artifacthub.io/packages/helm/argo/argo-workflows?modal=changelog [changelog]: https://artifacthub.io/packages/helm/argo/argo-workflows?modal=changelog
[SSO RBAC]: https://argo-workflows.readthedocs.io/en/latest/argo-server-sso/ [SSO RBAC]: https://argo-workflows.readthedocs.io/en/stable/argo-server-sso/
[Argo Server Auth Mode]: https://argo-workflows.readthedocs.io/en/latest/argo-server-auth-mode/ [Argo Server Auth Mode]: https://argo-workflows.readthedocs.io/en/stable/argo-server-auth-mode/

View file

@ -78,7 +78,7 @@ For full list of changes, please check ArtifactHub [changelog].
### High Availability ### High Availability
This chart installs the non-HA version of Argo Workflows by default. If you want to run in HA mode, you can use [these example values](ci/ha-values.yaml) as a starting point. This chart installs the non-HA version of Argo Workflows by default. If you want to run in HA mode, you can use [these example values](ci/ha-values.yaml) as a starting point.
Please see the upstream [Operator Manual's High Availability page](https://argoproj.github.io/argo-workflows/high-availability/) to understand how to scale Argo Workflows in depth. Please see the upstream [Operator Manual's High Availability page](https://argo-workflows.readthedocs.io/en/stable/high-availability/) to understand how to scale Argo Workflows in depth.
### Workflow controller ### Workflow controller
@ -199,7 +199,7 @@ Fields to note:
[affinity]: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ [affinity]: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
[BackendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig#backendconfigspec_v1beta1_cloudgooglecom [BackendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig#backendconfigspec_v1beta1_cloudgooglecom
[FrontendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters [FrontendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters
[links]: https://argoproj.github.io/argo-workflows/links/ [links]: https://argo-workflows.readthedocs.io/en/stable/links/
[columns]: https://github.com/argoproj/argo-workflows/pull/10693 [columns]: https://github.com/argoproj/argo-workflows/pull/10693
[Node selector]: https://kubernetes.io/docs/user-guide/node-selection/ [Node selector]: https://kubernetes.io/docs/user-guide/node-selection/
[Pod Disruption Budget]: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ [Pod Disruption Budget]: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
@ -208,5 +208,5 @@ Fields to note:
[TopologySpreadConstraints]: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ [TopologySpreadConstraints]: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
[values.yaml]: values.yaml [values.yaml]: values.yaml
[changelog]: https://artifacthub.io/packages/helm/argo/argo-workflows?modal=changelog [changelog]: https://artifacthub.io/packages/helm/argo/argo-workflows?modal=changelog
[SSO RBAC]: https://argo-workflows.readthedocs.io/en/latest/argo-server-sso/ [SSO RBAC]: https://argo-workflows.readthedocs.io/en/stable/argo-server-sso/
[Argo Server Auth Mode]: https://argo-workflows.readthedocs.io/en/latest/argo-server-auth-mode/ [Argo Server Auth Mode]: https://argo-workflows.readthedocs.io/en/stable/argo-server-auth-mode/

View file

@ -1,7 +1,7 @@
# Sample values for High Availability configuration, following https://argoproj.github.io/argo-workflows/high-availability/ # Sample values for High Availability configuration, following https://argo-workflows.readthedocs.io/en/stable/high-availability/
controller: controller:
# in v3.0+, a second controller can be ran as a hot-standby: https://argoproj.github.io/argo-workflows/high-availability/#workflow-controller # in v3.0+, a second controller can be ran as a hot-standby: https://argo-workflows.readthedocs.io/en/stable/high-availability/#workflow-controller
replicas: 2 # should be strictly greater than PDB minAvailable replicas: 2 # should be strictly greater than PDB minAvailable
# enable PDB with at least one Pod # enable PDB with at least one Pod
pdb: pdb:

View file

@ -147,7 +147,7 @@ controller:
drop: drop:
- ALL - ALL
# -- enable Workflow Archive to store the status of workflows. Postgres and MySQL (>= 5.7.8) are available. # -- enable Workflow Archive to store the status of workflows. Postgres and MySQL (>= 5.7.8) are available.
## Ref: https://argo-workflows.readthedocs.io/en/latest/workflow-archive/ ## Ref: https://argo-workflows.readthedocs.io/en/stable/workflow-archive/
persistence: {} persistence: {}
# connectionPool: # connectionPool:
# maxIdleConns: 100 # maxIdleConns: 100
@ -186,12 +186,12 @@ controller:
# -- Default values that will apply to all Workflows from this controller, unless overridden on the Workflow-level. # -- Default values that will apply to all Workflows from this controller, unless overridden on the Workflow-level.
# Only valid for 2.7+ # Only valid for 2.7+
## See more: https://argoproj.github.io/argo-workflows/default-workflow-specs/ ## See more: https://argo-workflows.readthedocs.io/en/stable/default-workflow-specs/
workflowDefaults: {} workflowDefaults: {}
# spec: # spec:
# ttlStrategy: # ttlStrategy:
# secondsAfterCompletion: 84600 # secondsAfterCompletion: 84600
# # Ref: https://argoproj.github.io/argo-workflows/artifact-repository-ref/ # # Ref: https://argo-workflows.readthedocs.io/en/stable/artifact-repository-ref/
# artifactRepositoryRef: # artifactRepositoryRef:
# configMap: my-artifact-repository # default is "artifact-repositories" # configMap: my-artifact-repository # default is "artifact-repositories"
# key: v2-s3-artifact-repository # default can be set by the `workflows.argoproj.io/default-artifact-repository` annotation in config map. # key: v2-s3-artifact-repository # default can be set by the `workflows.argoproj.io/default-artifact-repository` annotation in config map.
@ -343,7 +343,7 @@ controller:
priorityClassName: "" priorityClassName: ""
# -- Configure Argo Server to show custom [links] # -- Configure Argo Server to show custom [links]
## Ref: https://argoproj.github.io/argo-workflows/links/ ## Ref: https://argo-workflows.readthedocs.io/en/stable/links/
links: [] links: []
# -- Configure Argo Server to show custom [columns] # -- Configure Argo Server to show custom [columns]
## Ref: https://github.com/argoproj/argo-workflows/pull/10693 ## Ref: https://github.com/argoproj/argo-workflows/pull/10693
@ -556,7 +556,7 @@ server:
# -- Run the argo server in "secure" mode. Configure this value instead of `--secure` in extraArgs. # -- Run the argo server in "secure" mode. Configure this value instead of `--secure` in extraArgs.
## See the following documentation for more details on secure mode: ## See the following documentation for more details on secure mode:
## https://argoproj.github.io/argo-workflows/tls/ ## https://argo-workflows.readthedocs.io/en/stable/tls/
secure: false secure: false
# -- Extra environment variables to provide to the argo-server container # -- Extra environment variables to provide to the argo-server container
@ -568,11 +568,11 @@ server:
authMode: "" authMode: ""
# -- A list of supported authentication modes. Available values are `server`, `client`, or `sso`. If you provide sso, please configure `.Values.server.sso` as well. # -- A list of supported authentication modes. Available values are `server`, `client`, or `sso`. If you provide sso, please configure `.Values.server.sso` as well.
## Ref: https://argoproj.github.io/argo-workflows/argo-server-auth-mode/ ## Ref: https://argo-workflows.readthedocs.io/en/stable/argo-server-auth-mode/
authModes: [] authModes: []
# -- Extra arguments to provide to the Argo server binary. # -- Extra arguments to provide to the Argo server binary.
## Ref: https://argoproj.github.io/argo-workflows/argo-server/#options ## Ref: https://argo-workflows.readthedocs.io/en/stable/argo-server/#options
extraArgs: [] extraArgs: []
logging: logging:
@ -829,7 +829,7 @@ customArtifactRepository: {}
# name: artifactory-creds # name: artifactory-creds
# key: password # key: password
# -- The section of [artifact repository ref](https://argoproj.github.io/argo-workflows/artifact-repository-ref/). # -- The section of [artifact repository ref](https://argo-workflows.readthedocs.io/en/stable/artifact-repository-ref/).
# Each map key is the name of configmap # Each map key is the name of configmap
# @default -- `{}` (See [values.yaml]) # @default -- `{}` (See [values.yaml])
artifactRepositoryRef: {} artifactRepositoryRef: {}
@ -884,7 +884,7 @@ artifactRepositoryRef: {}
emissary: emissary:
# -- The command/args for each image on workflow, needed when the command is not specified and the emissary executor is used. # -- The command/args for each image on workflow, needed when the command is not specified and the emissary executor is used.
## See more: https://argoproj.github.io/argo-workflows/workflow-executors/#emissary-emissary ## See more: https://argo-workflows.readthedocs.io/en/stable/workflow-executors/#emissary-emissary
images: [] images: []
# argoproj/argosay:v2: # argoproj/argosay:v2:
# cmd: [/argosay] # cmd: [/argosay]

View file

@ -2,7 +2,7 @@ apiVersion: v2
name: argocd-apps name: argocd-apps
description: A Helm chart for managing additional Argo CD Applications and Projects description: A Helm chart for managing additional Argo CD Applications and Projects
type: application type: application
version: 1.6.0 version: 1.6.1
home: https://github.com/argoproj/argo-helm home: https://github.com/argoproj/argo-helm
icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
keywords: keywords:
@ -17,5 +17,5 @@ annotations:
fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252 fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
url: https://argoproj.github.io/argo-helm/pgp_keys.asc url: https://argoproj.github.io/argo-helm/pgp_keys.asc
artifacthub.io/changes: | artifacthub.io/changes: |
- kind: added - kind: fixed
description: ability to specify ignoreApplicationDifferences for applicationsets description: move ignoreApplicationDifferences block up a level to fix render

View file

@ -26,11 +26,11 @@ spec:
generators: generators:
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}
{{- with .strategy }}
{{- with .ignoreApplicationDifferences }} {{- with .ignoreApplicationDifferences }}
ignoreApplicationDifferences: ignoreApplicationDifferences:
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}
{{- with .strategy }}
strategy: strategy:
{{- toYaml . | nindent 4 }} {{- toYaml . | nindent 4 }}
{{- end }} {{- end }}