Compare commits

...

21 Commits

Author SHA1 Message Date
Valeriano Manassero
0e4a809d46 Added: 1.30 support (#287) 2024-05-15 08:59:34 +02:00
Uzmar Gomez
cfe62484af Use existingClearmlConfigSecret (#283)
* use config as secret

* update chart and readme

* avoid creating secret if not needed

* move string on values.yaml
2024-05-14 11:05:03 +02:00
Valeriano Manassero
5ded87ec92 Update 1.15.1 (#284)
* Changed: 1.15.1 update

* Changed: bump up version
2024-05-14 08:24:24 +02:00
stephanbertl
65393cd4bf affinity for serving deployments was incorrectly put under containers… (#280)
* affinity for serving deployments was incorrectly put under containers. It needs to be put at pod spec level.

* Fixed: helm docs generation

* Fixed: helm-docs generation

---------

Co-authored-by: = <s.bertl@iaea.org>
Co-authored-by: Valeriano Manassero <14011549+valeriano-manassero@users.noreply.github.com>
2024-05-07 14:03:29 +02:00
savitha-qs
4845bd3f4f Issue-275: Honor existingAgentk8sglueSecret in deployment template (#276)
* Issue-275: Honor existingAgentk8sglueSecret in deployment template

* Issue-275: rev the patch version of the chart

* Issue-275: update README for clearml-agent chart

* Issue-275: update annotation in Chart.yaml

* Issue-275: remove item not relevant to Issue 275 from Chart annotations

* Issue-275: add new line to end of file to get lint to pass

* Update Chart.yaml

---------

Co-authored-by: Savitha Ganapathi <sganapathi@quantumscape.com>
Co-authored-by: Valeriano Manassero <14011549+valeriano-manassero@users.noreply.github.com>
2024-04-02 08:47:14 +02:00
Valeriano Manassero
4cb8db5baf 277 apiserver and asyncdelete apiserver having the same selector (#278)
* Fixed: asyncdelete wrong selector

* Changed: bump up
2024-03-28 14:12:55 +01:00
Valeriano Manassero
4242e518ae 273 clearml chart service async delete not deleting files (#274)
* Fixed: missing asyncdelete config mount

* Changed: bump up version
2024-03-26 14:33:26 +01:00
Valeriano Manassero
4ca4bc82c4 Release 1.15.0 (#272)
* Changed: upgrade app to 1.15

* Fixed: missing scheme

* Added: async delete
2024-03-21 14:58:07 +01:00
Valeriano Manassero
75d9086bb9 Changed: bump up version (#271) 2024-03-21 14:47:57 +01:00
Valeriano Manassero
546c2b6d2e Changed: bump up to support k8s 1.29 (#270)
* Changed: bump up to support k8s 1.29

* Changed: k8s versions

* Changed: exclude serving

* Fixed: changes
2024-02-20 10:57:17 +01:00
Valeriano Manassero
0a2bc7c2a8 Update 1.14.1 (#269)
* Changed: bump version to 1.14.1

* Changed: bump up version
2024-02-13 16:17:00 +01:00
Valeriano Manassero
25de2dfaeb 262 clearml agent wrong nindent for agentk8sglue deployment template (#267)
* Fixed: wrong indentation

* Changed: bump up
2024-01-10 09:23:52 +01:00
Valeriano Manassero
28d9fe82f6 Fix label typo (#266)
* Fixed: clearml labels function reference name

* Changed: bump up version
2024-01-09 17:18:58 +01:00
Valeriano Manassero
e680990d10 App 1.14 (#264)
* Changed: app version to 1.14

* Changed: bump chart version
2024-01-05 08:06:23 +01:00
stephanbertl
fdbbe5b90d fixed #256. added runtimeClassName and fixed incorrect placement of nodeSelector (#259)
* fixed #256.
nodeSelector was incorrectly placed under the container.
moved it to pod spec
added runtimeClassName to the pod spec to select specific GPU nodes.

* increment version number

* added artifacthub.io/changes

* update readme.md

* try to fix helm docs generation issue

* update readme.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

---------

Co-authored-by: IAEA_SG\BERTLS <s.bertl@iaea.org>
Co-authored-by: Valeriano Manassero <14011549+valeriano-manassero@users.noreply.github.com>
2023-11-20 14:37:01 +01:00
Valeriano Manassero
eff09794bd Upgrade app 1.13 (#260)
* Changed: app version upgrade

* Changed: bump up chart

* Changed: helm-docs update

* Changed:  ci update

* Fixed: depth
2023-11-16 07:40:10 +01:00
Valeriano Manassero
d13ad20e34 Fix serving extraenvs (#258)
* Fixed: missing extraEnvs

* Changed: bump version
2023-10-27 07:41:19 +02:00
Valeriano Manassero
5ed9673ea1 254 clearml server helper function wrong readiness probes fail because wrong redis service is referenced (#257)
* Fixed: redis name generation

* Changed: bump up version
2023-10-25 16:15:15 +02:00
Valeriano Manassero
0892882cf7 Mount files additionalconfigs (#255)
* Added: mount file for additional configs in pod

* Changed: bump up version

* Fixed: missing parameters for deployment

* Fixed naming typo

* Changed: changelog fixes added
2023-10-25 15:20:46 +02:00
Erik Jacobs
a1673ae8e4 adds a default clearml-core service account for the core components (#253)
* adds a default clearml-core service account for the core components

* Changed: use many sa

* Fixed: sa name

* Fixed: sa name

* Fixed: sa name

* Fixed: naming

* Update README.md

---------

Co-authored-by: Valeriano Manassero <14011549+valeriano-manassero@users.noreply.github.com>
2023-09-27 09:19:55 +02:00
Valeriano Manassero
503ab437ad 246 allegroaiclearml elastic statefulset does not use a dedicated serviceaccount (#252)
* Fixed: missing serviceAccount for elasticsearch

* Changed: bump up version
2023-08-22 08:12:12 +02:00
25 changed files with 453 additions and 49 deletions

View File

@@ -6,7 +6,7 @@ if [[ -z "$CHART_DIRS" ]]; then
exit 1
fi
HELM_DOCS_VERSION="1.11.0"
HELM_DOCS_VERSION="1.11.3"
curl --silent --show-error --fail --location --output /tmp/helm-docs.tar.gz https://github.com/norwoodj/helm-docs/releases/download/v"${HELM_DOCS_VERSION}"/helm-docs_"${HELM_DOCS_VERSION}"_Linux_x86_64.tar.gz
tar -xf /tmp/helm-docs.tar.gz helm-docs

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3.5.0
uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
- name: Run helm-docs
@@ -24,21 +24,22 @@ jobs:
strategy:
matrix:
k8s:
- v1.25.11
- v1.26.6
- v1.27.3
- v1.28.0
- v1.28.9
- v1.29.4
- v1.30.0
steps:
- name: Checkout
uses: actions/checkout@v3.5.0
uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
- name: Create kind ${{ matrix.k8s }} cluster
uses: helm/kind-action@v1.5.0
uses: helm/kind-action@v1.8.0
with:
node_image: kindest/node:${{ matrix.k8s }}
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.4.0
uses: helm/chart-testing-action@v2.5.0
with:
version: v3.8.0
- name: Add bitnami repo
run: helm repo add bitnami https://charts.bitnami.com/bitnami
- name: Add elastic repo

View File

@@ -2,9 +2,9 @@ apiVersion: v2
name: clearml-agent
description: MLOps platform Task running agent
type: application
version: "5.1.1"
version: "5.1.5"
appVersion: "1.24"
kubeVersion: ">= 1.21.0-0 < 1.29.0-0"
kubeVersion: ">= 1.21.0-0 < 1.30.0-0"
home: https://clear.ml
icon: https://raw.githubusercontent.com/allegroai/clearml/master/docs/clearml-logo.svg
sources:
@@ -20,5 +20,5 @@ keywords:
- "task agent"
annotations:
artifacthub.io/changes: |
- kind: added
description: kubernetes 1.28 support
- kind: fixed
description: Use existingClearmlConfigSecret in deployment template

View File

@@ -1,6 +1,6 @@
# ClearML Kubernetes Agent
![Version: 5.1.1](https://img.shields.io/badge/Version-5.1.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.24](https://img.shields.io/badge/AppVersion-1.24-informational?style=flat-square)
![Version: 5.1.5](https://img.shields.io/badge/Version-5.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.24](https://img.shields.io/badge/AppVersion-1.24-informational?style=flat-square)
MLOps platform Task running agent
@@ -47,7 +47,7 @@ Before issuing helm upgrade:
## Requirements
Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
Kubernetes: `>= 1.21.0-0 < 1.30.0-0`
## Values

View File

@@ -67,14 +67,14 @@ spec:
volumeMounts:
- name: {{ include "clearmlAgent.fullname" . }}-pt
mountPath: /root/template
{{ if .Values.clearml.clearmlConfig }}
{{ if or (.Values.clearml.clearmlConfig) (.Values.clearml.existingClearmlConfigSecret) }}
- name: k8sagent-clearml-conf-volume
mountPath: /root/clearml.conf
subPath: clearml.conf
readOnly: true
{{- end }}
{{- if .Values.agentk8sglue.volumeMounts }}
{{- toYaml .Values.agentk8sglue.volumeMounts | nindent 10 }}
{{- toYaml .Values.agentk8sglue.volumeMounts | nindent 12 }}
{{- end }}
{{- range .Values.agentk8sglue.fileMounts }}
- name: filemounts
@@ -103,7 +103,7 @@ spec:
- name: K8S_GLUE_EXTRA_ARGS
value: "--namespace {{ .Release.Namespace }} --template-yaml /root/template/template.yaml"
{{- end }}
{{- if .Values.clearml.clearmlConfig }}
{{ if or (.Values.clearml.clearmlConfig) (.Values.clearml.existingClearmlConfigSecret) }}
- name: CLEARML_CONFIG_FILE
value: /root/clearml.conf
{{- end }}
@@ -112,12 +112,20 @@ spec:
- name: CLEARML_API_ACCESS_KEY
valueFrom:
secretKeyRef:
{{- if .Values.clearml.existingAgentk8sglueSecret }}
name: {{ .Values.clearml.existingAgentk8sglueSecret }}
{{- else }}
name: {{ include "clearmlAgent.fullname" . }}-ac
{{- end }}
key: agentk8sglue_key
- name: CLEARML_API_SECRET_KEY
valueFrom:
secretKeyRef:
{{- if .Values.clearml.existingAgentk8sglueSecret }}
name: {{ .Values.clearml.existingAgentk8sglueSecret }}
{{- else }}
name: {{ include "clearmlAgent.fullname" . }}-ac
{{- end }}
key: agentk8sglue_secret
- name: CLEARML_WORKER_ID
value: {{ include "clearmlAgent.fullname" . }}
@@ -152,7 +160,14 @@ spec:
- name: {{ include "clearmlAgent.fullname" . }}-pt
configMap:
name: {{ include "clearmlAgent.fullname" . }}-pt
{{ if .Values.clearml.clearmlConfig }}
{{ if .Values.clearml.existingClearmlConfigSecret }}
- name: k8sagent-clearml-conf-volume
secret:
secretName: {{ .Values.clearml.existingClearmlConfigSecret }}
items:
- key: clearml.conf
path: clearml.conf
{{ else if .Values.clearml.clearmlConfig }}
- name: k8sagent-clearml-conf-volume
secret:
secretName: {{ include "clearmlAgent.fullname" . }}-ac

View File

@@ -1,3 +1,4 @@
{{- if or (not .Values.clearml.existingAgentk8sglueSecret) (not .Values.clearml.existingClearmlConfigSecret) }}
apiVersion: v1
kind: Secret
metadata:
@@ -6,6 +7,7 @@ data:
agentk8sglue_key: {{ .Values.clearml.agentk8sglueKey | b64enc }}
agentk8sglue_secret: {{ .Values.clearml.agentk8sglueSecret | b64enc }}
clearml.conf: {{ .Values.clearml.clearmlConfig | b64enc }}
{{- end }}
---
{{- if .Values.imageCredentials.enabled }}
{{- if not .Values.imageCredentials.existingSecret }}

View File

@@ -29,6 +29,16 @@ clearml:
# -- If this is set, chart will not generate a secret but will use what is defined here
existingClearmlConfigSecret: ""
# The secret should be defined as the following example
#
# apiVersion: v1
# kind: Secret
# metadata:
# name: secret-name
# stringData:
# clearml.conf: |-
# sdk {
# }
# -- ClearML configuration file
clearmlConfig: |-
sdk {

View File

@@ -2,9 +2,9 @@ apiVersion: v2
name: clearml-serving
description: ClearML Serving Helm Chart
type: application
version: "1.4.2"
version: "1.5.5"
appVersion: "1.3.0"
kubeVersion: ">= 1.21.0-0 < 1.29.0-0"
kubeVersion: ">= 1.21.0-0 < 1.30.0-0"
home: https://clear.ml
icon: https://raw.githubusercontent.com/allegroai/clearml/master/docs/clearml-logo.svg
sources:
@@ -34,4 +34,4 @@ dependencies:
annotations:
artifacthub.io/changes: |
- kind: fixed
description: wrong clearmlServing reference in secrets
description: fixed affinity in serving templates. They need to be set on the pod and not the container.

View File

@@ -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.5](https://img.shields.io/badge/Version-1.5.5-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
@@ -41,7 +41,7 @@ helm upgrade clearml-serving allegroai/clearml-serving --version <CURRENT CHART
## Requirements
Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
Kubernetes: `>= 1.21.0-0 < 1.30.0-0`
| Repository | Name | Version |
|------------|------|---------|
@@ -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 |

View File

@@ -0,0 +1,13 @@
{{- if .Values.clearml_serving_inference.additionalConfigs }}
apiVersion: v1
kind: ConfigMap
metadata:
name: "{{ include "clearmlServing.fullname" . }}-inference-configmap"
labels:
{{- include "clearmlServing.labels" . | nindent 4 }}
data:
{{- range $key, $val := .Values.clearml_serving_inference.additionalConfigs }}
{{ $key }}: |
{{- $val | nindent 4 }}
{{- end }}
{{- end }}

View File

@@ -26,6 +26,24 @@ 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 }}
{{- with .Values.clearml_serving_inference.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- env:
- name: CLEARML_API_ACCESS_KEY
@@ -75,6 +93,19 @@ 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.tolerations }}
tolerations:
{{- toYaml . | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.clearml_serving_inference.resources | nindent 12 }}
restartPolicy: Always

View File

@@ -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 "clearmlServing.labels" . | nindent 4 }}
data:
{{- range $key, $val := .Values.clearml_serving_statistics.additionalConfigs }}
{{ $key }}: |
{{- $val | nindent 4 }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -27,6 +27,24 @@ 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 }}
{{- with .Values.clearml_serving_statistics.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- env:
- name: CLEARML_API_ACCESS_KEY
@@ -53,10 +71,26 @@ spec:
- name: CLEARML_EXTRA_PYTHON_PACKAGES
value: '{{ join " " .Values.clearml_serving_statistics.extraPythonPackages }}'
{{- end }}
{{- with .Values.clearml_serving_statistics.extraEnvironment }}
{{- toYaml . | nindent 12 }}
{{- end }}
image: "{{ .Values.clearml_serving_statistics.image.repository }}:{{ .Values.clearml_serving_statistics.image.tag }}"
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.tolerations }}
tolerations:
{{- toYaml . | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.clearml_serving_statistics.resources | nindent 12 }}
restartPolicy: Always

View File

@@ -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 "clearmlServing.labels" . | nindent 4 }}
data:
{{- range $key, $val := .Values.clearml_serving_triton.additionalConfigs }}
{{ $key }}: |
{{- $val | nindent 4 }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -27,6 +27,27 @@ spec:
- name: clearml-registry-key
{{- end }}
{{- end }}
{{ if .Values.clearml_serving_triton.runtimeClassName}}
runtimeClassName: {{ .Values.clearml_serving_triton.runtimeClassName }}
{{- 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 }}
{{- with .Values.clearml_serving_triton.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- env:
- name: CLEARML_API_ACCESS_KEY
@@ -49,12 +70,28 @@ spec:
- name: CLEARML_EXTRA_PYTHON_PACKAGES
value: '{{ join " " .Values.clearml_serving_triton.extraPythonPackages }}'
{{- end }}
{{- with .Values.clearml_serving_triton.extraEnvironment }}
{{- toYaml . | nindent 12 }}
{{- end }}
image: "{{ .Values.clearml_serving_triton.image.repository }}:{{ .Values.clearml_serving_triton.image.tag }}"
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.tolerations }}
tolerations:
{{- toYaml . | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.clearml_serving_triton.resources | nindent 12 }}
restartPolicy: Always
{{- with .Values.clearml_serving_triton.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{ end }}

View File

@@ -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: |
# <filecontent>
# -- 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: |
# <filecontent>
# -- Autoscaling configuration
autoscaling:
enabled: false
@@ -95,6 +112,9 @@ clearml_serving_triton:
image:
repository: "allegroai/clearml-serving-triton"
tag: "1.3.0"
# -- Runtime Class configuration
# uncomment to use custom runtime class, eg. nvidia when using GPU operator
# runtimeClassName: "nvidia"
# -- Node Selector configuration
nodeSelector: {}
# -- Tolerations configuration
@@ -103,10 +123,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: |
# <filecontent>
# -- Autoscaling configuration
autoscaling:
enabled: false

View File

@@ -2,9 +2,9 @@ apiVersion: v2
name: clearml
description: MLOps platform
type: application
version: "7.3.1"
appVersion: "1.12.0"
kubeVersion: ">= 1.21.0-0 < 1.29.0-0"
version: "7.8.4"
appVersion: "1.15"
kubeVersion: ">= 1.21.0-0 < 1.31.0-0"
home: https://clear.ml
icon: https://raw.githubusercontent.com/allegroai/clearml/master/docs/clearml-logo.svg
sources:
@@ -33,4 +33,4 @@ dependencies:
annotations:
artifacthub.io/changes: |
- kind: added
description: kubernetes 1.28 support
description: k8s 1.30 support

View File

@@ -1,6 +1,6 @@
# ClearML Ecosystem for Kubernetes
![Version: 7.3.1](https://img.shields.io/badge/Version-7.3.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.12.0](https://img.shields.io/badge/AppVersion-1.12.0-informational?style=flat-square)
![Version: 7.8.4](https://img.shields.io/badge/Version-7.8.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.15](https://img.shields.io/badge/AppVersion-1.15-informational?style=flat-square)
MLOps platform
@@ -133,7 +133,7 @@ For detailed instructions, see the [Optional Configuration](https://github.com/a
## Requirements
Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
Kubernetes: `>= 1.21.0-0 < 1.31.0-0`
| Repository | Name | Version |
|------------|------|---------|
@@ -145,7 +145,7 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| apiserver | object | `{"additionalConfigs":{},"affinity":{},"containerSecurityContext":{},"enabled":true,"existingAdditionalConfigsConfigMap":"","existingAdditionalConfigsSecret":"","extraEnvs":[],"image":{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.12.0-393"},"ingress":{"annotations":{},"enabled":false,"hostName":"api.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"initContainers":{"resources":{"limits":{"cpu":"10m","memory":"64Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}},"nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"prepopulateEnabled":true,"processes":{"count":8,"maxRequests":1000,"maxRequestsJitter":300,"timeout":24000},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"service":{"annotations":{},"nodePort":30008,"port":8008,"type":"NodePort"},"tolerations":[]}` | Api Server configurations |
| apiserver | object | `{"additionalConfigs":{},"affinity":{},"containerSecurityContext":{},"enabled":true,"existingAdditionalConfigsConfigMap":"","existingAdditionalConfigsSecret":"","extraEnvs":[],"image":{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.15.1-478"},"ingress":{"annotations":{},"enabled":false,"hostName":"api.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"initContainers":{"resources":{"limits":{"cpu":"10m","memory":"64Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}},"nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"prepopulateEnabled":true,"processes":{"count":8,"maxRequests":1000,"maxRequestsJitter":300,"timeout":24000},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"service":{"annotations":{},"nodePort":30008,"port":8008,"type":"NodePort"},"serviceAccountName":"clearml","tolerations":[]}` | Api Server configurations |
| apiserver.additionalConfigs | object | `{}` | files declared in this parameter will be mounted and read by apiserver (examples in values.yaml) if not overridden by existingAdditionalConfigsSecret |
| apiserver.affinity | object | `{}` | Api Server affinity setup |
| apiserver.containerSecurityContext | object | `{}` | Api Server containers security context |
@@ -153,7 +153,7 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
| apiserver.existingAdditionalConfigsConfigMap | string | `""` | reference for files declared in existing ConfigMap will be mounted and read by apiserver (examples in values.yaml) |
| apiserver.existingAdditionalConfigsSecret | string | `""` | reference for files declared in existing Secret will be mounted and read by apiserver (examples in values.yaml) if not overridden by existingAdditionalConfigsConfigMap |
| apiserver.extraEnvs | list | `[]` | Api Server extra envrinoment variables |
| apiserver.image | object | `{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.12.0-393"}` | Api Server image configuration |
| apiserver.image | object | `{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.15.1-478"}` | Api Server image configuration |
| apiserver.ingress | object | `{"annotations":{},"enabled":false,"hostName":"api.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""}` | Ingress configuration for Api Server component |
| apiserver.ingress.annotations | object | `{}` | Ingress annotations |
| apiserver.ingress.enabled | bool | `false` | Enable/Disable ingress |
@@ -176,6 +176,7 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
| apiserver.service | object | `{"annotations":{},"nodePort":30008,"port":8008,"type":"NodePort"}` | Api Server internal service configuration |
| apiserver.service.annotations | object | `{}` | specific annotation for Api Server service |
| apiserver.service.nodePort | int | `30008` | If service.type set to NodePort, this will be set to service's nodePort field. If service.type is set to others, this field will be ignored |
| apiserver.serviceAccountName | string | `"clearml"` | The default serviceAccountName to be used |
| apiserver.tolerations | list | `[]` | Api Server tolerations setup |
| clearml | object | `{"apiserverKey":"GGS9F4M6XB2DXJ5AFT9F","apiserverSecret":"2oGujVFhPfaozhpuz2GzQfA5OyxmMsR3WVJpsCR5hrgHFs20PO","clientConfigurationApiUrl":"","clientConfigurationFilesUrl":"","cookieDomain":"","cookieName":"clearml-token-k8s","defaultCompany":"d1bd92a3b039400cbafc60a7a5b1e52b","existingSecret":"","fileserverKey":"XXCRJ123CEE2KSQ068WO","fileserverSecret":"YIy8EVAC7QCT4FtgitxAQGyW7xRHDZ4jpYlTE7HKiscpORl1hG","readinessprobeKey":"GK4PRTVT3706T25K6BA1","readinessprobeSecret":"ymLh1ok5k5xNUQfS944Xdx9xjf0wueokqKM2dMZfHuH9ayItG2","secureAuthTokenSecret":"ymLh1ok5k5xNUQfS944Xdx9xjf0wueokqKM2dMZfHuH9ayItG2","testUserKey":"ENP39EQM4SLACGD5FXB7","testUserSecret":"lPcm0imbcBZ8mwgO7tpadutiS3gnJD05x9j7afwXPS35IKbpiQ"}` | ClearMl generic configurations |
| clearml.apiserverKey | string | `"GGS9F4M6XB2DXJ5AFT9F"` | Api Server basic auth key |
@@ -193,19 +194,19 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
| clearml.secureAuthTokenSecret | string | `"ymLh1ok5k5xNUQfS944Xdx9xjf0wueokqKM2dMZfHuH9ayItG2"` | Secure Auth secret |
| clearml.testUserKey | string | `"ENP39EQM4SLACGD5FXB7"` | Test Server basic auth key |
| clearml.testUserSecret | string | `"lPcm0imbcBZ8mwgO7tpadutiS3gnJD05x9j7afwXPS35IKbpiQ"` | Test File Server basic auth secret |
| elasticsearch | object | `{"clusterHealthCheckParams":"wait_for_status=yellow&timeout=1s","clusterName":"clearml-elastic","enabled":true,"esConfig":{"elasticsearch.yml":"xpack.security.enabled: false\n"},"esJavaOpts":"-Xmx2g -Xms2g","extraEnvs":[{"name":"bootstrap.memory_lock","value":"false"},{"name":"cluster.routing.allocation.node_initial_primaries_recoveries","value":"500"},{"name":"cluster.routing.allocation.disk.watermark.low","value":"500mb"},{"name":"cluster.routing.allocation.disk.watermark.high","value":"500mb"},{"name":"cluster.routing.allocation.disk.watermark.flood_stage","value":"500mb"},{"name":"http.compression_level","value":"7"},{"name":"reindex.remote.whitelist","value":"*.*"},{"name":"xpack.monitoring.enabled","value":"false"},{"name":"xpack.security.enabled","value":"false"}],"httpPort":9200,"minimumMasterNodes":1,"persistence":{"enabled":true},"replicas":1,"resources":{"limits":{"cpu":"2000m","memory":"4Gi"},"requests":{"cpu":"100m","memory":"2Gi"}},"roles":{"data":"true","ingest":"true","master":"true","remote_cluster_client":"true"},"volumeClaimTemplate":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"50Gi"}},"storageClassName":null}}` | Configuration from https://github.com/elastic/helm-charts/blob/7.16/elasticsearch/values.yaml |
| elasticsearch | object | `{"clusterHealthCheckParams":"wait_for_status=yellow&timeout=1s","clusterName":"clearml-elastic","enabled":true,"esConfig":{"elasticsearch.yml":"xpack.security.enabled: false\n"},"esJavaOpts":"-Xmx2g -Xms2g","extraEnvs":[{"name":"bootstrap.memory_lock","value":"false"},{"name":"cluster.routing.allocation.node_initial_primaries_recoveries","value":"500"},{"name":"cluster.routing.allocation.disk.watermark.low","value":"500mb"},{"name":"cluster.routing.allocation.disk.watermark.high","value":"500mb"},{"name":"cluster.routing.allocation.disk.watermark.flood_stage","value":"500mb"},{"name":"http.compression_level","value":"7"},{"name":"reindex.remote.whitelist","value":"*.*"},{"name":"xpack.monitoring.enabled","value":"false"},{"name":"xpack.security.enabled","value":"false"}],"httpPort":9200,"minimumMasterNodes":1,"persistence":{"enabled":true},"rbac":{"create":true},"replicas":1,"resources":{"limits":{"cpu":"2000m","memory":"4Gi"},"requests":{"cpu":"100m","memory":"2Gi"}},"roles":{"data":"true","ingest":"true","master":"true","remote_cluster_client":"true"},"volumeClaimTemplate":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"50Gi"}},"storageClassName":null}}` | Configuration from https://github.com/elastic/helm-charts/blob/7.16/elasticsearch/values.yaml |
| externalServices | object | `{"elasticsearchConnectionString":"[{\"host\":\"es_hostname1\",\"port\":9200},{\"host\":\"es_hostname2\",\"port\":9200},{\"host\":\"es_hostname3\",\"port\":9200}]","mongodbConnectionStringAuth":"mongodb://mongodb_hostname:27017/auth","mongodbConnectionStringBackend":"mongodb://mongodb_hostnamehostname:27017/backend","redisHost":"redis_hostname","redisPort":6379}` | Definition of external services to use if not enabled as dependency charts here |
| externalServices.elasticsearchConnectionString | string | `"[{\"host\":\"es_hostname1\",\"port\":9200},{\"host\":\"es_hostname2\",\"port\":9200},{\"host\":\"es_hostname3\",\"port\":9200}]"` | Existing ElasticSearch connectionstring if elasticsearch.enabled is false (example in values.yaml) |
| externalServices.mongodbConnectionStringAuth | string | `"mongodb://mongodb_hostname:27017/auth"` | Existing MongoDB connection string for BACKEND to use if mongodb.enabled is false (example in values.yaml) |
| externalServices.mongodbConnectionStringBackend | string | `"mongodb://mongodb_hostnamehostname:27017/backend"` | Existing MongoDB connection string for AUTH to use if mongodb.enabled is false (example in values.yaml) |
| externalServices.redisHost | string | `"redis_hostname"` | Existing Redis Hostname to use if redis.enabled is false (example in values.yaml) |
| externalServices.redisPort | int | `6379` | Existing Redis Port to use if redis.enabled is false |
| fileserver | object | `{"affinity":{},"containerSecurityContext":{},"enabled":true,"extraEnvs":[],"image":{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.12.0-393"},"ingress":{"annotations":{},"enabled":false,"hostName":"files.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"initContainers":{"resources":{"limits":{"cpu":"10m","memory":"64Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}},"nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"service":{"annotations":{},"nodePort":30081,"port":8081,"type":"NodePort"},"storage":{"data":{"accessMode":"ReadWriteOnce","class":"","existingPVC":"","size":"50Gi"},"enabled":true},"tolerations":[]}` | File Server configurations |
| fileserver | object | `{"affinity":{},"containerSecurityContext":{},"enabled":true,"extraEnvs":[],"image":{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.15.1-478"},"ingress":{"annotations":{},"enabled":false,"hostName":"files.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"initContainers":{"resources":{"limits":{"cpu":"10m","memory":"64Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}},"nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"service":{"annotations":{},"nodePort":30081,"port":8081,"type":"NodePort"},"serviceAccountName":"clearml","storage":{"data":{"accessMode":"ReadWriteOnce","class":"","existingPVC":"","size":"50Gi"},"enabled":true},"tolerations":[]}` | File Server configurations |
| fileserver.affinity | object | `{}` | File Server affinity setup |
| fileserver.containerSecurityContext | object | `{}` | File Server containers security context |
| fileserver.enabled | bool | `true` | Enable/Disable component deployment |
| fileserver.extraEnvs | list | `[]` | File Server extra envrinoment variables |
| fileserver.image | object | `{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.12.0-393"}` | File Server image configuration |
| fileserver.image | object | `{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.15.1-478"}` | File Server image configuration |
| fileserver.ingress | object | `{"annotations":{},"enabled":false,"hostName":"files.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""}` | Ingress configuration for File Server component |
| fileserver.ingress.annotations | object | `{}` | Ingress annotations |
| fileserver.ingress.enabled | bool | `false` | Enable/Disable ingress |
@@ -222,6 +223,7 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
| fileserver.service | object | `{"annotations":{},"nodePort":30081,"port":8081,"type":"NodePort"}` | File Server internal service configuration |
| fileserver.service.annotations | object | `{}` | specific annotation for File Server service |
| fileserver.service.nodePort | int | `30081` | If service.type set to NodePort, this will be set to service's nodePort field. If service.type is set to others, this field will be ignored |
| fileserver.serviceAccountName | string | `"clearml"` | The default serviceAccountName to be used |
| fileserver.storage | object | `{"data":{"accessMode":"ReadWriteOnce","class":"","existingPVC":"","size":"50Gi"},"enabled":true}` | File server persistence settings |
| fileserver.storage.data.accessMode | string | `"ReadWriteOnce"` | Access mode (must be ReadWriteMany if fileserver replica > 1) |
| fileserver.storage.data.class | string | `""` | Storage class (use default if empty) |
@@ -239,13 +241,13 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
| imageCredentials.username | string | `"someone"` | Registry username |
| mongodb | object | `{"architecture":"standalone","auth":{"enabled":false},"enabled":true,"persistence":{"accessModes":["ReadWriteOnce"],"enabled":true,"size":"50Gi","storageClass":null},"replicaCount":1}` | Configuration from https://github.com/bitnami/charts/blob/master/bitnami/mongodb/values.yaml |
| redis | object | `{"architecture":"standalone","auth":{"enabled":false},"databaseNumber":0,"enabled":true,"master":{"name":"{{ .Release.Name }}-redis-master","persistence":{"accessModes":["ReadWriteOnce"],"enabled":true,"size":"5Gi","storageClass":null},"port":6379}}` | Configuration from https://github.com/bitnami/charts/blob/master/bitnami/redis/values.yaml |
| webserver | object | `{"additionalConfigs":{},"affinity":{},"containerSecurityContext":{},"enabled":true,"extraEnvs":[],"image":{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.12.0-393"},"ingress":{"annotations":{},"enabled":false,"hostName":"app.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"initContainers":{"resources":{"limits":{"cpu":"10m","memory":"64Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}},"nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"service":{"annotations":{},"nodePort":30080,"port":8080,"type":"NodePort"},"tolerations":[]}` | Web Server configurations |
| webserver | object | `{"additionalConfigs":{},"affinity":{},"containerSecurityContext":{},"enabled":true,"extraEnvs":[],"image":{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.15.1-478"},"ingress":{"annotations":{},"enabled":false,"hostName":"app.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""},"initContainers":{"resources":{"limits":{"cpu":"10m","memory":"64Mi"},"requests":{"cpu":"10m","memory":"64Mi"}}},"nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"service":{"annotations":{},"nodePort":30080,"port":8080,"type":"NodePort"},"serviceAccountName":"clearml","tolerations":[]}` | Web Server configurations |
| webserver.additionalConfigs | object | `{}` | Additional specific webserver configurations |
| webserver.affinity | object | `{}` | Web Server affinity setup |
| webserver.containerSecurityContext | object | `{}` | Web Server containers security context |
| webserver.enabled | bool | `true` | Enable/Disable component deployment |
| webserver.extraEnvs | list | `[]` | Web Server extra envrinoment variables |
| webserver.image | object | `{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.12.0-393"}` | Web Server image configuration |
| webserver.image | object | `{"pullPolicy":"IfNotPresent","registry":"","repository":"allegroai/clearml","tag":"1.15.1-478"}` | Web Server image configuration |
| webserver.ingress | object | `{"annotations":{},"enabled":false,"hostName":"app.clearml.127-0-0-1.nip.io","ingressClassName":"","path":"/","tlsSecretName":""}` | Ingress configuration for Web Server component |
| webserver.ingress.annotations | object | `{}` | Ingress annotations |
| webserver.ingress.enabled | bool | `false` | Enable/Disable ingress |
@@ -262,4 +264,5 @@ Kubernetes: `>= 1.21.0-0 < 1.29.0-0`
| webserver.service | object | `{"annotations":{},"nodePort":30080,"port":8080,"type":"NodePort"}` | Web Server internal service configuration |
| webserver.service.annotations | object | `{}` | specific annotation for Web Server service |
| webserver.service.nodePort | int | `30080` | If service.type set to NodePort, this will be set to service's nodePort field. If service.type is set to others, this field will be ignored |
| webserver.serviceAccountName | string | `"clearml"` | The default serviceAccountName to be used |
| webserver.tolerations | list | `[]` | Web Server tolerations setup |

View File

@@ -160,6 +160,23 @@ Create configuration secret name
{{- if .Values.clearml.existingSecret -}} {{ default "clearml-conf" .Values.clearml.existingSecret | quote }} {{- else -}} "clearml-conf" {{- end }}
{{- end }}
{{/*
compose file url
*/}}
{{- define "clearml.fileUrl" -}}
{{- if .Values.clearml.clientConfigurationFilesUrl }}
{{- .Values.clearml.clientConfigurationFilesUrl }}
{{- else if .Values.fileserver.ingress.enabled }}
{{- $protocol := "http" }}
{{- if .Values.fileserver.ingress.tlsSecretName }}
{{- $protocol = "https" }}
{{- end }}
{{- printf "%s%s%s" $protocol "://" .Values.fileserver.ingress.hostName }}
{{- else }}
{{- printf "%s%s%s%s" "http://" (include "fileserver.referenceName" .) ":" .Values.fileserver.service.port }}
{{- end }}
{{- end }}
{{/*
Elasticsearch Service name
*/}}
@@ -174,12 +191,19 @@ Elasticsearch Service port
{{- .Values.elasticsearch.httpPort }}
{{- end }}
{{/*
Elasticsearch Service schema
*/}}
{{- define "elasticsearch.servicescheme" -}}
{{- .Values.elasticsearch.httpScheme }}
{{- end }}
{{/*
Elasticsearch Comnnection string
*/}}
{{- define "elasticsearch.connectionstring" -}}
{{- if .Values.elasticsearch.enabled }}
{{- printf "[{\"host\":\"%s\",\"port\":%s}]" (include "elasticsearch.servicename" .) (include "elasticsearch.serviceport" .) | quote }}
{{- printf "[{\"host\":\"%s\",\"port\":%s,\"scheme\":\"%s\"}]" (include "elasticsearch.servicename" .) (include "elasticsearch.serviceport" .) (include "elasticsearch.servicescheme" .) | quote }}
{{- else }}
{{- .Values.externalServices.elasticsearchConnectionString | quote }}
{{- end }}
@@ -216,12 +240,8 @@ Redis Service name
*/}}
{{- define "redis.servicename" -}}
{{- if .Values.redis.enabled }}
{{- if eq .Values.redis.architecture "standalone" }}
{{- tpl .Values.redis.master.name . }}
{{- else }}
{{- printf "%s-headless" (tpl .Values.redis.master.name . ) }}
{{- end }}
{{- else }}
{{- .Values.externalServices.redisHost }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,144 @@
{{- if .Values.apiserver.enabled }}
{{- if (include "clearml.fileUrl" .) }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "apiserver.referenceName" . }}-asyncdelete
labels:
{{- include "clearml.labels" . | nindent 4 }}
spec:
replicas: 1
selector:
matchLabels:
{{- include "clearml.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.apiserver.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "clearml.selectorLabels" . | nindent 8 }}
spec:
serviceAccountName: {{ .Values.apiserver.serviceAccountName }}-apiserver
{{- 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
image: "{{ include "registryNamePrefix" (dict "globalValues" .Values.global "imageRegistryValue" .Values.apiserver.image.registry) }}{{ .Values.apiserver.image.repository }}:{{ .Values.apiserver.image.tag }}"
command:
- /bin/sh
- -c
- >
set -x;
{{- if .Values.elasticsearch.enabled }}
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 ;
{{- end }}
{{- if .Values.mongodb.enabled }}
while [ $(curl --telnet-option BOGUS --connect-timeout 2 -s "telnet://{{ .Release.Name }}-{{ include "mongodb.hostname" . }}:27017" -o /dev/null; echo $?) -ne 49 ] ; do
echo "waiting for mongodb" ;
sleep 5 ;
done ;
{{- end }}
{{- if .Values.redis.enabled }}
while [ $(curl --telnet-option BOGUS --connect-timeout 2 -s "telnet://{{ include "redis.servicename" . }}:{{ include "redis.serviceport" . }}" -o /dev/null; echo $?) -ne 49 ] ; do
echo "waiting for redis" ;
sleep 5 ;
done ;
{{- end }}
securityContext:
{{ toYaml .Values.apiserver.containerSecurityContext | nindent 12 }}
resources:
{{- toYaml .Values.apiserver.initContainers.resources | nindent 12 }}
containers:
- name: clearml-apiserver
image: "{{ include "registryNamePrefix" (dict "globalValues" .Values.global "imageRegistryValue" .Values.apiserver.image.registry) }}{{ .Values.apiserver.image.repository }}:{{ .Values.apiserver.image.tag }}"
imagePullPolicy: {{ .Values.apiserver.image.pullPolicy }}
command:
- /bin/sh
- -c
- >
python3 -m jobs.async_urls_delete --fileserver-host http://{{ include "fileserver.referenceName" . }}:{{ .Values.fileserver.service.port }}
env:
- name: CLEARML_REDIS_SERVICE_HOST
value: {{ include "redis.servicename" . }}
- name: CLEARML_REDIS_SERVICE_PORT
value: "{{ include "redis.serviceport" . }}"
{{- if .Values.mongodb.enabled }}
- name: CLEARML_MONGODB_SERVICE_CONNECTION_STRING
value: {{ include "mongodb.connectionstring" . | quote }}
{{- else }}
- name: CLEARML__HOSTS__MONGO__BACKEND__HOST
value: {{ .Values.externalServices.mongodbConnectionStringBackend | quote }}
- name: CLEARML__HOSTS__MONGO__AUTH__HOST
value: {{ .Values.externalServices.mongodbConnectionStringAuth | quote }}
{{- end }}
- name: CLEARML__HOSTS__ELASTIC__WORKERS__HOSTS
value: {{ include "elasticsearch.connectionstring" . }}
- name: CLEARML__HOSTS__ELASTIC__EVENTS__HOSTS
value: {{ include "elasticsearch.connectionstring" . }}
- name: CLEARML__HOSTS__ELASTIC__DATASETS__HOSTS
value: {{ include "elasticsearch.connectionstring" . }}
- name: CLEARML__HOSTS__ELASTIC__LOGS__HOSTS
value: {{ include "elasticsearch.connectionstring" . }}
- name: CLEARML__logging__handlers__text_file__filename
value: "/dev/null"
- name: PYTHONPATH
value: /opt/clearml/apiserver
- name: CLEARML__apiserver__default_company
value: "{{ .Values.clearml.defaultCompanyGuid }}"
- name: CLEARML__services__async_urls_delete__fileserver__url_prefixes
value: "[\"{{ include "clearml.fileUrl" . }}\"]"
- name: CLEARML__secure__auth__token_secret
valueFrom:
secretKeyRef:
name: {{ include "clearml.confSecretName" .}}
key: secure_auth_token_secret
{{- if or .Values.apiserver.additionalConfigs .Values.apiserver.existingAdditionalConfigsConfigMap .Values.apiserver.existingAdditionalConfigsSecret }}
volumeMounts:
- name: apiserver-config
mountPath: /opt/clearml/config
{{- end }}
resources:
{{- toYaml .Values.apiserver.resources | nindent 12 }}
securityContext:
{{ toYaml .Values.apiserver.containerSecurityContext | 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 }}
{{- end }}

View File

@@ -19,6 +19,7 @@ spec:
labels:
{{- include "apiserver.selectorLabels" . | nindent 8 }}
spec:
serviceAccountName: {{ .Values.apiserver.serviceAccountName }}-apiserver
{{- if .Values.imageCredentials.enabled }}
imagePullSecrets:
{{- if .Values.imageCredentials.existingSecret }}

View File

@@ -19,6 +19,7 @@ spec:
labels:
{{- include "fileserver.selectorLabels" . | nindent 8 }}
spec:
serviceAccountName: {{ .Values.fileserver.serviceAccountName }}-fileserver
{{- if .Values.imageCredentials.enabled }}
imagePullSecrets:
{{- if .Values.imageCredentials.existingSecret }}

View File

@@ -0,0 +1,14 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Values.apiserver.serviceAccountName }}-apiserver
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Values.fileserver.serviceAccountName }}-fileserver
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Values.webserver.serviceAccountName }}-webserver

View File

@@ -19,6 +19,7 @@ spec:
labels:
{{- include "webserver.selectorLabels" . | nindent 8 }}
spec:
serviceAccountName: {{ .Values.webserver.serviceAccountName }}-webserver
{{- if .Values.imageCredentials.enabled }}
imagePullSecrets:
{{- if .Values.imageCredentials.existingSecret }}

View File

@@ -58,12 +58,14 @@ apiserver:
enabled: true
# -- Enable/Disable example data load
prepopulateEnabled: true
# -- The default serviceAccountName to be used
serviceAccountName: clearml
# -- Api Server image configuration
image:
registry: ""
repository: "allegroai/clearml"
pullPolicy: IfNotPresent
tag: "1.12.0-393"
tag: "1.15.1-478"
# -- Api Server internal service configuration
service:
# -- specific annotation for Api Server service
@@ -172,12 +174,14 @@ apiserver:
fileserver:
# -- Enable/Disable component deployment
enabled: true
# -- The default serviceAccountName to be used
serviceAccountName: clearml
# -- File Server image configuration
image:
registry: ""
repository: "allegroai/clearml"
pullPolicy: IfNotPresent
tag: "1.12.0-393"
tag: "1.15.1-478"
# -- File Server internal service configuration
service:
# -- specific annotation for File Server service
@@ -254,12 +258,14 @@ fileserver:
webserver:
# -- Enable/Disable component deployment
enabled: true
# -- The default serviceAccountName to be used
serviceAccountName: clearml
# -- Web Server image configuration
image:
registry: ""
repository: "allegroai/clearml"
pullPolicy: IfNotPresent
tag: "1.12.0-393"
tag: "1.15.1-478"
# -- Web Server internal service configuration
service:
# -- specific annotation for Web Server service
@@ -380,7 +386,8 @@ elasticsearch:
replicas: 1
# Readiness probe hack for a single-node cluster (where status will never be green). Should be removed if using replicas > 1
clusterHealthCheckParams: "wait_for_status=yellow&timeout=1s"
rbac:
create: true
minimumMasterNodes: 1
clusterName: clearml-elastic
esJavaOpts: "-Xmx2g -Xms2g"