apiVersion: apps/v1 kind: Deployment metadata: name: mirccloud-app namespace: mirccloud labels: app.kubernetes.io/name: mirccloud app.kubernetes.io/component: app app.kubernetes.io/part-of: mirccloud spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: mirccloud app.kubernetes.io/component: app strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 template: metadata: labels: app.kubernetes.io/name: mirccloud app.kubernetes.io/component: app app.kubernetes.io/part-of: mirccloud spec: serviceAccountName: default securityContext: runAsNonRoot: true runAsUser: 1001 runAsGroup: 1001 fsGroup: 1001 containers: - name: app image: git.lab.fairings.org/jpreston/mirccloud/app:latest imagePullPolicy: Always ports: - name: http containerPort: 3000 protocol: TCP envFrom: - secretRef: name: mirccloud-secrets - configMapRef: name: mirccloud-config resources: requests: cpu: 200m memory: 256Mi limits: cpu: 1000m memory: 512Mi livenessProbe: httpGet: path: /api/health port: http initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /api/health port: http initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 3 volumeMounts: - name: uploads mountPath: /data/uploads securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: false capabilities: drop: - ALL volumes: - name: uploads persistentVolumeClaim: claimName: mirccloud-uploads