Allowing auth secrets to be optional #2 (#100)

* Allowing auth secrets to be optional

* Add value secret.existingSecret for clearml chart.

* Add value clearml.existingAgentk8sglueSecret for clearml-agent chart.

* Add value clearml.existingClearmlConfigSecret for clearml-agent chart.

* Split Secret clearml-agent-conf in clearml-agent chart into two
  Secrets: clearml-agent-conf (agent.conf file) and clearml-agent-k8sglue
  (environment variables).

* Update helm-docs
This commit is contained in:
Nikolay Shamanovich 2022-08-22 08:35:47 +00:00 committed by GitHub
parent fdea0c4a3f
commit 19a6785a03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 62 additions and 19 deletions

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: clearml-agent name: clearml-agent
description: MLOps platform description: MLOps platform
type: application type: application
version: "1.2.3" version: "1.3.0"
appVersion: "1.24" appVersion: "1.24"
kubeVersion: ">= 1.19.0-0 < 1.25.0-0" kubeVersion: ">= 1.19.0-0 < 1.25.0-0"
home: https://clear.ml home: https://clear.ml

View File

@ -1,6 +1,6 @@
# clearml-agent # clearml-agent
![Version: 1.2.3](https://img.shields.io/badge/Version-1.2.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: 1.3.0](https://img.shields.io/badge/Version-1.3.0-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 MLOps platform
@ -44,10 +44,12 @@ Kubernetes: `>= 1.19.0-0 < 1.25.0-0`
| agentk8sglue.replicaCount | int | `1` | Glue Agent number of pods | | agentk8sglue.replicaCount | int | `1` | Glue Agent number of pods |
| agentk8sglue.serviceAccountName | string | `"default"` | serviceAccountName for pods spawned to consume ClearML Task | | agentk8sglue.serviceAccountName | string | `"default"` | serviceAccountName for pods spawned to consume ClearML Task |
| agentk8sglue.webServerUrlReference | string | `"https://app.clear.ml"` | Reference to Web server url | | agentk8sglue.webServerUrlReference | string | `"https://app.clear.ml"` | Reference to Web server url |
| clearml | object | `{"agentk8sglueKey":"ACCESSKEY","agentk8sglueSecret":"SECRETKEY","clearmlConfig":"sdk {\n}"}` | ClearMl generic configurations | | clearml | object | `{"agentk8sglueKey":"ACCESSKEY","agentk8sglueSecret":"SECRETKEY","clearmlConfig":"sdk {\n}","existingAgentk8sglueSecret":"","existingClearmlConfigSecret":""}` | ClearMl generic configurations |
| clearml.agentk8sglueKey | string | `"ACCESSKEY"` | Agent k8s Glue basic auth key | | clearml.agentk8sglueKey | string | `"ACCESSKEY"` | Agent k8s Glue basic auth key |
| clearml.agentk8sglueSecret | string | `"SECRETKEY"` | Agent k8s Glue basic auth secret | | clearml.agentk8sglueSecret | string | `"SECRETKEY"` | Agent k8s Glue basic auth secret |
| clearml.clearmlConfig | string | `"sdk {\n}"` | ClearML configuration file | | 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 |
| imageCredentials | object | `{"email":"someone@host.com","enabled":false,"existingSecret":"","password":"pwd","registry":"docker.io","username":"someone"}` | Private image registry configuration | | 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.email | string | `"someone@host.com"` | Email |
| imageCredentials.enabled | bool | `false` | Use private authentication mode | | imageCredentials.enabled | bool | `false` | Use private authentication mode |

View File

@ -43,12 +43,20 @@ data:
- name: CLEARML_API_ACCESS_KEY - name: CLEARML_API_ACCESS_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-conf {{- if .Values.clearml.existingAgentk8sglueSecret }}
name: {{ .Values.clearml.existingAgentk8sglueSecret }}
{{- else }}
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-k8sglue
{{- end }}
key: agentk8sglue_key key: agentk8sglue_key
- name: CLEARML_API_SECRET_KEY - name: CLEARML_API_SECRET_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-conf {{- if .Values.clearml.existingAgentk8sglueSecret }}
name: {{ .Values.clearml.existingAgentk8sglueSecret }}
{{- else }}
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-k8sglue
{{- end }}
key: agentk8sglue_secret key: agentk8sglue_secret
{{- if .Values.agentk8sglue.podTemplate.env }} {{- if .Values.agentk8sglue.podTemplate.env }}
{{ toYaml .Values.agentk8sglue.podTemplate.env | nindent 8 }} {{ toYaml .Values.agentk8sglue.podTemplate.env | nindent 8 }}

View File

@ -52,7 +52,7 @@ spec:
volumeMounts: volumeMounts:
- name: {{ include "agentk8sglue.referenceName" . }}-k8sagent-pod-template - name: {{ include "agentk8sglue.referenceName" . }}-k8sagent-pod-template
mountPath: /root/template mountPath: /root/template
{{ if .Values.clearml.clearmlConfig }} {{- if or .Values.clearml.clearmlConfig .Values.clearml.existingClearmlConfigSecret }}
- name: k8sagent-clearml-conf-volume - name: k8sagent-clearml-conf-volume
mountPath: /root/clearml.conf mountPath: /root/clearml.conf
subPath: clearml.conf subPath: clearml.conf
@ -76,12 +76,20 @@ spec:
- name: CLEARML_API_ACCESS_KEY - name: CLEARML_API_ACCESS_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-conf {{- if .Values.clearml.existingAgentk8sglueSecret }}
name: {{ .Values.clearml.existingAgentk8sglueSecret }}
{{- else }}
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-k8sglue
{{- end }}
key: agentk8sglue_key key: agentk8sglue_key
- name: CLEARML_API_SECRET_KEY - name: CLEARML_API_SECRET_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-conf {{- if .Values.clearml.existingAgentk8sglueSecret }}
name: {{ .Values.clearml.existingAgentk8sglueSecret }}
{{- else }}
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-k8sglue
{{- end }}
key: agentk8sglue_secret key: agentk8sglue_secret
- name: CLEARML_WORKER_ID - name: CLEARML_WORKER_ID
value: "{{.Values.agentk8sglue.id}}" value: "{{.Values.agentk8sglue.id}}"
@ -98,10 +106,14 @@ spec:
- name: {{ include "agentk8sglue.referenceName" . }}-k8sagent-pod-template - name: {{ include "agentk8sglue.referenceName" . }}-k8sagent-pod-template
configMap: configMap:
name: {{ include "agentk8sglue.referenceName" . }}-k8sagent-pod-template name: {{ include "agentk8sglue.referenceName" . }}-k8sagent-pod-template
{{ if .Values.clearml.clearmlConfig }} {{- if or .Values.clearml.clearmlConfig .Values.clearml.existingClearmlConfigSecret }}
- name: k8sagent-clearml-conf-volume - name: k8sagent-clearml-conf-volume
secret: secret:
{{- if .Values.clearml.existingClearmlConfigSecret }}
secretName: {{ .Values.clearml.existingClearmlConfigSecret }}
{{- else }}
secretName: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-conf secretName: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-conf
{{- end }}
items: items:
- key: clearml.conf - key: clearml.conf
path: clearml.conf path: clearml.conf

View File

@ -1,12 +1,22 @@
{{- if not .Values.clearml.existingAgentk8sglueSecret }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-k8sglue
data:
agentk8sglue_key: {{ .Values.clearml.agentk8sglueKey | b64enc }}
agentk8sglue_secret: {{ .Values.clearml.agentk8sglueSecret | b64enc }}
{{- end }}
---
{{- if not .Values.clearml.existingClearmlConfigSecret }}
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-conf name: {{ include "agentk8sglue.referenceName" . }}-clearml-agent-conf
data: data:
agentk8sglue_key: {{ .Values.clearml.agentk8sglueKey | b64enc }}
agentk8sglue_secret: {{ .Values.clearml.agentk8sglueSecret | b64enc }}
clearml.conf: {{ .Values.clearml.clearmlConfig | b64enc }} clearml.conf: {{ .Values.clearml.clearmlConfig | b64enc }}
--- ---
{{- end }}
{{- if .Values.imageCredentials.enabled }} {{- if .Values.imageCredentials.enabled }}
{{- if not .Values.imageCredentials.existingSecret }} {{- if not .Values.imageCredentials.existingSecret }}
apiVersion: v1 apiVersion: v1

View File

@ -15,10 +15,15 @@ imageCredentials:
# -- ClearMl generic configurations # -- ClearMl generic configurations
clearml: clearml:
# -- If this is set, chart will not generate a secret but will use what is defined here
existingAgentk8sglueSecret: ""
# -- Agent k8s Glue basic auth key # -- Agent k8s Glue basic auth key
agentk8sglueKey: "ACCESSKEY" agentk8sglueKey: "ACCESSKEY"
# -- Agent k8s Glue basic auth secret # -- Agent k8s Glue basic auth secret
agentk8sglueSecret: "SECRETKEY" agentk8sglueSecret: "SECRETKEY"
# -- If this is set, chart will not generate a secret but will use what is defined here
existingClearmlConfigSecret: ""
# -- ClearML configuration file # -- ClearML configuration file
clearmlConfig: |- clearmlConfig: |-
sdk { sdk {

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: clearml name: clearml
description: MLOps platform description: MLOps platform
type: application type: application
version: "4.1.3" version: "4.2.0"
appVersion: "1.6.0" appVersion: "1.6.0"
home: https://clear.ml home: https://clear.ml
icon: https://raw.githubusercontent.com/allegroai/clearml/master/docs/clearml-logo.svg icon: https://raw.githubusercontent.com/allegroai/clearml/master/docs/clearml-logo.svg

View File

@ -1,6 +1,6 @@
# ClearML Ecosystem for Kubernetes # ClearML Ecosystem for Kubernetes
![Version: 4.1.3](https://img.shields.io/badge/Version-4.1.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.0](https://img.shields.io/badge/AppVersion-1.6.0-informational?style=flat-square) ![Version: 4.2.0](https://img.shields.io/badge/Version-4.2.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.0](https://img.shields.io/badge/AppVersion-1.6.0-informational?style=flat-square)
MLOps platform MLOps platform
@ -256,6 +256,7 @@ For detailed instructions, see the [Optional Configuration](https://github.com/a
| secret.credentials.apiserver.secretKey | string | `"BxapIRo9ZINi8x25CRxz8Wdmr2pQjzuWVB4PNASZqCtTyWgWVQ"` | Set for apiserver_secret field | | secret.credentials.apiserver.secretKey | string | `"BxapIRo9ZINi8x25CRxz8Wdmr2pQjzuWVB4PNASZqCtTyWgWVQ"` | Set for apiserver_secret field |
| secret.credentials.tests.accessKey | string | `"ENP39EQM4SLACGD5FXB7"` | Set for tests_user_key field | | secret.credentials.tests.accessKey | string | `"ENP39EQM4SLACGD5FXB7"` | Set for tests_user_key field |
| secret.credentials.tests.secretKey | string | `"lPcm0imbcBZ8mwgO7tpadutiS3gnJD05x9j7afwXPS35IKbpiQ"` | Set for tests_user_secret field | | secret.credentials.tests.secretKey | string | `"lPcm0imbcBZ8mwgO7tpadutiS3gnJD05x9j7afwXPS35IKbpiQ"` | Set for tests_user_secret field |
| secret.existingSecret | string | `""` | If this is set, chart will not generate a secret but will use what is defined here |
| secret.httpSession | string | `"9Tw20RbhJ1bLBiHEOWXvhplKGUbTgLzAtwFN2oLQvWwS0uRpD5"` | Set for http_session field | | secret.httpSession | string | `"9Tw20RbhJ1bLBiHEOWXvhplKGUbTgLzAtwFN2oLQvWwS0uRpD5"` | Set for http_session field |
| webserver.additionalConfigs | object | `{}` | | | webserver.additionalConfigs | object | `{}` | |
| webserver.affinity | object | `{}` | | | webserver.affinity | object | `{}` | |

View File

@ -87,32 +87,32 @@ spec:
- name: CLEARML__SECURE__HTTP__SESSION_SECRET__APISERVER - name: CLEARML__SECURE__HTTP__SESSION_SECRET__APISERVER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: clearml-conf name: {{ default "clearml-conf" .Values.secret.existingSecret }}
key: http_session key: http_session
- name: CLEARML__SECURE__AUTH__TOKEN_SECRET - name: CLEARML__SECURE__AUTH__TOKEN_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: clearml-conf name: {{ default "clearml-conf" .Values.secret.existingSecret }}
key: auth_token key: auth_token
- name: CLEARML__SECURE__CREDENTIALS__APISERVER__USER_KEY - name: CLEARML__SECURE__CREDENTIALS__APISERVER__USER_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: clearml-conf name: {{ default "clearml-conf" .Values.secret.existingSecret }}
key: apiserver_key key: apiserver_key
- name: CLEARML__SECURE__CREDENTIALS__APISERVER__USER_SECRET - name: CLEARML__SECURE__CREDENTIALS__APISERVER__USER_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: clearml-conf name: {{ default "clearml-conf" .Values.secret.existingSecret }}
key: apiserver_secret key: apiserver_secret
- name: CLEARML__SECURE__CREDENTIALS__TESTS__USER_KEY - name: CLEARML__SECURE__CREDENTIALS__TESTS__USER_KEY
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: clearml-conf name: {{ default "clearml-conf" .Values.secret.existingSecret }}
key: tests_user_key key: tests_user_key
- name: CLEARML__SECURE__CREDENTIALS__TESTS__USER_SECRET - name: CLEARML__SECURE__CREDENTIALS__TESTS__USER_SECRET
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: clearml-conf name: {{ default "clearml-conf" .Values.secret.existingSecret }}
key: tests_user_secret key: tests_user_secret
{{- if .Values.apiserver.extraEnvs }} {{- if .Values.apiserver.extraEnvs }}
{{ toYaml .Values.apiserver.extraEnvs | nindent 10 }} {{ toYaml .Values.apiserver.extraEnvs | nindent 10 }}

View File

@ -1,3 +1,4 @@
{{- if not .Values.secret.existingSecret }}
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
@ -9,3 +10,4 @@ stringData:
auth_token: {{ .Values.secret.authToken }} auth_token: {{ .Values.secret.authToken }}
tests_user_key: {{ .Values.secret.credentials.tests.accessKey }} tests_user_key: {{ .Values.secret.credentials.tests.accessKey }}
tests_user_secret: {{ .Values.secret.credentials.tests.secretKey }} tests_user_secret: {{ .Values.secret.credentials.tests.secretKey }}
{{- end }}

View File

@ -39,6 +39,9 @@ ingress:
path: "/" path: "/"
secret: secret:
# -- If this is set, chart will not generate a secret but will use what is defined here
existingSecret: ""
# -- Set for http_session field # -- Set for http_session field
httpSession: "9Tw20RbhJ1bLBiHEOWXvhplKGUbTgLzAtwFN2oLQvWwS0uRpD5" httpSession: "9Tw20RbhJ1bLBiHEOWXvhplKGUbTgLzAtwFN2oLQvWwS0uRpD5"
# -- Set for auth_token field # -- Set for auth_token field