From 80072c0654a64af70933c5ef03cb453bb8153817 Mon Sep 17 00:00:00 2001 From: Valeriano Manassero <14011549+valeriano-manassero@users.noreply.github.com> Date: Thu, 23 Jun 2022 09:52:19 +0200 Subject: [PATCH] Add editable config for k8s Agent (#84) * Added: editable configuration * Changed: bump up version --- charts/clearml-agent/Chart.yaml | 2 +- charts/clearml-agent/README.md | 5 +++-- .../templates/agentk8sglue-deployment.yaml | 16 +++++++++++++++- .../clearml-agent/templates/clearml-secrets.yaml | 1 + charts/clearml-agent/values.yaml | 4 ++++ 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/charts/clearml-agent/Chart.yaml b/charts/clearml-agent/Chart.yaml index aa67f2f..3c0af43 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: "1.0.2" +version: "1.1.0" appVersion: "1.21" kubeVersion: ">= 1.19.0-0 < 1.25.0-0" home: https://clear.ml diff --git a/charts/clearml-agent/README.md b/charts/clearml-agent/README.md index f51fc3b..3321994 100644 --- a/charts/clearml-agent/README.md +++ b/charts/clearml-agent/README.md @@ -1,6 +1,6 @@ # clearml-agent -![Version: 1.0.2](https://img.shields.io/badge/Version-1.0.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.21](https://img.shields.io/badge/AppVersion-1.21-informational?style=flat-square) +![Version: 1.1.0](https://img.shields.io/badge/Version-1.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.21](https://img.shields.io/badge/AppVersion-1.21-informational?style=flat-square) MLOps platform @@ -42,9 +42,10 @@ Kubernetes: `>= 1.19.0-0 < 1.25.0-0` | agentk8sglue.replicaCount | int | `1` | Glue Agent number of pods | | agentk8sglue.serviceAccountName | string | `"default"` | serviceAccountName for pods spawned to consume ClearML Task | | agentk8sglue.webServerUrlReference | string | `"https://app.clear.ml"` | Reference to Web server url | -| clearml | object | `{"agentk8sglueKey":"ACCESSKEY","agentk8sglueSecret":"SECRETKEY"}` | ClearMl generic configurations | +| clearml | object | `{"agentk8sglueKey":"ACCESSKEY","agentk8sglueSecret":"SECRETKEY","clearmlConfig":"sdk {\n}"}` | ClearMl generic configurations | | clearml.agentk8sglueKey | string | `"ACCESSKEY"` | Agent k8s Glue basic auth key | | clearml.agentk8sglueSecret | string | `"SECRETKEY"` | Agent k8s Glue basic auth secret | +| clearml.clearmlConfig | string | `"sdk {\n}"` | ClearML configuration file | | imageCredentials | object | `{"email":"someone@host.com","enabled":false,"existingSecret":"","password":"pwd","registry":"docker.io","username":"someone"}` | Private image registry configuration | | imageCredentials.email | string | `"someone@host.com"` | Email | | imageCredentials.enabled | bool | `false` | Use private authentication mode | diff --git a/charts/clearml-agent/templates/agentk8sglue-deployment.yaml b/charts/clearml-agent/templates/agentk8sglue-deployment.yaml index e85d37b..2f67011 100644 --- a/charts/clearml-agent/templates/agentk8sglue-deployment.yaml +++ b/charts/clearml-agent/templates/agentk8sglue-deployment.yaml @@ -47,11 +47,17 @@ spec: containers: - name: k8s-glue image: "{{ .Values.agentk8sglue.image.repository }}:{{ .Values.agentk8sglue.image.tag }}" - imagePullPolicy: Always + imagePullPolicy: IfNotPresent command: ["/bin/bash", "-c", "export PATH=$PATH:$HOME/bin; source /root/.bashrc && /root/entrypoint.sh"] volumeMounts: - name: k8sagent-pod-template mountPath: /root/template + {{ if .Values.clearml.clearmlConfig }} + - name: k8sagent-clearml-conf-volume + mountPath: /root/clearml.conf + subPath: clearml.conf + readOnly: true + {{- end }} env: - name: CLEARML_API_HOST value: "{{.Values.agentk8sglue.apiServerUrlReference}}" @@ -89,3 +95,11 @@ spec: - name: k8sagent-pod-template configMap: name: k8sagent-pod-template + {{ if .Values.clearml.clearmlConfig }} + - name: k8sagent-clearml-conf-volume + secret: + secretName: clearml-agent-conf + items: + - key: clearml.conf + path: clearml.conf + {{ end }} diff --git a/charts/clearml-agent/templates/clearml-secrets.yaml b/charts/clearml-agent/templates/clearml-secrets.yaml index 7939625..b92c7ed 100644 --- a/charts/clearml-agent/templates/clearml-secrets.yaml +++ b/charts/clearml-agent/templates/clearml-secrets.yaml @@ -5,6 +5,7 @@ metadata: data: agentk8sglue_key: {{ .Values.clearml.agentk8sglueKey | b64enc }} agentk8sglue_secret: {{ .Values.clearml.agentk8sglueSecret | b64enc }} + clearml.conf: {{ .Values.clearml.clearmlConfig | b64enc }} --- {{- if .Values.imageCredentials.enabled }} {{- if not .Values.imageCredentials.existingSecret }} diff --git a/charts/clearml-agent/values.yaml b/charts/clearml-agent/values.yaml index d6ec5d1..c987526 100644 --- a/charts/clearml-agent/values.yaml +++ b/charts/clearml-agent/values.yaml @@ -19,6 +19,10 @@ clearml: agentk8sglueKey: "ACCESSKEY" # -- Agent k8s Glue basic auth secret agentk8sglueSecret: "SECRETKEY" + # -- ClearML configuration file + clearmlConfig: |- + sdk { + } # -- This agent will spawn queued experiments in new pods, a good use case is to combine this with # GPU autoscaling nodes.