From 1ffca5751c36235af686d13c788c8ace5bb0a117 Mon Sep 17 00:00:00 2001 From: Timur Sultanaev Date: Fri, 14 May 2021 22:59:01 +0200 Subject: [PATCH] introduce extraInitContainers to helm chart New extraInitContainers configuration added. It allows to pass template with a list of containers to execute before main code-server container started. Main container will only start when all init containers are completed (exited with 0 code). Additionally changes the way extraContainers is used - instead of toYaml use tpl, because this allows to reference any values from extraContainers string. --- CHANGELOG.md | 10 ++++++ ci/helm-chart/README.md | 45 +++++++++++++++++++++++++ ci/helm-chart/templates/deployment.yaml | 5 ++- 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03d1b3064..994125b70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ # Changelog - [Changelog](#changelog) + - [Next Version](#next-version) - [3.10.1](#3101) - [Bug Fixes](#bug-fixes) - [Documentation](#documentation) @@ -51,6 +52,15 @@ VS Code v0.00.0 --> +## Next Version + +VS Code v1.56.1 + +### New Features + +- feat: supported `extraInitContainers` in helm chart values +- feat: changed `extraContainers` to support templating in helm chart + ## 3.10.1 VS Code v1.56.1 diff --git a/ci/helm-chart/README.md b/ci/helm-chart/README.md index 30a9e9e4f..65cb204e3 100644 --- a/ci/helm-chart/README.md +++ b/ci/helm-chart/README.md @@ -65,6 +65,7 @@ and their default values. | extraArgs | list | `[]` | | | extraConfigmapMounts | list | `[]` | | | extraContainers | string | `""` | | +| extraInitContainers | string | `""` | | | extraSecretMounts | list | `[]` | | | extraVars | list | `[]` | | | extraVolumeMounts | list | `[]` | | @@ -115,3 +116,47 @@ $ helm upgrade --install code-server ci/helm-chart -f values.yaml ``` > **Tip**: You can use the default [values.yaml](values.yaml) + +# Extra Containers + +There are two parameters which allow to add more containers to pod. +Use `extraContainers` to add regular containers +and `extraInitContainers` to add init containers. You can read more +about init containers in [k8s documentation](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/). + +Both parameters accept strings and use them as a templates + +Example of using `extraInitContainers`: + +``` yaml +extraInitContainers: | + - name: customization + image: {{ .Values.image.repository }}:{{ .Values.image.tag }} + imagePullPolicy: IfNotPresent + env: + - name: SERVICE_URL + value: https://open-vsx.org/vscode/gallery + - name: ITEM_URL + value: https://open-vsx.org/vscode/item + command: + - sh + - -c + - | + code-server --install-extension ms-python.python + code-server --install-extension golang.Go + volumeMounts: + - name: data + mountPath: /home/coder + +``` + +With this yaml in file `init.yaml`, you can execute + +```console +$ helm upgrade --install code-server \ + ci/helm-chart \ + --values init.yaml +``` + +to deploy code-server with python and golang extensions preinstalled +before main container have started. \ No newline at end of file diff --git a/ci/helm-chart/templates/deployment.yaml b/ci/helm-chart/templates/deployment.yaml index 9364a4706..201e3e6cb 100644 --- a/ci/helm-chart/templates/deployment.yaml +++ b/ci/helm-chart/templates/deployment.yaml @@ -43,10 +43,13 @@ spec: volumeMounts: - name: data mountPath: /home/coder +{{- if .Values.extraInitContainers }} +{{ tpl .Values.extraInitContainers . | indent 6}} +{{- end }} {{- end }} containers: {{- if .Values.extraContainers }} -{{ toYaml .Values.extraContainers | indent 8}} +{{ tpl .Values.extraContainers . | indent 8}} {{- end }} - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"