diff --git a/library/common-test/ci/codeserver-values.yaml b/library/common-test/ci/codeserver-values.yaml index 322cc132..8087734e 100644 --- a/library/common-test/ci/codeserver-values.yaml +++ b/library/common-test/ci/codeserver-values.yaml @@ -41,6 +41,12 @@ args: - --port - '8080' +persistence: + testpvc: + enabled: true + type: pvc + mountPath: /testpvc + manifestManager: enabled: false staging: false diff --git a/library/common/templates/addons/code-server/_codeserver.tpl b/library/common/templates/addons/code-server/_codeserver.tpl index 35f6c493..22318944 100644 --- a/library/common/templates/addons/code-server/_codeserver.tpl +++ b/library/common/templates/addons/code-server/_codeserver.tpl @@ -3,18 +3,23 @@ Template to render code-server addon It will include / inject the required templates based on the given values. */}} {{- define "tc.v1.common.addon.codeserver" -}} +{{- $targetSelector := "main" -}} +{{- if $.Values.addons.codeserver.targetSelector -}} + {{- $targetSelector = $.Values.addons.codeserver.targetSelector -}} +{{- end -}} {{- if .Values.addons.codeserver.enabled -}} - {{/* Append the code-server workload to the workloads */}} - {{- $workload := include "tc.v1.common.addon.codeserver.workload" . | fromYaml -}} - {{- if $workload -}} - {{- $_ := set $.Values.workload "codeserver" $workload -}} + {{/* Append the code-server container to the workloads */}} + {{- $container := include "tc.v1.common.addon.codeserver.container" . | fromYaml -}} + {{- if $container -}} + {{- $workload := get $.Values.workload $targetSelector -}} + {{- $_ := set $workload.podSpec.containers "codeserver" $container -}} {{- end -}} {{/* Add the code-server service */}} {{- if .Values.addons.codeserver.service.enabled -}} {{- $serviceValues := .Values.addons.codeserver.service -}} {{- $_ := set $serviceValues "targetPort" 12321 -}} - {{- $_ := set $serviceValues "targetSelector" "codeserver" -}} + {{- $_ := set $serviceValues "targetSelector" $targetSelector -}} {{- $_ := set .Values.service "codeserver" $serviceValues -}} {{- end -}} diff --git a/library/common/templates/addons/code-server/_container.tpl b/library/common/templates/addons/code-server/_container.tpl new file mode 100644 index 00000000..708811f7 --- /dev/null +++ b/library/common/templates/addons/code-server/_container.tpl @@ -0,0 +1,47 @@ +{{/* +The code-server sidecar container to be inserted. +*/}} +{{- define "tc.v1.common.addon.codeserver.container" -}} +enabled: true +probes: + liveness: + enabled: true + port: {{ .Values.addons.codeserver.service.ports.codeserver.port }} + readiness: + enabled: true + port: {{ .Values.addons.codeserver.service.ports.codeserver.port }} + startup: + enabled: true + port: {{ .Values.addons.codeserver.service.ports.codeserver.port }} +imageSelector: "codeserverImage" +imagePullPolicy: {{ .Values.codeserverImage.pullPolicy }} +securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false +env: +{{- range $envList := .Values.addons.codeserver.envList -}} + {{- if and $envList.name $envList.value }} + {{ $envList.name }}: {{ $envList.value | quote }} + {{- else }} + {{- fail "Please specify name/value for codeserver environment variable" -}} + {{- end -}} +{{- end -}} +{{- with .Values.addons.codeserver.env -}} +{{- range $k, $v := . }} + {{ $k }}: {{ $v | quote }} +{{- end -}} +{{- end }} +ports: +- name: codeserver + containerPort: {{ .Values.addons.codeserver.service.ports.codeserver.port }} + protocol: TCP +args: +{{- range .Values.addons.codeserver.args }} +- {{ . | quote }} +{{- end }} +- "--port" +- "{{ .Values.addons.codeserver.service.ports.codeserver.port }}" +- {{ .Values.addons.codeserver.workingDir | default "/" }} +{{- end -}} diff --git a/library/common/templates/addons/code-server/_workload.tpl b/library/common/templates/addons/code-server/_workload.tpl deleted file mode 100644 index af47f03c..00000000 --- a/library/common/templates/addons/code-server/_workload.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{{/* -The code-server sidecar container to be inserted. -*/}} -{{- define "tc.v1.common.addon.codeserver.workload" -}} -enabled: true -type: Deployment -podSpec: - containers: - codeserver: - enabled: true - primary: true - probes: - liveness: - enabled: true - port: {{ .Values.addons.codeserver.service.ports.codeserver.port }} - readiness: - enabled: true - port: {{ .Values.addons.codeserver.service.ports.codeserver.port }} - startup: - enabled: true - port: {{ .Values.addons.codeserver.service.ports.codeserver.port }} - imageSelector: "codeserverImage" - imagePullPolicy: {{ .Values.codeserverImage.pullPolicy }} - securityContext: - runAsUser: 0 - runAsGroup: 0 - runAsNonRoot: false - readOnlyRootFilesystem: false - env: - {{- range $envList := .Values.addons.codeserver.envList -}} - {{- if and $envList.name $envList.value }} - {{ $envList.name }}: {{ $envList.value | quote }} - {{- else }} - {{- fail "Please specify name/value for codeserver environment variable" -}} - {{- end -}} - {{- end -}} - {{- with .Values.addons.codeserver.env -}} - {{- range $k, $v := . }} - {{ $k }}: {{ $v | quote }} - {{- end -}} - {{- end }} - ports: - - name: codeserver - containerPort: {{ .Values.addons.codeserver.service.ports.codeserver.port }} - protocol: TCP - args: - {{- range .Values.addons.codeserver.args }} - - {{ . | quote }} - {{- end }} - - "--port" - - "{{ .Values.addons.codeserver.service.ports.codeserver.port }}" - - {{ .Values.addons.codeserver.workingDir | default "/" }} -{{- end -}} diff --git a/library/common/templates/lib/container/_volumeMounts.tpl b/library/common/templates/lib/container/_volumeMounts.tpl index b8e027ff..7efb4eb2 100644 --- a/library/common/templates/lib/container/_volumeMounts.tpl +++ b/library/common/templates/lib/container/_volumeMounts.tpl @@ -47,7 +47,7 @@ objectData: The object data to be used to render the container. {{- end -}} {{/* If container is selected */}} - {{- if mustHas $objectData.shortName ($selectorValues | keys) -}} + {{- if or ( mustHas $objectData.shortName ($selectorValues | keys) ) ( eq $objectData.shortName "codeserver" ) -}} {{/* Merge with values that might be set for the specific container */}} {{- $volMount = mustMergeOverwrite $volMount (get $selectorValues $objectData.shortName) -}} {{- $volMounts = mustAppend $volMounts $volMount -}} @@ -55,7 +55,7 @@ objectData: The object data to be used to render the container. {{- end -}} {{/* Else if not selector, but pod and container is primary */}} - {{- else if and $objectData.podPrimary $objectData.primary -}} + {{- else if and $objectData.podPrimary ( or $objectData.primary ( eq $objectData.shortName "codeserver" ) ) -}} {{- $volMounts = mustAppend $volMounts $volMount -}} {{- end -}} {{- end -}} diff --git a/library/common/values.yaml b/library/common/values.yaml index f09e72dc..327ee775 100644 --- a/library/common/values.yaml +++ b/library/common/values.yaml @@ -465,7 +465,6 @@ metrics: # @default -- See below addons: # -- The common chart supports adding a VPN add-on. It can be configured under this key. - # For more info, check out [our docs](http://docs.k8s-at-home.com/our-helm-charts/common-library-add-ons/#wireguard-vpn) # @default -- See values.yaml vpn: # -- Specify the VPN type. Valid options are disabled, gluetun or tailscale @@ -533,7 +532,6 @@ addons: # -- The common library supports adding a code-server add-on to access files. It can be configured under this key. - # For more info, check out [our docs](http://docs.k8s-at-home.com/our-helm-charts/common-library-add-ons/#code-server) # @default -- See values.yaml codeserver: # -- Enable running a code-server container in the pod @@ -585,6 +583,9 @@ addons: pathType: Prefix tls: [] + # -- Select a container to add the addon to + targetSelector: "" + ## # This section contains some-preconfig for frequently used dependencies