apiVersion: v1 kind: Service metadata: name: mongo-configsvr namespace: mongodb labels: app: mongo-configsvr spec: clusterIP: None selector: app: mongo-configsvr ports: - port: 27019 targetPort: 27019 name: mongo --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mongo-configsvr namespace: mongodb spec: serviceName: mongo-configsvr replicas: 3 selector: matchLabels: app: mongo-configsvr template: metadata: labels: app: mongo-configsvr role: configsvr spec: terminationGracePeriodSeconds: 30 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: [pisvrwsv07, pisvrwsv08] initContainers: - name: fix-permissions image: busybox:1.36 command: ["sh", "-c", "chown -R 999:999 /data/db"] volumeMounts: - name: data mountPath: /data/db containers: - name: mongod image: mongo:8.0 command: - mongod - --configsvr - --replSet=configReplSet - --port=27019 - --dbpath=/data/db - --keyFile=/etc/mongo/keyfile - --bind_ip_all ports: - containerPort: 27019 resources: requests: memory: "256Mi" cpu: "100m" limits: memory: "512Mi" cpu: "500m" volumeMounts: - name: data mountPath: /data/db - name: keyfile mountPath: /etc/mongo readOnly: true volumes: - name: keyfile secret: secretName: mongo-keyfile defaultMode: 0400 volumeClaimTemplates: - metadata: name: data spec: accessModes: [ReadWriteOnce] storageClassName: local-storage resources: requests: storage: 2Gi --- apiVersion: v1 kind: Service metadata: name: mongo-shard0 namespace: mongodb labels: app: mongo-shard0 spec: clusterIP: None selector: app: mongo-shard0 ports: - port: 27018 targetPort: 27018 name: mongo --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mongo-shard0 namespace: mongodb spec: serviceName: mongo-shard0 replicas: 2 selector: matchLabels: app: mongo-shard0 template: metadata: labels: app: mongo-shard0 role: shardsvr shard: "0" spec: terminationGracePeriodSeconds: 30 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: [pisvrwsv07, pisvrwsv08] initContainers: - name: fix-permissions image: busybox:1.36 command: ["sh", "-c", "chown -R 999:999 /data/db"] volumeMounts: - name: data mountPath: /data/db containers: - name: mongod image: mongo:8.0 command: - mongod - --shardsvr - --replSet=shard0ReplSet - --port=27018 - --dbpath=/data/db - --keyFile=/etc/mongo/keyfile - --bind_ip_all ports: - containerPort: 27018 resources: requests: memory: "512Mi" cpu: "200m" limits: memory: "1Gi" cpu: "1000m" volumeMounts: - name: data mountPath: /data/db - name: keyfile mountPath: /etc/mongo readOnly: true volumes: - name: keyfile secret: secretName: mongo-keyfile defaultMode: 0400 volumeClaimTemplates: - metadata: name: data spec: accessModes: [ReadWriteOnce] storageClassName: local-storage resources: requests: storage: 5Gi --- apiVersion: v1 kind: Service metadata: name: mongo-shard0-arbiter namespace: mongodb labels: app: mongo-shard0-arbiter spec: clusterIP: None selector: app: mongo-shard0-arbiter ports: - port: 27018 targetPort: 27018 name: mongo --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mongo-shard0-arbiter namespace: mongodb spec: serviceName: mongo-shard0-arbiter replicas: 1 selector: matchLabels: app: mongo-shard0-arbiter template: metadata: labels: app: mongo-shard0-arbiter role: shard0-arbiter spec: terminationGracePeriodSeconds: 30 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: [pisvrwsv07, pisvrwsv08] containers: - name: mongod image: mongo:8.0 command: - mongod - --shardsvr - --replSet=shard0ReplSet - --port=27018 - --dbpath=/data/arb - --keyFile=/etc/mongo/keyfile - --bind_ip_all ports: - containerPort: 27018 resources: requests: memory: "128Mi" cpu: "50m" limits: memory: "256Mi" cpu: "200m" volumeMounts: - name: arbiter-data mountPath: /data/arb - name: keyfile mountPath: /etc/mongo readOnly: true volumes: - name: arbiter-data emptyDir: {} - name: keyfile secret: secretName: mongo-keyfile defaultMode: 0400 --- apiVersion: v1 kind: Service metadata: name: mongo-shard1 namespace: mongodb labels: app: mongo-shard1 spec: clusterIP: None selector: app: mongo-shard1 ports: - port: 27018 targetPort: 27018 name: mongo --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mongo-shard1 namespace: mongodb spec: serviceName: mongo-shard1 replicas: 2 selector: matchLabels: app: mongo-shard1 template: metadata: labels: app: mongo-shard1 role: shardsvr shard: "1" spec: terminationGracePeriodSeconds: 30 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: [pisvrwsv07, pisvrwsv08] initContainers: - name: fix-permissions image: busybox:1.36 command: ["sh", "-c", "chown -R 999:999 /data/db"] volumeMounts: - name: data mountPath: /data/db containers: - name: mongod image: mongo:8.0 command: - mongod - --shardsvr - --replSet=shard1ReplSet - --port=27018 - --dbpath=/data/db - --keyFile=/etc/mongo/keyfile - --bind_ip_all ports: - containerPort: 27018 resources: requests: memory: "512Mi" cpu: "200m" limits: memory: "1Gi" cpu: "1000m" volumeMounts: - name: data mountPath: /data/db - name: keyfile mountPath: /etc/mongo readOnly: true volumes: - name: keyfile secret: secretName: mongo-keyfile defaultMode: 0400 volumeClaimTemplates: - metadata: name: data spec: accessModes: [ReadWriteOnce] storageClassName: local-storage resources: requests: storage: 5Gi --- apiVersion: v1 kind: Service metadata: name: mongo-shard1-arbiter namespace: mongodb labels: app: mongo-shard1-arbiter spec: clusterIP: None selector: app: mongo-shard1-arbiter ports: - port: 27018 targetPort: 27018 name: mongo --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mongo-shard1-arbiter namespace: mongodb spec: serviceName: mongo-shard1-arbiter replicas: 1 selector: matchLabels: app: mongo-shard1-arbiter template: metadata: labels: app: mongo-shard1-arbiter role: shard1-arbiter spec: terminationGracePeriodSeconds: 30 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: [pisvrwsv07, pisvrwsv08] containers: - name: mongod image: mongo:8.0 command: - mongod - --shardsvr - --replSet=shard1ReplSet - --port=27018 - --dbpath=/data/arb - --keyFile=/etc/mongo/keyfile - --bind_ip_all ports: - containerPort: 27018 resources: requests: memory: "128Mi" cpu: "50m" limits: memory: "256Mi" cpu: "200m" volumeMounts: - name: arbiter-data mountPath: /data/arb - name: keyfile mountPath: /etc/mongo readOnly: true volumes: - name: arbiter-data emptyDir: {} - name: keyfile secret: secretName: mongo-keyfile defaultMode: 0400 --- apiVersion: v1 kind: Service metadata: name: mongo-mongos namespace: mongodb labels: app: mongo-mongos spec: type: NodePort selector: app: mongo-mongos ports: - port: 27017 targetPort: 27017 name: mongo --- apiVersion: apps/v1 kind: Deployment metadata: name: mongo-mongos namespace: mongodb spec: replicas: 2 selector: matchLabels: app: mongo-mongos template: metadata: labels: app: mongo-mongos role: mongos spec: terminationGracePeriodSeconds: 30 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: [pisvrwsv07, pisvrwsv08] containers: - name: mongos image: mongo:8.0 command: - mongos - --configdb - configReplSet/mongo-configsvr-0.mongo-configsvr.mongodb.svc.cluster.local:27019,mongo-configsvr-1.mongo-configsvr.mongodb.svc.cluster.local:27019,mongo-configsvr-2.mongo-configsvr.mongodb.svc.cluster.local:27019 - --port=27017 - --keyFile=/etc/mongo/keyfile - --bind_ip_all ports: - containerPort: 27017 resources: requests: memory: "128Mi" cpu: "100m" limits: memory: "256Mi" cpu: "500m" volumeMounts: - name: keyfile mountPath: /etc/mongo readOnly: true volumes: - name: keyfile secret: secretName: mongo-keyfile defaultMode: 0400