apiVersion: apps/v1 kind: Deployment metadata: name: vaultwarden namespace: default spec: replicas: 1 selector: matchLabels: app: vaultwarden strategy: type: Recreate template: metadata: labels: app: vaultwarden spec: containers: - env: - name: DOMAIN value: https://vault.haven - name: ADMIN_TOKEN valueFrom: secretKeyRef: key: ADMIN_TOKEN name: vaultwarden-admin-token image: vaultwarden/server:latest imagePullPolicy: Always livenessProbe: failureThreshold: 6 httpGet: path: /alive port: vault-port scheme: HTTP periodSeconds: 15 successThreshold: 1 timeoutSeconds: 3 name: vaultwarden ports: - containerPort: 80 name: vault-port protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /alive port: vault-port scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 3 resources: limits: cpu: 250m memory: 256Mi requests: cpu: 250m memory: 64Mi startupProbe: failureThreshold: 30 httpGet: path: /alive port: vault-port scheme: HTTP periodSeconds: 5 successThreshold: 1 timeoutSeconds: 3 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /data name: vaultwarden-data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: vaultwarden-data persistentVolumeClaim: claimName: vaultwarden-data apiVersion: v1 kind: Service metadata: name: vaultwarden namespace: default spec: internalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack ports: - port: 80 protocol: TCP targetPort: vault-port selector: app: vaultwarden sessionAffinity: None type: ClusterIP apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: vaultwarden namespace: default spec: ingressClassName: nginx rules: - host: vault.haven http: paths: - backend: service: name: vaultwarden port: number: 80 path: / pathType: Prefix tls: - hosts: - vault.haven secretName: vaultwarden-tls apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: vaultwarden-public namespace: default spec: ingressClassName: nginx rules: - host: vault.ivanch.me http: paths: - backend: service: name: vaultwarden port: number: 80 path: / pathType: Prefix apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vaultwarden-data namespace: default spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: nfs-client volumeMode: Filesystem