apiVersion: apps/v1 kind: StatefulSet metadata: name: ${APP_NAME}-couchdb labels: app: ${APP_NAME} component: database spec: serviceName: ${APP_NAME}-couchdb-service replicas: 1 selector: matchLabels: app: ${APP_NAME} component: database template: metadata: labels: app: ${APP_NAME} component: database spec: containers: - name: couchdb image: couchdb:3.3.2 ports: - containerPort: 5984 env: - name: COUCHDB_USER valueFrom: secretKeyRef: name: couchdb-secret key: username - name: COUCHDB_PASSWORD valueFrom: secretKeyRef: name: couchdb-secret key: password resources: requests: memory: '64Mi' cpu: '30m' limits: memory: '128Mi' cpu: '60m' volumeMounts: - name: couchdb-data mountPath: /opt/couchdb/data livenessProbe: httpGet: path: /_up port: 5984 initialDelaySeconds: 60 periodSeconds: 30 readinessProbe: httpGet: path: /_up port: 5984 initialDelaySeconds: 10 periodSeconds: 5 volumeClaimTemplates: - metadata: name: couchdb-data labels: app: ${APP_NAME} component: database spec: accessModes: ['ReadWriteOnce'] storageClassName: ${STORAGE_CLASS} resources: requests: storage: ${STORAGE_SIZE}