172 lines
6.0 KiB
Django/Jinja
172 lines
6.0 KiB
Django/Jinja
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: {{k8s_deploy.name}}
|
|
namespace: {{k8s_deploy.namespace}}
|
|
labels:
|
|
{%- for label in k8s_deploy.labels %}
|
|
{{label.key}}: {{label.value}}
|
|
{%- endfor %}
|
|
spec:
|
|
replicas: {{k8s_deploy.spec.replicas}}
|
|
selector:
|
|
matchLabels:
|
|
{%- for label in k8s_deploy.sel_labels %}
|
|
{{label.key}}: {{label.value}}
|
|
{%- endfor %}
|
|
template:
|
|
metadata:
|
|
labels:
|
|
{%- for label in k8s_deploy.tpl_labels %}
|
|
{{label.key}}: {{label.value}}
|
|
{%- endfor %}
|
|
spec:
|
|
{%- if k8s_deploy.spec.hostUsers %}
|
|
hostUsers: {{k8s_deploy.spec.hostUsers}}
|
|
{%- endif %}
|
|
containers:
|
|
{%- for container in k8s_deploy.spec.containers %}
|
|
- name: {{container.name}}
|
|
image: {{container.image}}
|
|
{%- if container.cmd %}
|
|
command: {{container.cmd}}
|
|
{%- endif %}
|
|
imagePullPolicy: {{container.imagePull}}
|
|
{%- if container.ports %}
|
|
ports:
|
|
{%- for port in container.ports %}
|
|
- name: {{port.name}}
|
|
{%- if port.container %}
|
|
containerPort: {{port.container}}
|
|
{%- endif %}
|
|
{%- if port.proto %}
|
|
protocol: {{port.proto}}
|
|
{%- endif %}
|
|
{%- if port.target %}
|
|
targetPort: {{port.target}}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if container.env %}
|
|
env:
|
|
{%- for env in container.env %}
|
|
- name: {{env.key}}
|
|
value: {{env.value}}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if container.volumeMounts %}
|
|
volumeMounts:
|
|
{%- for vol in container.volumeMounts %}
|
|
- name: {{vol.name}}
|
|
mountPath: {{vol.mountPath}}
|
|
readOnly: {{vol.readOnly}}
|
|
{%- if vol.subPath %}
|
|
subPath: {{vol.subPath}}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if container.resources_requests or container.resources_limits %}
|
|
resources:
|
|
{%- if container.resources_requests %}
|
|
requests:
|
|
memory: "{{container.resources_requests.memory}}"
|
|
cpu: "{{container.resources_requests.cpu}}"
|
|
{%- endif %}
|
|
{%- if container.resources_limits %}
|
|
limits:
|
|
memory: "{{container.resources_limits.memory}}"
|
|
cpu: "{{container.resources_limits.cpu}}"
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
{%- if k8s_deploy.spec.imagePullSecret %}
|
|
imagePullSecrets: {{k8s_deploy.spec.imagePullSecret}}
|
|
{%- endif %}
|
|
{%- if k8s_deploy.spec.nodeSelector %}
|
|
{%- for sel in k8s_deploy.spec.nodeSelector %}
|
|
{{sel.key}}: {{sel.value}}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if k8s_deploy.spec.nodeName %}
|
|
nodeName: {{k8s_deploy.spec.nodeName}}
|
|
{%- endif %}
|
|
{%- if k8s_deploy.spec.affinity %}
|
|
affinity:
|
|
{%- if k8s_deploy.spec.affinity.affinity %}
|
|
podAffinity:
|
|
{{k8s_deploy.spec.affinity.affinity.typ}}:
|
|
{%- if k8s_deploy.spec.affinity.affinity.matchExpressions %}
|
|
- labelSelector:
|
|
matchExpressions:
|
|
{%- for expr in k8s_deploy.affinity.affinity.matchExpressions %}
|
|
- key: {{expr.key}}
|
|
operator: {{expr.operator}}
|
|
values:
|
|
{%- for val in expr.values %}
|
|
- {{val}}
|
|
{%- endfor %}
|
|
{%- endfor %}
|
|
{%- if k8s_deploy.affinity.affinity.topologyKey %}
|
|
topologyKey: {{k8s_deploy.affinity.affinity.topologyKey}}
|
|
{%- endif %}
|
|
{%- if k8s_deploy.affinity.affinity.matchLabelKeys %}
|
|
matchLabelKeys:
|
|
{%- for val in k8s_deploy.affinity.affinity.matchLabelKeys %}
|
|
- {{val}}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- if k8s_deploy.spec.affinity.antiAffinity %}
|
|
podAntiAffinity:
|
|
{{k8s_deploy.spec.affinity.affinity.typ}}:
|
|
- weight: {{k8s_deploy.spec.affinity.antiAffinity.weight}}
|
|
podAffinityTerm:
|
|
- labelSelector:
|
|
matchExpressions:
|
|
{%- for expr in k8s_deploy.affinity.antiAffinity.matchExpressions %}
|
|
- key: {{expr.key}}
|
|
operator: {{expr.operator}}
|
|
values:
|
|
{%- for val in expr.values %}
|
|
- {{val}}
|
|
{%- endfor %}
|
|
{%- endfor %}
|
|
{%- if k8s_deploy.affinity.affinity.topologyKey %}
|
|
topologyKey: {{k8s_deploy.affinity.affinity.topologyKey}}
|
|
{%- endif %}
|
|
{%- if k8s_deploy.affinity.affinity.matchLabelKeys %}
|
|
matchLabelKeys:
|
|
{%- for val in k8s_deploy.affinity.affinity.matchLabelKeys %}
|
|
- {{val}}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- if k8s_deploy.spec.volumes %}
|
|
volumes:
|
|
{%- for vol in k8s_deploy.spec.volumes %}
|
|
- name: {{vol.name}}
|
|
{%- if vol.typ == "volumeClaim" and vol.persitentVolumeClaim %}
|
|
persistentVolumeClaim:
|
|
claimName: {{vol.persitentVolumeClaim.name}}
|
|
{%- elif vol.typ == "configMap" and vol.items %}
|
|
configMap:
|
|
name: {{vol.name}}
|
|
items:
|
|
{%- for item in vol.items %}
|
|
- key: {{item.key}}
|
|
path: {{item.path}}
|
|
{%- endfor %}
|
|
{%- elif vol.typ == "secret" and vol.items %}
|
|
secret:
|
|
secretName: {{vol.name}}
|
|
items:
|
|
{%- for item in vol.items %}
|
|
- key: {{item.key}}
|
|
path: {{item.path}}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
{%- endif %}
|