blob: 1abd02d6db3e38ee04bae2d7a1262ec3e0b88af9 [file] [log] [blame]
{% from "kubernetes/map.jinja" import control with context %}
apiVersion: {{ service.apiVersion }}
kind: {{ service.kind }}
metadata:
name: {{ service.service }}-{{ service.role }}
namespace: {{ service.namespace }}
labels:
app: {{ service.service }}-{{ service.role }}
spec:
replicas: {{ service.replicas }}
template:
metadata:
labels:
app: {{ service.service }}-{{ service.role }}
{%- if service.hostname is defined %}
annotations:
pod.beta.kubernetes.io/hostname: {{ service.hostname }}
{%- endif %}
spec:
{%- if service.hostNetwork is defined %}
hostNetwork: True
{%- endif %}
{%- if service.host_pid is defined %}
hostPID: True
{%- endif %}
containers:
{%- for container_name, container in service.container.iteritems() %}
- name: {{ container_name }}
image: {% if container.registry is defined %}{{ container.registry }}/{%- endif %}{{ container.image }}{%- if container.tag is defined %}:{{ container.tag }}{%- endif %}
imagePullPolicy: IfNotPresent
{%- if container.privileged is defined %}
securityContext:
privileged: True
{%- endif %}
{%- if container.variables is defined %}
env:
{%- for variable in container.variables %}
- name: {{ variable.name }}
{%- if variable.fieldPath is defined %}
valueFrom:
fieldRef:
fieldPath: {{ variable.fieldPath }}
{%- else %}
value: {{ variable.value }}
{%- endif %}
{%- endfor %}
{%- endif %}
{%- if container.ports is defined %}
ports:
{%- for port in container.ports %}
- containerPort: {{ port.port }}
name: {{ port.name }}
{%- endfor %}
{%- endif %}
{%- if container.command is defined %}
command:
{%- for command in container.command %}
- {{ command }}
{%- endfor %}
{%- endif %}
{%- if container.volumes is defined %}
volumeMounts:
{%- for volume in container.volumes %}
- name: {{ volume.name }}
mountPath: {{ volume.mount }}
readOnly: {{ volume.read_only }}
{%- endfor %}
{%- endif %}
{%- if container.liveness_probe is defined %}
livenessProbe:
{%- if container.liveness_probe.type == 'http' %}
httpGet:
path: {{ container.liveness_probe.path }}
port: {{ container.liveness_probe.port }}
{%- elif container.liveness_probe.type == 'exec' %}
exec:
command:
{%- for command in container.liveness_probe.command %}
- {{ command }}
{%- endfor %}
{%- endif %}
initialDelaySeconds: {{ container.liveness_probe.initial_delay }}
timeoutSeconds: {{ container.liveness_probe.timeout }}
{%- endif %}
{%- if container.readiness_probe is defined %}
readinessProbe:
{%- if container.readiness_probe.type == 'http' %}
httpGet:
path: {{ container.readiness_probe.path }}
port: {{ container.readiness_probe.port }}
{%- elif container.readiness_probe.type == 'exec' %}
exec:
command:
{%- for command in container.liveness_probe.command %}
- {{ command }}
{%- endfor %}
{%- endif %}
initialDelaySeconds: {{ container.readiness_probe.initial_delay }}
timeoutSeconds: {{ container.readiness_probe.timeout }}
{%- endif %}
{%- endfor %}
{%- if service.volume is defined %}
volumes:
{%- for volume_name, volume in service.volume.iteritems() %}
- name: {{ volume_name }}
{%- if volume.type == 'emptyDir' %}
emptyDir: {}
{%- elif volume.type == 'hostPath' %}
hostPath:
path: {{ volume.path }}
{%- elif volume.type == 'glusterfs' %}
glusterfs:
endpoints: {{ volume.endpoints }}
path: {{ volume.path }}
readOnly: {{ volume.read_only }}
{%- endif %}
{%- endfor %}
{%- endif %}
{%- if service.nodeSelector is defined %}
nodeSelector:
{%- for selector in service.nodeSelector %}
{{ selector.key }}: {{ selector.value }}
{%- endfor %}
{%- endif %}
{%- if service.image_pull_secretes is defined %}
imagePullSecrets:
- name: {{ service.image_pull_secretes }}
{%- endif %}