From 2b61d2637e3e539c0bb2c459b3e12cda10f53070 Mon Sep 17 00:00:00 2001 From: Kjeld Schouten-Lebbing Date: Thu, 18 Feb 2021 23:02:03 +0100 Subject: [PATCH] Add PGID and PUID options (#144) - Adds PGID as a values.yaml setting that sets PGID env-var - Adds PUID as a values.yaml settings that sets PGID env-var - Adjusts Common Unit test accordingly (both can also in the future be used to set securityContext based containers) --- .test/charts/common-test_spec.rb | 43 +++++++++++++------ library/common/Chart.yaml | 2 +- .../templates/lib/controller/_container.tpl | 22 ++++++---- library/common/values.yaml | 4 ++ 4 files changed, 49 insertions(+), 22 deletions(-) diff --git a/.test/charts/common-test_spec.rb b/.test/charts/common-test_spec.rb index 8c4a97e01b2..1e35a5b24a8 100644 --- a/.test/charts/common-test_spec.rb +++ b/.test/charts/common-test_spec.rb @@ -41,8 +41,11 @@ class Test < ChartTest describe 'Environment settings' do it 'Check no environment variables' do values = {} - chart.value values - assert_nil(resource('Deployment')['spec']['template']['spec']['containers'][0]['env']) + chart.value values + jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal 'PUID' + jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[1].name', resource('Deployment')).must_equal 'PGID' + jq('.spec.template.spec.containers[0].env[1].value', resource('Deployment')).must_equal 568 end it 'set "static" environment variables' do @@ -52,8 +55,12 @@ class Test < ChartTest } } chart.value values - jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal values[:env].keys[0].to_s - jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal values[:env].values[0].to_s + jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal 'PUID' + jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[1].name', resource('Deployment')).must_equal 'PGID' + jq('.spec.template.spec.containers[0].env[1].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[2].name', resource('Deployment')).must_equal values[:env].keys[0].to_s + jq('.spec.template.spec.containers[0].env[2].value', resource('Deployment')).must_equal values[:env].values[0].to_s end it 'set "valueFrom" environment variables' do @@ -67,8 +74,12 @@ class Test < ChartTest } } chart.value values - jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal values[:envValueFrom].keys[0].to_s - jq('.spec.template.spec.containers[0].env[0].valueFrom | keys[0]', resource('Deployment')).must_equal values[:envValueFrom].values[0].keys[0].to_s + jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal 'PUID' + jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[1].name', resource('Deployment')).must_equal 'PGID' + jq('.spec.template.spec.containers[0].env[1].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[2].name', resource('Deployment')).must_equal values[:envValueFrom].keys[0].to_s + jq('.spec.template.spec.containers[0].env[2].valueFrom | keys[0]', resource('Deployment')).must_equal values[:envValueFrom].values[0].keys[0].to_s end it 'set "static" and "Dynamic/Tpl" environment variables' do @@ -81,10 +92,14 @@ class Test < ChartTest } } chart.value values - jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal values[:env].keys[0].to_s - jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal values[:env].values[0].to_s - jq('.spec.template.spec.containers[0].env[1].name', resource('Deployment')).must_equal values[:envTpl].keys[0].to_s - jq('.spec.template.spec.containers[0].env[1].value', resource('Deployment')).must_equal 'common-test-admin' + jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal 'PUID' + jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[1].name', resource('Deployment')).must_equal 'PGID' + jq('.spec.template.spec.containers[0].env[1].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[2].name', resource('Deployment')).must_equal values[:env].keys[0].to_s + jq('.spec.template.spec.containers[0].env[2].value', resource('Deployment')).must_equal values[:env].values[0].to_s + jq('.spec.template.spec.containers[0].env[3].name', resource('Deployment')).must_equal values[:envTpl].keys[0].to_s + jq('.spec.template.spec.containers[0].env[3].value', resource('Deployment')).must_equal 'common-test-admin' end it 'set "Dynamic/Tpl" environment variables' do @@ -94,8 +109,12 @@ class Test < ChartTest } } chart.value values - jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal values[:envTpl].keys[0].to_s - jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal 'common-test-admin' + jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal 'PUID' + jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[1].name', resource('Deployment')).must_equal 'PGID' + jq('.spec.template.spec.containers[0].env[1].value', resource('Deployment')).must_equal 568 + jq('.spec.template.spec.containers[0].env[2].name', resource('Deployment')).must_equal values[:envTpl].keys[0].to_s + jq('.spec.template.spec.containers[0].env[2].value', resource('Deployment')).must_equal 'common-test-admin' end end diff --git a/library/common/Chart.yaml b/library/common/Chart.yaml index 380912d1390..9ee5b313b1d 100644 --- a/library/common/Chart.yaml +++ b/library/common/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: common description: Function library for TrueCharts type: library -version: 1.0.0 +version: 1.1.0 kubeVersion: ">=1.16.0-0" # upstream_version: 3.0.1 keywords: diff --git a/library/common/templates/lib/controller/_container.tpl b/library/common/templates/lib/controller/_container.tpl index 28b8010d511..e0060d2bcd4 100644 --- a/library/common/templates/lib/controller/_container.tpl +++ b/library/common/templates/lib/controller/_container.tpl @@ -15,28 +15,32 @@ The main container included in the controller. securityContext: {{- toYaml . | nindent 4 }} {{- end }} - {{- if or .Values.env .Values.envTpl .Values.envValueFrom }} env: + - name: PUID + value: {{ .Values.PUID }} + - name: PGID + value: {{ .Values.PGID }} + {{- if or .Values.env .Values.envTpl .Values.envValueFrom .Values.envVariable }} {{- range $envVariable := .Values.environmentVariables }} {{- if and $envVariable.name $envVariable.value }} - name: {{ $envVariable.name }} - value: {{ $envVariable.value | quote }} + value: {{ $envVariable.value | quote }} {{- else }} {{- fail "Please specify name/value for environment variable" }} {{- end }} {{- end}} {{- range $key, $value := .Values.env }} - - name: {{ $key }} - value: {{ $value | quote }} + - name: {{ $key }} + value: {{ $value | quote }} {{- end }} {{- range $key, $value := .Values.envTpl }} - - name: {{ $key }} - value: {{ tpl $value $ | quote }} + - name: {{ $key }} + value: {{ tpl $value $ | quote }} {{- end }} {{- range $key, $value := .Values.envValueFrom }} - - name: {{ $key }} - valueFrom: - {{- $value | toYaml | nindent 6 }} + - name: {{ $key }} + valueFrom: + {{- $value | toYaml | nindent 8 }} {{- end }} {{- end }} {{- with .Values.envFrom }} diff --git a/library/common/values.yaml b/library/common/values.yaml index 13e7fa56150..e43422ae417 100644 --- a/library/common/values.yaml +++ b/library/common/values.yaml @@ -32,6 +32,7 @@ serviceAccount: # If not set and create is true, a name is generated using the fullname template name: "" + env: {} # TZ: UTC @@ -450,6 +451,9 @@ addons: ## TrueCharts Specific +PUID: 568 +PGID: 568 + appAdditionalServicesEnabled: false # appAdditionalServices: # api: