template/deployments/kustomize/base/deployment.yaml (117 lines of code) (raw):
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Config.GetVariableValue "APPNAME" }}
labels:
app.kubernetes.io/name: {{ .Config.GetVariableValue "APPNAME" }}
kubernetes.azure.com/generator: {{ .Config.GetVariableValue "GENERATORLABEL" }}
namespace: {{ .Config.GetVariableValue "NAMESPACE" }}
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: {{ .Config.GetVariableValue "APPNAME" }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ .Config.GetVariableValue "APPNAME" }}
{{- if eq (.Config.GetVariableValue "ENABLEWORKLOADIDENTITY") "true" }}
azure.workload.identity/use: "true"
{{- end}}
spec:
{{- if eq (.Config.GetVariableValue "ENABLEWORKLOADIDENTITY") "true" }}
serviceAccountName: {{ .Config.GetVariableValue "SERVICEACCOUNT" }}
{{- end}}
containers:
- name: {{ .Config.GetVariableValue "APPNAME" }}
image: {{ .Config.GetVariableValue "IMAGENAME" }}:{{ .Config.GetVariableValue "IMAGETAG" }}
imagePullPolicy: {{ .Config.GetVariableValue "IMAGEPULLPOLICY" }}
ports:
- containerPort: {{ .Config.GetVariableValue "PORT"}}
resources:
requests:
cpu: "{{ .Config.GetVariableValue "CPUREQ" }}"
memory: "{{ .Config.GetVariableValue "MEMREQ" }}"
limits:
cpu: "{{ .Config.GetVariableValue "CPULIMIT" }}"
memory: "{{ .Config.GetVariableValue "MEMLIMIT" }}"
envFrom:
- configMapRef:
name: {{ .Config.GetVariableValue "APPNAME" | printf "%s-config" }}
- secretRef:
name: {{ .Config.GetVariableValue "ENVSECRETREF" }}
optional: true
livenessProbe:
{{- if eq (.Config.GetVariableValue "PROBETYPE") "httpGet" }}
httpGet:
path: {{ .Config.GetVariableValue "PROBEHTTPPATH" }}
port: {{ .Config.GetVariableValue "PORT" }}
{{- else if eq (.Config.GetVariableValue "PROBETYPE") "tcpSocket" }}
tcpSocket:
port: {{ .Config.GetVariableValue "PORT" }}
{{- end }}
readinessProbe:
{{- if eq (.Config.GetVariableValue "PROBETYPE") "httpGet" }}
httpGet:
path: {{ .Config.GetVariableValue "PROBEHTTPPATH" }}
port: {{ .Config.GetVariableValue "PORT" }}
{{- else if eq (.Config.GetVariableValue "PROBETYPE") "tcpSocket" }}
tcpSocket:
port: {{ .Config.GetVariableValue "PORT" }}
{{- end }}
periodSeconds: {{ .Config.GetVariableValue "READINESSPERIOD" }}
timeoutSeconds: {{ .Config.GetVariableValue "READINESSTIMEOUT" }}
failureThreshold: {{ .Config.GetVariableValue "READINESSFAILURETHRESHOLD" }}
successThreshold: {{ .Config.GetVariableValue "READINESSSUCCESSTHRESHOLD" }}
initialDelaySeconds: {{ .Config.GetVariableValue "READINESSINITIALDELAY" }}
startupProbe:
{{- if eq (.Config.GetVariableValue "PROBETYPE") "httpGet" }}
httpGet:
path: {{ .Config.GetVariableValue "PROBEHTTPPATH" }}
port: {{ .Config.GetVariableValue "PORT" }}
{{- else if eq (.Config.GetVariableValue "PROBETYPE") "tcpSocket" }}
tcpSocket:
port: {{ .Config.GetVariableValue "PORT" }}
{{- end }}
periodSeconds: {{ .Config.GetVariableValue "STARTUPPERIOD" }}
timeoutSeconds: {{ .Config.GetVariableValue "STARTUPTIMEOUT" }}
failureThreshold: {{ .Config.GetVariableValue "STARTUPFAILURETHRESHOLD" }}
successThreshold: {{ .Config.GetVariableValue "STARTUPSUCCESSTHRESHOLD" }}
initialDelaySeconds: {{ .Config.GetVariableValue "STARTUPINITIALDELAY" }}
securityContext:
seccompProfile:
type: RuntimeDefault
capabilities:
drop:
- ALL
add:
- SETPCAP
- MKNOD
- AUDIT_WRITE
- CHOWN
- DAC_OVERRIDE
- FOWNER
- FSETID
- KILL
- SETGID
- SETUID
- NET_BIND_SERVICE
- SYS_CHROOT
- SETFCAP
- SYS_PTRACE
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
topologyKey: kubernetes.io/hostname
labelSelector:
matchLabels:
app.kubernetes.io/name: {{ .Config.GetVariableValue "APPNAME" }}
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app.kubernetes.io/name: {{ .Config.GetVariableValue "APPNAME" }}