diff --git a/swh/templates/loaders/deployment.yaml b/swh/templates/loaders/deployment.yaml index daa8656..1b9b431 100644 --- a/swh/templates/loaders/deployment.yaml +++ b/swh/templates/loaders/deployment.yaml @@ -1,173 +1,174 @@ {{ if .Values.loaders.enabled -}} {{- $configurationChecksum := include (print $.Template.BasePath "/loaders/configmap.yaml") . -}} {{- range $loader_type, $deployment_config := .Values.loaders.deployments -}} {{- $loader_name := ( print "loader-" $loader_type ) -}} # if defined at the "typed" loader level {{- $local_container_image_key := get $deployment_config "image" }} {{- $local_container_image := get $.Values $local_container_image_key }} {{- $local_container_image_version_key := ( print $local_container_image_key "_version" ) }} {{- $local_container_image_version := get $.Values $local_container_image_version_key }} # otherwise if the global image is defined {{- $image_name_key := ( print "swh_loader_" $loader_type "_image" ) -}} {{- $image_version_key := ( print $image_name_key "_version" ) -}} {{- $container_image := get $.Values $image_name_key }} {{- $container_image_version := get $.Values $image_version_key }} +{{- $loader_affinity := get $deployment_config "affinity" | default $.Values.loaders.affinity }} --- apiVersion: apps/v1 kind: Deployment metadata: name: {{ $loader_name }} namespace: {{ $.Values.namespace }} labels: app: {{ $loader_name }} spec: revisionHistoryLimit: 2 selector: matchLabels: app: {{ $loader_name }} strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 template: metadata: labels: app: {{ $loader_name }} annotations: # Force a rollout upgrade if the configuration changes checksum/config: {{ $configurationChecksum | sha256sum }} spec: - {{- if $.Values.loaders.affinity }} + {{- if $loader_affinity }} affinity: - {{ toYaml $.Values.loaders.affinity | nindent 8 }} + {{- toYaml $loader_affinity | nindent 8 }} {{- end }} terminationGracePeriodSeconds: 3600 initContainers: - name: prepare-configuration image: debian:bullseye imagePullPolicy: Always env: - name: AMQP_USERNAME valueFrom: secretKeyRef: name: common-secrets key: rabbitmq-amqp-username # 'name' secret must exist & include that ^ key optional: false - name: AMQP_PASSWORD valueFrom: secretKeyRef: name: common-secrets key: rabbitmq-amqp-password # 'name' secret must exist & include that ^ key optional: false {{ if ( contains "deposit" $loader_name ) -}} - name: DEPOSIT_USERNAME valueFrom: secretKeyRef: name: common-secrets key: deposit-username # 'name' secret must exist & include key "host" optional: false - name: DEPOSIT_PASSWORD valueFrom: secretKeyRef: name: common-secrets key: deposit-password # 'name' secret must exist & include key "host" optional: false {{ end }} command: - /entrypoint.sh volumeMounts: - name: configuration-template mountPath: /entrypoint.sh subPath: "init-container-entrypoint.sh" readOnly: true - name: configuration mountPath: /etc/swh - name: configuration-template mountPath: /etc/swh/configuration-template - name: metadata-fetcher-credentials mountPath: /etc/credentials/metadata-fetcher readOnly: true containers: - name: loaders {{ if $local_container_image -}} image: {{ $local_container_image }}:{{ $local_container_image_version }} {{ else if $container_image -}} image: {{ $container_image }}:{{ $container_image_version }} {{ else -}} image: {{ $.Values.swh_loaders_image }}:{{ $.Values.swh_loaders_image_version }} {{ end }} imagePullPolicy: Always command: - /opt/swh/entrypoint.sh resources: requests: memory: {{ get $deployment_config "requestedMemory" | default "512Mi" }} cpu: {{ get $deployment_config "requestedCpu" | default "500m" }} limits: memory: "4000Mi" cpu: "1200m" lifecycle: preStop: exec: command: ["/pre-stop.sh"] env: - name: STATSD_HOST value: {{ $.Values.statsdExternalHost | default "prometheus-statsd-exporter" }} - name: STATSD_PORT value: {{ $.Values.statsdPort | default "9125" | quote }} - name: MAX_TASKS_PER_CHILD value: {{ get $deployment_config "maxTasksPerChild" | default 10 | quote }} - name: LOGLEVEL value: {{ get $deployment_config "logLevel" | default "INFO" | quote }} - name: SWH_CONFIG_FILENAME value: /etc/swh/config.yml - name: SWH_SENTRY_ENVIRONMENT value: {{ $.Values.sentry.environment }} - name: SWH_MAIN_PACKAGE value: {{ get $deployment_config "sentrySwhPackage" }} - name: SWH_SENTRY_DSN valueFrom: secretKeyRef: name: common-secrets key: {{ $loader_name}}-sentry-dsn # 'name' secret must exist & include key "host" optional: false volumeMounts: - name: loader-utils mountPath: /pre-stop.sh subPath: "pre-stop.sh" - name: configuration mountPath: /etc/swh - name: localstorage mountPath: /tmp volumes: - name: localstorage emptyDir: {} - name: configuration emptyDir: {} - name: configuration-template configMap: name: {{ $loader_name }}-template defaultMode: 0777 items: - key: "config.yml.template" path: "config.yml.template" - key: "init-container-entrypoint.sh" path: "init-container-entrypoint.sh" - name: loader-utils configMap: name: loader-utils defaultMode: 0777 items: - key: "pre-stop-idempotent.sh" path: "pre-stop.sh" - name: metadata-fetcher-credentials secret: secretName: metadata-fetcher-credentials optional: true {{ end }} {{- end -}} diff --git a/swh/values/production.yaml b/swh/values/production.yaml index b77837b..fb9ecf5 100644 --- a/swh/values/production.yaml +++ b/swh/values/production.yaml @@ -1,40 +1,64 @@ sentry: environment: production graphql: enabled: true backends: storage: host: moma.internal.softwareheritage.org port: 5002 search: host: moma.internal.softwareheritage.org port: 5010 ingress: enabled: true host: archive.softwareheritage.org httpPath: /graphql gunicorn: threads: 4 workers: 2 timeout: 3600 loaders: enabled: true storage: host: saam.internal.softwareheritage.org port: 5002 amqp: host: rabbitmq.internal.softwareheritage.org deployments: addforgenow: image: swh_loader_git_image requestedMemory: 256Mi requestedCpu: 200m queues: - add_forge_now:swh.loader.git.tasks.UpdateGitRepository autoScaling: queueThreshold: 1 maxReplicaCount: 5 sentrySwhPackage: swh.loader.git + large-repository: + image: swh_loader_git_image + requestedMemory: 1024Mi + requestedCpu: 800m + queues: + - oneshot:swh.loader.git.tasks.UpdateGitRepository + - oneshot2:swh.loader.git.tasks.UpdateGitRepository + autoScaling: + queueThreshold: 1 + maxReplicaCount: 2 + sentrySwhPackage: swh.loader.git + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "swh/loader" + operator: In + values: + - "true" + - key: "swh/large-scratch-fs" + operator: In + values: + - "true"