mirror of
https://github.com/bjw-s-labs/helm-charts.git
synced 2025-07-04 00:47:04 +02:00
feat(common): Release version 2.0.0-beta.1 (#173)
This commit is contained in:
parent
19767d668c
commit
7b6ee00be6
189 changed files with 3110 additions and 3023 deletions
|
@ -1,46 +0,0 @@
|
|||
{{/*
|
||||
Template to render code-server addon
|
||||
It will include / inject the required templates based on the given values.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.codeserver" -}}
|
||||
{{- if .Values.addons.codeserver.enabled -}}
|
||||
{{/* Append the code-server container to the sidecars */}}
|
||||
{{- $container := include "bjw-s.common.addon.codeserver.container" . | fromYaml -}}
|
||||
{{- if $container -}}
|
||||
{{- $_ := set .Values.sidecars "addon-codeserver" $container -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Include the deployKeySecret if not empty */}}
|
||||
{{- if or .Values.addons.codeserver.git.deployKey .Values.addons.codeserver.git.deployKeyBase64 -}}
|
||||
{{- $deployKeySecret := include "bjw-s.common.addon.codeserver.deployKeySecret" . -}}
|
||||
{{- if $deployKeySecret -}}
|
||||
{{- $_ := set .Values.secrets "addon-codeserver-deploykey" (dict "enabled" true "stringData" ($deployKeySecret | fromYaml)) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Append the secret volume to the volumes */}}
|
||||
{{- if or .Values.addons.codeserver.git.deployKey .Values.addons.codeserver.git.deployKeyBase64 .Values.addons.codeserver.git.deployKeySecret }}
|
||||
{{- $volume := include "bjw-s.common.addon.codeserver.deployKeyVolumeSpec" . | fromYaml -}}
|
||||
{{- if $volume -}}
|
||||
{{- $_ := set .Values.persistence "deploykey" (dict "enabled" true "mountPath" "-" "type" "custom" "volumeSpec" $volume) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Add the code-server service */}}
|
||||
{{- if .Values.addons.codeserver.service.enabled -}}
|
||||
{{- $serviceValues := .Values.addons.codeserver.service -}}
|
||||
{{- $_ := set $serviceValues "nameOverride" "addon-codeserver" -}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "service" $serviceValues) -}}
|
||||
{{- include "bjw-s.common.class.service" $ -}}
|
||||
{{- $_ := unset $.ObjectValues "service" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Add the code-server ingress */}}
|
||||
{{- $svcName := printf "%v-addon-codeserver" (include "bjw-s.common.lib.chart.names.fullname" .) -}}
|
||||
{{- $svcPort := .Values.addons.codeserver.service.ports.codeserver.port -}}
|
||||
{{- range $_, $host := .Values.addons.codeserver.ingress.hosts -}}
|
||||
{{- $_ := set (index $host.paths 0) "service" (dict "name" $svcName "port" $svcPort) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set .Values.ingress "addon-codeserver" .Values.addons.codeserver.ingress -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,46 +0,0 @@
|
|||
{{/*
|
||||
The code-server sidecar container to be inserted.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.codeserver.container" -}}
|
||||
{{- if lt (len .Values.addons.codeserver.volumeMounts) 1 }}
|
||||
{{- fail "At least 1 volumeMount is required for codeserver container" }}
|
||||
{{- end -}}
|
||||
name: codeserver
|
||||
image: "{{ .Values.addons.codeserver.image.repository }}:{{ .Values.addons.codeserver.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.addons.codeserver.pullPolicy }}
|
||||
{{- with .Values.addons.codeserver.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.codeserver.env }}
|
||||
env:
|
||||
{{- range $k, $v := . }}
|
||||
- name: {{ $k }}
|
||||
value: {{ $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 (first .Values.addons.codeserver.volumeMounts).mountPath }}
|
||||
volumeMounts:
|
||||
{{- with .Values.addons.codeserver.volumeMounts }}
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- if or .Values.addons.codeserver.git.deployKey .Values.addons.codeserver.git.deployKeyBase64 .Values.addons.codeserver.git.deployKeySecret }}
|
||||
- name: deploykey
|
||||
mountPath: /root/.ssh/id_rsa
|
||||
subPath: id_rsa
|
||||
{{- end }}
|
||||
{{- with .Values.addons.codeserver.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -1,10 +0,0 @@
|
|||
{{/*
|
||||
The deployKey secret to be included.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.codeserver.deployKeySecret" -}}
|
||||
{{- $deployKeyValue := .Values.addons.codeserver.git.deployKey -}}
|
||||
{{- if .Values.addons.codeserver.git.deployKeyBase64 -}}
|
||||
{{- $deployKeyValue = .Values.addons.codeserver.git.deployKeyBase64 | b64dec -}}
|
||||
{{- end -}}
|
||||
id_rsa: {{ $deployKeyValue | quote }}
|
||||
{{- end -}}
|
|
@ -1,15 +0,0 @@
|
|||
{{/*
|
||||
The volume (referencing git deploykey) to be inserted into additionalVolumes.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.codeserver.deployKeyVolumeSpec" -}}
|
||||
secret:
|
||||
{{- if .Values.addons.codeserver.git.deployKeySecret }}
|
||||
secretName: {{ .Values.addons.codeserver.git.deployKeySecret }}
|
||||
{{- else }}
|
||||
secretName: {{ include "bjw-s.common.lib.chart.names.fullname" . }}-addon-codeserver-deploykey
|
||||
{{- end }}
|
||||
defaultMode: {{ "0400" | toDecimal }}
|
||||
items:
|
||||
- key: id_rsa
|
||||
path: id_rsa
|
||||
{{- end -}}
|
|
@ -1,13 +0,0 @@
|
|||
{{/*
|
||||
Template to render netshoot addon
|
||||
It will include / inject the required templates based on the given values.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.netshoot" -}}
|
||||
{{- if .Values.addons.netshoot.enabled -}}
|
||||
{{/* Append the netshoot container to the sidecars */}}
|
||||
{{- $container := include "bjw-s.common.addon.netshoot.container" . | fromYaml -}}
|
||||
{{- if $container -}}
|
||||
{{- $_ := set .Values.sidecars "addon-netshoot" $container -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,27 +0,0 @@
|
|||
{{/*
|
||||
The netshoot sidecar container to be inserted.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.netshoot.container" -}}
|
||||
name: netshoot
|
||||
image: "{{ .Values.addons.netshoot.image.repository }}:{{ .Values.addons.netshoot.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.addons.netshoot.pullPolicy }}
|
||||
{{- with .Values.addons.netshoot.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.netshoot.env }}
|
||||
env:
|
||||
{{- range $k, $v := . }}
|
||||
- name: {{ $k }}
|
||||
value: {{ $v | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- sleep infinity
|
||||
{{- with .Values.addons.netshoot.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -1,45 +0,0 @@
|
|||
{{/*
|
||||
Template to render VPN addon
|
||||
It will include / inject the required templates based on the given values.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.vpn" -}}
|
||||
{{- if .Values.addons.vpn.enabled -}}
|
||||
{{- if eq "gluetun" .Values.addons.vpn.type -}}
|
||||
{{- include "bjw-s.common.addon.gluetun" . }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Include the configmap if not empty */}}
|
||||
{{- if or .Values.addons.vpn.scripts.up .Values.addons.vpn.scripts.down }}
|
||||
{{- $configmap := include "bjw-s.common.addon.vpn.configmap" . -}}
|
||||
{{- if $configmap -}}
|
||||
{{- $_ := set .Values.configMaps "addon-vpn" (dict "enabled" true "data" ($configmap | fromYaml)) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Include the secret if not empty */}}
|
||||
{{- if and .Values.addons.vpn.configFile (not .Values.addons.vpn.configFileSecret) }}
|
||||
{{- $secret := include "bjw-s.common.addon.vpn.secret" . -}}
|
||||
{{- if $secret -}}
|
||||
{{- $_ := set .Values.secrets "addon-vpn-config" (dict "enabled" true "stringData" ($secret | fromYaml)) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Append the vpn scripts volume to the volumes */}}
|
||||
{{- $scriptVolume := include "bjw-s.common.addon.vpn.scriptsVolumeSpec" . | fromYaml -}}
|
||||
{{- if $scriptVolume -}}
|
||||
{{- $_ := set .Values.persistence "vpnscript" (dict "enabled" true "mountPath" "-" "type" "custom" "volumeSpec" $scriptVolume) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Append the vpn config volume to the volumes */}}
|
||||
{{- $configVolume := include "bjw-s.common.addon.vpn.configVolumeSpec" . | fromYaml }}
|
||||
{{ if $configVolume -}}
|
||||
{{- $_ := set .Values.persistence "vpnconfig" (dict "enabled" true "mountPath" "-" "type" "custom" "volumeSpec" $configVolume) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Include the networkpolicy if not empty */}}
|
||||
{{- $networkpolicy := include "bjw-s.common.addon.vpn.networkpolicy" . -}}
|
||||
{{- if $networkpolicy -}}
|
||||
{{- $networkpolicy | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,14 +0,0 @@
|
|||
{{/*
|
||||
The VPN config and scripts to be included.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.vpn.configmap" -}}
|
||||
{{- with .Values.addons.vpn.scripts.up }}
|
||||
up.sh: |-
|
||||
{{- . | nindent 2}}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.addons.vpn.scripts.down }}
|
||||
down.sh: |-
|
||||
{{- . | nindent 2}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,29 +0,0 @@
|
|||
{{/*
|
||||
Blueprint for the NetworkPolicy object that can be included in the addon.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.vpn.networkpolicy" -}}
|
||||
{{- if .Values.addons.vpn.networkPolicy.enabled }}
|
||||
---
|
||||
kind: NetworkPolicy
|
||||
apiVersion: networking.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}
|
||||
{{- with (merge (.Values.addons.vpn.networkPolicy.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }}
|
||||
labels: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with (merge (.Values.addons.vpn.networkPolicy.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
annotations: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
podSelector:
|
||||
{{- with (merge .Values.addons.vpn.networkPolicy.podSelectorLabels (include "bjw-s.common.lib.metadata.selectorLabels" . | fromYaml)) }}
|
||||
matchLabels: {{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
policyTypes:
|
||||
- Egress
|
||||
egress:
|
||||
{{- with .Values.addons.vpn.networkPolicy.egress }}
|
||||
{{- . | toYaml | nindent 4 }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,9 +0,0 @@
|
|||
{{/*
|
||||
The OpenVPN config secret to be included.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.vpn.secret" -}}
|
||||
{{- if and .Values.addons.vpn.configFile (not .Values.addons.vpn.configFileSecret) -}}
|
||||
vpnConfigfile: |-
|
||||
{{- .Values.addons.vpn.configFile | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,37 +0,0 @@
|
|||
{{/*
|
||||
The volume (referencing VPN scripts) to be inserted into additionalVolumes.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.vpn.scriptsVolumeSpec" -}}
|
||||
{{- if or .Values.addons.vpn.scripts.up .Values.addons.vpn.scripts.down -}}
|
||||
configMap:
|
||||
name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}-addon-vpn
|
||||
items:
|
||||
{{- if .Values.addons.vpn.scripts.up }}
|
||||
- key: up.sh
|
||||
path: up.sh
|
||||
mode: 0777
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.down }}
|
||||
- key: down.sh
|
||||
path: down.sh
|
||||
mode: 0777
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
The volume (referencing VPN config) to be inserted into additionalVolumes.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.vpn.configVolumeSpec" -}}
|
||||
{{- if or .Values.addons.vpn.configFile .Values.addons.vpn.configFileSecret -}}
|
||||
secret:
|
||||
{{- if .Values.addons.vpn.configFileSecret }}
|
||||
secretName: {{ .Values.addons.vpn.configFileSecret }}
|
||||
{{- else }}
|
||||
secretName: {{ include "bjw-s.common.lib.chart.names.fullname" . }}-addon-vpn-config
|
||||
{{- end }}
|
||||
items:
|
||||
- key: vpnConfigfile
|
||||
path: vpnConfigfile
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,11 +0,0 @@
|
|||
{{/*
|
||||
Template to render gluetun addon. It will add the container to the list of additionalContainers.
|
||||
*/}}
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.gluetun" -}}
|
||||
{{/* Append the gluetun container to the sidecars */}}
|
||||
{{- $container := fromYaml (include "bjw-s.common.addon.gluetun.container" .) -}}
|
||||
{{- if $container -}}
|
||||
{{- $_ := set .Values.sidecars "addon-gluetun" $container -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,57 +0,0 @@
|
|||
{{/*
|
||||
The gluetun sidecar container to be inserted.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.addon.gluetun.container" -}}
|
||||
name: gluetun
|
||||
image: "{{ .Values.addons.vpn.gluetun.image.repository }}:{{ .Values.addons.vpn.gluetun.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.addons.vpn.gluetun.pullPolicy }}
|
||||
{{- with .Values.addons.vpn.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.env }}
|
||||
env:
|
||||
{{- . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.args }}
|
||||
args:
|
||||
{{- . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- if or .Values.addons.vpn.configFile .Values.addons.vpn.configFileSecret .Values.addons.vpn.scripts.up .Values.addons.vpn.scripts.down .Values.addons.vpn.additionalVolumeMounts .Values.persistence.shared.enabled }}
|
||||
volumeMounts:
|
||||
{{- if or .Values.addons.vpn.configFile .Values.addons.vpn.configFileSecret }}
|
||||
- name: vpnconfig
|
||||
mountPath: /gluetun/config.conf
|
||||
subPath: vpnConfigfile
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.up }}
|
||||
- name: vpnscript
|
||||
mountPath: /gluetun/scripts/up.sh
|
||||
subPath: up.sh
|
||||
{{- end }}
|
||||
{{- if .Values.addons.vpn.scripts.down }}
|
||||
- name: vpnscript
|
||||
mountPath: /gluetun/scripts/down.sh
|
||||
subPath: down.sh
|
||||
{{- end }}
|
||||
{{- if .Values.persistence.shared.enabled }}
|
||||
- mountPath: {{ .Values.persistence.shared.mountPath }}
|
||||
name: shared
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.additionalVolumeMounts }}
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.addons.vpn.livenessProbe }}
|
||||
livenessProbe:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with .Values.addons.vpn.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -2,33 +2,31 @@
|
|||
This template serves as a blueprint for all configMap objects that are created
|
||||
within the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.configmap" -}}
|
||||
{{- $fullName := include "bjw-s.common.lib.chart.names.fullname" . -}}
|
||||
{{- $configMapName := $fullName -}}
|
||||
{{- $values := .Values.configmap -}}
|
||||
{{- define "bjw-s.common.class.configMap" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $configMapObject := .object -}}
|
||||
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.configmap -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
||||
{{- $configMapName = printf "%v-%v" $configMapName $values.nameOverride -}}
|
||||
{{- end }}
|
||||
{{- $labels := merge
|
||||
($configMapObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($configMapObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ $configMapName }}
|
||||
{{- with (merge ($values.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }}
|
||||
labels: {{- toYaml . | nindent 4 }}
|
||||
name: {{ $configMapObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with (merge ($values.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
annotations: {{- toYaml . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
data:
|
||||
{{- with $values.data }}
|
||||
{{- tpl (toYaml .) $ | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with $configMapObject.data }}
|
||||
{{- tpl (toYaml .) $rootContext | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
|
|
@ -3,45 +3,48 @@ This template serves as a blueprint for Cronjob objects that are created
|
|||
using the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.cronjob" -}}
|
||||
{{- $restartPolicy := default "Never" .Values.controller.restartPolicy -}}
|
||||
{{- if and (ne $restartPolicy "Never") (ne $restartPolicy "OnFailure") -}}
|
||||
{{- fail (printf "Not a valid restartPolicy for CronJob (%s)" $restartPolicy) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set .Values.controller "restartPolicy" $restartPolicy -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $cronjobObject := .object -}}
|
||||
|
||||
{{- $labels := merge
|
||||
(dict "app.kubernetes.io/component" $cronjobObject.identifier)
|
||||
($cronjobObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($cronjobObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: CronJob
|
||||
metadata:
|
||||
name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}
|
||||
{{- with include "bjw-s.common.lib.controller.metadata.labels" . }}
|
||||
labels: {{- . | nindent 4 }}
|
||||
name: {{ $cronjobObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with include "bjw-s.common.lib.controller.metadata.annotations" . }}
|
||||
annotations: {{- . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
concurrencyPolicy: "{{ .Values.controller.cronjob.concurrencyPolicy }}"
|
||||
startingDeadlineSeconds: {{ .Values.controller.cronjob.startingDeadlineSeconds }}
|
||||
schedule: "{{ .Values.controller.cronjob.schedule }}"
|
||||
successfulJobsHistoryLimit: {{ .Values.controller.cronjob.successfulJobsHistory }}
|
||||
failedJobsHistoryLimit: {{ .Values.controller.cronjob.failedJobsHistory }}
|
||||
concurrencyPolicy: "{{ $cronjobObject.cronjob.concurrencyPolicy }}"
|
||||
startingDeadlineSeconds: {{ $cronjobObject.cronjob.startingDeadlineSeconds }}
|
||||
schedule: "{{ $cronjobObject.cronjob.schedule }}"
|
||||
successfulJobsHistoryLimit: {{ $cronjobObject.cronjob.successfulJobsHistory }}
|
||||
failedJobsHistoryLimit: {{ $cronjobObject.cronjob.failedJobsHistory }}
|
||||
jobTemplate:
|
||||
spec:
|
||||
{{- with .Values.controller.cronjob.ttlSecondsAfterFinished }}
|
||||
{{- with $cronjobObject.cronjob.ttlSecondsAfterFinished }}
|
||||
ttlSecondsAfterFinished: {{ . }}
|
||||
{{- end }}
|
||||
backoffLimit: {{ .Values.controller.cronjob.backoffLimit }}
|
||||
backoffLimit: {{ $cronjobObject.cronjob.backoffLimit }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with include ("bjw-s.common.lib.metadata.podAnnotations") . }}
|
||||
annotations:
|
||||
{{- . | nindent 12 }}
|
||||
{{- with (include "bjw-s.common.lib.pod.metadata.annotations" (dict "rootContext" $rootContext "controllerObject" $cronjobObject)) }}
|
||||
annotations: {{ . | nindent 12 }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.pod.metadata.labels" (dict "rootContext" $rootContext "controllerObject" $cronjobObject)) }}
|
||||
labels: {{ . | nindent 12 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 12 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- include "bjw-s.common.lib.controller.pod" . | nindent 10 }}
|
||||
spec: {{ include "bjw-s.common.lib.pod.spec" (dict "rootContext" $rootContext "controllerObject" $cronjobObject) | nindent 10 }}
|
||||
{{- end -}}
|
||||
|
|
|
@ -3,33 +3,38 @@ This template serves as the blueprint for the DaemonSet objects that are created
|
|||
within the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.daemonset" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $daemonsetObject := .object -}}
|
||||
|
||||
{{- $labels := merge
|
||||
(dict "app.kubernetes.io/component" $daemonsetObject.identifier)
|
||||
($daemonsetObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($daemonsetObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
metadata:
|
||||
name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}
|
||||
{{- with include "bjw-s.common.lib.controller.metadata.labels" . }}
|
||||
labels: {{- . | nindent 4 }}
|
||||
name: {{ $daemonsetObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with include "bjw-s.common.lib.controller.metadata.annotations" . }}
|
||||
annotations: {{- . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
revisionHistoryLimit: {{ .Values.controller.revisionHistoryLimit }}
|
||||
revisionHistoryLimit: {{ $daemonsetObject.revisionHistoryLimit }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: {{ $daemonsetObject.identifier }}
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" $rootContext | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with include ("bjw-s.common.lib.metadata.podAnnotations") . }}
|
||||
annotations:
|
||||
{{- . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- include "bjw-s.common.lib.controller.pod" . | nindent 6 }}
|
||||
annotations: {{ include "bjw-s.common.lib.pod.metadata.annotations" (dict "rootContext" $rootContext "controllerObject" $daemonsetObject) | nindent 8 }}
|
||||
labels: {{ include "bjw-s.common.lib.pod.metadata.labels" (dict "rootContext" $rootContext "controllerObject" $daemonsetObject) | nindent 8 }}
|
||||
spec: {{ include "bjw-s.common.lib.pod.spec" (dict "rootContext" $rootContext "controllerObject" $daemonsetObject) | nindent 6 }}
|
||||
{{- end }}
|
||||
|
|
|
@ -3,30 +3,38 @@ This template serves as a blueprint for Deployment objects that are created
|
|||
using the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.deployment" -}}
|
||||
{{- $strategy := default "Recreate" .Values.controller.strategy -}}
|
||||
{{- if and (ne $strategy "Recreate") (ne $strategy "RollingUpdate") -}}
|
||||
{{- fail (printf "Not a valid strategy type for Deployment (%s)" $strategy) -}}
|
||||
{{- end -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $deploymentObject := .object -}}
|
||||
|
||||
{{- $labels := merge
|
||||
(dict "app.kubernetes.io/component" $deploymentObject.identifier)
|
||||
($deploymentObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($deploymentObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}
|
||||
{{- with include "bjw-s.common.lib.controller.metadata.labels" . }}
|
||||
labels: {{- . | nindent 4 }}
|
||||
name: {{ $deploymentObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with include "bjw-s.common.lib.controller.metadata.annotations" . }}
|
||||
annotations: {{- . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
revisionHistoryLimit: {{ .Values.controller.revisionHistoryLimit }}
|
||||
{{- if not (eq .Values.controller.replicas nil) }}
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
revisionHistoryLimit: {{ $deploymentObject.revisionHistoryLimit }}
|
||||
{{- if not (eq $deploymentObject.replicas nil) }}
|
||||
replicas: {{ $deploymentObject.replicas }}
|
||||
{{- end }}
|
||||
strategy:
|
||||
type: {{ $strategy }}
|
||||
{{- with .Values.controller.rollingUpdate }}
|
||||
{{- if and (eq $strategy "RollingUpdate") (or .surge .unavailable) }}
|
||||
type: {{ $deploymentObject.strategy }}
|
||||
{{- with $deploymentObject.rollingUpdate }}
|
||||
{{- if and (eq $deploymentObject.strategy "RollingUpdate") (or .surge .unavailable) }}
|
||||
rollingUpdate:
|
||||
{{- with .unavailable }}
|
||||
maxUnavailable: {{ . }}
|
||||
|
@ -38,18 +46,15 @@ spec:
|
|||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/component: {{ $deploymentObject.identifier }}
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" $rootContext | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with include ("bjw-s.common.lib.metadata.podAnnotations") . }}
|
||||
annotations:
|
||||
{{- . | nindent 8 }}
|
||||
{{- with (include "bjw-s.common.lib.pod.metadata.annotations" (dict "rootContext" $rootContext "controllerObject" $deploymentObject)) }}
|
||||
annotations: {{ . | nindent 8 }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.pod.metadata.labels" (dict "rootContext" $rootContext "controllerObject" $deploymentObject)) }}
|
||||
labels: {{ . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- include "bjw-s.common.lib.controller.pod" . | nindent 6 }}
|
||||
spec: {{ include "bjw-s.common.lib.pod.spec" (dict "rootContext" $rootContext "controllerObject" $deploymentObject) | nindent 6 }}
|
||||
{{- end -}}
|
||||
|
|
|
@ -2,74 +2,65 @@
|
|||
This template serves as a blueprint for all Ingress objects that are created
|
||||
within the common library.
|
||||
*/}}
|
||||
|
||||
{{- define "bjw-s.common.class.ingress" -}}
|
||||
{{- $fullName := include "bjw-s.common.lib.chart.names.fullname" . -}}
|
||||
{{- $ingressName := $fullName -}}
|
||||
{{- $values := .Values.ingress -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $ingressObject := .object -}}
|
||||
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.ingress -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
||||
{{- $ingressName = printf "%v-%v" $ingressName $values.nameOverride -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $primaryService := get .Values.service (include "bjw-s.common.lib.service.primary" .) -}}
|
||||
{{- $defaultServiceName := $fullName -}}
|
||||
{{- if and (hasKey $primaryService "nameOverride") $primaryService.nameOverride -}}
|
||||
{{- $defaultServiceName = printf "%v-%v" $defaultServiceName $primaryService.nameOverride -}}
|
||||
{{- end -}}
|
||||
{{- $defaultServicePort := get $primaryService.ports (include "bjw-s.common.lib.service.primaryPort" (dict "values" $primaryService)) -}}
|
||||
{{- $labels := merge
|
||||
($ingressObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($ingressObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $ingressName }}
|
||||
{{- with (merge ($values.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }}
|
||||
labels: {{- toYaml . | nindent 4 }}
|
||||
name: {{ $ingressObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with (merge ($values.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
annotations: {{- toYaml . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if $values.ingressClassName }}
|
||||
ingressClassName: {{ $values.ingressClassName }}
|
||||
{{- if $ingressObject.className }}
|
||||
ingressClassName: {{ $ingressObject.className }}
|
||||
{{- end }}
|
||||
{{- if $values.tls }}
|
||||
{{- if $ingressObject.tls }}
|
||||
tls:
|
||||
{{- range $values.tls }}
|
||||
{{- range $ingressObject.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ tpl . $ | quote }}
|
||||
- {{ tpl . $rootContext | quote }}
|
||||
{{- end }}
|
||||
{{- $secretName := tpl (default "" .secretName) $ }}
|
||||
{{- $secretName := tpl (default "" .secretName) $rootContext }}
|
||||
{{- if $secretName }}
|
||||
secretName: {{ $secretName | quote}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range $values.hosts }}
|
||||
- host: {{ tpl .host $ | quote }}
|
||||
{{- range $ingressObject.hosts }}
|
||||
- host: {{ tpl .host $rootContext | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
{{- $service := $defaultServiceName -}}
|
||||
{{- $port := $defaultServicePort.port -}}
|
||||
{{- if .service -}}
|
||||
{{- $service = default $service .service.name -}}
|
||||
{{- $port = default $port .service.port -}}
|
||||
{{- end }}
|
||||
- path: {{ tpl .path $ | quote }}
|
||||
- path: {{ tpl .path $rootContext | quote }}
|
||||
pathType: {{ default "Prefix" .pathType }}
|
||||
backend:
|
||||
service:
|
||||
name: {{ $service }}
|
||||
{{ $service := include "bjw-s.common.lib.service.getByIdentifier" (dict "rootContext" $rootContext "id" .service.name) | fromYaml -}}
|
||||
{{ $servicePrimaryPort := dict -}}
|
||||
{{ if $service -}}
|
||||
{{ $servicePrimaryPort = include "bjw-s.common.lib.service.primaryPort" (dict "rootContext" $rootContext "serviceObject" $service) | fromYaml -}}
|
||||
{{ end -}}
|
||||
name: {{ default .service.name $service.name }}
|
||||
port:
|
||||
number: {{ $port }}
|
||||
number: {{ default .service.port $servicePrimaryPort.port }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
|
@ -3,43 +3,45 @@ This template serves as a blueprint for all PersistentVolumeClaim objects that a
|
|||
within the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.pvc" -}}
|
||||
{{- $values := .Values.persistence -}}
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.persistence -}}
|
||||
{{- $values = . -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $pvcObject := .object -}}
|
||||
|
||||
{{- $labels := merge
|
||||
($pvcObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($pvcObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- if $pvcObject.retain }}
|
||||
{{- $annotations = merge
|
||||
(dict "helm.sh/resource-policy" "keep")
|
||||
$annotations
|
||||
-}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
{{- $pvcName := include "bjw-s.common.lib.chart.names.fullname" . -}}
|
||||
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
||||
{{- if not (eq $values.nameOverride "-") -}}
|
||||
{{- $pvcName = printf "%v-%v" $pvcName $values.nameOverride -}}
|
||||
{{ end -}}
|
||||
{{ end }}
|
||||
|
||||
---
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ $pvcName }}
|
||||
{{- with (merge ($values.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }}
|
||||
labels: {{- toYaml . | nindent 4 }}
|
||||
name: {{ $pvcObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- if $values.retain }}
|
||||
"helm.sh/resource-policy": keep
|
||||
{{- end }}
|
||||
{{- with (merge ($values.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ required (printf "accessMode is required for PVC %v" $pvcName) $values.accessMode | quote }}
|
||||
- {{ required (printf "accessMode is required for PVC %v" $pvcObject.name) $pvcObject.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ required (printf "size is required for PVC %v" $pvcName) $values.size | quote }}
|
||||
{{- if $values.storageClass }}
|
||||
storageClassName: {{ if (eq "-" $values.storageClass) }}""{{- else }}{{ $values.storageClass | quote }}{{- end }}
|
||||
storage: {{ required (printf "size is required for PVC %v" $pvcObject.name) $pvcObject.size | quote }}
|
||||
{{- if $pvcObject.storageClass }}
|
||||
storageClassName: {{ if (eq "-" $pvcObject.storageClass) }}""{{- else }}{{ $pvcObject.storageClass | quote }}{{- end }}
|
||||
{{- end }}
|
||||
{{- if $values.volumeName }}
|
||||
volumeName: {{ $values.volumeName | quote }}
|
||||
{{- if $pvcObject.volumeName }}
|
||||
volumeName: {{ $pvcObject.volumeName | quote }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
|
|
@ -3,24 +3,18 @@ This template serves as a blueprint for all Route objects that are created
|
|||
within the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.route" -}}
|
||||
{{- $values := .Values.route -}}
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.route -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $routeObject := .object -}}
|
||||
|
||||
{{- $fullName := include "bjw-s.common.lib.chart.names.fullname" . -}}
|
||||
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
||||
{{- $fullName = printf "%v-%v" $fullName $values.nameOverride -}}
|
||||
{{ end -}}
|
||||
{{- $routeKind := $values.kind | default "HTTPRoute" -}}
|
||||
{{- $primaryService := get .Values.service (include "bjw-s.common.lib.service.primary" .) -}}
|
||||
{{- $defaultServiceName := $fullName -}}
|
||||
{{- if and (hasKey $primaryService "nameOverride") $primaryService.nameOverride -}}
|
||||
{{- $defaultServiceName = printf "%v-%v" $defaultServiceName $primaryService.nameOverride -}}
|
||||
{{- end -}}
|
||||
{{- $defaultServicePort := get $primaryService.ports (include "bjw-s.common.lib.service.primaryPort" (dict "values" $primaryService)) -}}
|
||||
{{- $routeKind := $routeObject.kind | default "HTTPRoute" -}}
|
||||
{{- $labels := merge
|
||||
($routeObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($routeObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: gateway.networking.k8s.io/v1alpha2
|
||||
{{- if and (ne $routeKind "GRPCRoute") (ne $routeKind "HTTPRoute") (ne $routeKind "TCPRoute") (ne $routeKind "TLSRoute") (ne $routeKind "UDPRoute") }}
|
||||
|
@ -28,39 +22,44 @@ apiVersion: gateway.networking.k8s.io/v1alpha2
|
|||
{{- end }}
|
||||
kind: {{ $routeKind }}
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
{{- with (merge ($values.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }}
|
||||
labels: {{- toYaml . | nindent 4 }}
|
||||
name: {{ $routeObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with (merge ($values.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
annotations: {{- toYaml . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
parentRefs:
|
||||
{{- range $values.parentRefs }}
|
||||
{{- range $routeObject.parentRefs }}
|
||||
- group: {{ default "gateway.networking.k8s.io" .group }}
|
||||
kind: {{ default "Gateway" .kind }}
|
||||
name: {{ required (printf "parentRef name is required for %v %v" $routeKind $fullName) .name }}
|
||||
namespace: {{ required (printf "parentRef namespace is required for %v %v" $routeKind $fullName) .namespace }}
|
||||
name: {{ required (printf "parentRef name is required for %v %v" $routeKind $routeObject.name) .name }}
|
||||
namespace: {{ required (printf "parentRef namespace is required for %v %v" $routeKind $routeObject.name) .namespace }}
|
||||
{{- if .sectionName }}
|
||||
sectionName: {{ .sectionName | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if and (ne $routeKind "TCPRoute") (ne $routeKind "UDPRoute") $values.hostnames }}
|
||||
{{- if and (ne $routeKind "TCPRoute") (ne $routeKind "UDPRoute") $routeObject.hostnames }}
|
||||
hostnames:
|
||||
{{- with $values.hostnames }}
|
||||
{{- with $routeObject.hostnames }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range $values.rules }}
|
||||
{{- range $routeObject.rules }}
|
||||
- backendRefs:
|
||||
{{- range .backendRefs }}
|
||||
{{ $service := include "bjw-s.common.lib.service.getByIdentifier" (dict "rootContext" $rootContext "id" .name) | fromYaml -}}
|
||||
{{ $servicePrimaryPort := dict -}}
|
||||
{{ if $service -}}
|
||||
{{ $servicePrimaryPort = include "bjw-s.common.lib.service.primaryPort" (dict "rootContext" $rootContext "serviceObject" $service) | fromYaml -}}
|
||||
{{- end }}
|
||||
- group: {{ default "" .group | quote}}
|
||||
kind: {{ default "Service" .kind }}
|
||||
name: {{ default $defaultServiceName .name }}
|
||||
namespace: {{ default $.Release.Namespace .namespace }}
|
||||
port: {{ default $defaultServicePort.port .port }}
|
||||
name: {{ default .name $service.name }}
|
||||
namespace: {{ default $rootContext.Release.Namespace .namespace }}
|
||||
port: {{ default .port $servicePrimaryPort.port }}
|
||||
weight: {{ default 1 .weight }}
|
||||
{{- end }}
|
||||
{{- if (eq $routeKind "HTTPRoute") }}
|
||||
|
|
|
@ -3,35 +3,37 @@ This template serves as a blueprint for all Secret objects that are created
|
|||
within the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.secret" -}}
|
||||
{{- $fullName := include "bjw-s.common.lib.chart.names.fullname" . -}}
|
||||
{{- $secretName := $fullName -}}
|
||||
{{- $values := .Values.configmap -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $secretObject := .object -}}
|
||||
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.secret -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
{{- $labels := merge
|
||||
($secretObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($secretObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
|
||||
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
||||
{{- $secretName = printf "%v-%v" $secretName $values.nameOverride -}}
|
||||
{{- end }}
|
||||
{{- $stringData := "" -}}
|
||||
{{- with $secretObject.stringData -}}
|
||||
{{- $stringData = (toYaml $secretObject.stringData) | trim -}}
|
||||
{{- end -}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
{{- with $values.type }}
|
||||
{{- with $secretObject.type }}
|
||||
type: {{ . }}
|
||||
{{- end }}
|
||||
metadata:
|
||||
name: {{ $secretName }}
|
||||
{{- with (merge ($values.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }}
|
||||
labels: {{- toYaml . | nindent 4 }}
|
||||
name: {{ $secretObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with (merge ($values.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
annotations: {{- toYaml . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with $values.stringData }}
|
||||
stringData:
|
||||
{{- tpl (toYaml .) $ | nindent 2 }}
|
||||
{{- with $stringData }}
|
||||
stringData: {{- tpl $stringData $rootContext | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
|
|
@ -3,83 +3,80 @@ This template serves as a blueprint for all Service objects that are created
|
|||
within the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.service" -}}
|
||||
{{- $values := .Values.service -}}
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.service -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $serviceObject := .object -}}
|
||||
|
||||
{{- $serviceName := include "bjw-s.common.lib.chart.names.fullname" . -}}
|
||||
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
||||
{{- $serviceName = printf "%v-%v" $serviceName $values.nameOverride -}}
|
||||
{{ end -}}
|
||||
{{- $svcType := $values.type | default "" -}}
|
||||
{{- $enabledPorts := include "bjw-s.common.lib.service.enabledPorts" (dict "serviceName" $serviceName "values" $values) | fromYaml }}
|
||||
{{- $primaryPort := get $values.ports (include "bjw-s.common.lib.service.primaryPort" (dict "values" $values)) }}
|
||||
{{- $svcType := $serviceObject.type | default "" -}}
|
||||
{{- $enabledPorts := include "bjw-s.common.lib.service.enabledPorts" (dict "rootContext" $rootContext "serviceObject" $serviceObject) | fromYaml }}
|
||||
{{- $labels := merge
|
||||
(dict "app.kubernetes.io/service" $serviceObject.name)
|
||||
($serviceObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($serviceObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ $serviceName }}
|
||||
labels:
|
||||
app.kubernetes.io/service: {{ $serviceName }}
|
||||
{{- with (merge ($values.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- if eq ( $primaryPort.protocol | default "" ) "HTTPS" }}
|
||||
traefik.ingress.kubernetes.io/service.serversscheme: https
|
||||
name: {{ $serviceObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with (merge ($values.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if (or (eq $svcType "ClusterIP") (empty $svcType)) }}
|
||||
type: ClusterIP
|
||||
{{- if $values.clusterIP }}
|
||||
clusterIP: {{ $values.clusterIP }}
|
||||
{{- if $serviceObject.clusterIP }}
|
||||
clusterIP: {{ $serviceObject.clusterIP }}
|
||||
{{end}}
|
||||
{{- else if eq $svcType "LoadBalancer" }}
|
||||
type: {{ $svcType }}
|
||||
{{- if $values.loadBalancerIP }}
|
||||
loadBalancerIP: {{ $values.loadBalancerIP }}
|
||||
{{- if $serviceObject.loadBalancerIP }}
|
||||
loadBalancerIP: {{ $serviceObject.loadBalancerIP }}
|
||||
{{- end }}
|
||||
{{- if $values.loadBalancerSourceRanges }}
|
||||
{{- if $serviceObject.loadBalancerSourceRanges }}
|
||||
loadBalancerSourceRanges:
|
||||
{{ toYaml $values.loadBalancerSourceRanges | nindent 4 }}
|
||||
{{ toYaml $serviceObject.loadBalancerSourceRanges | nindent 4 }}
|
||||
{{- end -}}
|
||||
{{- else }}
|
||||
type: {{ $svcType }}
|
||||
{{- end }}
|
||||
{{- if $values.externalTrafficPolicy }}
|
||||
externalTrafficPolicy: {{ $values.externalTrafficPolicy }}
|
||||
{{- if $serviceObject.externalTrafficPolicy }}
|
||||
externalTrafficPolicy: {{ $serviceObject.externalTrafficPolicy }}
|
||||
{{- end }}
|
||||
{{- if $values.sessionAffinity }}
|
||||
sessionAffinity: {{ $values.sessionAffinity }}
|
||||
{{- if $values.sessionAffinityConfig }}
|
||||
{{- if hasKey $serviceObject "allocateLoadBalancerNodePorts" }}
|
||||
allocateLoadBalancerNodePorts: {{ $serviceObject.allocateLoadBalancerNodePorts }}
|
||||
{{- end }}
|
||||
{{- if $serviceObject.sessionAffinity }}
|
||||
sessionAffinity: {{ $serviceObject.sessionAffinity }}
|
||||
{{- if $serviceObject.sessionAffinityConfig }}
|
||||
sessionAffinityConfig:
|
||||
{{ toYaml $values.sessionAffinityConfig | nindent 4 }}
|
||||
{{ toYaml $serviceObject.sessionAffinityConfig | nindent 4 }}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
{{- with $values.externalIPs }}
|
||||
{{- with $serviceObject.externalIPs }}
|
||||
externalIPs:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if $values.publishNotReadyAddresses }}
|
||||
publishNotReadyAddresses: {{ $values.publishNotReadyAddresses }}
|
||||
{{- if $serviceObject.publishNotReadyAddresses }}
|
||||
publishNotReadyAddresses: {{ $serviceObject.publishNotReadyAddresses }}
|
||||
{{- end }}
|
||||
{{- if $values.ipFamilyPolicy }}
|
||||
ipFamilyPolicy: {{ $values.ipFamilyPolicy }}
|
||||
{{- if $serviceObject.ipFamilyPolicy }}
|
||||
ipFamilyPolicy: {{ $serviceObject.ipFamilyPolicy }}
|
||||
{{- end }}
|
||||
{{- with $values.ipFamilies }}
|
||||
{{- with $serviceObject.ipFamilies }}
|
||||
ipFamilies:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
{{- range $name, $port := $enabledPorts }}
|
||||
- port: {{ $port.port }}
|
||||
targetPort: {{ $port.targetPort | default $name }}
|
||||
targetPort: {{ $port.targetPort | default $port.port }}
|
||||
{{- if $port.protocol }}
|
||||
{{- if or ( eq $port.protocol "HTTP" ) ( eq $port.protocol "HTTPS" ) ( eq $port.protocol "TCP" ) }}
|
||||
protocol: TCP
|
||||
|
@ -94,7 +91,11 @@ spec:
|
|||
nodePort: {{ $port.nodePort }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
{{- with (merge ($values.extraSelectorLabels | default dict) (include "bjw-s.common.lib.metadata.selectorLabels" . | fromYaml)) }}
|
||||
{{- with (merge
|
||||
($serviceObject.extraSelectorLabels | default dict)
|
||||
(dict "app.kubernetes.io/component" $serviceObject.controller)
|
||||
(include "bjw-s.common.lib.metadata.selectorLabels" $rootContext | fromYaml)
|
||||
) }}
|
||||
selector: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
|
@ -3,17 +3,28 @@ This template serves as a blueprint for ServiceAccount objects that are created
|
|||
using the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.serviceAccount" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $serviceAccountObject := .object -}}
|
||||
|
||||
{{- $labels := merge
|
||||
($serviceAccountObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($serviceAccountObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "bjw-s.common.lib.chart.names.serviceAccountName" . }}
|
||||
{{- with include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml }}
|
||||
labels: {{- toYaml . | nindent 4 }}
|
||||
name: {{ $serviceAccountObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with (merge (.Values.serviceAccount.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
annotations: {{- toYaml . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
secrets:
|
||||
- name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}-sa-token
|
||||
- name: {{ include "bjw-s.common.lib.chart.names.fullname" $rootContext }}-sa-token
|
||||
{{- end -}}
|
||||
|
|
|
@ -1,34 +1,33 @@
|
|||
{{- define "bjw-s.common.class.serviceMonitor" -}}
|
||||
{{- $values := dict -}}
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.serviceMonitor -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- $serviceMonitorName := include "bjw-s.common.lib.chart.names.fullname" . -}}
|
||||
{{- if and (hasKey $values "nameOverride") $values.nameOverride -}}
|
||||
{{- $serviceMonitorName = printf "%v-%v" $serviceMonitorName $values.nameOverride -}}
|
||||
{{ end -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $serviceMonitorObject := .object -}}
|
||||
{{- $labels := merge
|
||||
($serviceMonitorObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($serviceMonitorObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ $serviceMonitorName }}
|
||||
{{- with (merge ($values.labels | default dict) (include "bjw-s.common.lib.metadata.allLabels" $ | fromYaml)) }}
|
||||
labels: {{- toYaml . | nindent 4 }}
|
||||
name: {{ $serviceMonitorObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with (merge ($values.annotations | default dict) (include "bjw-s.common.lib.metadata.globalAnnotations" $ | fromYaml)) }}
|
||||
annotations: {{- toYaml . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
{{- if $values.selector -}}
|
||||
{{- tpl ($values.selector | toYaml) $ | nindent 4}}
|
||||
{{- if $serviceMonitorObject.selector -}}
|
||||
{{- tpl ($serviceMonitorObject.selector | toYaml) $rootContext | nindent 4}}
|
||||
{{- else }}
|
||||
matchLabels:
|
||||
app.kubernetes.io/service: {{ tpl $values.serviceName $ }}
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 6 }}
|
||||
app.kubernetes.io/service: {{ tpl $serviceMonitorObject.serviceName $rootContext }}
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" $rootContext | nindent 6 }}
|
||||
{{- end }}
|
||||
endpoints: {{- toYaml (required (printf "endpoints are required for serviceMonitor %v" $serviceMonitorName) $values.endpoints) | nindent 4 }}
|
||||
endpoints: {{- toYaml $serviceMonitorObject.endpoints | nindent 4 }}
|
||||
{{- end }}
|
||||
|
|
|
@ -3,66 +3,54 @@ This template serves as the blueprint for the StatefulSet objects that are creat
|
|||
within the common library.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.class.statefulset" -}}
|
||||
{{- $strategy := default "RollingUpdate" .Values.controller.strategy -}}
|
||||
{{- if and (ne $strategy "OnDelete") (ne $strategy "RollingUpdate") -}}
|
||||
{{- fail (printf "Not a valid strategy type for StatefulSet (%s)" $strategy) -}}
|
||||
{{- end -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $statefulsetObject := .object -}}
|
||||
|
||||
{{- $labels := merge
|
||||
(dict "app.kubernetes.io/component" $statefulsetObject.identifier)
|
||||
($statefulsetObject.labels | default dict)
|
||||
(include "bjw-s.common.lib.metadata.allLabels" $rootContext | fromYaml)
|
||||
-}}
|
||||
{{- $annotations := merge
|
||||
($statefulsetObject.annotations | default dict)
|
||||
(include "bjw-s.common.lib.metadata.globalAnnotations" $rootContext | fromYaml)
|
||||
-}}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}
|
||||
{{- with include "bjw-s.common.lib.controller.metadata.labels" . }}
|
||||
labels: {{- . | nindent 4 }}
|
||||
name: {{ $statefulsetObject.name }}
|
||||
{{- with $labels }}
|
||||
labels: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with include "bjw-s.common.lib.controller.metadata.annotations" . }}
|
||||
annotations: {{- . | nindent 4 }}
|
||||
{{- with $annotations }}
|
||||
annotations: {{- toYaml . | nindent 4 -}}
|
||||
{{- end }}
|
||||
spec:
|
||||
revisionHistoryLimit: {{ .Values.controller.revisionHistoryLimit }}
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
podManagementPolicy: {{ default "OrderedReady" .Values.controller.podManagementPolicy }}
|
||||
revisionHistoryLimit: {{ $statefulsetObject.revisionHistoryLimit }}
|
||||
replicas: {{ $statefulsetObject.replicas }}
|
||||
podManagementPolicy: {{ default "OrderedReady" $statefulsetObject.statefulset.podManagementPolicy }}
|
||||
updateStrategy:
|
||||
type: {{ $strategy }}
|
||||
{{- if and (eq $strategy "RollingUpdate") .Values.controller.rollingUpdate.partition }}
|
||||
type: {{ $statefulsetObject.strategy }}
|
||||
{{- if and (eq $statefulsetObject.strategy "RollingUpdate") $statefulsetObject.rollingUpdate.partition }}
|
||||
rollingUpdate:
|
||||
partition: {{ .Values.controller.rollingUpdate.partition }}
|
||||
partition: {{ $statefulsetObject.rollingUpdate.partition }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 6 }}
|
||||
serviceName: {{ include "bjw-s.common.lib.chart.names.fullname" . }}
|
||||
app.kubernetes.io/component: {{ $statefulsetObject.identifier }}
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" $rootContext | nindent 6 }}
|
||||
serviceName: {{ include "bjw-s.common.lib.chart.names.fullname" $rootContext }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with include ("bjw-s.common.lib.metadata.podAnnotations") . }}
|
||||
annotations:
|
||||
{{- . | nindent 8 }}
|
||||
{{- with (include "bjw-s.common.lib.pod.metadata.annotations" (dict "rootContext" $rootContext "controllerObject" $statefulsetObject)) }}
|
||||
annotations: {{ . | nindent 8 }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.pod.metadata.labels" (dict "rootContext" $rootContext "controllerObject" $statefulsetObject)) }}
|
||||
labels: {{ . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- include "bjw-s.common.lib.controller.pod" . | nindent 6 }}
|
||||
volumeClaimTemplates:
|
||||
{{- range $index, $volumeClaimTemplate := .Values.volumeClaimTemplates }}
|
||||
- metadata:
|
||||
name: {{ $volumeClaimTemplate.name }}
|
||||
{{- with ($volumeClaimTemplate.labels | default dict) }}
|
||||
labels: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with ($volumeClaimTemplate.annotations | default dict) }}
|
||||
annotations: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ required (printf "accessMode is required for volumeClaimTemplate %v" $volumeClaimTemplate.name) $volumeClaimTemplate.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ required (printf "size is required for PVC %v" $volumeClaimTemplate.name) $volumeClaimTemplate.size | quote }}
|
||||
{{- if $volumeClaimTemplate.storageClass }}
|
||||
storageClassName: {{ if (eq "-" $volumeClaimTemplate.storageClass) }}""{{- else }}{{ $volumeClaimTemplate.storageClass | quote }}{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec: {{ include "bjw-s.common.lib.pod.spec" (dict "rootContext" $rootContext "controllerObject" $statefulsetObject) | nindent 6 }}
|
||||
{{- with (include "bjw-s.common.lib.statefulset.volumeclaimtemplates" (dict "rootContext" $rootContext "statefulsetObject" $statefulsetObject)) }}
|
||||
volumeClaimTemplates: {{ . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
{{/* Expand the name of the chart */}}
|
||||
{{- define "bjw-s.common.lib.chart.names.name" -}}
|
||||
{{- $globalNameOverride := "" -}}
|
||||
{{- if hasKey .Values "global" -}}
|
||||
{{- $globalNameOverride = (default $globalNameOverride .Values.global.nameOverride) -}}
|
||||
{{- end -}}
|
||||
{{- default .Chart.Name (default .Values.nameOverride $globalNameOverride) | trunc 63 | trimSuffix "-" -}}
|
||||
{{- $globalNameOverride := get .Values.global "nameOverride" -}}
|
||||
{{- $nameOverride := get .Values "nameOverride" -}}
|
||||
{{- $name := $globalNameOverride | default $nameOverride | default .Chart.Name -}}
|
||||
{{- $name | toString | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
|
@ -14,12 +13,11 @@ If release name contains chart name it will be used as a full name.
|
|||
*/}}
|
||||
{{- define "bjw-s.common.lib.chart.names.fullname" -}}
|
||||
{{- $name := include "bjw-s.common.lib.chart.names.name" . -}}
|
||||
{{- $globalFullNameOverride := "" -}}
|
||||
{{- if hasKey .Values "global" -}}
|
||||
{{- $globalFullNameOverride = (default $globalFullNameOverride .Values.global.fullnameOverride) -}}
|
||||
{{- end -}}
|
||||
{{- if or .Values.fullnameOverride $globalFullNameOverride -}}
|
||||
{{- $name = default .Values.fullnameOverride $globalFullNameOverride -}}
|
||||
{{- $globalFullNameOverride := get .Values.global "fullnameOverride" -}}
|
||||
{{- $fullNameOverride := get .Values "fullnameOverride" -}}
|
||||
|
||||
{{- if or $fullNameOverride $globalFullNameOverride -}}
|
||||
{{- $name = ($globalFullNameOverride | default $fullNameOverride) -}}
|
||||
{{- else -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- $name = .Release.Name -}}
|
||||
|
@ -27,19 +25,11 @@ If release name contains chart name it will be used as a full name.
|
|||
{{- $name = printf "%s-%s" .Release.Name $name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- trunc 63 $name | trimSuffix "-" -}}
|
||||
|
||||
{{- $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Create chart name and version as used by the chart label */}}
|
||||
{{- define "bjw-s.common.lib.chart.names.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Create the name of the ServiceAccount to use */}}
|
||||
{{- define "bjw-s.common.lib.chart.names.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
{{- default (include "bjw-s.common.lib.chart.names.fullname" .) .Values.serviceAccount.name -}}
|
||||
{{- else -}}
|
||||
{{- default "default" .Values.serviceAccount.name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{{/*
|
||||
Validate configMap values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.configMap.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $configMapValues := .object -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Convert configMap values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.configMap.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the configMap name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.nameOverride -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||
{{- else -}}
|
||||
{{- if ne $identifier "main" -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the configMap object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -1,15 +0,0 @@
|
|||
{{/*
|
||||
Image used by the main container.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.image" -}}
|
||||
{{- $imageRepo := .Values.image.repository -}}
|
||||
{{- $imageTag := default .Chart.AppVersion .Values.image.tag -}}
|
||||
|
||||
{{- if kindIs "float64" .Values.image.tag -}}
|
||||
{{- $imageTag = .Values.image.tag | toString -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if and $imageRepo $imageTag -}}
|
||||
{{- printf "%s:%s" $imageRepo $imageTag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,43 +0,0 @@
|
|||
{{/*
|
||||
Environment variables used by containers.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.envVars" -}}
|
||||
{{- $values := .Values.env -}}
|
||||
{{- if hasKey . "ObjectValues" -}}
|
||||
{{- with .ObjectValues.envVars -}}
|
||||
{{- $values = . -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $values -}}
|
||||
{{- $result := list -}}
|
||||
{{- range $k, $v := . -}}
|
||||
{{- $name := $k -}}
|
||||
{{- $value := $v -}}
|
||||
{{- if kindIs "int" $name -}}
|
||||
{{- $name = required "environment variables as a list of maps require a name field" $value.name -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if kindIs "map" $value -}}
|
||||
{{- if hasKey $value "value" -}}
|
||||
{{- $envValue := $value.value | toString -}}
|
||||
{{- $result = append $result (dict "name" $name "value" (tpl $envValue $)) -}}
|
||||
{{- else if hasKey $value "valueFrom" -}}
|
||||
{{- $result = append $result (dict "name" $name "valueFrom" $value.valueFrom) -}}
|
||||
{{- else -}}
|
||||
{{- $result = append $result (dict "name" $name "valueFrom" $value) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if not (kindIs "map" $value) -}}
|
||||
{{- if kindIs "string" $value -}}
|
||||
{{- $result = append $result (dict "name" $name "value" (tpl $value $)) -}}
|
||||
{{- else if or (kindIs "float64" $value) (kindIs "bool" $value) -}}
|
||||
{{- $result = append $result (dict "name" $name "value" ($value | toString)) -}}
|
||||
{{- else -}}
|
||||
{{- $result = append $result (dict "name" $name "value" $value) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- toYaml (dict "env" $result) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,41 +0,0 @@
|
|||
{{/*
|
||||
Ports included by the controller.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.ports" -}}
|
||||
{{- $ports := list -}}
|
||||
{{- range $servicename, $service := .Values.service -}}
|
||||
{{- $serviceEnabled := true -}}
|
||||
{{- if hasKey $service "enabled" -}}
|
||||
{{- $serviceEnabled = $service.enabled -}}
|
||||
{{- end -}}
|
||||
{{- if $serviceEnabled -}}
|
||||
{{- $enabledPorts := include "bjw-s.common.lib.service.enabledPorts" (dict "serviceName" $servicename "values" $service) | fromYaml }}
|
||||
{{- range $portname, $port := ($enabledPorts | default dict) -}}
|
||||
{{- $_ := set $port "name" $portname -}}
|
||||
{{- $ports = mustAppend $ports $port -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* export/render the list of ports */}}
|
||||
{{- if $ports -}}
|
||||
{{- range $_ := $ports }}
|
||||
{{- if default true .enabled | }}
|
||||
- name: {{ .name }}
|
||||
{{- if and .targetPort (kindIs "string" .targetPort) }}
|
||||
{{- fail (printf "Our charts do not support named ports for targetPort. (port name %s, targetPort %s)" .name .targetPort) }}
|
||||
{{- end }}
|
||||
containerPort: {{ .targetPort | default .port }}
|
||||
{{- if .protocol }}
|
||||
{{- if or ( eq .protocol "HTTP" ) ( eq .protocol "HTTPS" ) ( eq .protocol "TCP" ) }}
|
||||
protocol: TCP
|
||||
{{- else }}
|
||||
protocol: {{ .protocol }}
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
{{- end}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,67 +0,0 @@
|
|||
{{/*
|
||||
Probes selection logic.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.probes" -}}
|
||||
{{- $primaryService := get .Values.service (include "bjw-s.common.lib.service.primary" .) -}}
|
||||
{{- $primaryPort := "" -}}
|
||||
{{- if $primaryService -}}
|
||||
{{- $primaryPort = get $primaryService.ports (include "bjw-s.common.lib.service.primaryPort" (dict "serviceName" (include "bjw-s.common.lib.service.primary" .) "values" $primaryService)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $probeName, $probe := .Values.probes -}}
|
||||
{{- if $probe.enabled -}}
|
||||
{{- $probeOutput := "" -}}
|
||||
{{- if $probe.custom -}}
|
||||
{{- if $probe.spec -}}
|
||||
{{- $probeOutput = $probe.spec | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- if $primaryPort -}}
|
||||
{{- $probeType := "" -}}
|
||||
{{- if eq $probe.type "AUTO" -}}
|
||||
{{- $probeType = $primaryPort.protocol -}}
|
||||
{{- else -}}
|
||||
{{- $probeType = $probe.type | default "TCP" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $probeDefinition := dict
|
||||
"initialDelaySeconds" $probe.spec.initialDelaySeconds
|
||||
"failureThreshold" $probe.spec.failureThreshold
|
||||
"timeoutSeconds" $probe.spec.timeoutSeconds
|
||||
"periodSeconds" $probe.spec.periodSeconds
|
||||
-}}
|
||||
|
||||
{{- $probeHeader := "" -}}
|
||||
{{- if or ( eq $probeType "HTTPS" ) ( eq $probeType "HTTP" ) -}}
|
||||
{{- $probeHeader = "httpGet" -}}
|
||||
|
||||
{{- $_ := set $probeDefinition $probeHeader (
|
||||
dict
|
||||
"path" $probe.path
|
||||
"scheme" $probeType
|
||||
)
|
||||
-}}
|
||||
{{- else }}
|
||||
{{- $probeHeader = "tcpSocket" -}}
|
||||
{{- $_ := set $probeDefinition $probeHeader dict -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $probe.port }}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" (tpl ( $probe.port | toString ) $) -}}
|
||||
{{- else if $primaryPort.targetPort }}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" $primaryPort.targetPort -}}
|
||||
{{- else }}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" ($primaryPort.port | toString | atoi ) -}}
|
||||
{{- end }}
|
||||
|
||||
{{- $probeOutput = $probeDefinition | toYaml | trim -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $probeOutput -}}
|
||||
{{- printf "%sProbe:" $probeName | nindent 0 -}}
|
||||
{{- $probeOutput | nindent 2 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
51
charts/library/common/templates/lib/container/_spec.tpl
Normal file
51
charts/library/common/templates/lib/container/_spec.tpl
Normal file
|
@ -0,0 +1,51 @@
|
|||
{{- /*
|
||||
The container definition included in the Pod.
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.container.spec" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $controllerObject := .controllerObject -}}
|
||||
{{- $containerObject := .containerObject -}}
|
||||
{{- $ctx := dict "rootContext" $rootContext "controllerObject" $controllerObject "containerObject" $containerObject -}}
|
||||
|
||||
name: {{ include "bjw-s.common.lib.container.field.name" (dict "ctx" $ctx) | trim }}
|
||||
image: {{ include "bjw-s.common.lib.container.field.image" (dict "ctx" $ctx) | trim }}
|
||||
{{- with $containerObject.image.pullPolicy }}
|
||||
imagePullPolicy: {{ . | trim }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.container.field.command" (dict "ctx" $ctx) | trim) }}
|
||||
command: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.container.field.args" (dict "ctx" $ctx) | trim) }}
|
||||
args: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $containerObject.securityContext }}
|
||||
securityContext: {{ toYaml . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $containerObject.lifecycle }}
|
||||
lifecycle: {{ toYaml . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $containerObject.terminationMessagePath }}
|
||||
terminationMessagePath: {{ . | trim }}
|
||||
{{- end -}}
|
||||
{{- with $containerObject.terminationMessagePolicy }}
|
||||
terminationMessagePolicy: {{ . | trim }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.container.field.env" (dict "ctx" $ctx) | trim) }}
|
||||
env: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $containerObject.envFrom }}
|
||||
envFrom: {{ toYaml . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $containerObject.ports }}
|
||||
ports: {{ toYaml . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.container.field.probes" (dict "ctx" $ctx) | trim) }}
|
||||
{{- . | trim | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- with $containerObject.resources }}
|
||||
resources: {{ toYaml . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.container.field.volumeMounts" (dict "ctx" $ctx) | trim) }}
|
||||
volumeMounts: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
11
charts/library/common/templates/lib/container/_validate.tpl
Normal file
11
charts/library/common/templates/lib/container/_validate.tpl
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{/*
|
||||
Validate container values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $containerValues := .object -}}
|
||||
|
||||
{{- if eq (dig "image" "repository" "" $containerValues) "" -}}
|
||||
{{- fail (printf "No image repository specified for container. (controller: %s, container: %s)" $containerValues.controller $containerValues.identifier) }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,13 @@
|
|||
{{/*
|
||||
Convert container values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the container object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -1,3 +1,5 @@
|
|||
{{- /* TODO: Remove this file */ -}}
|
||||
|
||||
{{/* Volumes included by the controller */}}
|
||||
{{- define "bjw-s.common.lib.container.volumeMounts" -}}
|
||||
{{- range $persistenceIndex, $persistenceItem := .Values.persistence }}
|
|
@ -0,0 +1,26 @@
|
|||
{{/*
|
||||
Args used by the container.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.field.args" -}}
|
||||
{{- $ctx := .ctx -}}
|
||||
{{- $containerObject := $ctx.containerObject -}}
|
||||
|
||||
{{- /* Default to empty list */ -}}
|
||||
{{- $args := list -}}
|
||||
|
||||
{{- /* See if an override is desired */ -}}
|
||||
{{- if not (empty (get $containerObject "args")) -}}
|
||||
{{- $option := get $containerObject "args" -}}
|
||||
{{- if not (empty $option) -}}
|
||||
{{- if kindIs "string" $option -}}
|
||||
{{- $args = append $args $option -}}
|
||||
{{- else -}}
|
||||
{{- $args = $option -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $args) -}}
|
||||
{{- $args | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,26 @@
|
|||
{{/*
|
||||
Command used by the container.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.field.command" -}}
|
||||
{{- $ctx := .ctx -}}
|
||||
{{- $containerObject := $ctx.containerObject -}}
|
||||
|
||||
{{- /* Default to empty list */ -}}
|
||||
{{- $command := list -}}
|
||||
|
||||
{{- /* See if an override is desired */ -}}
|
||||
{{- if not (empty (get $containerObject "command")) -}}
|
||||
{{- $option := get $containerObject "command" -}}
|
||||
{{- if not (empty $option) -}}
|
||||
{{- if kindIs "string" $option -}}
|
||||
{{- $command = append $command $option -}}
|
||||
{{- else -}}
|
||||
{{- $command = $option -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $command) -}}
|
||||
{{- $command | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,45 @@
|
|||
{{/*
|
||||
Env field used by the container.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.field.env" -}}
|
||||
{{- $ctx := .ctx -}}
|
||||
{{- $rootContext := $ctx.rootContext -}}
|
||||
{{- $containerObject := $ctx.containerObject -}}
|
||||
|
||||
{{- /* Default to empty list */ -}}
|
||||
{{- $env := list -}}
|
||||
|
||||
{{- /* See if an override is desired */ -}}
|
||||
{{- if not (empty (get $containerObject "env")) -}}
|
||||
{{- with $containerObject.env -}}
|
||||
{{- range $name, $value := . -}}
|
||||
{{- if kindIs "int" $name -}}
|
||||
{{- $name = required "environment variables as a list of maps require a name field" $value.name -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if kindIs "map" $value -}}
|
||||
{{- if hasKey $value "value" -}}
|
||||
{{- $envValue := $value.value | toString -}}
|
||||
{{- $env = append $env (dict "name" $name "value" (tpl $envValue $rootContext)) -}}
|
||||
{{- else if hasKey $value "valueFrom" -}}
|
||||
{{- $env = append $env (dict "name" $name "valueFrom" $value.valueFrom) -}}
|
||||
{{- else -}}
|
||||
{{- $env = append $env (dict "name" $name "valueFrom" $value) -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- if kindIs "string" $value -}}
|
||||
{{- $env = append $env (dict "name" $name "value" (tpl $value $rootContext)) -}}
|
||||
{{- else if or (kindIs "float64" $value) (kindIs "bool" $value) -}}
|
||||
{{- $env = append $env (dict "name" $name "value" ($value | toString)) -}}
|
||||
{{- else -}}
|
||||
{{- $env = append $env (dict "name" $name "value" $value) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $env) -}}
|
||||
{{- $env | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,19 @@
|
|||
{{/*
|
||||
Image used by the container.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.field.image" -}}
|
||||
{{- $ctx := .ctx -}}
|
||||
{{- $rootContext := $ctx.rootContext -}}
|
||||
{{- $containerObject := $ctx.containerObject -}}
|
||||
|
||||
{{- $imageRepo := $containerObject.image.repository -}}
|
||||
{{- $imageTag := default $rootContext.Chart.AppVersion $containerObject.image.tag -}}
|
||||
|
||||
{{- if kindIs "float64" $imageTag -}}
|
||||
{{- $imageTag = $imageTag | toString -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if and $imageRepo $imageTag -}}
|
||||
{{- printf "%s:%s" $imageRepo $imageTag -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Name used by the container.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.field.name" -}}
|
||||
{{- $ctx := .ctx -}}
|
||||
{{- $rootContext := $ctx.rootContext -}}
|
||||
{{- $containerObject := $ctx.containerObject -}}
|
||||
|
||||
{{- /* Default to container identifier */ -}}
|
||||
{{- $name := $containerObject.identifier -}}
|
||||
|
||||
{{- /* See if an override is desired */ -}}
|
||||
{{- if hasKey $containerObject "nameOverride" -}}
|
||||
{{- $option := get $containerObject "nameOverride" -}}
|
||||
{{- if not (empty $option) -}}
|
||||
{{- $name = $option -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Parse any templates */ -}}
|
||||
{{- $name = tpl $name $rootContext -}}
|
||||
|
||||
{{- $name | toYaml -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,79 @@
|
|||
{{/*
|
||||
Probes used by the container.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.field.probes" -}}
|
||||
{{- $ctx := .ctx -}}
|
||||
{{- $rootContext := $ctx.rootContext -}}
|
||||
{{- $controllerObject := $ctx.controllerObject -}}
|
||||
{{- $containerObject := $ctx.containerObject -}}
|
||||
|
||||
{{- /* Default to empty dict */ -}}
|
||||
{{- $enabledProbes := dict -}}
|
||||
|
||||
{{- range $probeName, $probeValues := $containerObject.probes -}}
|
||||
{{- /* Disable probe by default, but allow override */ -}}
|
||||
{{- $probeEnabled := false -}}
|
||||
{{- if hasKey $probeValues "enabled" -}}
|
||||
{{- $probeEnabled = $probeValues.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $probeEnabled -}}
|
||||
{{- $probeDefinition := dict -}}
|
||||
|
||||
{{- if $probeValues.custom -}}
|
||||
{{- $parsedProbeSpec := tpl ($probeValues.spec | toYaml) $rootContext -}}
|
||||
{{- $probeDefinition = $parsedProbeSpec | fromYaml -}}
|
||||
{{- else -}}
|
||||
{{- $primaryService := include "bjw-s.common.lib.service.primaryForController" (dict "rootContext" $rootContext "controllerIdentifier" $controllerObject.identifier) | fromYaml -}}
|
||||
{{- $primaryServiceDefaultPort := dict -}}
|
||||
{{- if $primaryService -}}
|
||||
{{- $primaryServiceDefaultPort = include "bjw-s.common.lib.service.primaryPort" (dict "rootContext" $rootContext "serviceObject" $primaryService) | fromYaml -}}
|
||||
{{- end -}}
|
||||
{{- if $primaryServiceDefaultPort -}}
|
||||
{{- $probeType := "" -}}
|
||||
{{- if eq $probeValues.type "AUTO" -}}
|
||||
{{- $probeType = $primaryServiceDefaultPort.protocol -}}
|
||||
{{- else -}}
|
||||
{{- $probeType = $probeValues.type | default "TCP" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $_ := set $probeDefinition "initialDelaySeconds" $probeValues.spec.initialDelaySeconds -}}
|
||||
{{- $_ := set $probeDefinition "failureThreshold" $probeValues.spec.failureThreshold -}}
|
||||
{{- $_ := set $probeDefinition "timeoutSeconds" $probeValues.spec.timeoutSeconds -}}
|
||||
{{- $_ := set $probeDefinition "periodSeconds" $probeValues.spec.periodSeconds -}}
|
||||
|
||||
{{- $probeHeader := "" -}}
|
||||
{{- if or ( eq $probeType "HTTPS" ) ( eq $probeType "HTTP" ) -}}
|
||||
{{- $probeHeader = "httpGet" -}}
|
||||
|
||||
{{- $_ := set $probeDefinition $probeHeader (
|
||||
dict
|
||||
"path" $probeValues.path
|
||||
"scheme" $probeType
|
||||
)
|
||||
-}}
|
||||
{{- else }}
|
||||
{{- $probeHeader = "tcpSocket" -}}
|
||||
{{- $_ := set $probeDefinition $probeHeader dict -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $probeValues.port -}}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" (tpl ( $probeValues.port | toString ) $rootContext) -}}
|
||||
{{- else if $primaryServiceDefaultPort.targetPort -}}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" $primaryServiceDefaultPort.targetPort -}}
|
||||
{{- else -}}
|
||||
{{- $_ := set (index $probeDefinition $probeHeader) "port" ($primaryServiceDefaultPort.port | toString | atoi ) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $probeDefinition -}}
|
||||
{{- $_ := set $enabledProbes (printf "%sProbe" $probeName) $probeDefinition -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $enabledProbes -}}
|
||||
{{- . | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,77 @@
|
|||
{{/*
|
||||
volumeMounts used by the container.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.container.field.volumeMounts" -}}
|
||||
{{- $ctx := .ctx -}}
|
||||
{{- $rootContext := $ctx.rootContext -}}
|
||||
{{- $controllerObject := $ctx.controllerObject -}}
|
||||
{{- $containerObject := $ctx.containerObject -}}
|
||||
|
||||
{{- /* Default to empty dict */ -}}
|
||||
{{- $persistenceItemsToProcess := dict -}}
|
||||
{{- $enabledVolumeMounts := list -}}
|
||||
|
||||
{{- range $identifier, $persistenceValues := $rootContext.Values.persistence -}}
|
||||
{{- /* Enable persistence item by default, but allow override */ -}}
|
||||
{{- $persistenceEnabled := true -}}
|
||||
{{- if hasKey $persistenceValues "enabled" -}}
|
||||
{{- $persistenceEnabled = $persistenceValues.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $persistenceEnabled -}}
|
||||
{{- /* Set some default values */ -}}
|
||||
|
||||
{{- /* Set the default mountPath to /<name_of_the_peristence_item> */ -}}
|
||||
{{- $mountPath := (printf "/%v" $identifier) -}}
|
||||
{{- if eq "hostPath" (default "pvc" $persistenceValues.type) -}}
|
||||
{{- $mountPath = $persistenceValues.hostPath -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Process configured mounts */ -}}
|
||||
{{- if or .globalMounts .advancedMounts -}}
|
||||
{{- $mounts := list -}}
|
||||
{{- if hasKey . "globalMounts" -}}
|
||||
{{- $mounts = .globalMounts -}}
|
||||
{{- else if hasKey . "advancedMounts" -}}
|
||||
{{- $mounts = dig $controllerObject.identifier $containerObject.identifier list .advancedMounts -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $mounts -}}
|
||||
{{- $volumeMount := dict -}}
|
||||
{{- $_ := set $volumeMount "name" $identifier -}}
|
||||
|
||||
{{- /* Use the specified mountPath if provided */ -}}
|
||||
{{- with .path -}}
|
||||
{{- $mountPath = . -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $volumeMount "mountPath" $mountPath -}}
|
||||
|
||||
{{- /* Use the specified subPath if provided */ -}}
|
||||
{{- with .subPath -}}
|
||||
{{- $subPath := . -}}
|
||||
{{- $_ := set $volumeMount "subPath" $subPath -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Use the specified readOnly setting if provided */ -}}
|
||||
{{- with .readOnly -}}
|
||||
{{- $readOnly := . -}}
|
||||
{{- $_ := set $volumeMount "readOnly" $readOnly -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $enabledVolumeMounts = append $enabledVolumeMounts $volumeMount -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Mount to default path if no mounts are configured */ -}}
|
||||
{{- else -}}
|
||||
{{- $volumeMount := dict -}}
|
||||
{{- $_ := set $volumeMount "name" $identifier -}}
|
||||
{{- $_ := set $volumeMount "mountPath" $mountPath -}}
|
||||
{{- $enabledVolumeMounts = append $enabledVolumeMounts $volumeMount -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $enabledVolumeMounts -}}
|
||||
{{- . | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Return the enabled containers for a controller.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.controller.enabledContainers" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $controllerObject := .controllerObject -}}
|
||||
|
||||
{{- $enabledContainers := dict -}}
|
||||
{{- range $name, $container := $controllerObject.containers -}}
|
||||
{{- if kindIs "map" $container -}}
|
||||
{{- /* Enable container by default, but allow override */ -}}
|
||||
{{- $containerEnabled := true -}}
|
||||
{{- if hasKey $container "enabled" -}}
|
||||
{{- $containerEnabled = $container.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $containerEnabled -}}
|
||||
{{- $_ := set $enabledContainers $name . -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $enabledContainers | toYaml -}}
|
||||
{{- end -}}
|
|
@ -1,58 +0,0 @@
|
|||
{{- /* The main container included in the controller */ -}}
|
||||
{{- define "bjw-s.common.lib.controller.mainContainer" -}}
|
||||
- name: {{ include "bjw-s.common.lib.chart.names.fullname" . }}
|
||||
image: {{ include "bjw-s.common.lib.container.image" . }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
{{- with .Values.command }}
|
||||
command:
|
||||
{{- if kindIs "string" . }}
|
||||
- {{ . | quote }}
|
||||
{{- else }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.args }}
|
||||
args:
|
||||
{{- if kindIs "string" . }}
|
||||
- {{ . | quote }}
|
||||
{{- else }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.lifecycle }}
|
||||
lifecycle:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.termination.messagePath }}
|
||||
terminationMessagePath: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.termination.messagePolicy }}
|
||||
terminationMessagePolicy: {{ . }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.env }}
|
||||
env:
|
||||
{{- get (fromYaml (include "bjw-s.common.lib.container.envVars" $)) "env" | toYaml | nindent 4 -}}
|
||||
{{- end }}
|
||||
{{- with .Values.envFrom }}
|
||||
envFrom:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with (include "bjw-s.common.lib.container.ports" . | trim) }}
|
||||
ports:
|
||||
{{- nindent 4 . }}
|
||||
{{- end }}
|
||||
{{- with (include "bjw-s.common.lib.container.volumeMounts" . | trim) }}
|
||||
volumeMounts:
|
||||
{{- nindent 4 . }}
|
||||
{{- end }}
|
||||
{{- include "bjw-s.common.lib.container.probes" . | trim | nindent 2 }}
|
||||
{{- with .Values.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -1,114 +0,0 @@
|
|||
{{- /*
|
||||
The pod definition included in the controller.
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.controller.pod" -}}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "bjw-s.common.lib.chart.names.serviceAccountName" . }}
|
||||
automountServiceAccountToken: {{ .Values.automountServiceAccountToken }}
|
||||
{{- with .Values.podSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.priorityClassName }}
|
||||
priorityClassName: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.runtimeClassName }}
|
||||
runtimeClassName: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.schedulerName }}
|
||||
schedulerName: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostIPC }}
|
||||
hostIPC: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostNetwork }}
|
||||
hostNetwork: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostPID }}
|
||||
hostPID: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostname }}
|
||||
hostname: {{ . }}
|
||||
{{- end }}
|
||||
{{- if .Values.dnsPolicy }}
|
||||
dnsPolicy: {{ .Values.dnsPolicy }}
|
||||
{{- else if .Values.hostNetwork }}
|
||||
dnsPolicy: ClusterFirstWithHostNet
|
||||
{{- else }}
|
||||
dnsPolicy: ClusterFirst
|
||||
{{- end }}
|
||||
{{- with .Values.dnsConfig }}
|
||||
dnsConfig:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
enableServiceLinks: {{ .Values.enableServiceLinks }}
|
||||
{{- with .Values.termination.gracePeriodSeconds }}
|
||||
terminationGracePeriodSeconds: {{ . }}
|
||||
{{- end }}
|
||||
{{- if .Values.initContainers }}
|
||||
initContainers:
|
||||
{{- $initContainers := list }}
|
||||
{{- range $index, $key := (keys .Values.initContainers | uniq | sortAlpha) }}
|
||||
{{- $container := get $.Values.initContainers $key }}
|
||||
{{- if not $container.name -}}
|
||||
{{- $_ := set $container "name" $key }}
|
||||
{{- end }}
|
||||
{{- if $container.env -}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "envVars" $container.env) -}}
|
||||
{{- $newEnv := fromYaml (include "bjw-s.common.lib.container.envVars" $) -}}
|
||||
{{- $_ := unset $.ObjectValues "envVars" -}}
|
||||
{{- $_ := set $container "env" $newEnv.env }}
|
||||
{{- end }}
|
||||
{{- $initContainers = append $initContainers $container }}
|
||||
{{- end }}
|
||||
{{- tpl (toYaml $initContainers) $ | nindent 2 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
{{- include "bjw-s.common.lib.controller.mainContainer" . | nindent 2 }}
|
||||
{{- with (merge .Values.sidecars .Values.additionalContainers) }}
|
||||
{{- $sidecarContainers := list }}
|
||||
{{- range $name, $container := . }}
|
||||
{{- if not $container.name -}}
|
||||
{{- $_ := set $container "name" $name }}
|
||||
{{- end }}
|
||||
{{- if $container.env -}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "envVars" $container.env) -}}
|
||||
{{- $newEnv := fromYaml (include "bjw-s.common.lib.container.envVars" $) -}}
|
||||
{{- $_ := set $container "env" $newEnv.env }}
|
||||
{{- $_ := unset $.ObjectValues "envVars" -}}
|
||||
{{- end }}
|
||||
{{- $sidecarContainers = append $sidecarContainers $container }}
|
||||
{{- end }}
|
||||
{{- tpl (toYaml $sidecarContainers) $ | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with (include "bjw-s.common.lib.controller.volumes" . | trim) }}
|
||||
volumes:
|
||||
{{- nindent 2 . }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostAliases }}
|
||||
hostAliases:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.restartPolicy }}
|
||||
restartPolicy: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
18
charts/library/common/templates/lib/controller/_validate.tpl
Normal file
18
charts/library/common/templates/lib/controller/_validate.tpl
Normal file
|
@ -0,0 +1,18 @@
|
|||
{{/*
|
||||
Validate controller values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.controller.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $controllerValues := .object -}}
|
||||
|
||||
{{- $allowedControllerTypes := list "deployment" "daemonset" "statefulset" "cronjob" -}}
|
||||
{{- if not (has $controllerValues.type $allowedControllerTypes) -}}
|
||||
{{- fail (printf "Not a valid controller.type (%s)" $controllerValues.type) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $enabledContainers := include "bjw-s.common.lib.controller.enabledContainers" (dict "rootContext" $rootContext "controllerObject" $controllerValues) | fromYaml }}
|
||||
{{- /* Validate at least one container is enabled */ -}}
|
||||
{{- if not $enabledContainers -}}
|
||||
{{- fail (printf "No containers enabled for controller (%s)" $controllerValues.identifier) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,36 @@
|
|||
{{/*
|
||||
Convert controller values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.controller.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the controller name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.nameOverride -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||
{{- else -}}
|
||||
{{- if ne $identifier "main" -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Set the default Pod options for the controller */ -}}
|
||||
{{- range $index, $key := keys $rootContext.Values.defaultPodOptions -}}
|
||||
{{- if not (hasKey $objectValues "pod") -}}
|
||||
{{- $_ := set $objectValues "pod" dict -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $defaultValue := get $rootContext.Values.defaultPodOptions $key -}}
|
||||
{{- if not (hasKey $objectValues.pod $key) -}}
|
||||
{{- $_ := set $objectValues.pod $key $defaultValue -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Return the controller object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -1,68 +0,0 @@
|
|||
{{/*
|
||||
Volumes included by the controller.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.controller.volumes" -}}
|
||||
{{- range $index, $persistence := .Values.persistence }}
|
||||
{{- if $persistence.enabled }}
|
||||
- name: {{ $index }}
|
||||
{{- if eq (default "pvc" $persistence.type) "pvc" }}
|
||||
{{- $pvcName := (include "bjw-s.common.lib.chart.names.fullname" $) -}}
|
||||
{{- if $persistence.existingClaim }}
|
||||
{{- /* Always prefer an existingClaim if that is set */}}
|
||||
{{- $pvcName = $persistence.existingClaim -}}
|
||||
{{- else -}}
|
||||
{{- /* Otherwise refer to the PVC name */}}
|
||||
{{- if $persistence.nameOverride -}}
|
||||
{{- if not (eq $persistence.nameOverride "-") -}}
|
||||
{{- $pvcName = (printf "%s-%s" (include "bjw-s.common.lib.chart.names.fullname" $) $persistence.nameOverride) -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- $pvcName = (printf "%s-%s" (include "bjw-s.common.lib.chart.names.fullname" $) $index) -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ $pvcName }}
|
||||
{{- else if or (eq $persistence.type "configMap") (eq $persistence.type "secret") }}
|
||||
{{- $objectName := (required (printf "name not set for persistence item %s" $index) $persistence.name) }}
|
||||
{{- $objectName = tpl $objectName $ }}
|
||||
{{- if eq $persistence.type "configMap" }}
|
||||
configMap:
|
||||
name: {{ $objectName }}
|
||||
{{- else }}
|
||||
secret:
|
||||
secretName: {{ $objectName }}
|
||||
{{- end }}
|
||||
{{- with $persistence.defaultMode }}
|
||||
defaultMode: {{ . }}
|
||||
{{- end }}
|
||||
{{- with $persistence.items }}
|
||||
items:
|
||||
{{- toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- else if eq $persistence.type "emptyDir" }}
|
||||
{{- $emptyDir := dict -}}
|
||||
{{- with $persistence.medium -}}
|
||||
{{- $_ := set $emptyDir "medium" . -}}
|
||||
{{- end -}}
|
||||
{{- with $persistence.sizeLimit -}}
|
||||
{{- $_ := set $emptyDir "sizeLimit" . -}}
|
||||
{{- end }}
|
||||
emptyDir: {{- $emptyDir | toYaml | nindent 4 }}
|
||||
{{- else if eq $persistence.type "hostPath" }}
|
||||
hostPath:
|
||||
path: {{ required "hostPath not set" $persistence.hostPath }}
|
||||
{{- with $persistence.hostPathType }}
|
||||
type: {{ . }}
|
||||
{{- end }}
|
||||
{{- else if eq $persistence.type "nfs" }}
|
||||
nfs:
|
||||
server: {{ required "server not set" $persistence.server }}
|
||||
path: {{ required "path not set" $persistence.path }}
|
||||
{{- else if eq $persistence.type "custom" }}
|
||||
{{- toYaml $persistence.volumeSpec | nindent 2 }}
|
||||
{{- else }}
|
||||
{{- fail (printf "Not a valid persistence.type (%s)" $persistence.type) }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
11
charts/library/common/templates/lib/cronjob/_validate.tpl
Normal file
11
charts/library/common/templates/lib/cronjob/_validate.tpl
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{/*
|
||||
Validate CronJob values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.cronjob.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $cronjobValues := .object -}}
|
||||
|
||||
{{- if and (ne $cronjobValues.pod.restartPolicy "Never") (ne $cronjobValues.pod.restartPolicy "OnFailure") -}}
|
||||
{{- fail (printf "Not a valid restartPolicy type for CronJob. (controller: %s, restartPolicy: %s)" $cronjobValues.identifier $cronjobValues.pod.restartPolicy) }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,18 @@
|
|||
{{/*
|
||||
Convert Cronjob values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.cronjob.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- if not (hasKey $objectValues "pod") -}}
|
||||
{{- $_ := set $objectValues "pod" dict -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $restartPolicy := default "Never" $objectValues.pod.restartPolicy -}}
|
||||
{{- $_ := set $objectValues.pod "restartPolicy" $restartPolicy -}}
|
||||
|
||||
{{- /* Return the CronJob object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,7 @@
|
|||
{{/*
|
||||
Validate DaemonSet values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.daemonset.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $daemonsetValues := .object -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,11 @@
|
|||
{{/*
|
||||
Convert DaemonSet values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.daemonset.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Return the DaemonSet object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
11
charts/library/common/templates/lib/deployment/_validate.tpl
Normal file
11
charts/library/common/templates/lib/deployment/_validate.tpl
Normal file
|
@ -0,0 +1,11 @@
|
|||
{{/*
|
||||
Validate Deployment values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.deployment.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $deploymentValues := .object -}}
|
||||
|
||||
{{- if and (ne $deploymentValues.strategy "Recreate") (ne $deploymentValues.strategy "RollingUpdate") -}}
|
||||
{{- fail (printf "Not a valid strategy type for Deployment. (controller: %s, strategy: %s)" $deploymentValues.identifier $deploymentValues.strategy) }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,14 @@
|
|||
{{/*
|
||||
Convert Deployment values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.deployment.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- $strategy := default "Recreate" $objectValues.strategy -}}
|
||||
{{- $_ := set $objectValues "strategy" $strategy -}}
|
||||
|
||||
{{- /* Return the Deployment object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -1,4 +1,4 @@
|
|||
{{/* Return the name of the primary ingress object */}}
|
||||
{{/* Return the name of the primary Ingress object */}}
|
||||
{{- define "bjw-s.common.lib.ingress.primary" -}}
|
||||
{{- $enabledIngresses := dict -}}
|
||||
{{- range $name, $ingress := .Values.ingress -}}
|
||||
|
|
15
charts/library/common/templates/lib/ingress/_validate.tpl
Normal file
15
charts/library/common/templates/lib/ingress/_validate.tpl
Normal file
|
@ -0,0 +1,15 @@
|
|||
{{/*
|
||||
Validate Ingress values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.ingress.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $ingressValues := .object -}}
|
||||
|
||||
{{- range $ingressValues.hosts -}}
|
||||
{{- range .paths -}}
|
||||
{{- if or (eq (dig "service" "name" "" .) "") (not .service.name) -}}
|
||||
{{- fail (printf "No service name configured. (ingress: %s, path: %s)" $ingressValues.identifier .path) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Convert ingress values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.ingress.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the ingress name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.nameOverride -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||
{{- else -}}
|
||||
{{- if ne $identifier "main" -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the ingress object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -1,26 +0,0 @@
|
|||
{{/* Determine the Pod annotations used in the controller */}}
|
||||
{{- define "bjw-s.common.lib.metadata.podAnnotations" -}}
|
||||
{{- if .Values.podAnnotations -}}
|
||||
{{- tpl (toYaml .Values.podAnnotations) . | nindent 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $configMapsFound := dict -}}
|
||||
{{- range $name, $configmap := .Values.configMaps -}}
|
||||
{{- if $configmap.enabled -}}
|
||||
{{- $_ := set $configMapsFound $name (toYaml $configmap.data | sha256sum) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $configMapsFound -}}
|
||||
{{- printf "checksum/config: %v" (toYaml $configMapsFound | sha256sum) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $secretsFound := dict -}}
|
||||
{{- range $name, $secret := .Values.secrets -}}
|
||||
{{- if $secret.enabled -}}
|
||||
{{- $_ := set $secretsFound $name (toYaml $secret.data | sha256sum) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $secretsFound -}}
|
||||
{{- printf "checksum/secrets: %v" (toYaml $secretsFound | sha256sum) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
34
charts/library/common/templates/lib/pod/_getOption.tpl
Normal file
34
charts/library/common/templates/lib/pod/_getOption.tpl
Normal file
|
@ -0,0 +1,34 @@
|
|||
{{- /*
|
||||
Returns the value for the specified field
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.getOption" -}}
|
||||
{{- $rootContext := .ctx.rootContext -}}
|
||||
{{- $controllerObject := .ctx.controllerObject -}}
|
||||
{{- $option := .option -}}
|
||||
|
||||
{{- $value := "" -}}
|
||||
|
||||
{{- /* Set to the default if it is set */ -}}
|
||||
{{- $defaultOption := get $rootContext.Values.defaultPodOptions $option -}}
|
||||
{{- if kindIs "bool" $defaultOption -}}
|
||||
{{- $value = $defaultOption -}}
|
||||
{{- else if not (empty $defaultOption) -}}
|
||||
{{- $value = $defaultOption -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* See if a pod-specific override is needed */ -}}
|
||||
{{- if hasKey $controllerObject "pod" -}}
|
||||
{{- $podOption := get $controllerObject.pod $option -}}
|
||||
{{- if kindIs "bool" $podOption -}}
|
||||
{{- $value = $podOption -}}
|
||||
{{- else if not (empty $podOption) -}}
|
||||
{{- $value = $podOption -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if kindIs "bool" $value -}}
|
||||
{{- $value | toYaml -}}
|
||||
{{- else if not (empty $value) -}}
|
||||
{{- $value | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
67
charts/library/common/templates/lib/pod/_spec.tpl
Normal file
67
charts/library/common/templates/lib/pod/_spec.tpl
Normal file
|
@ -0,0 +1,67 @@
|
|||
{{- /*
|
||||
The pod definition included in the controller.
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.spec" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $controllerObject := .controllerObject -}}
|
||||
{{- $ctx := dict "rootContext" $rootContext "controllerObject" $controllerObject -}}
|
||||
|
||||
enableServiceLinks: {{ $controllerObject.pod.enableServiceLinks }}
|
||||
serviceAccountName: {{ include "bjw-s.common.lib.pod.field.serviceAccountName" (dict "ctx" $ctx) | trim }}
|
||||
automountServiceAccountToken: {{ $controllerObject.pod.automountServiceAccountToken }}
|
||||
{{- with ($controllerObject.pod.priorityClassName) }}
|
||||
priorityClassName: {{ . | trim }}
|
||||
{{- end -}}
|
||||
{{- with ($controllerObject.pod.runtimeClassName) }}
|
||||
runtimeClassName: {{ . | trim }}
|
||||
{{- end -}}
|
||||
{{- with ($controllerObject.pod.schedulerName) }}
|
||||
schedulerName: {{ . | trim }}
|
||||
{{- end -}}
|
||||
{{- with ($controllerObject.pod.securityContext) }}
|
||||
securityContext: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with ($controllerObject.pod.hostname) }}
|
||||
hostname: {{ . | trim }}
|
||||
{{- end }}
|
||||
hostIPC: {{ $controllerObject.pod.hostIPC }}
|
||||
hostNetwork: {{ $controllerObject.pod.hostNetwork }}
|
||||
hostPID: {{ $controllerObject.pod.hostPID }}
|
||||
dnsPolicy: {{ include "bjw-s.common.lib.pod.field.dnsPolicy" (dict "ctx" $ctx) | trim }}
|
||||
{{- with $controllerObject.pod.dnsConfig }}
|
||||
dnsConfig: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $controllerObject.pod.hostAliases }}
|
||||
hostAliases: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $controllerObject.pod.imagePullSecrets }}
|
||||
imagePullSecrets: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $controllerObject.pod.terminationGracePeriodSeconds }}
|
||||
terminationGracePeriodSeconds: {{ . | trim }}
|
||||
{{- end -}}
|
||||
{{- with $controllerObject.pod.restartPolicy }}
|
||||
restartPolicy: {{ . | trim }}
|
||||
{{- end -}}
|
||||
{{- with $controllerObject.pod.nodeSelector }}
|
||||
nodeSelector: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $controllerObject.pod.affinity }}
|
||||
affinity: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $controllerObject.pod.topologySpreadConstraints }}
|
||||
topologySpreadConstraints: {{ . | trim | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with $controllerObject.pod.tolerations }}
|
||||
tolerations: {{ . | trim | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with (include "bjw-s.common.lib.pod.field.initContainers" (dict "ctx" $ctx) | trim) }}
|
||||
initContainers: {{ . | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.pod.field.containers" (dict "ctx" $ctx) | trim) }}
|
||||
containers: {{ . | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- with (include "bjw-s.common.lib.pod.field.volumes" (dict "ctx" $ctx) | trim) }}
|
||||
volumes: {{ . | nindent 2 }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,28 @@
|
|||
{{- /*
|
||||
Returns the value for containers
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.field.containers" -}}
|
||||
{{- $rootContext := .ctx.rootContext -}}
|
||||
{{- $controllerObject := .ctx.controllerObject -}}
|
||||
|
||||
{{- /* Default to empty list */ -}}
|
||||
{{- $containers := list -}}
|
||||
|
||||
{{- /* Fetch configured containers for this controller */ -}}
|
||||
{{- $enabledContainers := include "bjw-s.common.lib.controller.enabledContainers" (dict "rootContext" $rootContext "controllerObject" $controllerObject) | fromYaml }}
|
||||
{{- range $key, $containerValues := $enabledContainers -}}
|
||||
{{- /* Create object from the container values */ -}}
|
||||
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $ "id" $key "values" $containerValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the Container before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.container.validate" (dict "rootContext" $ "object" $containerObject) -}}
|
||||
|
||||
{{- /* Generate the Container spec */ -}}
|
||||
{{- $renderedContainer := include "bjw-s.common.lib.container.spec" (dict "rootContext" $rootContext "controllerObject" $controllerObject "containerObject" $containerObject) | fromYaml -}}
|
||||
{{- $containers = append $containers $renderedContainer -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $containers) -}}
|
||||
{{- $containers | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,25 @@
|
|||
{{- /*
|
||||
Returns the value for dnsPolicy
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.field.dnsPolicy" -}}
|
||||
{{- $ctx := .ctx -}}
|
||||
{{- $controllerObject := $ctx.controllerObject -}}
|
||||
|
||||
{{- /* Default to "ClusterFirst" */ -}}
|
||||
{{- $dnsPolicy := "ClusterFirst" -}}
|
||||
|
||||
{{- /* Get hostNetwork value "" */ -}}
|
||||
{{- $hostNetwork:= get $controllerObject.pod "hostNetwork" -}}
|
||||
{{- if $hostNetwork -}}
|
||||
{{- $dnsPolicy = "ClusterFirstWithHostNet" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* See if an override is desired */ -}}
|
||||
{{- $override := get $controllerObject.pod "dnsPolicy" -}}
|
||||
|
||||
{{- if not (empty $override) -}}
|
||||
{{- $dnsPolicy = $override -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $dnsPolicy -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,27 @@
|
|||
{{- /*
|
||||
Returns the value for initContainers
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.field.initContainers" -}}
|
||||
{{- $rootContext := .ctx.rootContext -}}
|
||||
{{- $controllerObject := .ctx.controllerObject -}}
|
||||
|
||||
{{- /* Default to empty list */ -}}
|
||||
{{- $containers := list -}}
|
||||
|
||||
{{- /* Fetch configured containers for this controller */ -}}
|
||||
{{- range $key, $containerValues := $controllerObject.initContainers -}}
|
||||
{{- /* Create object from the container values */ -}}
|
||||
{{- $containerObject := (include "bjw-s.common.lib.container.valuesToObject" (dict "rootContext" $ "id" $key "values" $containerValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the Container before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.container.validate" (dict "rootContext" $ "object" $containerObject) -}}
|
||||
|
||||
{{- /* Generate the Container spec */ -}}
|
||||
{{- $renderedContainer := include "bjw-s.common.lib.container.spec" (dict "rootContext" $rootContext "containerObject" $containerObject) | fromYaml -}}
|
||||
{{- $containers = append $containers $renderedContainer -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $containers) -}}
|
||||
{{- $containers | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,18 @@
|
|||
{{- /*
|
||||
Returns the value for serviceAccountName
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.field.serviceAccountName" -}}
|
||||
{{- $rootContext := .ctx.rootContext -}}
|
||||
|
||||
{{- /* Default to "default" */ -}}
|
||||
{{- $name := "default" -}}
|
||||
|
||||
{{- /* See if an override is needed */ -}}
|
||||
{{- if $rootContext.Values.serviceAccount.create -}}
|
||||
{{- $serviceAccountValues := (mustDeepCopy $rootContext.Values.serviceAccount) -}}
|
||||
{{- $serviceAccountObject := (include "bjw-s.common.lib.serviceAccount.valuesToObject" (dict "rootContext" $rootContext "id" "default" "values" $serviceAccountValues)) | fromYaml -}}
|
||||
{{- $name = $serviceAccountObject.name -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $name -}}
|
||||
{{- end -}}
|
118
charts/library/common/templates/lib/pod/fields/_volumes.tpl
Normal file
118
charts/library/common/templates/lib/pod/fields/_volumes.tpl
Normal file
|
@ -0,0 +1,118 @@
|
|||
{{- /*
|
||||
Returns the value for volumes
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.field.volumes" -}}
|
||||
{{- $rootContext := .ctx.rootContext -}}
|
||||
{{- $controllerObject := .ctx.controllerObject -}}
|
||||
|
||||
{{- /* Default to empty list */ -}}
|
||||
{{- $persistenceItemsToProcess := dict -}}
|
||||
{{- $volumes := list -}}
|
||||
|
||||
{{- /* Loop over persistence values */ -}}
|
||||
{{- range $identifier, $persistenceValues := $rootContext.Values.persistence -}}
|
||||
{{- /* Enable persistence item by default, but allow override */ -}}
|
||||
{{- $persistenceEnabled := true -}}
|
||||
{{- if hasKey $persistenceValues "enabled" -}}
|
||||
{{- $persistenceEnabled = $persistenceValues.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $persistenceEnabled -}}
|
||||
{{- $advancedMounts := dig "advancedMounts" $controllerObject.identifier list $persistenceValues -}}
|
||||
{{- if $advancedMounts -}}
|
||||
{{- $_ := set $persistenceItemsToProcess $identifier $persistenceValues -}}
|
||||
{{- else -}}
|
||||
{{- $_ := set $persistenceItemsToProcess $identifier $persistenceValues -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Loop over persistence items */ -}}
|
||||
{{- range $identifier, $persistenceValues := $persistenceItemsToProcess -}}
|
||||
{{- $volume := dict "name" $identifier -}}
|
||||
|
||||
{{- /* PVC persistence type */ -}}
|
||||
{{- if eq (default "persistentVolumeClaim" $persistenceValues.type) "persistentVolumeClaim" -}}
|
||||
{{- $pvcName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
{{- if $persistenceValues.existingClaim -}}
|
||||
{{- /* Always prefer an existingClaim if that is set */ -}}
|
||||
{{- $pvcName = $persistenceValues.existingClaim -}}
|
||||
{{- else -}}
|
||||
{{- /* Otherwise refer to the PVC name */ -}}
|
||||
{{- if $persistenceValues.nameOverride -}}
|
||||
{{- if not (eq $persistenceValues.nameOverride "-") -}}
|
||||
{{- $pvcName = (printf "%s-%s" (include "bjw-s.common.lib.chart.names.fullname" $rootContext) $persistenceValues.nameOverride) -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- $pvcName = (printf "%s-%s" (include "bjw-s.common.lib.chart.names.fullname" $rootContext) $identifier) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $volume "persistentVolumeClaim" (dict "claimName" $pvcName) -}}
|
||||
|
||||
{{- /* configMap persistence type */ -}}
|
||||
{{- else if eq $persistenceValues.type "configMap" -}}
|
||||
{{- $objectName := (required (printf "name not set for persistence item %s" $identifier) $persistenceValues.name) -}}
|
||||
{{- $objectName = tpl $objectName $rootContext -}}
|
||||
{{- $_ := set $volume "configMap" dict -}}
|
||||
{{- $_ := set $volume.configMap "name" $objectName -}}
|
||||
{{- with $persistenceValues.defaultMode -}}
|
||||
{{- $_ := set $volume.configMap "defaultMode" . -}}
|
||||
{{- end -}}
|
||||
{{- with $persistenceValues.items -}}
|
||||
{{- $_ := set $volume.configMap "items" . -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Secret persistence type */ -}}
|
||||
{{- else if eq $persistenceValues.type "secret" -}}
|
||||
{{- $objectName := (required (printf "name not set for persistence item %s" $identifier) $persistenceValues.name) -}}
|
||||
{{- $objectName = tpl $objectName $rootContext -}}
|
||||
{{- $_ := set $volume "secret" dict -}}
|
||||
{{- $_ := set $volume.secret "secretName" $objectName -}}
|
||||
{{- with $persistenceValues.defaultMode -}}
|
||||
{{- $_ := set $volume.secret "defaultMode" . -}}
|
||||
{{- end -}}
|
||||
{{- with $persistenceValues.items -}}
|
||||
{{- $_ := set $volume.secret "items" . -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* emptyDir persistence type */ -}}
|
||||
{{- else if eq $persistenceValues.type "emptyDir" -}}
|
||||
{{- $_ := set $volume "emptyDir" dict -}}
|
||||
{{- with $persistenceValues.medium -}}
|
||||
{{- $_ := set $volume.emptyDir "medium" . -}}
|
||||
{{- end -}}
|
||||
{{- with $persistenceValues.sizeLimit -}}
|
||||
{{- $_ := set $volume.emptyDir "sizeLimit" . -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* hostPath persistence type */ -}}
|
||||
{{- else if eq $persistenceValues.type "hostPath" -}}
|
||||
{{- $_ := set $volume "hostPath" dict -}}
|
||||
{{- $_ := set $volume.hostPath "path" (required "hostPath not set" $persistenceValues.hostPath) -}}
|
||||
{{- with $persistenceValues.hostPathType }}
|
||||
{{- $_ := set $volume.hostPath "type" . -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* hostPath persistence type */ -}}
|
||||
{{- else if eq $persistenceValues.type "nfs" -}}
|
||||
{{- $_ := set $volume "nfs" dict -}}
|
||||
{{- $_ := set $volume.nfs "server" (required "server not set" $persistenceValues.server) -}}
|
||||
{{- $_ := set $volume.nfs "path" (required "path not set" $persistenceValues.path) -}}
|
||||
|
||||
{{- /* custom persistence type */ -}}
|
||||
{{- else if eq $persistenceValues.type "custom" -}}
|
||||
{{- $volume = $persistenceValues.volumeSpec -}}
|
||||
{{- $_ := set $volume "name" $identifier -}}
|
||||
|
||||
{{- /* Fail otherwise */ -}}
|
||||
{{- else -}}
|
||||
{{- fail (printf "Not a valid persistence.type (%s)" $persistenceValues.type) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $volumes = append $volumes $volume -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $volumes) -}}
|
||||
{{- $volumes | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,56 @@
|
|||
{{- /*
|
||||
Returns the value for annotations
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.metadata.annotations" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $controllerObject := .controllerObject -}}
|
||||
|
||||
{{- /* Default annotations */ -}}
|
||||
{{- $annotations := dict -}}
|
||||
|
||||
{{- /* Set to the default if it is set */ -}}
|
||||
{{- $defaultOption := get $rootContext.Values.defaultPodOptions "annotations" -}}
|
||||
{{- if not (empty $defaultOption) -}}
|
||||
{{- $annotations = merge $defaultOption $annotations -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* See if a pod-specific override is set */ -}}
|
||||
{{- if hasKey $controllerObject "pod" -}}
|
||||
{{- $podOption := get $controllerObject.pod "annotations" -}}
|
||||
{{- if not (empty $podOption) -}}
|
||||
{{- $annotations = merge $podOption $annotations -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Add configMaps checksum */ -}}
|
||||
{{- $configMapsFound := dict -}}
|
||||
{{- range $name, $configmap := $rootContext.Values.configMaps -}}
|
||||
{{- if $configmap.enabled -}}
|
||||
{{- $_ := set $configMapsFound $name (toYaml $configmap.data | sha256sum) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $configMapsFound -}}
|
||||
{{- $annotations = merge
|
||||
(dict "checksum/configMaps" (toYaml $configMapsFound | sha256sum))
|
||||
$annotations
|
||||
-}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Add Secrets checksum */ -}}
|
||||
{{- $secretsFound := dict -}}
|
||||
{{- range $name, $secret := $rootContext.Values.secrets -}}
|
||||
{{- if $secret.enabled -}}
|
||||
{{- $_ := set $secretsFound $name (toYaml $secret.stringData | sha256sum) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $secretsFound -}}
|
||||
{{- $annotations = merge
|
||||
(dict "checksum/secrets" (toYaml $secretsFound | sha256sum))
|
||||
$annotations
|
||||
-}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $annotations) -}}
|
||||
{{- $annotations | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
36
charts/library/common/templates/lib/pod/metadata/_labels.tpl
Normal file
36
charts/library/common/templates/lib/pod/metadata/_labels.tpl
Normal file
|
@ -0,0 +1,36 @@
|
|||
{{- /*
|
||||
Returns the value for labels
|
||||
*/ -}}
|
||||
{{- define "bjw-s.common.lib.pod.metadata.labels" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $controllerObject := .controllerObject -}}
|
||||
|
||||
{{- /* Default labels */ -}}
|
||||
{{- $labels := merge
|
||||
(dict "app.kubernetes.io/component" $controllerObject.identifier)
|
||||
-}}
|
||||
|
||||
{{- /* Fetch the Pod selectorLabels */ -}}
|
||||
{{- $selectorLabels := include "bjw-s.common.lib.metadata.selectorLabels" $rootContext | fromYaml -}}
|
||||
{{- if not (empty $selectorLabels) -}}
|
||||
{{- $labels = merge $selectorLabels $labels -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Set to the default if it is set */ -}}
|
||||
{{- $defaultOption := get $rootContext.Values.defaultPodOptions "labels" -}}
|
||||
{{- if not (empty $defaultOption) -}}
|
||||
{{- $labels = merge $defaultOption $labels -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* See if a pod-specific override is set */ -}}
|
||||
{{- if hasKey $controllerObject "pod" -}}
|
||||
{{- $podOption := get $controllerObject.pod "labels" -}}
|
||||
{{- if not (empty $podOption) -}}
|
||||
{{- $labels = merge $podOption $labels -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $labels) -}}
|
||||
{{- $labels | toYaml -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
7
charts/library/common/templates/lib/pvc/_validate.tpl
Normal file
7
charts/library/common/templates/lib/pvc/_validate.tpl
Normal file
|
@ -0,0 +1,7 @@
|
|||
{{/*
|
||||
Validate PVC values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.pvc.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $pvcObject := .object -}}
|
||||
{{- end -}}
|
24
charts/library/common/templates/lib/pvc/_valuesToObject.tpl
Normal file
24
charts/library/common/templates/lib/pvc/_valuesToObject.tpl
Normal file
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Convert PVC values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.pvc.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the PVC name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.nameOverride -}}
|
||||
{{- if ne $objectValues.nameOverride "-" -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the PVC object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
7
charts/library/common/templates/lib/routes/_validate.tpl
Normal file
7
charts/library/common/templates/lib/routes/_validate.tpl
Normal file
|
@ -0,0 +1,7 @@
|
|||
{{/*
|
||||
Validate Route values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.route.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $routeValues := .object -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Convert Route values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.route.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the Route name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.nameOverride -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||
{{- else -}}
|
||||
{{- if ne $identifier (include "bjw-s.common.lib.route.primary" $rootContext) -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the Route object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
7
charts/library/common/templates/lib/secret/_validate.tpl
Normal file
7
charts/library/common/templates/lib/secret/_validate.tpl
Normal file
|
@ -0,0 +1,7 @@
|
|||
{{/*
|
||||
Validate Secret values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.secret.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $secretValues := .object -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Convert Secret values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.secret.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the Secret name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.nameOverride -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||
{{- else -}}
|
||||
{{- if ne $identifier "main" -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the Secret object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -2,9 +2,12 @@
|
|||
Return the enabled ports for a given Service object.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.service.enabledPorts" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $serviceObject := .serviceObject -}}
|
||||
|
||||
{{- $enabledPorts := dict -}}
|
||||
|
||||
{{- range $name, $port := .values.ports -}}
|
||||
{{- range $name, $port := $serviceObject.ports -}}
|
||||
{{- if kindIs "map" $port -}}
|
||||
{{- $portEnabled := true -}}
|
||||
{{- if hasKey $port "enabled" -}}
|
||||
|
|
|
@ -2,17 +2,22 @@
|
|||
Return the enabled services.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.service.enabledServices" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $enabledServices := dict -}}
|
||||
{{- range $name, $service := .Values.service -}}
|
||||
|
||||
{{- range $name, $service := $rootContext.Values.service -}}
|
||||
{{- if kindIs "map" $service -}}
|
||||
{{- /* Enable Service by default, but allow override */ -}}
|
||||
{{- $serviceEnabled := true -}}
|
||||
{{- if hasKey $service "enabled" -}}
|
||||
{{- $serviceEnabled = $service.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $serviceEnabled -}}
|
||||
{{- $_ := set $enabledServices $name . -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $enabledServices | toYaml -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
{{/*
|
||||
Return a service Object by its Identifier.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.service.getByIdentifier" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
|
||||
{{- range $name, $serviceValues := $rootContext.Values.service -}}
|
||||
{{- if eq $name $identifier -}}
|
||||
{{- include "bjw-s.common.lib.service.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $serviceValues) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,18 +0,0 @@
|
|||
{{/*
|
||||
Return the primary service object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.service.primary" -}}
|
||||
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" $ | fromYaml ) }}
|
||||
|
||||
{{- $result := "" -}}
|
||||
{{- range $name, $service := $enabledServices -}}
|
||||
{{- if and (hasKey $service "primary") $service.primary -}}
|
||||
{{- $result = $name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not $result -}}
|
||||
{{- $result = keys $enabledServices | first -}}
|
||||
{{- end -}}
|
||||
{{- $result -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,30 @@
|
|||
{{/*
|
||||
Return the primary service object for a controller
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.service.primaryForController" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $controllerIdentifier := .controllerIdentifier -}}
|
||||
|
||||
{{- $identifier := "" -}}
|
||||
{{- $result := dict -}}
|
||||
|
||||
{{- /* Loop over all enabled services */ -}}
|
||||
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $rootContext) | fromYaml ) }}
|
||||
{{- if $enabledServices -}}
|
||||
{{- range $name, $service := $enabledServices -}}
|
||||
{{- /* Determine the Service that has been marked as primary */ -}}
|
||||
{{- if and (hasKey $service "primary") $service.primary -}}
|
||||
{{- $identifier = $name -}}
|
||||
{{- $result = $service -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Return the first Service if none has been explicitly marked as primary */ -}}
|
||||
{{- if not $result -}}
|
||||
{{- $identifier = keys $enabledServices | first -}}
|
||||
{{- $result = get $enabledServices $identifier -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- include "bjw-s.common.lib.service.valuesToObject" (dict "rootContext" $rootContext "id" $identifier "values" $result) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -2,17 +2,24 @@
|
|||
Return the primary port for a given Service object.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.service.primaryPort" -}}
|
||||
{{- $enabledPorts := (include "bjw-s.common.lib.service.enabledPorts" . | fromYaml) }}
|
||||
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $serviceObject := .serviceObject -}}
|
||||
{{- $result := "" -}}
|
||||
|
||||
{{- /* Loop over all enabled ports */ -}}
|
||||
{{- $enabledPorts := include "bjw-s.common.lib.service.enabledPorts" (dict "rootContext" $rootContext "serviceObject" $serviceObject) | fromYaml }}
|
||||
{{- range $name, $port := $enabledPorts -}}
|
||||
{{- /* Determine the port that has been marked as primary */ -}}
|
||||
{{- if and (hasKey $port "primary") $port.primary -}}
|
||||
{{- $result = $name -}}
|
||||
{{- $result = $port -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Return the first port if none has been explicitly marked as primary */ -}}
|
||||
{{- if not $result -}}
|
||||
{{- $result = keys $enabledPorts | first -}}
|
||||
{{- $firstPortKey := keys $enabledPorts | first -}}
|
||||
{{- $result = get $enabledPorts $firstPortKey -}}
|
||||
{{- end -}}
|
||||
{{- $result -}}
|
||||
|
||||
{{- $result | toYaml -}}
|
||||
{{- end -}}
|
||||
|
|
37
charts/library/common/templates/lib/service/_validate.tpl
Normal file
37
charts/library/common/templates/lib/service/_validate.tpl
Normal file
|
@ -0,0 +1,37 @@
|
|||
{{/*
|
||||
Validate Service values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.service.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $serviceObject := .object -}}
|
||||
|
||||
{{- if empty (get $serviceObject "controller") -}}
|
||||
{{- fail (printf "controller is required for Service. (service: %s)" $serviceObject.identifier) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Validate Service type */ -}}
|
||||
{{- $validServiceTypes := (list "ClusterIP" "LoadBalancer" "NodePort" "ExternalName" "ExternalIP") -}}
|
||||
{{- if and $serviceObject.type (not (mustHas $serviceObject.type $validServiceTypes)) -}}
|
||||
{{- fail (
|
||||
printf "invalid service type \"%s\" for Service with key \"%s\". Allowed values are [%s]"
|
||||
$serviceObject.type
|
||||
$serviceObject.identifier
|
||||
(join ", " $validServiceTypes)
|
||||
) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if ne $serviceObject.type "ExternalName" -}}
|
||||
{{- $enabledPorts := include "bjw-s.common.lib.service.enabledPorts" (dict "rootContext" $rootContext "serviceObject" $serviceObject) | fromYaml }}
|
||||
{{- /* Validate at least one port is enabled */ -}}
|
||||
{{- if not $enabledPorts -}}
|
||||
{{- fail (printf "no ports are enabled for Service with key \"%s\"" $serviceObject.identifier) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- range $name, $port := $enabledPorts -}}
|
||||
{{- /* Validate a port number is configured */ -}}
|
||||
{{- if not $port.port -}}
|
||||
{{- fail (printf "no port number is configured for port \"%s\" under Service with key \"%s\"" $name $serviceObject.identifier) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Convert Service values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.service.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the Service name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.nameOverride -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||
{{- else -}}
|
||||
{{- if not $objectValues.primary -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the Service object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,7 @@
|
|||
{{/*
|
||||
Validate ServiceAccount values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.serviceAccount.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $serviceAccountValues := .object -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,20 @@
|
|||
{{/*
|
||||
Convert Secret values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.serviceAccount.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the serviceAccount name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.name -}}
|
||||
{{- $objectName = $objectValues.name -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the serviceAccount object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,11 @@
|
|||
{{/*
|
||||
Validate serviceMonitor values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.serviceMonitor.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $serviceMonitorObject := .object -}}
|
||||
|
||||
{{- if not $serviceMonitorObject.endpoints -}}
|
||||
{{- fail (printf "endpoints are required for serviceMonitor with key \"%v\"" $serviceMonitorObject.identifier) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,24 @@
|
|||
{{/*
|
||||
Convert ServiceMonitor values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.serviceMonitor.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- /* Determine and inject the ServiceMonitor name */ -}}
|
||||
{{- $objectName := (include "bjw-s.common.lib.chart.names.fullname" $rootContext) -}}
|
||||
|
||||
{{- if $objectValues.nameOverride -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $objectValues.nameOverride -}}
|
||||
{{- else -}}
|
||||
{{- if ne $identifier "main" -}}
|
||||
{{- $objectName = printf "%s-%s" $objectName $identifier -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $objectValues "name" $objectName -}}
|
||||
{{- $_ := set $objectValues "identifier" $identifier -}}
|
||||
|
||||
{{- /* Return the ServiceMonitor object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,23 @@
|
|||
{{/*
|
||||
Validate StatefulSet values
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.statefulset.validate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $statefulsetValues := .object -}}
|
||||
|
||||
{{- if and (ne $statefulsetValues.strategy "OnDelete") (ne $statefulsetValues.strategy "RollingUpdate") -}}
|
||||
{{- fail (printf "Not a valid strategy type for StatefulSet. (controller: %s, strategy: %s)" $statefulsetValues.identifier $statefulsetValues.strategy) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty (dig "statefulset" "volumeClaimTemplates" "" $statefulsetValues)) -}}
|
||||
{{- range $index, $volumeClaimTemplate := $statefulsetValues.statefulset.volumeClaimTemplates -}}
|
||||
{{- if empty (get . "size") -}}
|
||||
{{- fail (printf "size is required for volumeClaimTemplate. (controller: %s, volumeClaimTemplate: %s)" $statefulsetValues.identifier $volumeClaimTemplate.name) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if empty (get . "accessMode") -}}
|
||||
{{- fail (printf "accessMode is required for volumeClaimTemplate. (controller: %s, volumeClaimTemplate: %s)" $statefulsetValues.identifier $volumeClaimTemplate.name) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,14 @@
|
|||
{{/*
|
||||
Convert StatefulSet values to an object
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.statefulset.valuesToObject" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $identifier := .id -}}
|
||||
{{- $objectValues := .values -}}
|
||||
|
||||
{{- $strategy := default "RollingUpdate" $objectValues.strategy -}}
|
||||
{{- $_ := set $objectValues "strategy" $strategy -}}
|
||||
|
||||
{{- /* Return the StatefulSet object */ -}}
|
||||
{{- $objectValues | toYaml -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,45 @@
|
|||
{{/*
|
||||
Basic VolumeClaimTemplate template
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.statefulset.volumeclaimtemplate" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $values := .values -}}
|
||||
|
||||
metadata:
|
||||
name: {{ $values.name }}
|
||||
{{- with ($values.labels | default dict) }}
|
||||
labels: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with ($values.annotations | default dict) }}
|
||||
annotations: {{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ $values.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ $values.size | quote }}
|
||||
{{- if $values.storageClass }}
|
||||
storageClassName: {{ if (eq "-" $values.storageClass) }}""{{- else }}{{ $values.storageClass | quote }}{{- end }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
VolumeClaimTemplates for StatefulSet
|
||||
*/}}
|
||||
{{- define "bjw-s.common.lib.statefulset.volumeclaimtemplates" -}}
|
||||
{{- $rootContext := .rootContext -}}
|
||||
{{- $statefulsetObject := .statefulsetObject -}}
|
||||
|
||||
{{- /* Default to empty list */ -}}
|
||||
{{- $volumeClaimTemplates := list -}}
|
||||
|
||||
{{- range $index, $volumeClaimTemplate := $statefulsetObject.statefulset.volumeClaimTemplates }}
|
||||
{{- $vct := include "bjw-s.common.lib.statefulset.volumeclaimtemplate" (dict "rootContext" $rootContext "values" $volumeClaimTemplate) -}}
|
||||
{{- $volumeClaimTemplates = append $volumeClaimTemplates ($vct | fromYaml) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if not (empty $volumeClaimTemplates) -}}
|
||||
{{ $volumeClaimTemplates | toYaml }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -2,29 +2,14 @@
|
|||
Secondary entrypoint and primary loader for the common chart
|
||||
*/}}
|
||||
{{- define "bjw-s.common.loader.generate" -}}
|
||||
{{- /* Enable code-server add-on if required */ -}}
|
||||
{{- if .Values.addons.codeserver.enabled -}}
|
||||
{{- include "bjw-s.common.addon.codeserver" . | nindent 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Enable VPN add-on if required */ -}}
|
||||
{{- if .Values.addons.vpn.enabled -}}
|
||||
{{- include "bjw-s.common.addon.vpn" . | nindent 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Enable netshoot add-on if required */ -}}
|
||||
{{- if .Values.addons.netshoot.enabled -}}
|
||||
{{- include "bjw-s.common.addon.netshoot" . | nindent 0 -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* Build the templates */ -}}
|
||||
{{- include "bjw-s.common.render.pvcs" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.serviceAccount" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.controller" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.controllers" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.services" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.ingresses" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.serviceMonitors" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.routes" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.configmaps" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.configMaps" . | nindent 0 -}}
|
||||
{{- include "bjw-s.common.render.secrets" . | nindent 0 -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -1,19 +1,26 @@
|
|||
{{/*
|
||||
Renders the configMap objects required by the chart.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.render.configmaps" -}}
|
||||
{{- define "bjw-s.common.render.configMaps" -}}
|
||||
{{- /* Generate named configMaps as required */ -}}
|
||||
{{- range $name, $configmap := .Values.configMaps -}}
|
||||
{{- if $configmap.enabled -}}
|
||||
{{- $configmapValues := $configmap -}}
|
||||
{{- range $key, $configMap := .Values.configMaps }}
|
||||
{{- /* Enable configMap by default, but allow override */ -}}
|
||||
{{- $configMapEnabled := true -}}
|
||||
{{- if hasKey $configMap "enabled" -}}
|
||||
{{- $configMapEnabled = $configMap.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* set the default nameOverride to the configMap name */ -}}
|
||||
{{- if not $configmapValues.nameOverride -}}
|
||||
{{- $_ := set $configmapValues "nameOverride" $name -}}
|
||||
{{ end -}}
|
||||
{{- if $configMapEnabled -}}
|
||||
{{- $configMapValues := (mustDeepCopy $configMap) -}}
|
||||
|
||||
{{- $_ := set $ "ObjectValues" (dict "configmap" $configmapValues) -}}
|
||||
{{- include "bjw-s.common.class.configmap" $ | nindent 0 -}}
|
||||
{{- /* Create object from the raw configMap values */ -}}
|
||||
{{- $configMapObject := (include "bjw-s.common.lib.configMap.valuesToObject" (dict "rootContext" $ "id" $key "values" $configMapValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the configMap before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.configMap.validate" (dict "rootContext" $ "object" $configMapObject) -}}
|
||||
|
||||
{{/* Include the configMap class */}}
|
||||
{{- include "bjw-s.common.class.configMap" (dict "rootContext" $ "object" $configMapObject) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
{{/*
|
||||
Renders the controller object required by the chart.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.render.controller" -}}
|
||||
{{- if .Values.controller.enabled -}}
|
||||
{{- if eq .Values.controller.type "deployment" -}}
|
||||
{{- include "bjw-s.common.class.deployment" . | nindent 0 -}}
|
||||
{{- else if eq .Values.controller.type "cronjob" -}}
|
||||
{{- include "bjw-s.common.class.cronjob" . | nindent 0 -}}
|
||||
{{ else if eq .Values.controller.type "daemonset" -}}
|
||||
{{- include "bjw-s.common.class.daemonset" . | nindent 0 -}}
|
||||
{{ else if eq .Values.controller.type "statefulset" -}}
|
||||
{{- include "bjw-s.common.class.statefulset" . | nindent 0 -}}
|
||||
{{ else -}}
|
||||
{{- fail (printf "Not a valid controller.type (%s)" .Values.controller.type) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
41
charts/library/common/templates/render/_controllers.tpl
Normal file
41
charts/library/common/templates/render/_controllers.tpl
Normal file
|
@ -0,0 +1,41 @@
|
|||
{{/*
|
||||
Renders the controller objects required by the chart.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.render.controllers" -}}
|
||||
{{- /* Generate named controller objects as required */ -}}
|
||||
{{- range $key, $controller := .Values.controllers -}}
|
||||
{{- /* Enable controller by default, but allow override */ -}}
|
||||
{{- $controllerEnabled := true -}}
|
||||
{{- if hasKey $controller "enabled" -}}
|
||||
{{- $controllerEnabled = $controller.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $controllerEnabled -}}
|
||||
{{- $controllerValues := $controller -}}
|
||||
|
||||
{{- /* Create object from the raw controller values */ -}}
|
||||
{{- $controllerObject := (include "bjw-s.common.lib.controller.valuesToObject" (dict "rootContext" $ "id" $key "values" $controllerValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the controller before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.controller.validate" (dict "rootContext" $ "object" $controllerObject) -}}
|
||||
|
||||
{{- if eq $controllerObject.type "deployment" -}}
|
||||
{{- $deploymentObject := (include "bjw-s.common.lib.deployment.valuesToObject" (dict "rootContext" $ "id" $key "values" $controllerObject)) | fromYaml -}}
|
||||
{{- include "bjw-s.common.lib.deployment.validate" (dict "rootContext" $ "object" $deploymentObject) -}}
|
||||
{{- include "bjw-s.common.class.deployment" (dict "rootContext" $ "object" $deploymentObject) | nindent 0 -}}
|
||||
{{- else if eq $controllerObject.type "cronjob" -}}
|
||||
{{- $cronjobObject := (include "bjw-s.common.lib.cronjob.valuesToObject" (dict "rootContext" $ "id" $key "values" $controllerObject)) | fromYaml -}}
|
||||
{{- include "bjw-s.common.lib.cronjob.validate" (dict "rootContext" $ "object" $cronjobObject) -}}
|
||||
{{- include "bjw-s.common.class.cronjob" (dict "rootContext" $ "object" $cronjobObject) | nindent 0 -}}
|
||||
{{- else if eq $controllerObject.type "daemonset" -}}
|
||||
{{- $daemonsetObject := (include "bjw-s.common.lib.daemonset.valuesToObject" (dict "rootContext" $ "id" $key "values" $controllerObject)) | fromYaml -}}
|
||||
{{- include "bjw-s.common.lib.daemonset.validate" (dict "rootContext" $ "object" $daemonsetObject) -}}
|
||||
{{- include "bjw-s.common.class.daemonset" (dict "rootContext" $ "object" $daemonsetObject) | nindent 0 -}}
|
||||
{{- else if eq $controllerObject.type "statefulset" -}}
|
||||
{{- $statefulsetObject := (include "bjw-s.common.lib.statefulset.valuesToObject" (dict "rootContext" $ "id" $key "values" $controllerObject)) | fromYaml -}}
|
||||
{{- include "bjw-s.common.lib.statefulset.validate" (dict "rootContext" $ "object" $statefulsetObject) -}}
|
||||
{{- include "bjw-s.common.class.statefulset" (dict "rootContext" $ "object" $statefulsetObject) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -2,18 +2,25 @@
|
|||
Renders the Ingress objects required by the chart.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.render.ingresses" -}}
|
||||
{{- /* Generate named ingresses as required */ -}}
|
||||
{{- range $name, $ingress := .Values.ingress }}
|
||||
{{- if $ingress.enabled -}}
|
||||
{{- $ingressValues := $ingress -}}
|
||||
{{- /* Generate named Ingresses as required */ -}}
|
||||
{{- range $key, $ingress := .Values.ingress }}
|
||||
{{- /* Enable Ingress by default, but allow override */ -}}
|
||||
{{- $ingressEnabled := true -}}
|
||||
{{- if hasKey $ingress "enabled" -}}
|
||||
{{- $ingressEnabled = $ingress.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* set defaults */}}
|
||||
{{- if and (not $ingressValues.nameOverride) (ne $name (include "bjw-s.common.lib.ingress.primary" $)) -}}
|
||||
{{- $_ := set $ingressValues "nameOverride" $name -}}
|
||||
{{- end -}}
|
||||
{{- if $ingressEnabled -}}
|
||||
{{- $ingressValues := (mustDeepCopy $ingress) -}}
|
||||
|
||||
{{- $_ := set $ "ObjectValues" (dict "ingress" $ingressValues) -}}
|
||||
{{- include "bjw-s.common.class.ingress" $ | nindent 0 -}}
|
||||
{{- /* Create object from the raw ingress values */ -}}
|
||||
{{- $ingressObject := (include "bjw-s.common.lib.ingress.valuesToObject" (dict "rootContext" $ "id" $key "values" $ingressValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the ingress before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.ingress.validate" (dict "rootContext" $ "object" $ingressObject) -}}
|
||||
|
||||
{{/* Include the ingress class */}}
|
||||
{{- include "bjw-s.common.class.ingress" (dict "rootContext" $ "object" $ingressObject) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -3,14 +3,18 @@ Renders the Persistent Volume Claim objects required by the chart.
|
|||
*/}}
|
||||
{{- define "bjw-s.common.render.pvcs" -}}
|
||||
{{- /* Generate pvc as required */ -}}
|
||||
{{- range $index, $PVC := .Values.persistence -}}
|
||||
{{- if and $PVC.enabled (eq (default "pvc" $PVC.type) "pvc") (not $PVC.existingClaim) -}}
|
||||
{{- $persistenceValues := $PVC -}}
|
||||
{{- if not $persistenceValues.nameOverride -}}
|
||||
{{- $_ := set $persistenceValues "nameOverride" $index -}}
|
||||
{{- end -}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "persistence" $persistenceValues) -}}
|
||||
{{- include "bjw-s.common.class.pvc" $ | nindent 0 -}}
|
||||
{{- range $key, $pvc := .Values.persistence -}}
|
||||
{{- if and $pvc.enabled (eq (default "persistentVolumeClaim" $pvc.type) "persistentVolumeClaim") (not $pvc.existingClaim) -}}
|
||||
{{- $pvcValues := (mustDeepCopy $pvc) -}}
|
||||
|
||||
{{- /* Create object from the raw PVC values */ -}}
|
||||
{{- $pvcObject := (include "bjw-s.common.lib.pvc.valuesToObject" (dict "rootContext" $ "id" $key "values" $pvcValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the PVC before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.pvc.validate" (dict "rootContext" $ "object" $pvcValues) -}}
|
||||
|
||||
{{- /* Include the PVC class */ -}}
|
||||
{{- include "bjw-s.common.class.pvc" (dict "rootContext" $ "object" $pvcValues) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -1,18 +1,24 @@
|
|||
{{/* Renders the Route objects required by the chart */}}
|
||||
{{- define "bjw-s.common.render.routes" -}}
|
||||
{{- /* Generate named routes as required */ -}}
|
||||
{{- range $name, $route := .Values.route }}
|
||||
{{- if $route.enabled -}}
|
||||
{{- $routeValues := $route -}}
|
||||
{{- range $key, $route := .Values.route }}
|
||||
{{- /* Enable Route by default, but allow override */ -}}
|
||||
{{- $routeEnabled := true -}}
|
||||
{{- if hasKey $route "enabled" -}}
|
||||
{{- $routeEnabled = $route.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* set defaults */}}
|
||||
{{- if and (not $routeValues.nameOverride) (ne $name (include "bjw-s.common.lib.route.primary" $)) -}}
|
||||
{{- $_ := set $routeValues "nameOverride" $name -}}
|
||||
{{- end -}}
|
||||
{{- if $routeEnabled -}}
|
||||
{{- $routeValues := (mustDeepCopy $route) -}}
|
||||
|
||||
{{- $_ := set $ "ObjectValues" (dict "route" $routeValues) -}}
|
||||
{{- include "bjw-s.common.class.route" $ | nindent 0 -}}
|
||||
{{- $_ := unset $.ObjectValues "route" -}}
|
||||
{{- /* Create object from the raw Route values */ -}}
|
||||
{{- $routeObject := (include "bjw-s.common.lib.route.valuesToObject" (dict "rootContext" $ "id" $key "values" $routeValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the Route before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.route.validate" (dict "rootContext" $ "object" $routeObject) -}}
|
||||
|
||||
{{- /* Include the Route class */ -}}
|
||||
{{- include "bjw-s.common.class.route" (dict "rootContext" $ "object" $routeObject) | nindent 0 -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
|
@ -3,17 +3,24 @@ Renders the Secret objects required by the chart.
|
|||
*/}}
|
||||
{{- define "bjw-s.common.render.secrets" -}}
|
||||
{{- /* Generate named Secrets as required */ -}}
|
||||
{{- range $name, $secret := .Values.secrets -}}
|
||||
{{- if $secret.enabled -}}
|
||||
{{- $secretValues := $secret -}}
|
||||
{{- range $key, $secret := .Values.secrets }}
|
||||
{{- /* Enable Secret by default, but allow override */ -}}
|
||||
{{- $secretEnabled := true -}}
|
||||
{{- if hasKey $secret "enabled" -}}
|
||||
{{- $secretEnabled = $secret.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /* set the default nameOverride to the Secret name */ -}}
|
||||
{{- if not $secretValues.nameOverride -}}
|
||||
{{- $_ := set $secretValues "nameOverride" $name -}}
|
||||
{{ end -}}
|
||||
{{- if $secretEnabled -}}
|
||||
{{- $secretValues := (mustDeepCopy $secret) -}}
|
||||
|
||||
{{- $_ := set $ "ObjectValues" (dict "secret" $secretValues) -}}
|
||||
{{- include "bjw-s.common.class.secret" $ | nindent 0 -}}
|
||||
{{- /* Create object from the raw Secret values */ -}}
|
||||
{{- $secretObject := (include "bjw-s.common.lib.secret.valuesToObject" (dict "rootContext" $ "id" $key "values" $secretValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the Secret before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.secret.validate" (dict "rootContext" $ "object" $secretObject) -}}
|
||||
|
||||
{{/* Include the Secret class */}}
|
||||
{{- include "bjw-s.common.class.secret" (dict "rootContext" $ "object" $secretObject) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -2,19 +2,25 @@
|
|||
Renders the serviceMonitor objects required by the chart.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.render.serviceMonitors" -}}
|
||||
{{- /* Generate named services as required */ -}}
|
||||
{{- range $name, $serviceMonitor := .Values.serviceMonitor -}}
|
||||
{{- if $serviceMonitor.enabled -}}
|
||||
{{- $serviceMonitorValues := $serviceMonitor -}}
|
||||
{{- /* Generate named serviceMonitors as required */ -}}
|
||||
{{- range $key, $serviceMonitor := .Values.serviceMonitor -}}
|
||||
{{- /* Enable ServiceMonitor by default, but allow override */ -}}
|
||||
{{- $serviceMonitorEnabled := true -}}
|
||||
{{- if hasKey $serviceMonitor "enabled" -}}
|
||||
{{- $serviceMonitorEnabled = $serviceMonitor.enabled -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if and (not $serviceMonitorValues.nameOverride) (ne $name "main") -}}
|
||||
{{- $_ := set $serviceMonitorValues "nameOverride" $name -}}
|
||||
{{- end -}}
|
||||
{{- if $serviceMonitorEnabled -}}
|
||||
{{- $serviceMonitorValues := (mustDeepCopy $serviceMonitor) -}}
|
||||
|
||||
{{- /* Create object from the raw ServiceMonitor values */ -}}
|
||||
{{- $serviceMonitorObject := (include "bjw-s.common.lib.serviceMonitor.valuesToObject" (dict "rootContext" $ "id" $key "values" $serviceMonitorValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the serviceMonitor before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.serviceMonitor.validate" (dict "rootContext" $ "object" $serviceMonitorObject) -}}
|
||||
|
||||
{{/* Include the serviceMonitor class */}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "serviceMonitor" $serviceMonitorValues) -}}
|
||||
{{- include "bjw-s.common.class.serviceMonitor" $ | nindent 0 -}}
|
||||
{{- $_ := unset $.ObjectValues "serviceMonitor" -}}
|
||||
{{- include "bjw-s.common.class.serviceMonitor" (dict "rootContext" $ "object" $serviceMonitorObject) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -3,11 +3,18 @@ Renders the serviceAccount object required by the chart.
|
|||
*/}}
|
||||
{{- define "bjw-s.common.render.serviceAccount" -}}
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
{{- $serviceAccountValues := (mustDeepCopy .Values.serviceAccount) -}}
|
||||
|
||||
{{- /* Create object from the raw ServiceAccount values */ -}}
|
||||
{{- $serviceAccountObject := (include "bjw-s.common.lib.serviceAccount.valuesToObject" (dict "rootContext" $ "id" "default" "values" $serviceAccountValues)) | fromYaml -}}
|
||||
|
||||
{{- /* Perform validations on the ServiceAccount before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.serviceAccount.validate" (dict "rootContext" $ "object" $serviceAccountObject) -}}
|
||||
|
||||
{{/* Include the serviceAccount class */}}
|
||||
{{- include "bjw-s.common.class.serviceAccount" (dict "rootContext" $ "object" $serviceAccountObject) | nindent 0 -}}
|
||||
|
||||
{{- /* Create a service account secret */ -}}
|
||||
{{- $serviceAccountName := include "bjw-s.common.lib.chart.names.serviceAccountName" . -}}
|
||||
{{- $_ := set .Values.secrets "sa-token" (dict "enabled" true "annotations" (dict "kubernetes.io/service-account.name" $serviceAccountName) "type" "kubernetes.io/service-account-token") -}}
|
||||
|
||||
{{- include "bjw-s.common.class.serviceAccount" $ | nindent 0 -}}
|
||||
{{- $_ := set .Values.secrets "sa-token" (dict "enabled" true "annotations" (dict "kubernetes.io/service-account.name" $serviceAccountObject.name) "type" "kubernetes.io/service-account-token") -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
|
@ -2,24 +2,18 @@
|
|||
Renders the Service objects required by the chart.
|
||||
*/}}
|
||||
{{- define "bjw-s.common.render.services" -}}
|
||||
{{- /* Generate named services as required */ -}}
|
||||
{{- range $name, $service := .Values.service -}}
|
||||
{{- $serviceEnabled := true -}}
|
||||
{{- if hasKey $service "enabled" -}}
|
||||
{{- $serviceEnabled = $service.enabled -}}
|
||||
{{- end -}}
|
||||
{{- if $serviceEnabled -}}
|
||||
{{- $serviceValues := $service -}}
|
||||
{{- /* Generate named Services as required */ -}}
|
||||
{{- $enabledServices := (include "bjw-s.common.lib.service.enabledServices" (dict "rootContext" $) | fromYaml ) -}}
|
||||
{{- range $key, $svc := $enabledServices -}}
|
||||
{{- $serviceValues := (mustDeepCopy $svc) -}}
|
||||
|
||||
{{/* set the default nameOverride to the service name */}}
|
||||
{{- if and (not $serviceValues.nameOverride) (ne $name (include "bjw-s.common.lib.service.primary" $)) -}}
|
||||
{{- $_ := set $serviceValues "nameOverride" $name -}}
|
||||
{{ end -}}
|
||||
{{- /* Create object from the raw Service values */ -}}
|
||||
{{- $serviceObject := (include "bjw-s.common.lib.service.valuesToObject" (dict "rootContext" $ "id" $key "values" $serviceValues)) | fromYaml -}}
|
||||
|
||||
{{/* Include the Service class */}}
|
||||
{{- $_ := set $ "ObjectValues" (dict "service" $serviceValues) -}}
|
||||
{{- include "bjw-s.common.class.service" $ | nindent 0 -}}
|
||||
{{- $_ := unset $.ObjectValues "service" -}}
|
||||
{{- end -}}
|
||||
{{- /* Perform validations on the Service before rendering */ -}}
|
||||
{{- include "bjw-s.common.lib.service.validate" (dict "rootContext" $ "object" $serviceObject) -}}
|
||||
|
||||
{{- /* Include the Service class */ -}}
|
||||
{{- include "bjw-s.common.class.service" (dict "rootContext" $ "object" $serviceObject) | nindent 0 -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue