apiVersion: psmdb.percona.com/v1 kind: PerconaServerMongoDB metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"psmdb.percona.com/v1","kind":"PerconaServerMongoDB"} name: {{ include "psmdb-database.fullname" . }} labels: {{ include "psmdb-database.labels" . | indent 4 }} finalizers: {{ .Values.finalizers | toYaml | indent 4 }} spec: crVersion: {{ .Values.crVersion }} pause: {{ .Values.pause }} unmanaged: {{ .Values.unmanaged }} {{- if .Values.platform }} platform: {{ .Values.platform }} {{- end }} {{- if .Values.clusterServiceDNSSuffix }} clusterServiceDNSSuffix: {{ .Values.clusterServiceDNSSuffix }} {{- end }} {{- if .Values.clusterServiceDNSMode }} clusterServiceDNSMode: {{ .Values.clusterServiceDNSMode }} {{- end }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: "{{ .Values.imagePullPolicy }}" {{- if .Values.allowUnsafeConfigurations }} allowUnsafeConfigurations: true {{- end }} multiCluster: enabled: {{ .Values.multiCluster.enabled }} {{- if .Values.multiCluster.DNSSuffix }} DNSSuffix: {{ .Values.multiCluster.DNSSuffix }} {{- end }} {{- if .Values.imagePullSecrets }} imagePullSecrets: {{ .Values.imagePullSecrets | toYaml | indent 4 }} {{- end }} {{- if .Values.tls }} tls: {{ .Values.tls | toYaml | indent 4 }} {{- end }} {{- if .Values.secrets }} secrets: {{ .Values.secrets | toYaml | indent 4 }} {{- else }} secrets: users: {{ include "psmdb-database.fullname" . }}-secrets encryptionKey: {{ include "psmdb-database.fullname" . }}-mongodb-encryption-key {{- end }} {{- if .Values.updateStrategy }} updateStrategy: {{ .Values.updateStrategy }} upgradeOptions: versionServiceEndpoint: {{ .Values.upgradeOptions.versionServiceEndpoint }} apply: {{ .Values.upgradeOptions.apply }} schedule: {{ .Values.upgradeOptions.schedule }} setFCV: {{ .Values.upgradeOptions.setFCV }} {{- end }} pmm: enabled: {{ .Values.pmm.enabled }} image: "{{ .Values.pmm.image.repository }}:{{ .Values.pmm.image.tag }}" serverHost: {{ .Values.pmm.serverHost }} replsets: {{- range $replset := .Values.replsets }} - name: {{ $replset.name }} size: {{ $replset.size }} {{- if $replset.externalNodes }} externalNodes: {{ $replset.externalNodes | toYaml | indent 6 }} {{- end }} {{- if $replset.configuration }} configuration: | {{ $replset.configuration | indent 6 }} {{- end }} affinity: antiAffinityTopologyKey: {{ $replset.antiAffinityTopologyKey }} {{- if $replset.priorityClass }} priorityClassName: {{ $replset.priorityClass }} {{- end }} {{- if $replset.annotations }} annotations: {{ $replset.annotations | toYaml | indent 6 }} {{- end }} {{- if $replset.labels }} labels: {{ $replset.labels | toYaml | indent 6 }} {{- end }} {{- if $replset.nodeSelector }} nodeSelector: {{ $replset.nodeSelector | toYaml | indent 6 }} {{- end }} {{- if $replset.tolerations }} tolerations: {{ $replset.tolerations | toYaml | indent 6 }} {{- end }} {{- if $replset.livenessProbe }} livenessProbe: {{ $replset.livenessProbe | toYaml | indent 6 }} {{- end }} {{- if $replset.readinessProbe }} readinessProbe: {{ $replset.readinessProbe | toYaml | indent 6 }} {{- end }} {{- if $replset.storage }} storage: {{ $replset.storage | toYaml | indent 6 }} {{- end }} {{- if $replset.podSecurityContext }} podSecurityContext: {{ $replset.podSecurityContext | toYaml | indent 6 }} {{- end }} {{- if $replset.containerSecurityContext }} containerSecurityContext: {{ $replset.containerSecurityContext | toYaml | indent 6 }} {{- end }} {{- if $replset.runtimeClass }} runtimeClassName: {{ $replset.runtimeClass }} {{- end }} {{- if $replset.sidecars }} sidecars: {{ $replset.sidecars | toYaml | indent 6 }} {{- end }} {{- if $replset.sidecarVolumes }} sidecarVolumes: {{ $replset.sidecarVolumes | toYaml | indent 6 }} {{- end }} {{- if $replset.sidecarPVCs }} sidecarPVCs: {{ $replset.sidecarPVCs | toYaml | indent 6 }} {{- end }} {{- if $replset.podDisruptionBudget }} podDisruptionBudget: {{- if $replset.podDisruptionBudget.maxUnavailable }} maxUnavailable: {{ $replset.podDisruptionBudget.maxUnavailable }} {{- else }} minAvailable: {{ $replset.podDisruptionBudget.minAvailable }} {{- end }} {{- end }} {{- if $replset.expose }} expose: enabled: {{ $replset.expose.enabled }} exposeType: {{ $replset.expose.exposeType }} {{- if $replset.expose.loadBalancerSourceRanges }} loadBalancerSourceRanges: {{ $replset.expose.loadBalancerSourceRanges | toYaml | indent 8 }} {{- end }} {{- if $replset.expose.serviceAnnotations }} serviceAnnotations: {{ $replset.expose.serviceAnnotations | toYaml | indent 8 }} {{- end }} {{- if $replset.expose.serviceLabels }} serviceLabels: {{ $replset.expose.serviceLabels | toYaml | indent 8 }} {{- end }} {{- end }} {{- if $replset.nonvoting }} nonvoting: enabled: {{ $replset.nonvoting.enabled }} size: {{ $replset.nonvoting.size }} {{- if $replset.nonvoting.configuration }} configuration: | {{ $replset.nonvoting.configuration | indent 8 }} {{- end }} affinity: antiAffinityTopologyKey: {{ $replset.nonvoting.antiAffinityTopologyKey }} {{- if $replset.nonvoting.priorityClass }} priorityClassName: {{ $replset.nonvoting.priorityClass }} {{- end }} {{- if $replset.nonvoting.annotations }} annotations: {{ $replset.nonvoting.annotations | toYaml | indent 8 }} {{- end }} {{- if $replset.nonvoting.labels }} labels: {{ $replset.nonvoting.labels | toYaml | indent 8 }} {{- end }} {{- if $replset.nonvoting.podSecurityContext }} podSecurityContext: {{ $replset.nonvoting.podSecurityContext | toYaml | indent 8 }} {{- end }} {{- if $replset.nonvoting.containerSecurityContext }} containerSecurityContext: {{ $replset.nonvoting.containerSecurityContext | toYaml | indent 8 }} {{- end }} {{- if $replset.nonvoting.nodeSelector }} nodeSelector: {{ $replset.nonvoting.nodeSelector | toYaml | indent 8 }} {{- end }} {{- if $replset.nonvoting.tolerations }} tolerations: {{ $replset.nonvoting.tolerations | toYaml | indent 8 }} {{- end }} {{- if $replset.nonvoting.podDisruptionBudget }} podDisruptionBudget: {{- if $replset.nonvoting.podDisruptionBudget.maxUnavailable }} maxUnavailable: {{ $replset.nonvoting.podDisruptionBudget.maxUnavailable }} {{- else }} minAvailable: {{ $replset.nonvoting.podDisruptionBudget.minAvailable }} {{- end }} {{- end }} resources: {{ $replset.nonvoting.resources | toYaml | indent 8 }} {{- if $replset.nonvoting.volumeSpec }} volumeSpec: {{- if $replset.nonvoting.volumeSpec.hostPath }} hostPath: path: {{ $replset.nonvoting.volumeSpec.hostPath }} type: Directory {{- else if $replset.nonvoting.volumeSpec.pvc }} persistentVolumeClaim: {{ $replset.nonvoting.volumeSpec.pvc | toYaml | indent 10 }} {{- else }} emptyDir: {} {{- end }} {{- end }} {{- end }} {{- if $replset.arbiter }} arbiter: enabled: {{ $replset.arbiter.enabled }} size: {{ $replset.arbiter.size }} affinity: antiAffinityTopologyKey: {{ $replset.arbiter.antiAffinityTopologyKey }} {{- if $replset.arbiter.priorityClass }} priorityClassName: {{ $replset.arbiter.priorityClass }} {{- end }} {{- if $replset.arbiter.annotations }} annotations: {{ $replset.arbiter.annotations | toYaml | indent 8 }} {{- end }} {{- if $replset.arbiter.labels }} labels: {{ $replset.arbiter.labels | toYaml | indent 8 }} {{- end }} {{- if $replset.arbiter.nodeSelector }} nodeSelector: {{ $replset.arbiter.nodeSelector | toYaml | indent 8 }} {{- end }} {{- if $replset.arbiter.tolerations }} tolerations: {{ $replset.arbiter.tolerations | toYaml | indent 8 }} {{- end }} {{- end }} {{- if $replset.schedulerName }} schedulerName: {{ $replset.schedulerName }} {{- end }} resources: {{ $replset.resources | toYaml | indent 6 }} {{- if $replset.volumeSpec }} volumeSpec: {{- if $replset.volumeSpec.hostPath }} hostPath: path: {{ $replset.volumeSpec.hostPath }} type: Directory {{- else if $replset.volumeSpec.pvc }} persistentVolumeClaim: {{ $replset.volumeSpec.pvc | toYaml | indent 8 }} {{- else }} emptyDir: {} {{- end }} {{- end }} {{- end }} sharding: enabled: {{ .Values.sharding.enabled }} configsvrReplSet: size: {{ .Values.sharding.configrs.size }} {{- if .Values.sharding.configrs.externalNodes }} externalNodes: {{ .Values.sharding.configrs.externalNodes | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.configuration }} configuration: | {{ .Values.sharding.configrs.configuration | indent 8 }} {{- end }} affinity: antiAffinityTopologyKey: {{ .Values.sharding.configrs.antiAffinityTopologyKey }} {{- if .Values.sharding.configrs.priorityClass }} priorityClassName: {{ .Values.sharding.configrs.priorityClass }} {{- end }} {{- if .Values.sharding.configrs.annotations }} annotations: {{ .Values.sharding.configrs.annotations | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.labels }} labels: {{ .Values.sharding.configrs.labels | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.nodeSelector }} nodeSelector: {{ .Values.sharding.configrs.nodeSelector | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.tolerations }} tolerations: {{ .Values.sharding.configrs.tolerations | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.livenessProbe }} livenessProbe: {{ .Values.sharding.configrs.livenessProbe | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.readinessProbe }} readinessProbe: {{ .Values.sharding.configrs.readinessProbe | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.storage }} storage: {{ .Values.sharding.configrs.storage | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.podSecurityContext }} podSecurityContext: {{ .Values.sharding.configrs.podSecurityContext | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.containerSecurityContext }} containerSecurityContext: {{ .Values.sharding.configrs.containerSecurityContext | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.runtimeClass }} runtimeClassName: {{ .Values.sharding.configrs.runtimeClass }} {{- end }} {{- if .Values.sharding.configrs.sidecars }} sidecars: {{ .Values.sharding.configrs.sidecars | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.sidecarVolumes }} sidecarVolumes: {{ .Values.sharding.configrs.sidecarVolumes | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.configrs.sidecarPVCs }} sidecarPVCs: {{ .Values.sharding.configrs.sidecarPVCs | toYaml | indent 8 }} {{- end }} podDisruptionBudget: {{- if .Values.sharding.configrs.podDisruptionBudget.maxUnavailable }} maxUnavailable: {{ .Values.sharding.configrs.podDisruptionBudget.maxUnavailable }} {{- else }} minAvailable: {{ .Values.sharding.configrs.podDisruptionBudget.minAvailable }} {{- end }} {{- if .Values.sharding.configrs.expose }} expose: enabled: {{ .Values.sharding.configrs.expose.enabled }} exposeType: {{ .Values.sharding.configrs.expose.exposeType }} {{- if .Values.sharding.configrs.expose.loadBalancerSourceRanges }} loadBalancerSourceRanges: {{ .Values.sharding.configrs.expose.loadBalancerSourceRanges | toYaml | indent 10 }} {{- end }} {{- if .Values.sharding.configrs.expose.serviceAnnotations }} serviceAnnotations: {{ .Values.sharding.configrs.expose.serviceAnnotations | toYaml | indent 10 }} {{- end }} {{- if .Values.sharding.configrs.expose.serviceLabels }} serviceLabels: {{ .Values.sharding.configrs.expose.serviceLabels | toYaml | indent 10 }} {{- end }} {{- end }} resources: limits: cpu: {{ .Values.sharding.configrs.resources.limits.cpu }} memory: {{ .Values.sharding.configrs.resources.limits.memory }} requests: cpu: {{ .Values.sharding.configrs.resources.requests.cpu }} memory: {{ .Values.sharding.configrs.resources.requests.memory }} volumeSpec: {{- if .Values.sharding.configrs.volumeSpec.hostPath }} hostPath: path: {{ .Values.sharding.configrs.volumeSpec.hostPath }} type: Directory {{- else if .Values.sharding.configrs.volumeSpec.pvc }} persistentVolumeClaim: {{ .Values.sharding.configrs.volumeSpec.pvc | toYaml | indent 10 }} {{- else }} emptyDir: {} {{- end }} mongos: size: {{ .Values.sharding.mongos.size }} {{- if .Values.sharding.mongos.configuration }} configuration: | {{ .Values.sharding.mongos.configuration | indent 8 }} {{- end }} affinity: antiAffinityTopologyKey: {{ .Values.sharding.mongos.antiAffinityTopologyKey }} {{- if .Values.sharding.mongos.priorityClass }} priorityClassName: {{ .Values.sharding.mongos.priorityClass }} {{- end }} {{- if .Values.sharding.mongos.annotations }} annotations: {{ .Values.sharding.mongos.annotations | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.labels }} labels: {{ .Values.sharding.mongos.labels | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.nodeSelector }} nodeSelector: {{ .Values.sharding.mongos.nodeSelector | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.tolerations }} tolerations: {{ .Values.sharding.mongos.tolerations | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.livenessProbe }} livenessProbe: {{ .Values.sharding.mongos.livenessProbe | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.readinessProbe }} readinessProbe: {{ .Values.sharding.mongos.readinessProbe | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.podSecurityContext }} podSecurityContext: {{ .Values.sharding.mongos.podSecurityContext | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.containerSecurityContext }} containerSecurityContext: {{ .Values.sharding.mongos.containerSecurityContext | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.runtimeClass }} runtimeClassName: {{ .Values.sharding.mongos.runtimeClass }} {{- end }} {{- if .Values.sharding.mongos.sidecars }} sidecars: {{ .Values.sharding.mongos.sidecars | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.sidecarVolumes }} sidecarVolumes: {{ .Values.sharding.mongos.sidecarVolumes | toYaml | indent 8 }} {{- end }} {{- if .Values.sharding.mongos.sidecarPVCs }} sidecarPVCs: {{ .Values.sharding.mongos.sidecarPVCs | toYaml | indent 8 }} {{- end }} podDisruptionBudget: {{- if .Values.sharding.mongos.podDisruptionBudget.maxUnavailable }} maxUnavailable: {{ .Values.sharding.mongos.podDisruptionBudget.maxUnavailable }} {{- else }} minAvailable: {{ .Values.sharding.mongos.podDisruptionBudget.minAvailable }} {{- end }} resources: limits: cpu: {{ .Values.sharding.mongos.resources.limits.cpu }} memory: {{ .Values.sharding.mongos.resources.limits.memory }} requests: cpu: {{ .Values.sharding.mongos.resources.requests.cpu }} memory: {{ .Values.sharding.mongos.resources.requests.memory }} expose: exposeType: {{ .Values.sharding.mongos.expose.exposeType }} {{- if .Values.sharding.mongos.expose.servicePerPod }} servicePerPod: {{ .Values.sharding.mongos.expose.servicePerPod }} {{- end }} {{- if .Values.sharding.mongos.expose.loadBalancerSourceRanges }} loadBalancerSourceRanges: {{ .Values.sharding.mongos.expose.loadBalancerSourceRanges | toYaml | indent 10 }} {{- end }} {{- if .Values.sharding.mongos.expose.serviceAnnotations }} serviceAnnotations: {{ .Values.sharding.mongos.expose.serviceAnnotations | toYaml | indent 10 }} {{- end }} {{- if .Values.sharding.mongos.expose.serviceLabels }} serviceLabels: {{ .Values.sharding.mongos.expose.serviceLabels | toYaml | indent 10 }} {{- end }} {{- if .Values.sharding.mongos.auditLog }} auditLog: {{ .Values.sharding.mongos.auditLog | toYaml | indent 8 }} {{- end }} backup: enabled: {{ .Values.backup.enabled }} {{- if .Values.backup.annotations }} annotations: {{ .Values.backup.annotations | toYaml | indent 6 }} {{- end }} image: "{{ .Values.backup.image.repository }}:{{ .Values.backup.image.tag }}" serviceAccountName: {{ .Values.backup.serviceAccountName }} {{- if .Values.backup.resources }} resources: {{ .Values.backup.resources | toYaml | indent 6 }} {{- end }} storages: {{ .Values.backup.storages | toYaml | indent 6 }} pitr: {{- if and .Values.backup.enabled .Values.backup.pitr.enabled }} enabled: true {{- if .Values.backup.pitr.oplogSpanMin }} oplogSpanMin: {{ .Values.backup.pitr.oplogSpanMin }} {{- end }} {{- if .Values.backup.pitr.compressionType }} compressionType: {{ .Values.backup.pitr.compressionType }} {{- end }} {{- if .Values.backup.pitr.compressionLevel }} compressionLevel: {{ .Values.backup.pitr.compressionLevel }} {{- end }} {{- else }} enabled: false {{- end }} tasks: {{ .Values.backup.tasks | toYaml | indent 6 }}