_workload.tpl 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. {{/*
  2. Check if workload type is a deployment
  3. */}}
  4. {{- define "workloadIsDeployment" }}
  5. {{- if eq .Values.workloadType "Deployment" }}
  6. {{- true -}}
  7. {{- else }}
  8. {{- false -}}
  9. {{- end }}
  10. {{- end }}
  11. {{/*
  12. Check if workload type is a cronjob
  13. */}}
  14. {{- define "workloadIsCronJob" }}
  15. {{- if eq .Values.workloadType "CronJob" }}
  16. {{- true -}}
  17. {{- else }}
  18. {{- false -}}
  19. {{- end }}
  20. {{- end }}
  21. {{/*
  22. Get API Version based on workload type
  23. */}}
  24. {{- define "apiVersion" -}}
  25. {{- if eq (include "workloadIsDeployment" .) "true" }}
  26. {{- printf "apps/v1" }}
  27. {{- else if eq (include "workloadIsCronJob" .) "true" }}
  28. {{- printf "batch/v1beta1" }}
  29. {{- else }}
  30. {{- printf "batch/v1" }}
  31. {{- end }}
  32. {{- end }}
  33. {{/*
  34. Get Restart policy based on workload type
  35. */}}
  36. {{- define "restartPolicy" -}}
  37. {{- if eq (include "workloadIsDeployment" .) "true" }}
  38. {{- printf "%s" .Values.restartPolicy }}
  39. {{- else }}
  40. {{- printf "%s" .Values.jobRestartPolicy }}
  41. {{- end }}
  42. {{- end }}
  43. {{/*
  44. Pod specification
  45. */}}
  46. {{- define "podSepc" }}
  47. restartPolicy: {{ template "restartPolicy" . }}
  48. containers:
  49. - name: {{ .Chart.Name }}
  50. {{- include "volumeMountsConfiguration" . | indent 2}}
  51. securityContext:
  52. {{- toYaml .Values.securityContext | nindent 12 }}
  53. image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default "latest" }}"
  54. imagePullPolicy: {{ .Values.image.pullPolicy }}
  55. {{- include "containerCommand" . | indent 2 }}
  56. {{- include "containerArgs" . | indent 2 }}
  57. {{- include "containerEnvVariables" . | indent 2 }}
  58. {{- include "containerLivenssProbe" . | indent 2 }}
  59. {{- include "containerPorts" . | indent 2 }}
  60. {{- include "containerResourceConfiguration" . | indent 2 }}
  61. {{- include "volumeConfiguration" . }}
  62. {{- include "dnsConfiguration" . }}
  63. {{- end }}
  64. {{/*
  65. Annotations for workload
  66. */}}
  67. {{- define "workloadAnnotations" }}
  68. rollme: {{ randAlphaNum 5 | quote }}
  69. {{- if .Values.ixExternalInterfacesConfigurationNames }}
  70. k8s.v1.cni.cncf.io/networks: {{ join ", " .Values.ixExternalInterfacesConfigurationNames }}
  71. {{- end }}
  72. {{- end }}
  73. {{/*
  74. Metadata for workload
  75. */}}
  76. {{- define "commonMetadataWorkload" }}
  77. labels:
  78. {{- include "ix-chart.selectorLabels" . | nindent 2 }}
  79. annotations:
  80. {{- include "workloadAnnotations" . | nindent 2 }}
  81. {{- end }}
  82. {{/*
  83. Deployment Spec
  84. */}}
  85. {{- define "deploymentSpec" }}
  86. strategy:
  87. type: {{ .Values.updateStrategy }}
  88. selector:
  89. matchLabels:
  90. {{- include "ix-chart.selectorLabels" . | nindent 4 }}
  91. template:
  92. metadata:
  93. {{ include "commonMetadataWorkload" . | nindent 4 }}
  94. spec:
  95. {{- include "podSepc" . | indent 4 }}
  96. {{- end }}
  97. {{/*
  98. Job Spec Common
  99. */}}
  100. {{- define "jobSpecCommon" }}
  101. metadata:
  102. {{ include "commonMetadataWorkload" . | nindent 4 }}
  103. spec:
  104. {{- include "podSepc" . | indent 2 }}
  105. {{- end }}
  106. {{/*
  107. Job Spec
  108. */}}
  109. {{- define "jobSpec" }}
  110. template:
  111. {{ include "jobSpecCommon" . | nindent 2 }}
  112. {{- end }}
  113. {{/*
  114. CronJob Spec
  115. */}}
  116. {{- define "cronJobSpec" }}
  117. schedule: {{ include "cronExpression" .Values.cronSchedule | quote }}
  118. jobTemplate:
  119. spec:
  120. {{ include "jobSpec" . | nindent 4 }}
  121. {{- end }}