{{- if .Values.apiserver.enabled }} apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "apiserver.referenceName" . }} labels: {{- include "clearml.labels" . | nindent 4 }} spec: replicas: {{ .Values.apiserver.replicaCount }} selector: matchLabels: {{- include "apiserver.selectorLabels" . | nindent 6 }} template: metadata: {{- with .Values.apiserver.podAnnotations }} annotations: {{- toYaml . | nindent 8 }} {{- end }} labels: {{- include "apiserver.selectorLabels" . | nindent 8 }} spec: {{- if .Values.imageCredentials.enabled }} imagePullSecrets: {{- if .Values.imageCredentials.existingSecret }} - name: .Values.imageCredentials.existingSecret {{- else }} - name: clearml-registry-key {{- end }} {{- end }} {{- if or .Values.apiserver.additionalConfigs .Values.apiserver.existingAdditionalConfigsConfigMap .Values.apiserver.existingAdditionalConfigsSecret }} volumes: - name: apiserver-config {{- if or .Values.apiserver.existingAdditionalConfigsConfigMap }} configMap: name: {{ .Values.apiserver.existingAdditionalConfigsConfigMap }} {{- else if or .Values.apiserver.existingAdditionalConfigsSecret }} secret: secretName: {{ .Values.apiserver.existingAdditionalConfigsSecret }} {{- else if or .Values.apiserver.additionalConfigs }} configMap: name: "{{ include "apiserver.referenceName" . }}-configmap" {{- end }} {{- end }} securityContext: {{ toYaml .Values.apiserver.podSecurityContext | nindent 8 }} initContainers: - name: init-apiserver {{- if .Values.enterpriseFeatures.enabled }} image: "{{ .Values.apiserver.image.repository }}:{{ .Values.enterpriseFeatures.apiserverImageTagOverride }}" {{- else }} image: "{{ .Values.apiserver.image.repository }}:{{ .Values.apiserver.image.tag }}" {{- end }} command: - /bin/sh - -c - > set -x; while [ $(curl -sw '%{http_code}' "http://{{ include "elasticsearch.servicename" . }}:{{ include "elasticsearch.serviceport" . }}/_cluster/health" -o /dev/null) -ne 200 ] ; do echo "waiting for elasticsearch" ; sleep 5 ; done containers: - name: clearml-apiserver {{- if .Values.enterpriseFeatures.enabled }} image: "{{ .Values.apiserver.image.repository }}:{{ .Values.enterpriseFeatures.apiserverImageTagOverride }}" {{- else }} image: "{{ .Values.apiserver.image.repository }}:{{ .Values.apiserver.image.tag }}" {{- end }} imagePullPolicy: {{ .Values.apiserver.image.pullPolicy }} ports: - name: http containerPort: 8008 protocol: TCP env: - name: CLEARML_ELASTIC_SERVICE_HOST value: {{ include "elasticsearch.servicename" . }} - name: CLEARML_ELASTIC_SERVICE_PORT value: "{{ include "elasticsearch.serviceport" . }}" - name: CLEARML_MONGODB_SERVICE_CONNECTION_STRING value: {{ include "mongodb.connectionstring" . | quote }} - name: CLEARML_REDIS_SERVICE_HOST value: {{ include "redis.servicename" . }} - name: CLEARML_REDIS_SERVICE_PORT value: "{{ include "redis.serviceport" . }}" - name: CLEARML_CONFIG_PATH value: /opt/clearml/config - name: CLEARML__apiserver__default_company_name value: "{{ .Values.clearml.defaultCompany }}" {{- if not (eq .Values.clearml.cookieDomain "") }} - name: CLEARML__APISERVER__AUTH__SESSION_AUTH_COOKIE_NAME value: {{ .Values.clearml.cookieName }} - name: CLEARML__APISERVER__AUTH__COOKIES__DOMAIN value: ".{{ .Values.clearml.cookieDomain }}" {{- end }} - name: CLEARML__secure__credentials__apiserver__user_key valueFrom: secretKeyRef: name: clearml-conf key: apiserver_key - name: CLEARML__secure__credentials__apiserver__user_secret valueFrom: secretKeyRef: name: clearml-conf key: apiserver_secret - name: CLEARML__secure__auth__token_secret valueFrom: secretKeyRef: name: clearml-conf key: secure_auth_token_secret {{- if .Values.apiserver.prepopulateEnabled }} - name: CLEARML__APISERVER__PRE_POPULATE__ENABLED value: "true" - name: CLEARML__APISERVER__PRE_POPULATE__ZIP_FILES value: "/opt/clearml/db-pre-populate" {{- end }} {{- if .Values.enterpriseFeatures.enabled }} - name: CLEARML__apiserver__default_company value: "{{ .Values.enterpriseFeatures.defaultCompanyGuid }}" - name: APPLY_ES_MAPPINGS value: "false" - name: CLEARML__HOSTS__ELASTIC__LOGS__HOSTS value: "[\"http://{{ include "elasticsearch.servicename" . }}:{{ include "elasticsearch.serviceport" . }}\"]" - name: NUMBER_OF_GUNICORN_WORKERS value: "{{ .Values.apiserver.processes.count }}" - name: GUNICORN_TIMEOUT value: "{{ .Values.apiserver.processes.timeout }}" - name: GUNICORN_MAX_REQUESTS value: "{{ .Values.apiserver.processes.maxRequests }}" - name: GUNICORN_MAX_REQUESTS_JITTER value: "{{ .Values.apiserver.processes.maxRequestsJitter }}" - name: CLEARML_CONFIG_VERBOSE value: "0" - name: CLEARML__SERVICES__APPLICATIONS__TEMPLATES__FOLDER value: "/opt/allegro/config/applications" - name: CLEARML__apiserver__apilog__prefix value: "fluentd." - name: CLEARML__apiserver__apilog__index_name_prefix__default value: "allegro.apiserver.api-logs." - name: CLEARML__apiserver__apilog__adapter value: "logging" - name: CLEARML__apiserver__apilog__rotation__index_size value: "225000" - name: CLEARML__services__tasks__non_responsive_tasks_watchdog__enabled value: "false" - name: CLEARML__APISERVER__AUTH__COOKIES__MAX_AGE value: "2678400" - name: CLEARML__services__frames__scroll_state_expiration_hours value: "6" - name: CLEARML__services__organization__features__applications value: "true" - name: CLEARML__services__organization__features__app_management value: "true" - name: CLEARML__SERVICES___ELASTIC__MAPPINGS__EVENTS__NUMBER_OF_REPLICAS value: {{ .Values.apiserver.indexReplicas | quote }} - name: CLEARML__SERVICES___ELASTIC__MAPPINGS__EVENTS__NUMBER_OF_SHARDS value: {{ .Values.apiserver.indexShards | quote }} - name: CLEARML__APISERVER__LOG_CALLS value: "false" - name: ALLEGRO_ENV value: "onprem_k8s" - name: CLEARML__secure__credentials__fileserver__user_key valueFrom: secretKeyRef: name: clearml-conf key: fileserver_key - name: CLEARML__secure__credentials__fileserver__user_secret valueFrom: secretKeyRef: name: clearml-conf key: fileserver_secret - name: CLEARML__secure__applications__agents_credentials__apps_agent__user_key valueFrom: secretKeyRef: name: clearml-conf key: apps_agent_key - name: CLEARML__secure__applications__agents_credentials__apps_agent__user_secret valueFrom: secretKeyRef: name: clearml-conf key: apps_agent_secret {{- else }} - name: CLEARML__SECURE__CREDENTIALS__TESTS__USER_KEY valueFrom: secretKeyRef: name: "clearml-conf" key: test_user_key - name: CLEARML__SECURE__CREDENTIALS__TESTS__USER_SECRET valueFrom: secretKeyRef: name: "clearml-conf" key: test_user_secret - name: CLEARML_ENV value: "helm-cloud" {{- end }} {{- if .Values.apiserver.extraEnvs }} {{ toYaml .Values.apiserver.extraEnvs | nindent 10 }} {{- end }} {{- if not .Values.enterpriseFeatures.enabled }} args: - apiserver {{- end }} livenessProbe: initialDelaySeconds: 60 httpGet: path: /debug.ping port: 8008 readinessProbe: initialDelaySeconds: 60 failureThreshold: 8 httpGet: {{- if .Values.enterpriseFeatures.enabled }} path: /server.health_check {{- else }} path: /debug.ping {{- end }} port: 8008 httpHeaders: - name: Authorization value: Basic {{ include "readinessProbeAuth" . }} {{- if or .Values.apiserver.additionalConfigs .Values.apiserver.existingAdditionalConfigsConfigMap .Values.apiserver.existingAdditionalConfigsSecret }} volumeMounts: - name: apiserver-config {{- if .Values.enterpriseFeatures.enabled }} mountPath: /opt/clearml/config/default {{- else }} mountPath: /opt/clearml/config {{- end }} {{- end }} resources: {{- toYaml .Values.apiserver.resources | nindent 12 }} {{- with .Values.apiserver.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.apiserver.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.apiserver.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} {{- end }}