apiVersion: apps/v1 kind: StatefulSet metadata: name: vault spec: replicas: 1 serviceName: vault podManagementPolicy: OrderedReady updateStrategy: type: RollingUpdate persistentVolumeClaimRetentionPolicy: whenDeleted: Retain whenScaled: Retain selector: matchLabels: app.kubernetes.io/name: vault app.kubernetes.io/instance: vault template: metadata: labels: app.kubernetes.io/name: vault app.kubernetes.io/instance: vault spec: serviceAccountName: vault automountServiceAccountToken: true terminationGracePeriodSeconds: 60 securityContext: runAsNonRoot: true runAsUser: 100 runAsGroup: 1000 fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch seccompProfile: type: RuntimeDefault containers: - name: vault image: hashicorp/vault:1.17.2 imagePullPolicy: IfNotPresent command: - vault - server - -config=/vault/config/vault.hcl ports: - name: http containerPort: 8200 protocol: TCP - name: cluster containerPort: 8201 protocol: TCP env: - name: VAULT_ADDR value: "http://127.0.0.1:8200" - name: VAULT_API_ADDR value: "http://vault:8200" - name: SKIP_SETCAP value: "true" resources: requests: cpu: 250m memory: 256Mi limits: memory: 512Mi startupProbe: httpGet: path: /v1/sys/health?standbyok=true&sealedcode=200&uninitcode=200 port: http periodSeconds: 5 failureThreshold: 30 timeoutSeconds: 3 readinessProbe: httpGet: path: /v1/sys/health?standbyok=true&sealedcode=503&uninitcode=503 port: http periodSeconds: 10 failureThreshold: 3 timeoutSeconds: 3 livenessProbe: httpGet: path: /v1/sys/health?standbyok=true&sealedcode=200&uninitcode=200 port: http periodSeconds: 30 failureThreshold: 3 timeoutSeconds: 3 securityContext: runAsNonRoot: true runAsUser: 100 runAsGroup: 1000 allowPrivilegeEscalation: false privileged: false readOnlyRootFilesystem: true capabilities: drop: - ALL seccompProfile: type: RuntimeDefault volumeMounts: - name: data mountPath: /vault/data - name: config mountPath: /vault/config readOnly: true - name: tmp mountPath: /tmp - name: home mountPath: /home/vault volumes: - name: config configMap: name: vault-config - name: tmp emptyDir: medium: Memory sizeLimit: 64Mi - name: home emptyDir: medium: Memory sizeLimit: 64Mi volumeClaimTemplates: - metadata: name: data spec: accessModes: - ReadWriteOnce storageClassName: replace-in-overlay volumeMode: Filesystem resources: requests: storage: 5Gi