diff --git a/charts/studio/Chart.yaml b/charts/studio/Chart.yaml index c721c76a..c6e36d24 100644 --- a/charts/studio/Chart.yaml +++ b/charts/studio/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: studio description: A Helm chart for Kubernetes type: application -version: 0.16.58 +version: 0.16.59 appVersion: "v2.148.3" maintainers: - name: iterative diff --git a/charts/studio/README.md b/charts/studio/README.md index 3e8d43da..d3664b0c 100644 --- a/charts/studio/README.md +++ b/charts/studio/README.md @@ -1,6 +1,6 @@ # studio -![Version: 0.16.58](https://img.shields.io/badge/Version-0.16.58-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v2.148.3](https://img.shields.io/badge/AppVersion-v2.148.3-informational?style=flat-square) +![Version: 0.16.59](https://img.shields.io/badge/Version-0.16.59-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v2.148.3](https://img.shields.io/badge/AppVersion-v2.148.3-informational?style=flat-square) A Helm chart for Kubernetes @@ -139,7 +139,7 @@ A Helm chart for Kubernetes | studioBlobvault.image | object | `{"repository":"nginx","tag":"1.27.0-alpine"}` | Image to use for the blobvault service | | studioBlobvault.image.repository | string | `"nginx"` | Image repository | | studioBlobvault.image.tag | string | `"1.27.0-alpine"` | Image tag | -| studioDatachainWorker | object | `{"affinity":{},"autoscaling":{"annotations":{},"behavior":{},"enabled":false,"maxReplicas":5,"minReplicas":1,"targetCPUUtilizationPercentage":80,"template":[]},"envFromSecret":"","envVars":{},"ephemeralStorage":{"persistentVolumeClaim":{"claimName":"datachain-worker","storageClass":""},"size":"20Gi","type":"ephemeral"},"image":{"pullPolicy":"IfNotPresent","repository":"docker.iterative.ai/studio-datachain-worker"},"jobQuota":10,"localStorage":{"persistentVolumeClaim":{"claimName":"datachain-worker-local","storageClass":""},"size":"50Gi","type":"ephemeral"},"logLevel":"info","nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"replicaCount":1,"resources":{"limits":{"ephemeral-storage":"20Gi","memory":"16Gi"},"requests":{"cpu":"1000m","ephemeral-storage":"10Gi","memory":"3Gi"}},"securityContext":{},"serviceAccount":{"annotations":{},"create":false,"name":""},"strategy":{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":0}},"terminationGracePeriodSeconds":180,"tolerations":[]}` | Studio DataChain Worker settings group | +| studioDatachainWorker | object | `{"affinity":{},"autoscaling":{"annotations":{},"behavior":{},"enabled":false,"maxReplicas":5,"minReplicas":1,"targetCPUUtilizationPercentage":80,"template":[]},"envFromSecret":"","envVars":{},"ephemeralStorage":{"persistentVolumeClaim":{"claimName":"datachain-worker","storageClass":""},"size":"20Gi","type":"ephemeral"},"image":{"pullPolicy":"IfNotPresent","repository":"docker.iterative.ai/studio-datachain-worker"},"localStorage":{"persistentVolumeClaim":{"claimName":"datachain-worker-local","storageClass":""},"size":"50Gi","type":"ephemeral"},"logLevel":"info","nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"replicaCount":1,"resources":{"limits":{"ephemeral-storage":"20Gi","memory":"16Gi"},"requests":{"cpu":"1000m","ephemeral-storage":"10Gi","memory":"3Gi"}},"securityContext":{},"serviceAccount":{"annotations":{},"create":false,"name":""},"strategy":{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":0}},"terminationGracePeriodSeconds":180,"tolerations":[]}` | Studio DataChain Worker settings group | | studioDatachainWorker.affinity | object | `{}` | DataChain worker pod affinity configuration | | studioDatachainWorker.autoscaling | object | `{"annotations":{},"behavior":{},"enabled":false,"maxReplicas":5,"minReplicas":1,"targetCPUUtilizationPercentage":80,"template":[]}` | DataChain worker autoscaling configuration | | studioDatachainWorker.autoscaling.annotations | object | `{}` | Worker autoscaling annotation | @@ -160,7 +160,6 @@ A Helm chart for Kubernetes | studioDatachainWorker.image | object | `{"pullPolicy":"IfNotPresent","repository":"docker.iterative.ai/studio-datachain-worker"}` | DataChain worker image settings | | studioDatachainWorker.image.pullPolicy | string | `"IfNotPresent"` | DataChain worker image pull policy | | studioDatachainWorker.image.repository | string | `"docker.iterative.ai/studio-datachain-worker"` | DataChain worker image repository | -| studioDatachainWorker.jobQuota | int | `10` | DataChain worker job quota | | studioDatachainWorker.localStorage | object | `{"persistentVolumeClaim":{"claimName":"datachain-worker-local","storageClass":""},"size":"50Gi","type":"ephemeral"}` | Local storage configuration (used for storing DataChain virtual environments) | | studioDatachainWorker.localStorage.persistentVolumeClaim | object | `{"claimName":"datachain-worker-local","storageClass":""}` | Persistent Volume Claim configuration for local storage | | studioDatachainWorker.localStorage.persistentVolumeClaim.claimName | string | `"datachain-worker-local"` | Persistent Volume Claim name, to mount externally managed PVC (`localStorage.type` has to be set to `pvc`) | @@ -178,6 +177,38 @@ A Helm chart for Kubernetes | studioDatachainWorker.strategy | object | `{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":0}}` | DataChain worker deployment strategy | | studioDatachainWorker.terminationGracePeriodSeconds | int | `180` | DataChain worker termination grace period | | studioDatachainWorker.tolerations | list | `[]` | DataChain worker pod tolerations configuration | +| studioDatachainWorkerJobTemplate | object | `{"activeDeadlineSeconds":86400,"affinity":{},"backoffLimit":0,"envVars":{},"ephemeralStorage":{"persistentVolumeClaim":{"claimName":"datachain-worker","storageClass":""},"size":"20Gi","type":"ephemeral"},"image":{"pullPolicy":"IfNotPresent","repository":"docker.iterative.ai/studio-datachain-worker"},"jobQuota":10,"localStorage":{"persistentVolumeClaim":{"claimName":"datachain-worker-local","storageClass":""},"size":"50Gi","type":"ephemeral"},"logLevel":"info","nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"resources":{"limits":{"ephemeral-storage":"20Gi","memory":"16Gi"},"requests":{"cpu":"1000m","ephemeral-storage":"10Gi","memory":"3Gi"}},"runtimeClassName":null,"securityContext":{},"serviceAccount":{"annotations":{},"create":false,"name":""},"tolerations":[],"ttlSecondsAfterFinished":5}` | Studio DataChain Worker Job template settings group | +| studioDatachainWorkerJobTemplate.activeDeadlineSeconds | int | `86400` | DataChain worker Job active deadline (seconds) | +| studioDatachainWorkerJobTemplate.affinity | object | `{}` | DataChain worker Job pod affinity configuration | +| studioDatachainWorkerJobTemplate.backoffLimit | int | `0` | DataChain worker Job backoff limit | +| studioDatachainWorkerJobTemplate.envVars | object | `{}` | Additional environment variables for DataChain worker Job pods | +| studioDatachainWorkerJobTemplate.ephemeralStorage | object | `{"persistentVolumeClaim":{"claimName":"datachain-worker","storageClass":""},"size":"20Gi","type":"ephemeral"}` | Ephemeral storage configuration | +| studioDatachainWorkerJobTemplate.ephemeralStorage.persistentVolumeClaim | object | `{"claimName":"datachain-worker","storageClass":""}` | Persistent Volume Claim configuration for ephemeral storage (if type is set `pvc`) | +| studioDatachainWorkerJobTemplate.ephemeralStorage.persistentVolumeClaim.claimName | string | `"datachain-worker"` | Persistent Volume Claim name, to mount externally managed PVC (`ephemeralStorage.type` has to be set to `pvc`) | +| studioDatachainWorkerJobTemplate.ephemeralStorage.persistentVolumeClaim.storageClass | string | `""` | Persistent Volume Claim `storageClass` name, by default it will use the default `storageClass`(not used when `pvc` is set as type) | +| studioDatachainWorkerJobTemplate.ephemeralStorage.size | string | `"20Gi"` | Ephemeral Storage size | +| studioDatachainWorkerJobTemplate.ephemeralStorage.type | string | `"ephemeral"` | Ephemeral Storage type. Possible values: `emptyDir`, `ephemeral`, `pvc`, `pvcRWX` | +| studioDatachainWorkerJobTemplate.image | object | `{"pullPolicy":"IfNotPresent","repository":"docker.iterative.ai/studio-datachain-worker"}` | DataChain worker Job image settings | +| studioDatachainWorkerJobTemplate.image.pullPolicy | string | `"IfNotPresent"` | DataChain worker Job image pull policy | +| studioDatachainWorkerJobTemplate.image.repository | string | `"docker.iterative.ai/studio-datachain-worker"` | DataChain worker Job image repository | +| studioDatachainWorkerJobTemplate.jobQuota | int | `10` | DataChain worker Job quota | +| studioDatachainWorkerJobTemplate.localStorage | object | `{"persistentVolumeClaim":{"claimName":"datachain-worker-local","storageClass":""},"size":"50Gi","type":"ephemeral"}` | Local storage configuration (used for storing DataChain virtual environments) | +| studioDatachainWorkerJobTemplate.localStorage.persistentVolumeClaim | object | `{"claimName":"datachain-worker-local","storageClass":""}` | Persistent Volume Claim configuration for local storage | +| studioDatachainWorkerJobTemplate.localStorage.persistentVolumeClaim.claimName | string | `"datachain-worker-local"` | Persistent Volume Claim name, to mount externally managed PVC (`localStorage.type` has to be set to `pvc`) | +| studioDatachainWorkerJobTemplate.localStorage.persistentVolumeClaim.storageClass | string | `""` | Persistent Volume Claim `storageClass` name, by default it will use the default `storageClass`(not used when `pvc` is set as type) | +| studioDatachainWorkerJobTemplate.localStorage.size | string | `"50Gi"` | Local Storage size | +| studioDatachainWorkerJobTemplate.localStorage.type | string | `"ephemeral"` | Local Storage type. Possible values: `emptyDir`, `ephemeral`, `pvc` | +| studioDatachainWorkerJobTemplate.logLevel | string | `"info"` | DataChain worker Job log level | +| studioDatachainWorkerJobTemplate.nodeSelector | object | `{}` | DataChain worker Job pod node selector configuration | +| studioDatachainWorkerJobTemplate.podAnnotations | object | `{}` | Additional DataChain worker Job pod annotations | +| studioDatachainWorkerJobTemplate.podSecurityContext | object | `{}` | DataChain worker Job pod security context configuration | +| studioDatachainWorkerJobTemplate.resources | object | `{"limits":{"ephemeral-storage":"20Gi","memory":"16Gi"},"requests":{"cpu":"1000m","ephemeral-storage":"10Gi","memory":"3Gi"}}` | DataChain worker Job resources configuration | +| studioDatachainWorkerJobTemplate.resources.limits | object | `{"ephemeral-storage":"20Gi","memory":"16Gi"}` | DataChain worker Job limits configuration | +| studioDatachainWorkerJobTemplate.resources.requests | object | `{"cpu":"1000m","ephemeral-storage":"10Gi","memory":"3Gi"}` | DataChain worker Job requests configuration | +| studioDatachainWorkerJobTemplate.runtimeClassName | string | `nil` | DataChain worker Job security context configuration | +| studioDatachainWorkerJobTemplate.securityContext | object | `{}` | DataChain worker Job security context configuration | +| studioDatachainWorkerJobTemplate.tolerations | list | `[]` | DataChain worker Job pod tolerations configuration | +| studioDatachainWorkerJobTemplate.ttlSecondsAfterFinished | int | `5` | DataChain worker Job TTL after finished (seconds) | | studioUi | object | `{"affinity":{},"autoscaling":{"enabled":false,"maxReplicas":5,"minReplicas":1,"targetCPUUtilizationPercentage":80},"envFromSecret":"","envVars":{},"image":{"pullPolicy":"IfNotPresent","repository":"docker.iterative.ai/studio-frontend"},"nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"replicaCount":1,"resources":{"limits":{"memory":"2Gi"},"requests":{"cpu":"500m","memory":"1Gi"}},"securityContext":{},"service":{"port":3000,"type":"ClusterIP"},"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}},"tolerations":[]}` | Studio UI settings group | | studioUi.envFromSecret | string | `""` | The name of an existing Secret that contains sensitive environment variables passed to UI pods. | | studioUi.envVars | object | `{}` | Additional environment variables for ui pods | diff --git a/charts/studio/templates/deployment-studio-datachain-worker.yaml b/charts/studio/templates/deployment-studio-datachain-worker.yaml index 0b1465e1..2b2c65da 100644 --- a/charts/studio/templates/deployment-studio-datachain-worker.yaml +++ b/charts/studio/templates/deployment-studio-datachain-worker.yaml @@ -48,7 +48,7 @@ spec: {{- toYaml .Values.studioDatachainWorker.securityContext | nindent 12 }} image: "{{ .Values.studioDatachainWorker.image.repository }}:{{ .Values.studioDatachainWorker.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.studioDatachainWorker.image.pullPolicy }} - args: ["/app/bin/run_celery_worker_udf.sh"] + args: ["/app/bin/run_celery.sh", "datachain-master"] resources: {{- toYaml .Values.studioDatachainWorker.resources | nindent 12 }} env: @@ -72,76 +72,12 @@ spec: name: {{ .Values.studioDatachainWorker.envFromSecret }} {{- end }} volumeMounts: - {{- if not .Values.global.blobvault.bucket }} - - name: blobvault - mountPath: /blobvault - {{- end }} - name: studio-ca-certificates mountPath: /usr/local/share/ca-certificates - - name: tmp-ephemeral - mountPath: /tmp/shared - {{- if .Values.studioDatachainWorker.localStorage }} - - name: tmp-local - mountPath: /tmp/local - {{- end }} volumes: - {{- if not .Values.global.blobvault.bucket }} - - name: blobvault - persistentVolumeClaim: - claimName: blobvault - {{- end }} - name: studio-ca-certificates configMap: name: studio-ca-certificates - - name: tmp-ephemeral - {{- if eq .Values.studioDatachainWorker.ephemeralStorage.type "ephemeral" }} - ephemeral: - volumeClaimTemplate: - metadata: - labels: - type: {{.Release.Name}}-{{ .Values.studioDatachainWorker.ephemeralStorage.persistentVolumeClaim.claimName }} - spec: - accessModes: [ "ReadWriteOnce" ] - {{- if .Values.studioDatachainWorker.ephemeralStorage.persistentVolumeClaim.storageClass }} - storageClassName: {{ .Values.studioDatachainWorker.ephemeralStorage.persistentVolumeClaim.storageClass }} - {{- end }} - resources: - requests: - storage: {{ .Values.studioDatachainWorker.ephemeralStorage.size }} - {{- else if eq .Values.studioDatachainWorker.ephemeralStorage.type "pvc" }} - persistentVolumeClaim: - claimName: {{ .Values.studioDatachainWorker.ephemeralStorage.persistentVolumeClaim.claimName }} - {{- else if eq .Values.studioDatachainWorker.ephemeralStorage.type "pvcRWX" }} - persistentVolumeClaim: - claimName: {{.Release.Name}}-studio-datachain-worker-ephemeral-rwx - {{- else if eq .Values.studioDatachainWorker.ephemeralStorage.type "emptyDir"}} - emptyDir: - sizeLimit: {{ .Values.studioDatachainWorker.ephemeralStorage.size }} - {{- end }} - {{- with .Values.studioDatachainWorker.localStorage }} - - name: tmp-local - {{- if eq .type "ephemeral" }} - ephemeral: - volumeClaimTemplate: - metadata: - labels: - type: {{ $.Release.Name }}-{{ .persistentVolumeClaim.claimName }} - spec: - accessModes: [ "ReadWriteOnce" ] - {{- if .persistentVolumeClaim.storageClass }} - storageClassName: {{ .persistentVolumeClaim.storageClass }} - {{- end }} - resources: - requests: - storage: {{ .size }} - {{- else if eq .type "pvc" }} - persistentVolumeClaim: - claimName: {{ .persistentVolumeClaim.claimName }} - {{- else if eq .type "emptyDir"}} - emptyDir: - sizeLimit: {{ .size }} - {{- end }} - {{- end }} {{- with .Values.studioDatachainWorker.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/charts/studio/templates/job-studio-datachain-worker.yaml b/charts/studio/templates/job-studio-datachain-worker.yaml new file mode 100644 index 00000000..46db8568 --- /dev/null +++ b/charts/studio/templates/job-studio-datachain-worker.yaml @@ -0,0 +1,123 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: studio-datachain-worker-template + labels: + {{- include "studio-datachain-worker.labels" . | nindent 4 }} +spec: + suspend: true # we treat this Job as a template only + selector: + matchLabels: + {{- include "studio-datachain-worker.selectorLabels" . | nindent 6 }} + activeDeadlineSeconds: {{ .Values.studioDatachainWorkerJobTemplate.activeDeadlineSeconds }} + ttlSecondsAfterFinished: {{ .Values.studioDatachainWorkerJobTemplate.ttlSecondsAfterFinished }} + backoffLimit: {{ .Values.studioDatachainWorkerJobTemplate.backoffLimit }} + template: + metadata: + annotations: + {{- with .Values.studioDatachainWorkerJobTemplate.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "studio-datachain-worker.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "studio-datachain-worker.serviceAccountName" . }} + runtimeClassName: {{ .Values.studioDatachainWorkerJobTemplate.runtimeClassName }} + securityContext: + fsGroup: 103 + fsGroupChangePolicy: "OnRootMismatch" + {{- with .Values.studioDatachainWorkerJobTemplate.podSecurityContext }} + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: studio-datachain-worker + securityContext: + {{- toYaml .Values.studioDatachainWorkerJobTemplate.securityContext | nindent 12 }} + image: "{{ .Values.studioDatachainWorkerJobTemplate.image.repository }}:{{ .Values.studioDatachainWorkerJobTemplate.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.studioDatachainWorkerJobTemplate.image.pullPolicy }} + args: ["/app/bin/run_celery.sh", "datachain-worker"] + resources: + {{- toYaml .Values.studioDatachainWorkerJobTemplate.resources | nindent 12 }} + env: + - name: "NO_MIGRATE_DB" + value: "1" + - name: "WAIT_FOR_MIGRATIONS" + value: "0" + volumeMounts: + - name: studio-ca-certificates + mountPath: /usr/local/share/ca-certificates + - name: tmp-ephemeral + mountPath: /tmp/shared + {{- if .Values.studioDatachainWorkerJobTemplate.localStorage }} + - name: tmp-local + mountPath: /tmp/local + {{- end }} + volumes: + - name: studio-ca-certificates + configMap: + name: studio-ca-certificates + - name: tmp-ephemeral + {{- if eq .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.type "ephemeral" }} + ephemeral: + volumeClaimTemplate: + metadata: + labels: + type: {{.Release.Name}}-{{ .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.persistentVolumeClaim.claimName }} + spec: + accessModes: [ "ReadWriteOnce" ] + {{- if .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.persistentVolumeClaim.storageClass }} + storageClassName: {{ .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.persistentVolumeClaim.storageClass }} + {{- end }} + resources: + requests: + storage: {{ .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.size }} + {{- else if eq .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.type "pvc" }} + persistentVolumeClaim: + claimName: {{ .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.persistentVolumeClaim.claimName }} + {{- else if eq .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.type "pvcRWX" }} + persistentVolumeClaim: + claimName: {{.Release.Name}}-studio-datachain-worker-ephemeral-rwx + {{- else if eq .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.type "emptyDir"}} + emptyDir: + sizeLimit: {{ .Values.studioDatachainWorkerJobTemplate.ephemeralStorage.size }} + {{- end }} + {{- with .Values.studioDatachainWorkerJobTemplate.localStorage }} + - name: tmp-local + {{- if eq .type "ephemeral" }} + ephemeral: + volumeClaimTemplate: + metadata: + labels: + type: {{ $.Release.Name }}-{{ .persistentVolumeClaim.claimName }} + spec: + accessModes: [ "ReadWriteOnce" ] + {{- if .persistentVolumeClaim.storageClass }} + storageClassName: {{ .persistentVolumeClaim.storageClass }} + {{- end }} + resources: + requests: + storage: {{ .size }} + {{- else if eq .type "pvc" }} + persistentVolumeClaim: + claimName: {{ .persistentVolumeClaim.claimName }} + {{- else if eq .type "emptyDir"}} + emptyDir: + sizeLimit: {{ .size }} + {{- end }} + {{- end }} + {{- with .Values.studioDatachainWorkerJobTemplate.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.studioDatachainWorkerJobTemplate.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.studioDatachainWorkerJobTemplate.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/studio/templates/jobquota-datachain-worker.yaml b/charts/studio/templates/jobquota-datachain-worker.yaml deleted file mode 100644 index af3a1312..00000000 --- a/charts/studio/templates/jobquota-datachain-worker.yaml +++ /dev/null @@ -1,11 +0,0 @@ -{{- if (.Values.studioDatachainWorker).jobQuota -}} -apiVersion: v1 -kind: ResourceQuota -metadata: - name: studio-datachain-worker-job-quota - labels: - {{- include "studio-datachain-worker.labels" . | nindent 4 }} -spec: - hard: - count/jobs.batch: {{ .Values.studioDatachainWorker.jobQuota }} -{{- end }} diff --git a/charts/studio/templates/resourcequota-datachain-worker-job.yaml b/charts/studio/templates/resourcequota-datachain-worker-job.yaml new file mode 100644 index 00000000..1a642228 --- /dev/null +++ b/charts/studio/templates/resourcequota-datachain-worker-job.yaml @@ -0,0 +1,11 @@ +{{- if (.Values.studioDatachainWorkerJob).jobQuota -}} +apiVersion: v1 +kind: ResourceQuota +metadata: + name: studio-datachain-worker-job-quota + labels: + {{- include "studio-datachain-worker-job.labels" . | nindent 4 }} +spec: + hard: + count/jobs.batch: {{ .Values.studioDatachainWorkerJob.jobQuota }} +{{- end }} diff --git a/charts/studio/templates/role-datachain-worker.yaml b/charts/studio/templates/role-datachain-worker.yaml index ce905330..e15db973 100644 --- a/charts/studio/templates/role-datachain-worker.yaml +++ b/charts/studio/templates/role-datachain-worker.yaml @@ -13,7 +13,4 @@ rules: - apiGroups: ["batch"] resources: ["jobs"] verbs: ["create", "get", "list", "watch"] - - apiGroups: ["apps"] - resources: ["deployments"] - verbs: ["get"] {{- end }} diff --git a/charts/studio/values.yaml b/charts/studio/values.yaml index 89fb68c7..12f5e95a 100644 --- a/charts/studio/values.yaml +++ b/charts/studio/values.yaml @@ -684,9 +684,6 @@ studioDatachainWorker: # -- DataChain worker log level logLevel: "info" - # -- DataChain worker job quota - jobQuota: 10 - # -- DataChain worker resources configuration resources: # -- DataChain worker requests configuration @@ -825,6 +822,122 @@ studioDatachainWorker: # If not set and create is true, a name is generated using the fullname template name: "" +# -- Studio DataChain Worker Job template settings group +studioDatachainWorkerJobTemplate: + + # -- DataChain worker Job image settings + image: + # -- DataChain worker Job image repository + repository: docker.iterative.ai/studio-datachain-worker + # -- DataChain worker Job image pull policy + pullPolicy: IfNotPresent + # -- Overrides the image tag whose default is the chart appVersion. + # tag: "v1.34.0" + + # -- Additional environment variables for DataChain worker Job pods + envVars: {} + # Example: + # envVars: + # DEBUG: "True" + + # -- DataChain worker Job log level + logLevel: "info" + + # -- DataChain worker Job quota + jobQuota: 10 + + # -- DataChain worker Job resources configuration + resources: + # -- DataChain worker Job requests configuration + requests: + cpu: 1000m + memory: 3Gi + ephemeral-storage: 10Gi + # -- DataChain worker Job limits configuration + limits: + memory: 16Gi + ephemeral-storage: 20Gi + + # -- Ephemeral storage configuration + ephemeralStorage: + # -- Ephemeral Storage type. Possible values: `emptyDir`, `ephemeral`, `pvc`, `pvcRWX` + type: ephemeral + # -- Ephemeral Storage size + size: 20Gi + # -- Persistent Volume Claim configuration for ephemeral storage (if type is set `pvc`) + persistentVolumeClaim: + # -- Persistent Volume Claim name, to mount externally managed PVC (`ephemeralStorage.type` has to be set to `pvc`) + claimName: "datachain-worker" + # -- Persistent Volume Claim `storageClass` name, by default it will use the default `storageClass`(not used when `pvc` is set as type) + storageClass: "" + + # -- Local storage configuration (used for storing DataChain virtual environments) + localStorage: + # -- Local Storage type. Possible values: `emptyDir`, `ephemeral`, `pvc` + type: ephemeral + # -- Local Storage size + size: 50Gi + # -- Persistent Volume Claim configuration for local storage + persistentVolumeClaim: + # -- Persistent Volume Claim name, to mount externally managed PVC (`localStorage.type` has to be set to `pvc`) + claimName: "datachain-worker-local" + # -- Persistent Volume Claim `storageClass` name, by default it will use the default `storageClass`(not used when `pvc` is set as type) + storageClass: "" + +# livenessProbe: +# # -- DataChain worker Job liveness probe `initialDelaySeconds` +# initialDelaySeconds: 10 +# # -- DataChain worker Job liveness probe `periodSeconds` +# periodSeconds: 10 +# # -- DataChain worker Job liveness probe `timeoutSeconds` +# timeoutSeconds: 10 + + # -- DataChain worker Job active deadline (seconds) + activeDeadlineSeconds: 86400 + + # -- DataChain worker Job TTL after finished (seconds) + ttlSecondsAfterFinished: 5 + + # -- DataChain worker Job backoff limit + backoffLimit: 0 + + # -- Additional DataChain worker Job pod annotations + podAnnotations: {} + + # -- DataChain worker Job pod security context configuration + podSecurityContext: {} + # fsGroup: 2000 + + # -- DataChain worker Job security context configuration + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + # -- DataChain worker Job security context configuration + runtimeClassName: null # gvisor + + # -- DataChain worker Job pod node selector configuration + nodeSelector: {} + + # -- DataChain worker Job pod tolerations configuration + tolerations: [] + + # -- DataChain worker Job pod affinity configuration + affinity: {} + + serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + # -- Studio: Additional service to expose the blobvault files generated by the worker # It is enabled automatically if the worker is scaled to 1 replica and no bucket is configured studioBlobvault: