apiVersion: apps/v1 kind: Deployment metadata: name: agent-monitor-canary namespace: agent-monitor labels: app.kubernetes.io/name: agent-monitor app.kubernetes.io/instance: agent-monitor-canary app.kubernetes.io/version: "1.0.0" app.kubernetes.io/component: server app.kubernetes.io/managed-by: kustomize track: canary spec: replicas: 1 revisionHistoryLimit: 5 selector: matchLabels: app.kubernetes.io/name: agent-monitor app.kubernetes.io/instance: agent-monitor-canary track: canary template: metadata: labels: app.kubernetes.io/name: agent-monitor app.kubernetes.io/instance: agent-monitor-canary app.kubernetes.io/version: "1.0.0" app.kubernetes.io/component: server app.kubernetes.io/managed-by: kustomize track: canary annotations: prometheus.io/scrape: "true" prometheus.io/port: "4820" prometheus.io/path: "/api/health" spec: serviceAccountName: agent-monitor automountServiceAccountToken: false terminationGracePeriodSeconds: 30 securityContext: runAsNonRoot: true runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch seccompProfile: type: RuntimeDefault containers: - name: agent-monitor image: ${IMAGE_REGISTRY}/agent-monitor:canary imagePullPolicy: Always ports: - name: http containerPort: 4820 protocol: TCP envFrom: - configMapRef: name: agent-monitor-config resources: requests: memory: "256Mi" cpu: "200m" limits: memory: "1Gi" cpu: "1000m" startupProbe: httpGet: path: /api/health port: http failureThreshold: 30 periodSeconds: 2 readinessProbe: httpGet: path: /api/health port: http initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 3 successThreshold: 1 failureThreshold: 3 livenessProbe: httpGet: path: /api/health port: http initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 3 securityContext: runAsNonRoot: true runAsUser: 1000 runAsGroup: 1000 readOnlyRootFilesystem: true allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - name: data mountPath: /app/data - name: tmp mountPath: /tmp lifecycle: preStop: exec: command: ["sh", "-c", "sleep 5"] volumes: - name: data persistentVolumeClaim: claimName: agent-monitor-data - name: tmp emptyDir: sizeLimit: 100Mi