feat(argo-cd): expose tolerations and affinities to those who need it (#12)

* feat(argo-cd): expose tolerations and affinities to those who need it

* remove EWR1 from enum

* fix whitespace in helpers
This commit is contained in:
Brandon J 2022-09-01 10:52:23 -06:00 committed by GitHub
parent 86fbc6ddba
commit 42c9ba0f63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 120 additions and 118 deletions

View file

@ -2,7 +2,7 @@ apiVersion: v2
appVersion: v2.3.1 appVersion: v2.3.1
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: 4.7.2 version: 4.7.3
home: https://github.com/coreweave/argo-helm home: https://github.com/coreweave/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:

View file

@ -297,12 +297,46 @@ affinity:
- key: topology.kubernetes.io/region - key: topology.kubernetes.io/region
operator: In operator: In
values: values:
- ORD1 - {{ .Values.region }}
- key: node.coreweave.cloud/class - key: node.coreweave.cloud/class
operator: In operator: In
values: values:
- cpu - cpu
{{- end -}} {{- end -}}
{{- define "coreweave.tolerations" -}}
{{- if .Values.tolerations }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 2 }}
{{- end }}
{{- else }}
tolerations:
- key: is_cpu_compute
operator: Exists
{{- end }}
{{- end -}}
{{- define "coreweave.affinity" -}}
{{- if .Values.affinity }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 2 }}
{{- end }}
{{- else }}
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: topology.kubernetes.io/region
operator: In
values:
- {{ .Values.region }}
- key: node.coreweave.cloud/class
operator: In
values:
- cpu
{{- end }}
{{- end -}}
{{- define "coreweave.certSecretName" -}} {{- define "coreweave.certSecretName" -}}
{{printf "%s-tls-cert" .Release.Name }} {{printf "%s-tls-cert" .Release.Name }}
{{- end -}} {{- end -}}

View file

@ -117,7 +117,8 @@ spec:
{{- with .Values.controller.extraContainers }} {{- with .Values.controller.extraContainers }}
{{- toYaml . | nindent 6 }} {{- toYaml . | nindent 6 }}
{{- end }} {{- end }}
{{include "coreweave.nodeAffinityAndTolerations" . | nindent 6 }} {{include "coreweave.affinity" . | nindent 6 }}
{{include "coreweave.tolerations" . | nindent 6 }}
serviceAccountName: {{ template "argo-cd.controllerServiceAccountName" . }} serviceAccountName: {{ template "argo-cd.controllerServiceAccountName" . }}
{{- with .Values.global.hostAliases }} {{- with .Values.global.hostAliases }}
hostAliases: hostAliases:

View file

@ -93,5 +93,6 @@ spec:
{{- with .Values.notifications.extraVolumes }} {{- with .Values.notifications.extraVolumes }}
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
{{include "coreweave.nodeAffinityAndTolerations" . | nindent 6 }} {{include "coreweave.affinity" . | nindent 6 }}
{{include "coreweave.tolerations" . | nindent 6 }}
{{- end }} {{- end }}

View file

@ -127,7 +127,8 @@ spec:
{{- with .Values.repoServer.extraContainers }} {{- with .Values.repoServer.extraContainers }}
{{- toYaml . | nindent 6 }} {{- toYaml . | nindent 6 }}
{{- end }} {{- end }}
{{include "coreweave.nodeAffinityAndTolerations" . | nindent 6 }} {{include "coreweave.affinity" . | nindent 6 }}
{{include "coreweave.tolerations" . | nindent 6 }}
serviceAccountName: {{ template "argo-cd.repoServerServiceAccountName" . }} serviceAccountName: {{ template "argo-cd.repoServerServiceAccountName" . }}
{{- with .Values.global.hostAliases }} {{- with .Values.global.hostAliases }}
hostAliases: hostAliases:

View file

@ -149,7 +149,8 @@ spec:
resources: resources:
{{- toYaml .Values.server.extensions.resources | nindent 10 }} {{- toYaml .Values.server.extensions.resources | nindent 10 }}
{{- end }} {{- end }}
{{include "coreweave.nodeAffinityAndTolerations" . | nindent 6 }} {{include "coreweave.affinity" . | nindent 6 }}
{{include "coreweave.tolerations" . | nindent 6 }}
serviceAccountName: {{ template "argo-cd.serverServiceAccountName" . }} serviceAccountName: {{ template "argo-cd.serverServiceAccountName" . }}
{{- with .Values.global.hostAliases }} {{- with .Values.global.hostAliases }}
hostAliases: hostAliases:

View file

@ -111,7 +111,8 @@ spec:
{{- with .Values.dex.extraContainers }} {{- with .Values.dex.extraContainers }}
{{- toYaml . | nindent 6 }} {{- toYaml . | nindent 6 }}
{{- end }} {{- end }}
{{include "coreweave.nodeAffinityAndTolerations" . | nindent 6 }} {{include "coreweave.affinity" . | nindent 6 }}
{{include "coreweave.tolerations" . | nindent 6 }}
serviceAccountName: {{ template "argo-cd.dexServiceAccountName" . }} serviceAccountName: {{ template "argo-cd.dexServiceAccountName" . }}
{{- with .Values.global.hostAliases }} {{- with .Values.global.hostAliases }}
hostAliases: hostAliases:

View file

@ -87,7 +87,8 @@ spec:
{{- with .Values.redis.extraContainers }} {{- with .Values.redis.extraContainers }}
{{- toYaml . | nindent 6 }} {{- toYaml . | nindent 6 }}
{{- end }} {{- end }}
{{include "coreweave.nodeAffinityAndTolerations" . | nindent 6 }} {{include "coreweave.affinity" . | nindent 6 }}
{{include "coreweave.tolerations" . | nindent 6 }}
{{- if .Values.redis.volumes }} {{- if .Values.redis.volumes }}
volumes: volumes:
{{- toYaml .Values.redis.volumes | nindent 8}} {{- toYaml .Values.redis.volumes | nindent 8}}

View file

@ -1,9 +1,19 @@
{ {
"$schema": "http://json-schema.org/schema#", "$schema": "http://json-schema.org/schema#",
"properties": { "properties": {
"region": {
"type": "string",
"form": false,
"enum": [
"ORD1",
"LAS1",
"LGA1"
],
"title": "Region"
},
"notifications": { "notifications": {
"type": "object", "type": "object",
"form":"true", "form": true,
"title": "Notifications Controller", "title": "Notifications Controller",
"properties": { "properties": {
"enabled": { "enabled": {

View file

@ -1,4 +1,8 @@
## CoreWeave Ingress Options ## CoreWeave Custom Options
region: ORD1
affinity: {}
tolerations: []
# -- Provide a custom dns name in place of coreweave's ingress. Requires custom Ingress Controller # -- Provide a custom dns name in place of coreweave's ingress. Requires custom Ingress Controller
customExternalDnsName: '' customExternalDnsName: ''
@ -213,16 +217,6 @@ controller:
# -- Application controller service port name # -- Application controller service port name
portName: https-controller portName: https-controller
# -- [Node selector]
nodeSelector:
node.coreweave.cloud/class: cpu
# -- [Tolerations] for use with node taints
tolerations:
- key: is_cpu_compute
operator: Exists
# -- Assign custom [affinity] rules to the deployment
affinity: {}
# -- Assign custom [TopologySpreadConstraints] rules to the application controller # -- Assign custom [TopologySpreadConstraints] rules to the application controller
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
## If labelSelector is left out, it will default to the labelSelector configuration of the deployment ## If labelSelector is left out, it will default to the labelSelector configuration of the deployment
@ -235,13 +229,13 @@ controller:
priorityClassName: "" priorityClassName: ""
# -- Resource limits and requests for the application controller pods # -- Resource limits and requests for the application controller pods
resources: {} resources:
# limits: limits:
# cpu: 500m cpu: 500m
# memory: 512Mi memory: 512Mi
# requests: requests:
# cpu: 250m cpu: 500m
# memory: 256Mi memory: 256Mi
serviceAccount: serviceAccount:
# -- Create a service account for the application controller # -- Create a service account for the application controller
@ -521,13 +515,13 @@ dex:
# readOnlyRootFilesystem: true # readOnlyRootFilesystem: true
# -- Resource limits and requests for dex # -- Resource limits and requests for dex
resources: {} resources:
# limits: limits:
# cpu: 50m cpu: 100m
# memory: 64Mi memory: 64Mi
# requests: requests:
# cpu: 10m cpu: 100m
# memory: 32Mi memory: 32Mi
# -- Additional containers to be added to the dex pod # -- Additional containers to be added to the dex pod
extraContainers: [] extraContainers: []
@ -636,13 +630,13 @@ redis:
automountServiceAccountToken: false automountServiceAccountToken: false
# -- Resource limits and requests for redis # -- Resource limits and requests for redis
resources: {} resources:
# limits: limits:
# cpu: 200m cpu: 200m
# memory: 128Mi memory: 128Mi
# requests: requests:
# cpu: 100m cpu: 100m
# memory: 64Mi memory: 64Mi
# -- Additional volumeMounts to the redis container # -- Additional volumeMounts to the redis container
volumeMounts: [] volumeMounts: []
@ -687,13 +681,13 @@ redis:
# -- Port to use for redis-exporter sidecar # -- Port to use for redis-exporter sidecar
containerPort: 9121 containerPort: 9121
# -- Resource limits and requests for redis-exporter sidecar # -- Resource limits and requests for redis-exporter sidecar
resources: {} resources:
# limits: limits:
# cpu: 50m cpu: 50m
# memory: 64Mi memory: 64Mi
# requests: requests:
# cpu: 10m cpu: 10m
# memory: 32Mi memory: 32Mi
service: service:
# -- Metrics service type # -- Metrics service type
type: ClusterIP type: ClusterIP
@ -878,13 +872,13 @@ server:
# readOnlyRootFilesystem: true # readOnlyRootFilesystem: true
# -- Resource limits and requests for the Argo CD server # -- Resource limits and requests for the Argo CD server
resources: {} resources:
# limits: limits:
# cpu: 100m cpu: 100m
# memory: 128Mi memory: 128Mi
# requests: requests:
# cpu: 50m cpu: 50m
# memory: 64Mi memory: 64Mi
## Certificate configuration ## Certificate configuration
certificate: certificate:
@ -1484,16 +1478,6 @@ repoServer:
# - name: custom-tools # - name: custom-tools
# emptyDir: {} # emptyDir: {}
# -- [Node selector]
nodeSelector:
node.coreweave.cloud/class: cpu
# -- [Tolerations] for use with node taints
tolerations:
- key: is_cpu_compute
operator: Exists
# -- Assign custom [affinity] rules to the deployment
affinity: {}
# -- Assign custom [TopologySpreadConstraints] rules to the repo server # -- Assign custom [TopologySpreadConstraints] rules to the repo server
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
## If labelSelector is left out, it will default to the labelSelector configuration of the deployment ## If labelSelector is left out, it will default to the labelSelector configuration of the deployment
@ -1514,13 +1498,13 @@ repoServer:
# readOnlyRootFilesystem: true # readOnlyRootFilesystem: true
# -- Resource limits and requests for the repo server pods # -- Resource limits and requests for the repo server pods
resources: {} resources:
# limits: limits:
# cpu: 50m cpu: 50m
# memory: 128Mi memory: 128Mi
# requests: requests:
# cpu: 10m cpu: 10m
# memory: 64Mi memory: 64Mi
## Repo server service configuration ## Repo server service configuration
service: service:
@ -1961,29 +1945,17 @@ applicationSet:
# runAsUser: 1000 # runAsUser: 1000
# -- Resource limits and requests for the controller pods. # -- Resource limits and requests for the controller pods.
resources: {} resources:
# We usually recommend not to specify default resources and to leave this as a conscious # We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little # choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following # resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'. # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits: limits:
# cpu: 100m cpu: 100m
# memory: 128Mi memory: 128Mi
# requests: requests:
# cpu: 100m cpu: 100m
# memory: 128Mi memory: 128Mi
# -- [Node selector]
nodeSelector:
node.coreweave.cloud/class: cpu
# -- [Tolerations] for use with node taints
tolerations:
- key: is_cpu_compute
operator: Exists
# -- Assign custom [affinity] rules
affinity: {}
# -- If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default. # -- If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default.
priorityClassName: "" priorityClassName: ""
@ -2067,9 +2039,6 @@ notifications:
# -- Notifications controller name string # -- Notifications controller name string
name: notifications-controller name: notifications-controller
# -- Assign custom [affinity] rules
affinity: {}
# -- Argo CD dashboard url; used in place of {{.context.argocdUrl}} in templates # -- Argo CD dashboard url; used in place of {{.context.argocdUrl}} in templates
argocdUrl: argocdUrl:
@ -2190,13 +2159,13 @@ notifications:
containerSecurityContext: {} containerSecurityContext: {}
# -- Resource limits and requests for the controller # -- Resource limits and requests for the controller
resources: {} resources:
# limits: limits:
# cpu: 100m cpu: 100m
# memory: 128Mi memory: 128Mi
# requests: requests:
# cpu: 100m cpu: 100m
# memory: 128Mi memory: 128Mi
serviceAccount: serviceAccount:
# -- Specifies whether a service account should be created # -- Specifies whether a service account should be created
@ -2424,11 +2393,6 @@ notifications:
# slack: # slack:
# attachments: "[{\n \"title\": \"{{ .app.metadata.name}}\",\n \"title_link\":\"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}\",\n \"color\": \"#18be52\",\n \"fields\": [\n {\n \"title\": \"Sync Status\",\n \"value\": \"{{.app.status.sync.status}}\",\n \"short\": true\n },\n {\n \"title\": \"Repository\",\n \"value\": \"{{.app.spec.source.repoURL}}\",\n \"short\": true\n }\n {{range $index, $c := .app.status.conditions}}\n {{if not $index}},{{end}}\n {{if $index}},{{end}}\n {\n \"title\": \"{{$c.type}}\",\n \"value\": \"{{$c.message}}\",\n \"short\": true\n }\n {{end}}\n ]\n}] " # attachments: "[{\n \"title\": \"{{ .app.metadata.name}}\",\n \"title_link\":\"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}\",\n \"color\": \"#18be52\",\n \"fields\": [\n {\n \"title\": \"Sync Status\",\n \"value\": \"{{.app.status.sync.status}}\",\n \"short\": true\n },\n {\n \"title\": \"Repository\",\n \"value\": \"{{.app.spec.source.repoURL}}\",\n \"short\": true\n }\n {{range $index, $c := .app.status.conditions}}\n {{if not $index}},{{end}}\n {{if $index}},{{end}}\n {\n \"title\": \"{{$c.type}}\",\n \"value\": \"{{$c.message}}\",\n \"short\": true\n }\n {{end}}\n ]\n}] "
# -- [Tolerations] for use with node taints
tolerations:
- key: is_cpu_compute
operator: Exists
# -- The trigger defines the condition when the notification should be sent # -- The trigger defines the condition when the notification should be sent
## For more information: https://argocd-notifications.readthedocs.io/en/stable/triggers/ ## For more information: https://argocd-notifications.readthedocs.io/en/stable/triggers/
triggers: {} triggers: {}
@ -2528,15 +2492,3 @@ notifications:
# requests: # requests:
# cpu: 100m # cpu: 100m
# memory: 128Mi # memory: 128Mi
# -- Assign custom [affinity] rules
affinity: {}
# -- [Tolerations] for use with node taints
tolerations:
- key: is_cpu_compute
operator: Exists
# -- [Node selector]
nodeSelector:
node.coreweave.cloud/class: cpu