# api: Go service (selfheal-lab-apps/demo-app). 3 replicas, PDB minAvailable 2, probes per experiment design 3.1. apiVersion: apps/v1 kind: Deployment metadata: name: api namespace: demo labels: { app: api } spec: replicas: 3 selector: matchLabels: { app: api } template: metadata: labels: { app: api } annotations: prometheus.io/scrape: "true" prometheus.io/port: "8080" prometheus.io/path: /metrics spec: containers: - name: api image: asia-northeast1-docker.pkg.dev/cms-d-414903/selfheal-public/demo-api:8f5378b ports: [{ name: http, containerPort: 8080 }] env: - name: DB_DSN valueFrom: { secretKeyRef: { name: demo-db, key: DB_DSN } } - { name: LEGACY_URL, value: "http://10.20.0.100:8080" } - { name: LEGACY_TIMEOUT, value: "2s" } livenessProbe: { httpGet: { path: /healthz, port: http }, periodSeconds: 10, failureThreshold: 3 } readinessProbe: { httpGet: { path: /readyz, port: http }, periodSeconds: 5, failureThreshold: 2 } resources: requests: { cpu: 100m, memory: 128Mi } limits: { memory: 256Mi } securityContext: { allowPrivilegeEscalation: false, runAsNonRoot: true } --- apiVersion: v1 kind: Service metadata: name: api namespace: demo spec: selector: { app: api } ports: [{ name: http, port: 8080, targetPort: http }] --- apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: api namespace: demo spec: minAvailable: 2 selector: matchLabels: { app: api }