apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      name: prometheus
      phase: prod
  template:
    metadata:
      labels:
        name: prometheus
        phase: prod
    spec:
      securityContext:
        seccompProfile:
          type: RuntimeDefault
      serviceAccountName: prometheus
      containers:
        - name: prometheus
          image: quay.io/prometheus/prometheus:v2.40.5
          args:
            - --web.listen-address=0.0.0.0:9090
            - --config.file=/etc/prometheus/prometheus.yaml
            - --storage.tsdb.path=/var/lib/prometheus
          ports:
            - name: web
              containerPort: 9090
          resources:
            requests:
              cpu: 100m
              memory: 200Mi
          volumeMounts:
            - name: config
              mountPath: /etc/prometheus
            - name: rules
              mountPath: /etc/prometheus/rules
            - name: data
              mountPath: /var/lib/prometheus
          livenessProbe:
            httpGet:
              path: /-/healthy
              port: 9090
            initialDelaySeconds: 10
            timeoutSeconds: 10
          readinessProbe:
            httpGet:
              path: /-/ready
              port: 9090
            initialDelaySeconds: 10
            timeoutSeconds: 10
      terminationGracePeriodSeconds: 30
      volumes:
        - name: config
          configMap:
            name: prometheus-config
        - name: rules
          configMap:
            name: prometheus-rules
        - name: data
          emptyDir: {}
