provisioning-catalog/components/grafana/cluster/templates/deployment.yaml.j2

159 lines
6.2 KiB
Text
Raw Normal View History

apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
namespace: {{ taskserv.namespace }}
labels:
app: grafana
app.kubernetes.io/managed-by: provisioning
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
app.kubernetes.io/managed-by: provisioning
spec:
securityContext:
fsGroup: 472
runAsUser: 472
runAsNonRoot: true
{% if taskserv.placement is defined and taskserv.placement.node_class %}
affinity:
nodeAffinity:
{% if taskserv.placement.mode == "require" %}
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-class.{{ taskserv.placement.node_class.0 }}
operator: In
values: ["true"]
{% else %}
preferredDuringSchedulingIgnoredDuringExecution:
{% for c in taskserv.placement.node_class %}
- weight: {{ 100 - loop.index0 * 10 }}
preference:
matchExpressions:
- key: node-class.{{ c }}
operator: In
values: ["true"]
{% endfor %}
{% endif %}
{% endif %}
containers:
- name: grafana
image: {{ taskserv.image }}
ports:
- containerPort: {{ taskserv.provides.port | default(value=3000) }}
name: http
env:
- name: GF_PATHS_DATA
value: /var/lib/grafana
- name: GF_SERVER_HTTP_PORT
value: "{{ taskserv.provides.port | default(value=3000) }}"
- name: GF_PATHS_PROVISIONING
value: /etc/grafana/provisioning
- name: GF_SMTP_ENABLED
value: "{{ taskserv.params.alerting.smtp_enabled | default(value='false') }}"
- name: GF_SMTP_HOST
value: "{{ taskserv.params.alerting.smtp_host | default(value='localhost:25') }}"
- name: GF_SMTP_FROM_ADDRESS
value: "{{ taskserv.params.alerting.smtp_from | default(value='grafana@localhost') }}"
- name: GF_SMTP_FROM_NAME
value: "{{ taskserv.params.alerting.smtp_from_name | default(value='Grafana') }}"
- name: GF_SMTP_STARTTLS_POLICY
value: "{{ taskserv.params.alerting.smtp_starttls | default(value='OpportunisticStartTLS') }}"
- name: GF_ALERTING_ENABLED
value: "false"
- name: GF_UNIFIED_ALERTING_ENABLED
value: "true"
envFrom:
- secretRef:
name: grafana-credentials
volumeMounts:
- name: datasources
mountPath: /etc/grafana/provisioning/datasources
- name: dashboards-provider
mountPath: /etc/grafana/provisioning/dashboards
- name: alerting
mountPath: /etc/grafana/provisioning/alerting
- name: dashboards-content
mountPath: /var/lib/grafana/dashboards
readOnly: true
- name: data
mountPath: /var/lib/grafana
{% if taskserv.probes is defined and taskserv.probes.readiness is defined %}
readinessProbe:
{% if taskserv.probes.readiness.type == "tcp" %}
tcpSocket:
port: {{ taskserv.probes.readiness.port | default(value=taskserv.provides.port) | default(value=3000) }}
{% else %}
httpGet:
path: {{ taskserv.probes.readiness.path }}
port: {{ taskserv.probes.readiness.port | default(value=taskserv.provides.port) | default(value=3000) }}
{% endif %}
initialDelaySeconds: {{ taskserv.probes.readiness.initial_delay }}
periodSeconds: {{ taskserv.probes.readiness.period }}
failureThreshold: {{ taskserv.probes.readiness.failure_threshold }}
{% else %}
readinessProbe:
httpGet:
path: /api/health
port: {{ taskserv.provides.port | default(value=3000) }}
initialDelaySeconds: 15
periodSeconds: 5
failureThreshold: 6
{% endif %}
{% if taskserv.probes is defined and taskserv.probes.liveness is defined %}
livenessProbe:
{% if taskserv.probes.liveness.type == "tcp" %}
tcpSocket:
port: {{ taskserv.probes.liveness.port | default(value=taskserv.provides.port) | default(value=3000) }}
{% else %}
httpGet:
path: {{ taskserv.probes.liveness.path }}
port: {{ taskserv.probes.liveness.port | default(value=taskserv.provides.port) | default(value=3000) }}
{% endif %}
initialDelaySeconds: {{ taskserv.probes.liveness.initial_delay }}
periodSeconds: {{ taskserv.probes.liveness.period }}
failureThreshold: {{ taskserv.probes.liveness.failure_threshold }}
{% else %}
livenessProbe:
httpGet:
path: /api/health
port: {{ taskserv.provides.port | default(value=3000) }}
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 3
{% endif %}
{% if taskserv.resources_effective is defined %}
resources:
requests:
cpu: "{{ taskserv.resources_effective.cpu.request }}"
memory: "{{ taskserv.resources_effective.memory.request }}"
limits:
cpu: "{{ taskserv.resources_effective.cpu.limit }}"
memory: "{{ taskserv.resources_effective.memory.limit }}"
{% endif %}
volumes:
- name: datasources
configMap:
name: grafana-datasources
- name: dashboards-provider
configMap:
name: grafana-dashboards-provider
- name: dashboards-content
configMap:
name: grafana-dashboards-content
- name: alerting
configMap:
name: grafana-alerting
- name: data
persistentVolumeClaim:
claimName: grafana-data