# services/maintenance/soteria-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: soteria namespace: maintenance spec: replicas: 1 revisionHistoryLimit: 3 selector: matchLabels: app: soteria template: metadata: labels: app: soteria spec: serviceAccountName: soteria nodeSelector: kubernetes.io/arch: arm64 node-role.kubernetes.io/worker: "true" affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 90 preference: matchExpressions: - key: hardware operator: In values: ["rpi5"] - weight: 50 preference: matchExpressions: - key: hardware operator: In values: ["rpi4"] containers: - name: soteria image: registry.bstein.dev/bstein/soteria:latest imagePullPolicy: Always ports: - name: http containerPort: 8080 envFrom: - configMapRef: name: soteria livenessProbe: httpGet: path: /healthz port: http initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 2 readinessProbe: httpGet: path: /readyz port: http initialDelaySeconds: 2 periodSeconds: 5 timeoutSeconds: 2 resources: requests: cpu: 50m memory: 64Mi limits: cpu: 200m memory: 256Mi securityContext: allowPrivilegeEscalation: false runAsNonRoot: true runAsUser: 65532 capabilities: drop: ["ALL"]