diff --git a/charts/clearml-serving/Chart.yaml b/charts/clearml-serving/Chart.yaml index 91e3b70..4139d30 100644 --- a/charts/clearml-serving/Chart.yaml +++ b/charts/clearml-serving/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: clearml-serving description: ClearML Serving Helm Chart type: application -version: "1.4.2" +version: "1.5.0" appVersion: "1.3.0" kubeVersion: ">= 1.21.0-0 < 1.29.0-0" home: https://clear.ml @@ -33,5 +33,7 @@ dependencies: condition: grafana.enabled annotations: artifacthub.io/changes: | + - kind: added + description: external file mount - kind: fixed - description: wrong clearmlServing reference in secrets + description: missinf parameters application in deploymets from values file diff --git a/charts/clearml-serving/README.md b/charts/clearml-serving/README.md index 53adf83..4b685ea 100644 --- a/charts/clearml-serving/README.md +++ b/charts/clearml-serving/README.md @@ -1,6 +1,6 @@ # ClearML Kubernetes Serving -![Version: 1.4.2](https://img.shields.io/badge/Version-1.4.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.3.0](https://img.shields.io/badge/AppVersion-1.3.0-informational?style=flat-square) +![Version: 1.5.0](https://img.shields.io/badge/Version-1.5.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.3.0](https://img.shields.io/badge/AppVersion-1.3.0-informational?style=flat-square) ClearML Serving Helm Chart @@ -54,9 +54,12 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0` | Key | Type | Default | Description | |-----|------|---------|-------------| | clearml | object | `{"apiAccessKey":"ClearML API Access Key","apiHost":"http://clearml-server-apiserver:8008","apiSecretKey":"ClearML API Secret Key","defaultBaseServeUrl":"http://127.0.0.1:8080/serve","filesHost":"http://clearml-server-fileserver:8081","kafkaServeUrl":"","servingTaskId":"ClearML Serving Task ID","webHost":"http://clearml-server-webserver:80"}` | ClearMl generic configurations | -| clearml_serving_inference | object | `{"affinity":{},"autoscaling":{"enabled":false,"maxReplicas":11,"minReplicas":1,"targetCPU":50,"targetMemory":50},"extraEnvironment":[],"extraPythonPackages":[],"image":{"repository":"allegroai/clearml-serving-inference","tag":"1.3.0"},"ingress":{"annotations":{},"enabled":false,"hostName":"serving.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"nodeSelector":{},"resources":{},"tolerations":[]}` | ClearML serving inference configurations | +| clearml_serving_inference | object | `{"additionalConfigs":{},"affinity":{},"autoscaling":{"enabled":false,"maxReplicas":11,"minReplicas":1,"targetCPU":50,"targetMemory":50},"existingAdditionalConfigsConfigMap":"","existingAdditionalConfigsSecret":"","extraEnvironment":[],"extraPythonPackages":[],"image":{"repository":"allegroai/clearml-serving-inference","tag":"1.3.0"},"ingress":{"annotations":{},"enabled":false,"hostName":"serving.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"nodeSelector":{},"resources":{},"tolerations":[]}` | ClearML serving inference configurations | +| clearml_serving_inference.additionalConfigs | object | `{}` | files declared in this parameter will be mounted on internal folder /opt/clearml/config and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsSecret | | clearml_serving_inference.affinity | object | `{}` | Affinity configuration | | clearml_serving_inference.autoscaling | object | `{"enabled":false,"maxReplicas":11,"minReplicas":1,"targetCPU":50,"targetMemory":50}` | Autoscaling configuration | +| clearml_serving_inference.existingAdditionalConfigsConfigMap | string | `""` | reference for files declared in existing ConfigMap will be mounted and read by pod (examples in values.yaml) | +| clearml_serving_inference.existingAdditionalConfigsSecret | string | `""` | reference for files declared in existing Secret will be mounted and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsConfigMap | | clearml_serving_inference.extraEnvironment | list | `[]` | Extra environment variables | | clearml_serving_inference.extraPythonPackages | list | `[]` | Extra Python Packages to be installed in running pods | | clearml_serving_inference.image | object | `{"repository":"allegroai/clearml-serving-inference","tag":"1.3.0"}` | Container Image | @@ -70,18 +73,25 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0` | clearml_serving_inference.nodeSelector | object | `{}` | Node Selector configuration | | clearml_serving_inference.resources | object | `{}` | Pod resources definition | | clearml_serving_inference.tolerations | list | `[]` | Tolerations configuration | -| clearml_serving_statistics | object | `{"affinity":{},"enabled":true,"extraPythonPackages":[],"image":{"repository":"allegroai/clearml-serving-statistics","tag":"1.3.0"},"nodeSelector":{},"resources":{},"tolerations":[]}` | ClearML serving statistics configurations | +| clearml_serving_statistics | object | `{"additionalConfigs":{},"affinity":{},"enabled":true,"existingAdditionalConfigsConfigMap":"","existingAdditionalConfigsSecret":"","extraEnvironment":[],"extraPythonPackages":[],"image":{"repository":"allegroai/clearml-serving-statistics","tag":"1.3.0"},"nodeSelector":{},"resources":{},"tolerations":[]}` | ClearML serving statistics configurations | +| clearml_serving_statistics.additionalConfigs | object | `{}` | files declared in this parameter will be mounted on internal folder /opt/clearml/config and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsSecret | | clearml_serving_statistics.affinity | object | `{}` | Affinity configuration | | clearml_serving_statistics.enabled | bool | `true` | Enable ClearML Serving Statistics | +| clearml_serving_statistics.existingAdditionalConfigsConfigMap | string | `""` | reference for files declared in existing ConfigMap will be mounted and read by pod (examples in values.yaml) | +| clearml_serving_statistics.existingAdditionalConfigsSecret | string | `""` | reference for files declared in existing Secret will be mounted and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsConfigMap | | clearml_serving_statistics.extraPythonPackages | list | `[]` | Extra Python Packages to be installed in running pods | | clearml_serving_statistics.image | object | `{"repository":"allegroai/clearml-serving-statistics","tag":"1.3.0"}` | Container Image | | clearml_serving_statistics.nodeSelector | object | `{}` | Node Selector configuration | | clearml_serving_statistics.resources | object | `{}` | Pod resources definition | | clearml_serving_statistics.tolerations | list | `[]` | Tolerations configuration | -| clearml_serving_triton | object | `{"affinity":{},"autoscaling":{"enabled":false,"maxReplicas":11,"minReplicas":1,"targetCPU":50,"targetMemory":50},"enabled":true,"extraPythonPackages":[],"image":{"repository":"allegroai/clearml-serving-triton","tag":"1.3.0"},"ingress":{"annotations":{},"enabled":false,"hostName":"serving-grpc.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"nodeSelector":{},"resources":{},"tolerations":[]}` | ClearML serving Triton configurations | +| clearml_serving_triton | object | `{"additionalConfigs":{},"affinity":{},"autoscaling":{"enabled":false,"maxReplicas":11,"minReplicas":1,"targetCPU":50,"targetMemory":50},"enabled":true,"existingAdditionalConfigsConfigMap":"","existingAdditionalConfigsSecret":"","extraEnvironment":[],"extraPythonPackages":[],"image":{"repository":"allegroai/clearml-serving-triton","tag":"1.3.0"},"ingress":{"annotations":{},"enabled":false,"hostName":"serving-grpc.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"nodeSelector":{},"resources":{},"tolerations":[]}` | ClearML serving Triton configurations | +| clearml_serving_triton.additionalConfigs | object | `{}` | files declared in this parameter will be mounted on internal folder /opt/clearml/config and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsSecret | | clearml_serving_triton.affinity | object | `{}` | Affinity configuration | | clearml_serving_triton.autoscaling | object | `{"enabled":false,"maxReplicas":11,"minReplicas":1,"targetCPU":50,"targetMemory":50}` | Autoscaling configuration | | clearml_serving_triton.enabled | bool | `true` | Triton pod creation enable/disable | +| clearml_serving_triton.existingAdditionalConfigsConfigMap | string | `""` | reference for files declared in existing ConfigMap will be mounted and read by pod (examples in values.yaml) | +| clearml_serving_triton.existingAdditionalConfigsSecret | string | `""` | reference for files declared in existing Secret will be mounted and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsConfigMap | +| clearml_serving_triton.extraEnvironment | list | `[]` | Extra environment variables | | clearml_serving_triton.extraPythonPackages | list | `[]` | Extra Python Packages to be installed in running pods | | clearml_serving_triton.image | object | `{"repository":"allegroai/clearml-serving-triton","tag":"1.3.0"}` | Container Image | | clearml_serving_triton.ingress | object | `{"annotations":{},"enabled":false,"hostName":"serving-grpc.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""}` | Ingress exposing configurations | diff --git a/charts/clearml-serving/templates/clearml-serving-inference-cm.yaml b/charts/clearml-serving/templates/clearml-serving-inference-cm.yaml new file mode 100644 index 0000000..ebf8d65 --- /dev/null +++ b/charts/clearml-serving/templates/clearml-serving-inference-cm.yaml @@ -0,0 +1,13 @@ +{{- if .Values.clearml_serving_inference.additionalConfigs }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: "{{ include "clearmlServing.fullname" . }}-inference-configmap" + labels: + {{- include "clearml.labels" . | nindent 4 }} +data: + {{- range $key, $val := .Values.clearml_serving_inference.additionalConfigs }} + {{ $key }}: | + {{- $val | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/clearml-serving/templates/clearml-serving-inference-deployment.yaml b/charts/clearml-serving/templates/clearml-serving-inference-deployment.yaml index 58e0997..0900a96 100644 --- a/charts/clearml-serving/templates/clearml-serving-inference-deployment.yaml +++ b/charts/clearml-serving/templates/clearml-serving-inference-deployment.yaml @@ -26,6 +26,20 @@ spec: - name: clearml-registry-key {{- end }} {{- end }} + {{- if or .Values.clearml_serving_inference.additionalConfigs .Values.clearml_serving_inference.existingAdditionalConfigsConfigMap .Values.clearml_serving_inference.existingAdditionalConfigsSecret }} + volumes: + - name: additional-config + {{- if or .Values.clearml_serving_inference.existingAdditionalConfigsConfigMap }} + configMap: + name: {{ .Values.clearml_serving_inference.existingAdditionalConfigsConfigMap }} + {{- else if or .Values.clearml_serving_inference.existingAdditionalConfigsSecret }} + secret: + secretName: {{ .Values.clearml_serving_inference.existingAdditionalConfigsSecret }} + {{- else if or .Values.clearml_serving_inference.additionalConfigs }} + configMap: + name: "{{ include "clearmlServing.fullname" . }}-inference-configmap" + {{- end }} + {{- end }} containers: - env: - name: CLEARML_API_ACCESS_KEY @@ -75,6 +89,23 @@ spec: name: {{ include "clearmlServing.fullname" . }}-inference ports: - containerPort: 8080 + {{- if or .Values.clearml_serving_inference.additionalConfigs .Values.clearml_serving_inference.existingAdditionalConfigsConfigMap .Values.clearml_serving_inference.existingAdditionalConfigsSecret }} + volumeMounts: + - name: additional-config + mountPath: /opt/clearml/config + {{- end }} + {{- with .Values.clearml_serving_inference.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.clearml_serving_inference.affinity }} + affinity: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.clearml_serving_inference.tolerations }} + tolerations: + {{- toYaml . | nindent 12 }} + {{- end }} resources: {{- toYaml .Values.clearml_serving_inference.resources | nindent 12 }} restartPolicy: Always diff --git a/charts/clearml-serving/templates/clearml-serving-statistics-cm.yaml b/charts/clearml-serving/templates/clearml-serving-statistics-cm.yaml new file mode 100644 index 0000000..e1ad3aa --- /dev/null +++ b/charts/clearml-serving/templates/clearml-serving-statistics-cm.yaml @@ -0,0 +1,15 @@ +{{- if .Values.clearml_serving_statistics.enabled }} +{{- if .Values.clearml_serving_statistics.additionalConfigs }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: "{{ include "clearmlServing.fullname" . }}-statistics-configmap" + labels: + {{- include "clearml.labels" . | nindent 4 }} +data: + {{- range $key, $val := .Values.clearml_serving_statistics.additionalConfigs }} + {{ $key }}: | + {{- $val | nindent 4 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/clearml-serving/templates/clearml-serving-statistics-deployment.yaml b/charts/clearml-serving/templates/clearml-serving-statistics-deployment.yaml index 63ae6dc..b76963f 100644 --- a/charts/clearml-serving/templates/clearml-serving-statistics-deployment.yaml +++ b/charts/clearml-serving/templates/clearml-serving-statistics-deployment.yaml @@ -27,6 +27,20 @@ spec: - name: clearml-registry-key {{- end }} {{- end }} + {{- if or .Values.clearml_serving_statistics.additionalConfigs .Values.clearml_serving_statistics.existingAdditionalConfigsConfigMap .Values.clearml_serving_statistics.existingAdditionalConfigsSecret }} + volumes: + - name: additional-config + {{- if or .Values.clearml_serving_statistics.existingAdditionalConfigsConfigMap }} + configMap: + name: {{ .Values.clearml_serving_statistics.existingAdditionalConfigsConfigMap }} + {{- else if or .Values.clearml_serving_statistics.existingAdditionalConfigsSecret }} + secret: + secretName: {{ .Values.clearml_serving_statistics.existingAdditionalConfigsSecret }} + {{- else if or .Values.clearml_serving_statistics.additionalConfigs }} + configMap: + name: "{{ include "clearmlServing.fullname" . }}-statistics-configmap" + {{- end }} + {{- end }} containers: - env: - name: CLEARML_API_ACCESS_KEY @@ -57,6 +71,23 @@ spec: name: {{ include "clearmlServing.fullname" . }}-statistics ports: - containerPort: 9999 + {{- if or .Values.clearml_serving_statistics.additionalConfigs .Values.clearml_serving_statistics.existingAdditionalConfigsConfigMap .Values.clearml_serving_statistics.existingAdditionalConfigsSecret }} + volumeMounts: + - name: additional-config + mountPath: /opt/clearml/config + {{- end }} + {{- with .Values.clearml_serving_statistics.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.clearml_serving_statistics.affinity }} + affinity: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.clearml_serving_statistics.tolerations }} + tolerations: + {{- toYaml . | nindent 12 }} + {{- end }} resources: {{- toYaml .Values.clearml_serving_statistics.resources | nindent 12 }} restartPolicy: Always diff --git a/charts/clearml-serving/templates/clearml-serving-triton-cm.yaml b/charts/clearml-serving/templates/clearml-serving-triton-cm.yaml new file mode 100644 index 0000000..b2ca2ce --- /dev/null +++ b/charts/clearml-serving/templates/clearml-serving-triton-cm.yaml @@ -0,0 +1,15 @@ +{{- if .Values.clearml_serving_triton.enabled }} +{{- if .Values.clearml_serving_triton.additionalConfigs }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: "{{ include "clearmlServing.fullname" . }}-triton-configmap" + labels: + {{- include "clearml.labels" . | nindent 4 }} +data: + {{- range $key, $val := .Values.clearml_serving_triton.additionalConfigs }} + {{ $key }}: | + {{- $val | nindent 4 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/clearml-serving/templates/clearml-serving-triton-deployment.yaml b/charts/clearml-serving/templates/clearml-serving-triton-deployment.yaml index 86343c8..9f502d6 100644 --- a/charts/clearml-serving/templates/clearml-serving-triton-deployment.yaml +++ b/charts/clearml-serving/templates/clearml-serving-triton-deployment.yaml @@ -27,6 +27,20 @@ spec: - name: clearml-registry-key {{- end }} {{- end }} + {{- if or .Values.clearml_serving_triton.additionalConfigs .Values.clearml_serving_triton.existingAdditionalConfigsConfigMap .Values.clearml_serving_triton.existingAdditionalConfigsSecret }} + volumes: + - name: additional-config + {{- if or .Values.clearml_serving_triton.existingAdditionalConfigsConfigMap }} + configMap: + name: {{ .Values.clearml_serving_triton.existingAdditionalConfigsConfigMap }} + {{- else if or .Values.clearml_serving_triton.existingAdditionalConfigsSecret }} + secret: + secretName: {{ .Values.clearml_serving_triton.existingAdditionalConfigsSecret }} + {{- else if or .Values.clearml_serving_triton.additionalConfigs }} + configMap: + name: "{{ include "clearmlServing.fullname" . }}-triton-configmap" + {{- end }} + {{- end }} containers: - env: - name: CLEARML_API_ACCESS_KEY @@ -53,6 +67,23 @@ spec: name: {{ include "clearmlServing.fullname" . }}-triton ports: - containerPort: 8001 + {{- if or .Values.clearml_serving_triton.additionalConfigs .Values.clearml_serving_triton.existingAdditionalConfigsConfigMap .Values.clearml_serving_triton.existingAdditionalConfigsSecret }} + volumeMounts: + - name: additional-config + mountPath: /opt/clearml/config + {{- end }} + {{- with .Values.clearml_serving_triton.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.clearml_serving_triton.affinity }} + affinity: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.clearml_serving_triton.tolerations }} + tolerations: + {{- toYaml . | nindent 12 }} + {{- end }} resources: {{- toYaml .Values.clearml_serving_triton.resources | nindent 12 }} restartPolicy: Always diff --git a/charts/clearml-serving/values.yaml b/charts/clearml-serving/values.yaml index 9fcaf9a..af68184 100644 --- a/charts/clearml-serving/values.yaml +++ b/charts/clearml-serving/values.yaml @@ -40,10 +40,19 @@ clearml_serving_statistics: affinity: {} # -- Pod resources definition resources: {} + extraEnvironment: [] # -- Extra Python Packages to be installed in running pods extraPythonPackages: [] # - numpy==1.22.4 # - pandas==1.4.2 + # -- reference for files declared in existing ConfigMap will be mounted and read by pod (examples in values.yaml) + existingAdditionalConfigsConfigMap: "" + # -- reference for files declared in existing Secret will be mounted and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsConfigMap + existingAdditionalConfigsSecret: "" + # -- files declared in this parameter will be mounted on internal folder /opt/clearml/config and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsSecret + additionalConfigs: {} + # additionalFile.conf: | + # # -- ClearML serving inference configurations clearml_serving_inference: @@ -65,6 +74,14 @@ clearml_serving_inference: extraPythonPackages: [] # - numpy==1.22.4 # - pandas==1.4.2 + # -- reference for files declared in existing ConfigMap will be mounted and read by pod (examples in values.yaml) + existingAdditionalConfigsConfigMap: "" + # -- reference for files declared in existing Secret will be mounted and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsConfigMap + existingAdditionalConfigsSecret: "" + # -- files declared in this parameter will be mounted on internal folder /opt/clearml/config and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsSecret + additionalConfigs: {} + # additionalFile.conf: | + # # -- Autoscaling configuration autoscaling: enabled: false @@ -103,10 +120,20 @@ clearml_serving_triton: affinity: {} # -- Pod resources definition resources: {} + # -- Extra environment variables + extraEnvironment: [] # -- Extra Python Packages to be installed in running pods extraPythonPackages: [] # - numpy==1.22.4 # - pandas==1.4.2 + # -- reference for files declared in existing ConfigMap will be mounted and read by pod (examples in values.yaml) + existingAdditionalConfigsConfigMap: "" + # -- reference for files declared in existing Secret will be mounted and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsConfigMap + existingAdditionalConfigsSecret: "" + # -- files declared in this parameter will be mounted on internal folder /opt/clearml/config and read by pod (examples in values.yaml) if not overridden by existingAdditionalConfigsSecret + additionalConfigs: {} + # additionalFile.conf: | + # # -- Autoscaling configuration autoscaling: enabled: false