apiVersion: apps/v1 kind: Deployment metadata: name: prometheus namespace: veza-production labels: app: prometheus component: monitoring spec: replicas: 1 selector: matchLabels: app: prometheus template: metadata: labels: app: prometheus spec: containers: - name: prometheus image: prom/prometheus:latest args: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--storage.tsdb.retention.time=30d' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--web.enable-lifecycle' ports: - name: web containerPort: 9090 volumeMounts: - name: prometheus-config mountPath: /etc/prometheus - name: prometheus-storage mountPath: /prometheus resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "2000m" memory: "4Gi" readinessProbe: httpGet: path: /-/ready port: 9090 initialDelaySeconds: 10 periodSeconds: 5 livenessProbe: httpGet: path: /-/healthy port: 9090 initialDelaySeconds: 30 periodSeconds: 10 volumes: - name: prometheus-config configMap: name: prometheus-config - name: prometheus-storage persistentVolumeClaim: claimName: prometheus-storage --- apiVersion: v1 kind: Service metadata: name: prometheus namespace: veza-production labels: app: prometheus spec: type: ClusterIP ports: - name: web port: 9090 targetPort: 9090 selector: app: prometheus --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: prometheus-storage namespace: veza-production spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi