apiVersion: v1 kind: Service metadata: name: couchdb namespace: couchdb labels: app: couchdb spec: ports: - port: 5984 name: http clusterIP: None selector: app: couchdb --- apiVersion: v1 kind: Service metadata: name: couchdb-lb namespace: couchdb labels: app: couchdb spec: ports: - port: 5984 name: http selector: app: couchdb --- apiVersion: apps/v1 kind: StatefulSet metadata: name: couchdb namespace: couchdb spec: serviceName: couchdb replicas: 3 selector: matchLabels: app: couchdb template: metadata: labels: app: couchdb spec: containers: - name: couchdb image: couchdb:latest imagePullPolicy: Always ports: - containerPort: 5984 env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: NODENAME value: "$(POD_NAME).couchdb.couchdb.svc.cluster.local" - name: COUCHDB_UUID valueFrom: fieldRef: fieldPath: metadata.uid - name: ERL_FLAGS value: "-setcookie couchdb_cookie" - name: COUCHDB_USER value: "admin" - name: COUCHDB_PASSWORD value: "Couchdb01" volumeMounts: - name: couchdb mountPath: /opt/couchdb/data volumeClaimTemplates: - metadata: name: couchdb spec: accessModes: ["ReadWriteOnce"] storageClassName: "" resources: requests: storage: 2Gi selector: matchLabels: pv: couchdb-data --- apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: couchdb-ingress namespace: couchdb spec: entryPoints: - websecure routes: - match: Host(`couchdb-prod.allarddcs.nl`) kind: Rule services: - name: couchdb-lb port: 5984 namespace: couchdb sticky: cookie: name: couchdb_sticky tls: certResolver: letsencrypt