--- apiVersion: v1 kind: ConfigMap metadata: name: ravendb-settings namespace: default labels: app: ravendb data: ravendb-0: "{\r\n \"Setup.Mode\": \"None\",\r\n \"DataDir\": \"/data/RavenData\",\r\n \ \"Security.Certificate.Path\": \"/ssl/ssl\",\r\n \"ServerUrl\": \"https://0.0.0.0\",\r\n \ \"ServerUrl.Tcp\": \"tcp://0.0.0.0:38888\",\r\n \"PublicServerUrl\": \"https://a.example.ravendb.cloud\",\r\n \ \"PublicServerUrl.Tcp\": \"tcp://tcp-a.example.ravendb.cloud:443\",\r\n \ \"License.Path\": \"/license/license.json\",\r\n \"License.Eula.Accepted\": \"true\"}" ravendb-1: "{\r\n \"Setup.Mode\": \"None\",\r\n \"DataDir\": \"/data/RavenData\",\r\n \ \"Security.Certificate.Path\": \"/ssl/ssl\",\r\n \"ServerUrl\": \"https://0.0.0.0\",\r\n \ \"ServerUrl.Tcp\": \"tcp://0.0.0.0:38888\",\r\n \"PublicServerUrl\": \"https://b.example.ravendb.cloud\",\r\n \ \"PublicServerUrl.Tcp\": \"tcp://tcp-b.example.ravendb.cloud:443\",\r\n \ \"License.Path\": \"/license/license.json\",\r\n \"License.Eula.Accepted\": \"true\"}" ravendb-2: "{\r\n \"Setup.Mode\": \"None\",\r\n \"DataDir\": \"/data/RavenData\",\r\n \ \"Security.Certificate.Path\": \"/ssl/ssl\",\r\n \"ServerUrl\": \"https://0.0.0.0\",\r\n \ \"ServerUrl.Tcp\": \"tcp://0.0.0.0:38888\",\r\n \"PublicServerUrl\": \"https://c.example.ravendb.cloud\",\r\n \ \"PublicServerUrl.Tcp\": \"tcp://tcp-c.example.ravendb.cloud:443\",\r\n \ \"License.Path\": \"/license/license.json\",\r\n \"License.Eula.Accepted\": \"true\"}" --- apiVersion: apps/v1 kind: StatefulSet metadata: name: ravendb namespace: default labels: app: ravendb spec: serviceName: ravendb template: metadata: labels: app: ravendb spec: containers: - command: - /bin/sh - -c - /opt/RavenDB/Server/Raven.Server --config-path /config/$HOSTNAME image: ravendb/ravendb:latest imagePullPolicy: Always name: ravendb ports: - containerPort: 443 name: http-api protocol: TCP - containerPort: 38888 name: tcp-server protocol: TCP - containerPort: 161 name: snmp protocol: TCP terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /data name: data - mountPath: /ssl name: ssl - mountPath: /license name: license - mountPath: /config name: config dnsPolicy: ClusterFirst restartPolicy: Always terminationGracePeriodSeconds: 120 volumes: - name: ssl secret: defaultMode: 420 secretName: ravendb-ssl - configMap: defaultMode: 420 name: ravendb-settings name: config - name: license secret: defaultMode: 420 secretName: ravendb-license updateStrategy: type: RollingUpdate podManagementPolicy: OrderedReady replicas: 3 selector: matchLabels: app: ravendb volumeClaimTemplates: - metadata: labels: app: ravendb name: data spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ravendb namespace: default labels: app: ravendb annotations: ingress.kubernetes.io/ssl-passthrough: "true" spec: rules: - host: a.example.ravendb.cloud http: paths: - backend: serviceName: ravendb-0 servicePort: 443 path: / - host: tcp-a.example.ravendb.cloud http: paths: - backend: serviceName: ravendb-0 servicePort: 38888 path: / - host: b.example.ravendb.cloud http: paths: - backend: serviceName: ravendb-1 servicePort: 443 path: / - host: tcp-b.example.ravendb.cloud http: paths: - backend: serviceName: ravendb-1 servicePort: 38888 path: / - host: c.example.ravendb.cloud http: paths: - backend: serviceName: ravendb-2 servicePort: 443 path: / - host: tcp-c.example.ravendb.cloud http: paths: - backend: serviceName: ravendb-2 servicePort: 38888 path: / --- apiVersion: v1 kind: Service metadata: name: ravendb namespace: default labels: app: ravendb spec: clusterIP: None ports: - name: http-api port: 443 protocol: TCP targetPort: 443 - name: tcp-server port: 38888 protocol: TCP targetPort: 38888 - name: snmp port: 161 protocol: TCP targetPort: 161 selector: app: ravendb type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: ravendb-0 namespace: default labels: app: ravendb node: "0" spec: ports: - name: http-api port: 443 protocol: TCP targetPort: 443 - name: tcp-server port: 38888 protocol: TCP targetPort: 38888 - name: snmp port: 161 protocol: TCP targetPort: 161 selector: app: ravendb statefulset.kubernetes.io/pod-name: ravendb-0 type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: ravendb-1 namespace: default labels: app: ravendb node: "1" spec: ports: - name: http-api port: 443 protocol: TCP targetPort: 443 - name: tcp-server port: 38888 protocol: TCP targetPort: 38888 - name: snmp port: 161 protocol: TCP targetPort: 161 selector: app: ravendb statefulset.kubernetes.io/pod-name: ravendb-1 type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: ravendb-2 namespace: default labels: app: ravendb node: "2" spec: ports: - name: http-api port: 443 protocol: TCP targetPort: 443 - name: tcp-server port: 38888 protocol: TCP targetPort: 38888 - name: snmp port: 161 protocol: TCP targetPort: 161 selector: app: ravendb statefulset.kubernetes.io/pod-name: ravendb-2 type: ClusterIP