Move spec to functions and better format the structure for workload
This commit is contained in:
parent
e174f013dc
commit
6716877fa7
|
@ -0,0 +1,50 @@
|
|||
{{/*
|
||||
Container Command
|
||||
*/}}
|
||||
{{- define "containerCommand" }}
|
||||
{{- if .Values.containerCommand }}
|
||||
command:
|
||||
{{- range .Values.containerCommand }}
|
||||
- {{ . | quote}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Container Args
|
||||
*/}}
|
||||
{{- define "containerArgs" }}
|
||||
{{- if .Values.containerArgs }}
|
||||
args:
|
||||
{{- range .Values.containerArgs }}
|
||||
- {{ . | quote}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Container Environment Variables
|
||||
*/}}
|
||||
{{- define "containerEnvVariables" }}
|
||||
{{- if .Values.containerEnvironmentVariables }}
|
||||
env:
|
||||
{{- range .Values.containerEnvironmentVariables }}
|
||||
- name: {{ .name | quote }}
|
||||
value: {{ .value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Container Liveness Probe
|
||||
*/}}
|
||||
{{- define "containerLivenssProbe" }}
|
||||
{{- if .Values.livenessProbe }}
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
{{ toYaml .Values.livenessProbe.command | indent 16 }}
|
||||
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.periodSeconds }}
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -61,50 +61,3 @@ Create the name of the service account to use
|
|||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Check if workload type is a deployment
|
||||
*/}}
|
||||
{{- define "workloadIsDeployment" }}
|
||||
{{- if eq .Values.workloadType "Deployment" }}
|
||||
{{- true -}}
|
||||
{{- else }}
|
||||
{{- false -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Check if workload type is a cronjob
|
||||
*/}}
|
||||
{{- define "workloadIsCronJob" }}
|
||||
{{- if eq .Values.workloadType "CronJob" }}
|
||||
{{- true -}}
|
||||
{{- else }}
|
||||
{{- false -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Get API Version based on workload type
|
||||
*/}}
|
||||
{{- define "apiVersion" -}}
|
||||
{{- if eq (include "workloadIsDeployment" .) "true" }}
|
||||
{{- printf "apps/v1" }}
|
||||
{{- else if eq (include "workloadIsCronJob" .) "true" }}
|
||||
{{- printf "batch/v1beta1" }}
|
||||
{{- else }}
|
||||
{{- printf "batch/v1" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Get Restart policy based on workload type
|
||||
*/}}
|
||||
{{- define "restartPolicy" -}}
|
||||
{{- if eq (include "workloadIsDeployment" .) "true" }}
|
||||
{{- printf "%s" .Values.restartPolicy }}
|
||||
{{- else }}
|
||||
{{- printf "%s" .Values.jobRestartPolicy }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
{{/*
|
||||
Volumes Configuration
|
||||
*/}}
|
||||
{{- define "volumeConfiguration" }}
|
||||
{{- if or .Values.persistentVolumeClaims .Values.hostPathVolumes }}
|
||||
volumes:
|
||||
{{- range $index, $hostPathConfiguration := .Values.hostPathVolumes }}
|
||||
- name: ix-host-path-{{ $.Release.Name }}-{{ $index }}
|
||||
hostPath:
|
||||
path: {{ $hostPathConfiguration.hostPath }}
|
||||
{{- end }}
|
||||
{{- range $index, $claim := .Values.persistentVolumeClaims }}
|
||||
- name: ix-pv-{{ $.Release.Name }}-{{ $index }}
|
||||
persistentVolumeClaim:
|
||||
claimName: ix-pv-claim-{{ $.Release.Name }}-{{ $index }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Volume Mounts Configuration
|
||||
*/}}
|
||||
{{- define "volumeMountsConfiguration" }}
|
||||
{{- if or .Values.hostPathVolumes .Values.persistentVolumeClaims }}
|
||||
volumeMounts:
|
||||
{{- range $index, $hostPathConfiguration := .Values.hostPathVolumes }}
|
||||
- mountPath: {{ $hostPathConfiguration.mountPath }}
|
||||
name: ix-host-path-{{ $.Release.Name }}-{{ $index }}
|
||||
readOnly: {{ $hostPathConfiguration.readOnly }}
|
||||
{{- end }}
|
||||
{{- range $index, $claim := .Values.persistentVolumeClaims }}
|
||||
- mountPath: {{ $claim.mountPath }}
|
||||
name: ix-pv-{{ $.Release.Name }}-{{ $index }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -0,0 +1,130 @@
|
|||
{{/*
|
||||
Check if workload type is a deployment
|
||||
*/}}
|
||||
{{- define "workloadIsDeployment" }}
|
||||
{{- if eq .Values.workloadType "Deployment" }}
|
||||
{{- true -}}
|
||||
{{- else }}
|
||||
{{- false -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Check if workload type is a cronjob
|
||||
*/}}
|
||||
{{- define "workloadIsCronJob" }}
|
||||
{{- if eq .Values.workloadType "CronJob" }}
|
||||
{{- true -}}
|
||||
{{- else }}
|
||||
{{- false -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Get API Version based on workload type
|
||||
*/}}
|
||||
{{- define "apiVersion" -}}
|
||||
{{- if eq (include "workloadIsDeployment" .) "true" }}
|
||||
{{- printf "apps/v1" }}
|
||||
{{- else if eq (include "workloadIsCronJob" .) "true" }}
|
||||
{{- printf "batch/v1beta1" }}
|
||||
{{- else }}
|
||||
{{- printf "batch/v1" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Get Restart policy based on workload type
|
||||
*/}}
|
||||
{{- define "restartPolicy" -}}
|
||||
{{- if eq (include "workloadIsDeployment" .) "true" }}
|
||||
{{- printf "%s" .Values.restartPolicy }}
|
||||
{{- else }}
|
||||
{{- printf "%s" .Values.jobRestartPolicy }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Pod specification
|
||||
*/}}
|
||||
{{- define "podSepc" }}
|
||||
restartPolicy: {{ template "restartPolicy" . }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
{{- include "volumeMountsConfiguration" . | indent 2}}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default "latest" }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
{{- include "containerCommand" | indent 2 }}
|
||||
{{- include "containerArgs" | indent 2 }}
|
||||
{{- include "containerEnvVariables" | indent 2 }}
|
||||
{{- include "containerLivenssProbe" | indent 2 }}
|
||||
{{- include "volumeConfiguration" . }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Annotations for workload
|
||||
*/}}
|
||||
{{- define "workloadAnnotations" }}
|
||||
rollme: {{ randAlphaNum 5 | quote }}
|
||||
{{- if .Values.ixExternalInterfacesConfigurationNames }}
|
||||
k8s.v1.cni.cncf.io/networks: {{ join ", " .Values.ixExternalInterfacesConfigurationNames }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Deployment Spec
|
||||
*/}}
|
||||
{{- define "deploymentSpec" }}
|
||||
strategy:
|
||||
type: {{ .Values.updateStrategy }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "ix-chart.selectorLabels" . | nindent 2 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "ix-chart.selectorLabels" . | nindent 6 }}
|
||||
annotations:
|
||||
{{- include "workloadAnnotations" . | nindent 6 }}
|
||||
spec:
|
||||
{{- include "podSepc" . | indent 4 }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Job Spec Common
|
||||
*/}}
|
||||
{{- define "jobSpecCommon" }}
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "ix-chart.selectorLabels" . | nindent 4 }}
|
||||
annotations:
|
||||
{{- include "workloadAnnotations" . | nindent 4 }}
|
||||
spec:
|
||||
{{- include "podSepc" . | indent 2 }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{/*
|
||||
Job Spec
|
||||
*/}}
|
||||
{{- define "jobSpec" }}
|
||||
template:
|
||||
{{ include "jobSpecCommon" . | nindent 2 }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
CronJob Spec
|
||||
*/}}
|
||||
{{- define "cronJobSpec" }}
|
||||
schedule: {{ .Values.cronSchedule | quote }}
|
||||
jobTemplate:
|
||||
spec:
|
||||
{{ include "jobSpec" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -1,88 +0,0 @@
|
|||
apiVersion: {{ template "apiVersion" . }}
|
||||
kind: {{ .Values.workloadType }}
|
||||
metadata:
|
||||
name: {{ include "ix-chart.fullname" . }}
|
||||
labels:
|
||||
{{- include "ix-chart.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if eq (include "workloadIsDeployment" .) "true" }}
|
||||
strategy:
|
||||
type: {{ .Values.updateStrategy }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "ix-chart.selectorLabels" . | nindent 6 }}
|
||||
{{- end }}
|
||||
{{- if ne (include "workloadIsCronJob" .) "true" }}
|
||||
template:
|
||||
{{- else }}
|
||||
schedule: {{ .Values.cronSchedule | quote }}
|
||||
jobTemplate:
|
||||
{{- end }}
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "ix-chart.selectorLabels" . | nindent 8 }}
|
||||
annotations:
|
||||
rollme: {{ randAlphaNum 5 | quote }}
|
||||
{{- if .Values.ixExternalInterfacesConfigurationNames }}
|
||||
k8s.v1.cni.cncf.io/networks: {{ join ", " .Values.ixExternalInterfacesConfigurationNames }}
|
||||
{{- end }}
|
||||
spec:
|
||||
restartPolicy: {{ template "restartPolicy" . }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
{{- if or .Values.hostPathVolumes .Values.persistentVolumeClaims }}
|
||||
volumeMounts:
|
||||
{{- range $index, $hostPathConfiguration := .Values.hostPathVolumes }}
|
||||
- mountPath: {{ $hostPathConfiguration.mountPath }}
|
||||
name: ix-host-path-{{ $.Release.Name }}-{{ $index }}
|
||||
readOnly: {{ $hostPathConfiguration.readOnly }}
|
||||
{{- end }}
|
||||
{{- range $index, $claim := .Values.persistentVolumeClaims }}
|
||||
- mountPath: {{ $claim.mountPath }}
|
||||
name: ix-pv-{{ $.Release.Name }}-{{ $index }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default "latest" }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
{{- if .Values.containerCommand }}
|
||||
command:
|
||||
{{- range .Values.containerCommand }}
|
||||
- {{ . | quote}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.containerArgs }}
|
||||
args:
|
||||
{{- range .Values.containerArgs }}
|
||||
- {{ . | quote}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.containerEnvironmentVariables }}
|
||||
env:
|
||||
{{- range .Values.containerEnvironmentVariables }}
|
||||
- name: {{ .name | quote }}
|
||||
value: {{ .value | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.livenessProbe }}
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
{{ toYaml .Values.livenessProbe.command | indent 16 }}
|
||||
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ .Values.periodSeconds }}
|
||||
{{- end }}
|
||||
{{- if or .Values.persistentVolumeClaims .Values.hostPathVolumes }}
|
||||
volumes:
|
||||
{{- range $index, $hostPathConfiguration := .Values.hostPathVolumes }}
|
||||
- name: ix-host-path-{{ $.Release.Name }}-{{ $index }}
|
||||
hostPath:
|
||||
path: {{ $hostPathConfiguration.hostPath }}
|
||||
{{- end }}
|
||||
{{- range $index, $claim := .Values.persistentVolumeClaims }}
|
||||
- name: ix-pv-{{ $.Release.Name }}-{{ $index }}
|
||||
persistentVolumeClaim:
|
||||
claimName: ix-pv-claim-{{ $.Release.Name }}-{{ $index }}
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: {{ template "apiVersion" . }}
|
||||
kind: {{ .Values.workloadType }}
|
||||
metadata:
|
||||
name: {{ include "ix-chart.fullname" . }}
|
||||
labels:
|
||||
{{- include "ix-chart.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if eq (include "workloadIsDeployment" .) "true" }}
|
||||
{{ include "deploymentSpec" | nindent 2 }}
|
||||
{{- else if ne (include "workloadIsCronJob" .) "true" }}
|
||||
{{ include "cronJobSpec" . | nindent 2 }}
|
||||
{{- else }}}
|
||||
{{ include "jobSpec" . | nindent 2 }}
|
||||
{{- end }}
|
Loading…
Reference in New Issue