1# ============================================================================= 2# Alertmanager (TASK-0135, phase-15) — Deployment + Service, ns `monitoring`. 3# 4# Config is generated into `alertmanager-config` by kustomization.yaml FROM 5# infrastructure/observability/alertmanager/alertmanager.yaml (single source 6# of truth). SMTP: alertmanager reads auth ONLY from its config file (no env 7# substitution) — if the relay requires credentials, add 8# smtp_auth_username / smtp_auth_password to the source file (or render the 9# ConfigMap from a SealedSecret in the pipeline); the default assumption is 10# an open VPC relay. Without SMTP the webhook receiver still delivers (the 11# dogfood path). 12# Image pinned: prom/alertmanager:v0.27.0. 13# ============================================================================= 14apiVersion: apps/v1 15kind: Deployment 16metadata: 17 name: alertmanager 18 namespace: monitoring 19 labels: 20 app.kubernetes.io/name: alertmanager 21 app.kubernetes.io/part-of: ai-software-factory 22spec: 23 replicas: 1 24 selector: 25 matchLabels: 26 app.kubernetes.io/name: alertmanager 27 strategy: 28 type: Recreate 29 template: 30 metadata: 31 labels: 32 app.kubernetes.io/name: alertmanager 33 spec: 34 containers: 35 - name: alertmanager 36 image: prom/alertmanager:v0.27.0 37 imagePullPolicy: IfNotPresent 38 args: 39 - --config.file=/etc/alertmanager/alertmanager.yaml 40 - --storage.path=/alertmanager 41 ports: 42 - containerPort: 9093 43 name: http 44 volumeMounts: 45 - name: config 46 mountPath: /etc/alertmanager 47 readOnly: true 48 - name: data 49 mountPath: /alertmanager 50 readinessProbe: 51 httpGet: 52 path: /-/ready 53 port: 9093 54 initialDelaySeconds: 5 55 periodSeconds: 10 56 livenessProbe: 57 httpGet: 58 path: /-/healthy 59 port: 9093 60 initialDelaySeconds: 15 61 periodSeconds: 15 62 resources: 63 requests: 64 cpu: 50m 65 memory: 64Mi 66 limits: 67 cpu: 200m 68 memory: 256Mi 69 securityContext: 70 allowPrivilegeEscalation: false 71 runAsNonRoot: true 72 seccompProfile: 73 type: RuntimeDefault 74 volumes: 75 - name: config 76 configMap: 77 name: alertmanager-config # hashed name substituted by kustomize 78 - name: data 79 emptyDir: {} 80--- 81apiVersion: v1 82kind: Service 83metadata: 84 name: alertmanager 85 namespace: monitoring 86 labels: 87 app.kubernetes.io/name: alertmanager 88 app.kubernetes.io/part-of: ai-software-factory 89spec: 90 selector: 91 app.kubernetes.io/name: alertmanager 92 ports: 93 - name: http 94 port: 9093 95 targetPort: 9093 96