Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# IDE files
.idea/
.vscode/
4 changes: 2 additions & 2 deletions charts/clearml-serving/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v2
name: clearml-serving
description: ClearML Serving Helm Chart
type: application
version: "1.6.2"
version: "1.6.3"
appVersion: "1.3.0"
kubeVersion: ">= 1.21.0-0"
home: https://clear.ml
Expand Down Expand Up @@ -34,4 +34,4 @@ dependencies:
annotations:
artifacthub.io/changes: |
- kind: fixed
description: "Bitnami registries workaround"
description: "Fixes for issue #375 - nodeSelector/toleration for inference app, replicas, etc."
14 changes: 9 additions & 5 deletions charts/clearml-serving/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ClearML Kubernetes Serving

![Version: 1.6.2](https://img.shields.io/badge/Version-1.6.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.6.3](https://img.shields.io/badge/Version-1.6.3-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

Expand Down Expand Up @@ -61,8 +61,9 @@ Kubernetes: `>= 1.21.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 | `{"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":{},"pollFrequencyMinutes":"1.0","resources":{},"tolerations":[]}` | ClearML serving inference configurations |
| clearml | object | `{"apiAccessKey":"ClearML API Access Key","apiHost":"http://clearml-server-apiserver:8008","apiKeyExistingSecret":"","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.apiKeyExistingSecret | string | `""` | Pass ClearML API secrets using an existing secret. The secret must contain fields: api-access-key, api-secret-key |
| 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":{},"pollFrequencyMinutes":"1.0","replicas":1,"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 |
Expand All @@ -80,9 +81,10 @@ Kubernetes: `>= 1.21.0-0`
| clearml_serving_inference.ingress.tlsSecretName | string | `""` | Reference to secret containing TLS certificate. If set, it enables HTTPS on ingress rule. |
| clearml_serving_inference.nodeSelector | object | `{}` | Node Selector configuration |
| clearml_serving_inference.pollFrequencyMinutes | string | `"1.0"` | Default polling frequency for finding new models |
| clearml_serving_inference.replicas | int | `1` | Number of replicas - only effective when autoscaling is disabled |
| clearml_serving_inference.resources | object | `{}` | Pod resources definition |
| clearml_serving_inference.tolerations | list | `[]` | Tolerations configuration |
| clearml_serving_statistics | object | `{"additionalConfigs":{},"affinity":{},"enabled":true,"existingAdditionalConfigsConfigMap":"","existingAdditionalConfigsSecret":"","extraEnvironment":[],"extraPythonPackages":[],"image":{"repository":"allegroai/clearml-serving-statistics","tag":"1.3.0"},"nodeSelector":{},"pollFrequencyMinutes":"1.0","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":{},"pollFrequencyMinutes":"1.0","replicas":1,"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 |
Expand All @@ -92,9 +94,10 @@ Kubernetes: `>= 1.21.0-0`
| 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.pollFrequencyMinutes | string | `"1.0"` | Default polling frequency for finding new models |
| clearml_serving_statistics.replicas | int | `1` | Number of replicas |
| clearml_serving_statistics.resources | object | `{}` | Pod resources definition |
| clearml_serving_statistics.tolerations | list | `[]` | Tolerations configuration |
| 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":""},"metricFrequencyMinutes":"1.0","nodeSelector":{},"pollFrequencyMinutes":"1.0","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":""},"metricFrequencyMinutes":"1.0","nodeSelector":{},"pollFrequencyMinutes":"1.0","replicas":1,"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 |
Expand All @@ -114,6 +117,7 @@ Kubernetes: `>= 1.21.0-0`
| clearml_serving_triton.metricFrequencyMinutes | string | `"1.0"` | Triton metric reporting update frequency in minutes |
| clearml_serving_triton.nodeSelector | object | `{}` | Node Selector configuration |
| clearml_serving_triton.pollFrequencyMinutes | string | `"1.0"` | Triton model update frequency in minutes |
| clearml_serving_triton.replicas | int | `1` | Number of replicas - only effective when autoscaling is disabled |
| clearml_serving_triton.resources | object | `{}` | Pod resources definition |
| clearml_serving_triton.tolerations | list | `[]` | Tolerations configuration |
| grafana | object | `{"adminPassword":"clearml","adminUser":"admin","datasources":{"datasources.yaml":{"apiVersion":1,"datasources":[{"access":"proxy","isDefault":true,"name":"Prometheus","type":"prometheus","url":"http://{{ .Release.Name }}-prometheus-server"}]}},"enabled":true}` | Configuration from https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ metadata:
clearml.serving.service: {{ include "clearmlServing.fullname" . }}-inference
name: {{ include "clearmlServing.fullname" . }}-inference
spec:
replicas: 1
{{- if not .Values.clearml_serving_inference.autoscaling.enabled }}
replicas: {{ .Values.clearml_serving_inference.replicas }}
{{- end}}
selector:
matchLabels:
clearml.serving.service: {{ include "clearmlServing.fullname" . }}-inference
Expand Down Expand Up @@ -44,12 +46,34 @@ spec:
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.clearml_serving_inference.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.clearml_serving_inference.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- env:
- name: CLEARML_API_ACCESS_KEY
{{- if .Values.clearml.apiKeyExistingSecret }}
valueFrom:
secretKeyRef:
name: {{ .Values.clearml.apiKeyExistingSecret }}
key: api-access-key
{{- else }}
value: "{{ .Values.clearml.apiAccessKey }}"
{{- end}}
- name: CLEARML_API_SECRET_KEY
{{- if .Values.clearml.apiKeyExistingSecret }}
valueFrom:
secretKeyRef:
name: {{ .Values.clearml.apiKeyExistingSecret }}
key: api-secret-key
{{- else }}
value: "{{ .Values.clearml.apiSecretKey }}"
{{- end}}
- name: CLEARML_API_HOST
value: "{{ .Values.clearml.apiHost }}"
- name: CLEARML_FILES_HOST
Expand Down Expand Up @@ -98,14 +122,6 @@ spec:
- name: additional-config
mountPath: /opt/clearml/config
{{- end }}
{{- with .Values.clearml_serving_inference.nodeSelector }}
nodeSelector:
{{- 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
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ metadata:
clearml.serving.service: {{ include "clearmlServing.fullname" . }}-statistics
name: {{ include "clearmlServing.fullname" . }}-statistics
spec:
replicas: 1
replicas: {{ .Values.clearml_serving_statistics.replicas }}
selector:
matchLabels:
clearml.serving.service: {{ include "clearmlServing.fullname" . }}-statistics
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ metadata:
clearml.serving.service: {{ include "clearmlServing.fullname" . }}-triton
name: {{ include "clearmlServing.fullname" . }}-triton
spec:
replicas: 1
{{- if not .Values.clearml_serving_triton.autoscaling.enabled }}
replicas: {{ .Values.clearml_serving_triton.replicas }}
{{- end }}
selector:
matchLabels:
clearml.serving.service: {{ include "clearmlServing.fullname" . }}-triton
Expand Down
8 changes: 8 additions & 0 deletions charts/clearml-serving/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ imageCredentials:
clearml:
apiAccessKey: "ClearML API Access Key"
apiSecretKey: "ClearML API Secret Key"
# -- Pass ClearML API secrets using an existing secret. The secret must contain fields: api-access-key, api-secret-key
apiKeyExistingSecret: ""
apiHost: http://clearml-server-apiserver:8008
filesHost: http://clearml-server-fileserver:8081
webHost: http://clearml-server-webserver:80
Expand All @@ -26,6 +28,8 @@ clearml:

# -- ClearML serving statistics configurations
clearml_serving_statistics:
# -- Number of replicas
replicas: 1
# -- Enable ClearML Serving Statistics
enabled: true
# -- Container Image
Expand Down Expand Up @@ -86,6 +90,8 @@ clearml_serving_inference:
# <filecontent>
# -- Default polling frequency for finding new models
pollFrequencyMinutes: "1.0"
# -- Number of replicas - only effective when autoscaling is disabled
replicas: 1
# -- Autoscaling configuration
autoscaling:
enabled: false
Expand Down Expand Up @@ -145,6 +151,8 @@ clearml_serving_triton:
pollFrequencyMinutes: "1.0"
# -- Triton metric reporting update frequency in minutes
metricFrequencyMinutes: "1.0"
# -- Number of replicas - only effective when autoscaling is disabled
replicas: 1
# -- Autoscaling configuration
autoscaling:
enabled: false
Expand Down
Loading