apiVersion: apps/v1 kind: Deployment metadata: name: vaultwarden namespace: {{ .namespace }} spec: replicas: 1 strategy: type: Recreate selector: matchLabels: component: web template: metadata: labels: component: web spec: securityContext: runAsNonRoot: false runAsUser: 0 seccompProfile: type: RuntimeDefault containers: - name: vaultwarden image: vaultwarden/server:1.36.0 ports: - name: http containerPort: 80 protocol: TCP env: - name: DATABASE_URL valueFrom: secretKeyRef: name: vaultwarden-secrets key: dbUrl - name: DOMAIN value: "https://{{ .domain }}" - name: ADMIN_TOKEN valueFrom: secretKeyRef: name: vaultwarden-secrets key: adminToken - name: SIGNUPS_ALLOWED value: "{{ .signupsAllowed }}" - name: SMTP_HOST value: "{{ .smtp.host }}" - name: SMTP_PORT value: "{{ .smtp.port }}" - name: SMTP_FROM value: "{{ .smtp.from }}" - name: SMTP_USERNAME value: "{{ .smtp.user }}" - name: SMTP_PASSWORD valueFrom: secretKeyRef: name: vaultwarden-secrets key: smtp.password - name: SMTP_SECURITY value: "{{ .smtp.security }}" - name: ROCKET_PORT value: "80" resources: limits: cpu: 500m ephemeral-storage: 1Gi memory: 256Mi requests: cpu: 25m ephemeral-storage: 50Mi memory: 64Mi volumeMounts: - name: vaultwarden-data mountPath: /data livenessProbe: httpGet: path: /alive port: 80 initialDelaySeconds: 30 timeoutSeconds: 5 periodSeconds: 30 failureThreshold: 6 readinessProbe: httpGet: path: /alive port: 80 initialDelaySeconds: 10 timeoutSeconds: 3 periodSeconds: 10 failureThreshold: 3 securityContext: readOnlyRootFilesystem: false volumes: - name: vaultwarden-data persistentVolumeClaim: claimName: vaultwarden-data restartPolicy: Always