apiVersion: v1 kind: Service metadata: name: adopt-a-street-backend labels: app: backend spec: selector: app: backend ports: - port: 5000 targetPort: 5000 name: http type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: adopt-a-street-backend spec: replicas: 2 selector: matchLabels: app: backend template: metadata: labels: app: backend spec: # Prefer Pi 5 nodes for backend (more RAM for Node.js) affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 preference: matchExpressions: - key: kubernetes.io/arch operator: In values: - arm64 # Pi 5 architecture imagePullSecrets: - name: regcred containers: - name: backend # Update with your registry and tag image: gitea-http.taildb3494.ts.net/will/adopt-a-street/backend:latest imagePullPolicy: Always ports: - containerPort: 5000 name: http envFrom: - configMapRef: name: adopt-a-street-config - secretRef: name: adopt-a-street-secrets env: - name: COUCHDB_USER valueFrom: secretKeyRef: name: adopt-a-street-secrets key: COUCHDB_USER - name: COUCHDB_PASSWORD valueFrom: secretKeyRef: name: adopt-a-street-secrets key: COUCHDB_PASSWORD resources: requests: memory: "256Mi" cpu: "100m" limits: memory: "512Mi" cpu: "500m" livenessProbe: httpGet: path: /api/health port: 5000 initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /api/health port: 5000 initialDelaySeconds: 10 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 3