From 3fd3f300300b95ca6c8b7c15dd8d488c534aca6c Mon Sep 17 00:00:00 2001 From: Valeriano Manassero <14011549+valeriano-manassero@users.noreply.github.com> Date: Thu, 12 Jan 2023 09:12:19 +0100 Subject: [PATCH] Enterprise override tag (#127) * Added: override for enterprise image tag * Changed: version bump * Added: enterprise image tage overrides * Changed: bump up version --- charts/clearml-agent/Chart.yaml | 2 +- charts/clearml-agent/README.md | 5 +++-- .../templates/agentk8sglue-deployment.yaml | 8 ++++++++ charts/clearml-agent/values.yaml | 2 ++ charts/clearml/Chart.yaml | 2 +- charts/clearml/README.md | 17 ++++++++++------- .../clearml/templates/apiserver-deployment.yaml | 12 ++++++++++-- .../templates/fileserver-deployment.yaml | 12 ++++++++++-- .../clearml/templates/webserver-deployment.yaml | 12 ++++++++++-- charts/clearml/values.yaml | 12 +++++++++--- 10 files changed, 64 insertions(+), 20 deletions(-) diff --git a/charts/clearml-agent/Chart.yaml b/charts/clearml-agent/Chart.yaml index 4ef2f03..167721d 100644 --- a/charts/clearml-agent/Chart.yaml +++ b/charts/clearml-agent/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: clearml-agent description: MLOps platform type: application -version: "3.1.3" +version: "3.1.4" appVersion: "1.24" kubeVersion: ">= 1.19.0-0 < 1.26.0-0" home: https://clear.ml diff --git a/charts/clearml-agent/README.md b/charts/clearml-agent/README.md index 75cc6fa..7f7a6ab 100644 --- a/charts/clearml-agent/README.md +++ b/charts/clearml-agent/README.md @@ -1,6 +1,6 @@ # ClearML Kubernetes Agent -![Version: 3.1.3](https://img.shields.io/badge/Version-3.1.3-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: 3.1.4](https://img.shields.io/badge/Version-3.1.4-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 @@ -69,7 +69,8 @@ Kubernetes: `>= 1.19.0-0 < 1.26.0-0` | clearml.clearmlConfig | string | `"sdk {\n}"` | ClearML configuration file | | clearml.existingAgentk8sglueSecret | string | `""` | If this is set, chart will not generate a secret but will use what is defined here | | clearml.existingClearmlConfigSecret | string | `""` | If this is set, chart will not generate a secret but will use what is defined here | -| enterpriseFeatures | object | `{"applyVaultEnvVars":true,"enabled":false,"maxPods":10,"monitoredResources":{"maxResources":0,"maxResourcesFieldName":"resources|limits|nvidia.com/gpu","minResourcesFieldName":"resources|limits|nvidia.com/gpu"},"queues":null,"serviceAccountClusterAccess":false,"useOwnerToken":true}` | Enterprise features (work only with an Enterprise license) | +| enterpriseFeatures | object | `{"agentImageTagOverride":"1.24-57","applyVaultEnvVars":true,"enabled":false,"maxPods":10,"monitoredResources":{"maxResources":0,"maxResourcesFieldName":"resources|limits|nvidia.com/gpu","minResourcesFieldName":"resources|limits|nvidia.com/gpu"},"queues":null,"serviceAccountClusterAccess":false,"useOwnerToken":true}` | Enterprise features (work only with an Enterprise license) | +| enterpriseFeatures.agentImageTagOverride | string | `"1.24-57"` | Image tag override for enterprise version | | enterpriseFeatures.applyVaultEnvVars | bool | `true` | push env vars from Clear.ML Vault to task pods | | enterpriseFeatures.enabled | bool | `false` | Enable/Disable Enterprise features | | enterpriseFeatures.maxPods | int | `10` | maximum concurrent consume ClearML Task pod | diff --git a/charts/clearml-agent/templates/agentk8sglue-deployment.yaml b/charts/clearml-agent/templates/agentk8sglue-deployment.yaml index 97e61d0..545eb7f 100644 --- a/charts/clearml-agent/templates/agentk8sglue-deployment.yaml +++ b/charts/clearml-agent/templates/agentk8sglue-deployment.yaml @@ -30,7 +30,11 @@ spec: serviceAccountName: {{ include "clearml.serviceAccountName" . }} initContainers: - name: init-k8s-glue + {{- if .Values.enterpriseFeatures.enabled }} + image: "{{ .Values.agentk8sglue.image.repository }}:{{ .Values.enterpriseFeatures.agentImageTagOverride }}" + {{- else }} image: "{{ .Values.agentk8sglue.image.repository }}:{{ .Values.agentk8sglue.image.tag }}" + {{- end }} command: - /bin/sh - -c @@ -50,7 +54,11 @@ spec: done containers: - name: k8s-glue + {{- if .Values.enterpriseFeatures.enabled }} + image: "{{ .Values.agentk8sglue.image.repository }}:{{ .Values.enterpriseFeatures.agentImageTagOverride }}" + {{- else }} image: "{{ .Values.agentk8sglue.image.repository }}:{{ .Values.agentk8sglue.image.tag }}" + {{- end }} imagePullPolicy: IfNotPresent command: - /bin/bash diff --git a/charts/clearml-agent/values.yaml b/charts/clearml-agent/values.yaml index 07d233e..bd80f8c 100644 --- a/charts/clearml-agent/values.yaml +++ b/charts/clearml-agent/values.yaml @@ -200,6 +200,8 @@ sessions: enterpriseFeatures: # -- Enable/Disable Enterprise features enabled: false + # -- Image tag override for enterprise version + agentImageTagOverride: "1.24-57" # -- service account access every namespace flag serviceAccountClusterAccess: false # -- push env vars from Clear.ML Vault to task pods diff --git a/charts/clearml/Chart.yaml b/charts/clearml/Chart.yaml index daf305a..579968c 100644 --- a/charts/clearml/Chart.yaml +++ b/charts/clearml/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: clearml description: MLOps platform type: application -version: "5.0.2" +version: "5.0.3" appVersion: "1.9.0" kubeVersion: ">= 1.21.0-0 < 1.26.0-0" home: https://clear.ml diff --git a/charts/clearml/README.md b/charts/clearml/README.md index 98a335b..fb46ec3 100644 --- a/charts/clearml/README.md +++ b/charts/clearml/README.md @@ -1,6 +1,6 @@ # ClearML Ecosystem for Kubernetes -![Version: 5.0.2](https://img.shields.io/badge/Version-5.0.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.9.0](https://img.shields.io/badge/AppVersion-1.9.0-informational?style=flat-square) +![Version: 5.0.3](https://img.shields.io/badge/Version-5.0.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.9.0](https://img.shields.io/badge/AppVersion-1.9.0-informational?style=flat-square) MLOps platform @@ -185,20 +185,21 @@ Kubernetes: `>= 1.21.0-0 < 1.26.0-0` | 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 | -| enterpriseFeatures | object | `{"airGappedDocumentation":{"enabled":false,"image":{"repository":"","tag":""}},"clearmlApplications":{"affinity":{},"agentKey":"GK4PRTVT3706T25K6BA1","agentSecret":"ymLh1ok5k5xNUQfS944Xdx9xjf0wueokqKM2dMZfHuH9ayItG2","basePodImage":{"repository":"","tag":""},"enabled":true,"extraEnvs":[],"gitAgentPass":"git_password","gitAgentUser":"git_user","image":{"pullPolicy":"IfNotPresent","repository":"","tag":""},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"tolerations":[]},"defaultCompanyGuid":"d1bd92a3b039400cbafc60a7a5b1e52b","enabled":false,"extraIndexUrl":"","overrideReferenceApiUrl":"","overrideReferenceFileUrl":""}` | Enterprise features (work only with an Enterprise license) | -| enterpriseFeatures.airGappedDocumentation | object | `{"enabled":false,"image":{"repository":"","tag":""}}` | Air gapped documentation configurations | +| enterpriseFeatures | object | `{"airGappedDocumentation":{"enabled":false,"image":{"repository":"","tag":"4"}},"apiserverImageTagOverride":"3.15.2-902","clearmlApplications":{"affinity":{},"agentKey":"GK4PRTVT3706T25K6BA1","agentSecret":"ymLh1ok5k5xNUQfS944Xdx9xjf0wueokqKM2dMZfHuH9ayItG2","basePodImage":{"repository":"","tag":"app-1.1.1-47"},"enabled":true,"extraEnvs":[],"gitAgentPass":"git_password","gitAgentUser":"git_user","image":{"pullPolicy":"IfNotPresent","repository":"","tag":"1.24-57"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"tolerations":[]},"defaultCompanyGuid":"d1bd92a3b039400cbafc60a7a5b1e52b","enabled":false,"extraIndexUrl":"","fileserverImageTagOverride":"3.15.2-902","overrideReferenceApiUrl":"","overrideReferenceFileUrl":"","webserverImageTagOverride":"3.15.2-787"}` | Enterprise features (work only with an Enterprise license) | +| enterpriseFeatures.airGappedDocumentation | object | `{"enabled":false,"image":{"repository":"","tag":"4"}}` | Air gapped documentation configurations | | enterpriseFeatures.airGappedDocumentation.enabled | bool | `false` | Enable/Disable air gapped documentation deployment | -| enterpriseFeatures.airGappedDocumentation.image | object | `{"repository":"","tag":""}` | Air gapped documentation image configuration | -| enterpriseFeatures.clearmlApplications | object | `{"affinity":{},"agentKey":"GK4PRTVT3706T25K6BA1","agentSecret":"ymLh1ok5k5xNUQfS944Xdx9xjf0wueokqKM2dMZfHuH9ayItG2","basePodImage":{"repository":"","tag":""},"enabled":true,"extraEnvs":[],"gitAgentPass":"git_password","gitAgentUser":"git_user","image":{"pullPolicy":"IfNotPresent","repository":"","tag":""},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"tolerations":[]}` | APPS configurations | +| enterpriseFeatures.airGappedDocumentation.image | object | `{"repository":"","tag":"4"}` | Air gapped documentation image configuration | +| enterpriseFeatures.apiserverImageTagOverride | string | `"3.15.2-902"` | Image tag override for apiserver enterprise version | +| enterpriseFeatures.clearmlApplications | object | `{"affinity":{},"agentKey":"GK4PRTVT3706T25K6BA1","agentSecret":"ymLh1ok5k5xNUQfS944Xdx9xjf0wueokqKM2dMZfHuH9ayItG2","basePodImage":{"repository":"","tag":"app-1.1.1-47"},"enabled":true,"extraEnvs":[],"gitAgentPass":"git_password","gitAgentUser":"git_user","image":{"pullPolicy":"IfNotPresent","repository":"","tag":"1.24-57"},"nodeSelector":{},"podAnnotations":{},"replicaCount":1,"resources":{"limits":{"cpu":"2000m","memory":"1Gi"},"requests":{"cpu":"100m","memory":"256Mi"}},"tolerations":[]}` | APPS configurations | | enterpriseFeatures.clearmlApplications.affinity | object | `{}` | APPS affinity setup | | enterpriseFeatures.clearmlApplications.agentKey | string | `"GK4PRTVT3706T25K6BA1"` | Apps Server basic auth key | | enterpriseFeatures.clearmlApplications.agentSecret | string | `"ymLh1ok5k5xNUQfS944Xdx9xjf0wueokqKM2dMZfHuH9ayItG2"` | Apps Server basic auth secret | -| enterpriseFeatures.clearmlApplications.basePodImage | object | `{"repository":"","tag":""}` | APPS base spawning pods image | +| enterpriseFeatures.clearmlApplications.basePodImage | object | `{"repository":"","tag":"app-1.1.1-47"}` | APPS base spawning pods image | | enterpriseFeatures.clearmlApplications.enabled | bool | `true` | Enable/Disable component deployment | | enterpriseFeatures.clearmlApplications.extraEnvs | list | `[]` | APPS extra envrinoment variables | | enterpriseFeatures.clearmlApplications.gitAgentPass | string | `"git_password"` | Apps Server Git password | | enterpriseFeatures.clearmlApplications.gitAgentUser | string | `"git_user"` | Apps Server Git user | -| enterpriseFeatures.clearmlApplications.image | object | `{"pullPolicy":"IfNotPresent","repository":"","tag":""}` | APPS image configuration | +| enterpriseFeatures.clearmlApplications.image | object | `{"pullPolicy":"IfNotPresent","repository":"","tag":"1.24-57"}` | APPS image configuration | | enterpriseFeatures.clearmlApplications.nodeSelector | object | `{}` | APPS nodeselector | | enterpriseFeatures.clearmlApplications.podAnnotations | object | `{}` | specific annotation for APPS pods | | enterpriseFeatures.clearmlApplications.replicaCount | int | `1` | APPS number of pods | @@ -207,8 +208,10 @@ Kubernetes: `>= 1.21.0-0 < 1.26.0-0` | enterpriseFeatures.defaultCompanyGuid | string | `"d1bd92a3b039400cbafc60a7a5b1e52b"` | Company ID | | enterpriseFeatures.enabled | bool | `false` | Enable/Disable Enterprise features | | enterpriseFeatures.extraIndexUrl | string | `""` | extra index URL for Enterprise packages | +| enterpriseFeatures.fileserverImageTagOverride | string | `"3.15.2-902"` | Image tag override for fileserver enterprise version | | enterpriseFeatures.overrideReferenceApiUrl | string | `""` | set this value AND overrideReferenceFileUrl if external endpoint exposure is in place (like a LoadBalancer) example: "https://api.clearml.local" | | enterpriseFeatures.overrideReferenceFileUrl | string | `""` | set this value AND overrideReferenceAPIUrl if external endpoint exposure is in place (like a LoadBalancer) example: "https://files.clearml.local" | +| enterpriseFeatures.webserverImageTagOverride | string | `"3.15.2-787"` | Image tag override for webserver enterprise version | | externalServices | object | `{"elasticsearchHost":"","elasticsearchPort":9200,"mongodbConnectionString":"","redisHost":"","redisPort":6379}` | Definition of external services to use if not enabled as dependency charts here | | externalServices.elasticsearchHost | string | `""` | Existing ElasticSearch Hostname to use if elasticsearch.enabled is false | | externalServices.elasticsearchPort | int | `9200` | Existing ElasticSearch Port to use if elasticsearch.enabled is false | diff --git a/charts/clearml/templates/apiserver-deployment.yaml b/charts/clearml/templates/apiserver-deployment.yaml index 7907bcd..b68fd11 100644 --- a/charts/clearml/templates/apiserver-deployment.yaml +++ b/charts/clearml/templates/apiserver-deployment.yaml @@ -35,7 +35,11 @@ spec: {{- end }} initContainers: - name: init-apiserver - image: "{{ .Values.apiserver.image.repository }}:{{ .Values.apiserver.image.tag | default .Chart.AppVersion }}" + {{- if .Values.enterpriseFeatures.enabled }} + image: "{{ .Values.apiserver.image.repository }}:{{ .Values.enterpriseFeatures.apiserverImageTagOverride }}" + {{- else }} + image: "{{ .Values.apiserver.image.repository }}:{{ .Values.apiserver.image.tag }}" + {{- end }} command: - /bin/sh - -c @@ -47,7 +51,11 @@ spec: done containers: - name: clearml-apiserver - image: "{{ .Values.apiserver.image.repository }}:{{ .Values.apiserver.image.tag | default .Chart.AppVersion }}" + {{- if .Values.enterpriseFeatures.enabled }} + image: "{{ .Values.apiserver.image.repository }}:{{ .Values.enterpriseFeatures.apiserverImageTagOverride }}" + {{- else }} + image: "{{ .Values.apiserver.image.repository }}:{{ .Values.apiserver.image.tag }}" + {{- end }} imagePullPolicy: {{ .Values.apiserver.image.pullPolicy }} ports: - name: http diff --git a/charts/clearml/templates/fileserver-deployment.yaml b/charts/clearml/templates/fileserver-deployment.yaml index 3c4f50d..9e7993e 100644 --- a/charts/clearml/templates/fileserver-deployment.yaml +++ b/charts/clearml/templates/fileserver-deployment.yaml @@ -33,7 +33,11 @@ spec: claimName: {{ include "fileserver.referenceName" . }}-data initContainers: - name: init-fileserver - image: "{{ .Values.fileserver.image.repository }}:{{ .Values.fileserver.image.tag | default .Chart.AppVersion }}" + {{- if .Values.enterpriseFeatures.enabled }} + image: "{{ .Values.fileserver.image.repository }}:{{ .Values.enterpriseFeatures.fileserverImageTagOverride }}" + {{- else }} + image: "{{ .Values.fileserver.image.repository }}:{{ .Values.fileserver.image.tag }}" + {{- end }} command: - /bin/sh - -c @@ -45,7 +49,11 @@ spec: done containers: - name: clearml-fileserver - image: "{{ .Values.fileserver.image.repository }}:{{ .Values.fileserver.image.tag | default .Chart.AppVersion }}" + {{- if .Values.enterpriseFeatures.enabled }} + image: "{{ .Values.fileserver.image.repository }}:{{ .Values.enterpriseFeatures.fileserverImageTagOverride }}" + {{- else }} + image: "{{ .Values.fileserver.image.repository }}:{{ .Values.fileserver.image.tag }}" + {{- end }} imagePullPolicy: {{ .Values.fileserver.image.pullPolicy }} ports: - name: http diff --git a/charts/clearml/templates/webserver-deployment.yaml b/charts/clearml/templates/webserver-deployment.yaml index 0abb1e4..72fa6ee 100644 --- a/charts/clearml/templates/webserver-deployment.yaml +++ b/charts/clearml/templates/webserver-deployment.yaml @@ -52,7 +52,11 @@ spec: {{- end }} {{- end }} - name: init-webserver - image: "{{ .Values.webserver.image.repository }}:{{ .Values.webserver.image.tag | default .Chart.AppVersion }}" + {{- if .Values.enterpriseFeatures.enabled }} + image: "{{ .Values.webserver.image.repository }}:{{ .Values.enterpriseFeatures.webserverImageTagOverride }}" + {{- else }} + image: "{{ .Values.webserver.image.repository }}:{{ .Values.webserver.image.tag }}" + {{- end }} command: - /bin/sh - -c @@ -64,7 +68,11 @@ spec: done containers: - name: clearml-webserver - image: "{{ .Values.webserver.image.repository }}:{{ .Values.webserver.image.tag | default .Chart.AppVersion }}" + {{- if .Values.enterpriseFeatures.enabled }} + image: "{{ .Values.webserver.image.repository }}:{{ .Values.enterpriseFeatures.webserverImageTagOverride }}" + {{- else }} + image: "{{ .Values.webserver.image.repository }}:{{ .Values.webserver.image.tag }}" + {{- end }} imagePullPolicy: {{ .Values.webserver.image.pullPolicy }} ports: - name: http diff --git a/charts/clearml/values.yaml b/charts/clearml/values.yaml index 0cc6fbf..e8910e1 100644 --- a/charts/clearml/values.yaml +++ b/charts/clearml/values.yaml @@ -357,6 +357,12 @@ enterpriseFeatures: enabled: false # -- Company ID defaultCompanyGuid: "d1bd92a3b039400cbafc60a7a5b1e52b" + # -- Image tag override for apiserver enterprise version + apiserverImageTagOverride: "3.15.2-902" + # -- Image tag override for fileserver enterprise version + fileserverImageTagOverride: "3.15.2-902" + # -- Image tag override for webserver enterprise version + webserverImageTagOverride: "3.15.2-787" # -- Air gapped documentation configurations airGappedDocumentation: # -- Enable/Disable air gapped documentation deployment @@ -364,7 +370,7 @@ enterpriseFeatures: # -- Air gapped documentation image configuration image: repository: "" - tag: "" + tag: "4" # -- set this value AND overrideReferenceFileUrl if external endpoint exposure is in place (like a LoadBalancer) # example: "https://api.clearml.local" overrideReferenceApiUrl: "" @@ -389,11 +395,11 @@ enterpriseFeatures: image: repository: "" pullPolicy: IfNotPresent - tag: "" + tag: "1.24-57" # -- APPS base spawning pods image basePodImage: repository: "" - tag: "" + tag: "app-1.1.1-47" # -- APPS number of pods replicaCount: 1 # -- APPS extra envrinoment variables