Skip to content

Commit 3bbd0b5

Browse files
committed
Add .spec.clusterSpecList field to MongoDB
1 parent 0af0efd commit 3bbd0b5

File tree

4 files changed

+422
-0
lines changed

4 files changed

+422
-0
lines changed

api/v1/mdb/mongodb_types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,8 @@ type MongoDbSpec struct {
429429
ShardedClusterSpec `json:",inline"`
430430
status.MongodbShardedClusterSizeConfig `json:",inline"`
431431

432+
ClusterSpecList ClusterSpecList `json:"clusterSpecList,omitempty"`
433+
432434
// Amount of members for this MongoDB Replica Set
433435
Members int `json:"members,omitempty"`
434436
PodSpec *MongoDbPodSpec `json:"podSpec,omitempty"`

config/crd/bases/mongodb.com_mongodb.yaml

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,146 @@ spec:
396396
clusterDomain:
397397
format: hostname
398398
type: string
399+
clusterSpecList:
400+
items:
401+
description: |-
402+
ClusterSpecItem is the mongodb multi-cluster spec that is specific to a
403+
particular Kubernetes cluster, this maps to the statefulset created in each cluster
404+
properties:
405+
clusterName:
406+
description: |-
407+
ClusterName is name of the cluster where the MongoDB Statefulset will be scheduled, the
408+
name should have a one on one mapping with the service-account created in the central cluster
409+
to talk to the workload clusters.
410+
type: string
411+
externalAccess:
412+
description: ExternalAccessConfiguration provides external access
413+
configuration for Multi-Cluster.
414+
properties:
415+
externalDomain:
416+
description: An external domain that is used for exposing
417+
MongoDB to the outside world.
418+
type: string
419+
externalService:
420+
description: Provides a way to override the default (NodePort)
421+
Service
422+
properties:
423+
annotations:
424+
additionalProperties:
425+
type: string
426+
description: A map of annotations that shall be added
427+
to the externally available Service.
428+
type: object
429+
spec:
430+
description: A wrapper for the Service spec object.
431+
type: object
432+
x-kubernetes-preserve-unknown-fields: true
433+
type: object
434+
type: object
435+
memberConfig:
436+
description: MemberConfig allows to specify votes, priorities
437+
and tags for each of the mongodb process.
438+
items:
439+
properties:
440+
priority:
441+
type: string
442+
tags:
443+
additionalProperties:
444+
type: string
445+
type: object
446+
votes:
447+
type: integer
448+
type: object
449+
type: array
450+
members:
451+
description: Amount of members for this MongoDB Replica Set
452+
type: integer
453+
podSpec:
454+
properties:
455+
persistence:
456+
description: Note, that this field is used by MongoDB resources
457+
only, let's keep it here for simplicity
458+
properties:
459+
multiple:
460+
properties:
461+
data:
462+
properties:
463+
labelSelector:
464+
type: object
465+
x-kubernetes-preserve-unknown-fields: true
466+
storage:
467+
type: string
468+
storageClass:
469+
type: string
470+
type: object
471+
journal:
472+
properties:
473+
labelSelector:
474+
type: object
475+
x-kubernetes-preserve-unknown-fields: true
476+
storage:
477+
type: string
478+
storageClass:
479+
type: string
480+
type: object
481+
logs:
482+
properties:
483+
labelSelector:
484+
type: object
485+
x-kubernetes-preserve-unknown-fields: true
486+
storage:
487+
type: string
488+
storageClass:
489+
type: string
490+
type: object
491+
type: object
492+
single:
493+
properties:
494+
labelSelector:
495+
type: object
496+
x-kubernetes-preserve-unknown-fields: true
497+
storage:
498+
type: string
499+
storageClass:
500+
type: string
501+
type: object
502+
type: object
503+
podTemplate:
504+
type: object
505+
x-kubernetes-preserve-unknown-fields: true
506+
type: object
507+
service:
508+
description: this is an optional service, it will get the name
509+
"<rsName>-service" in case not provided
510+
type: string
511+
statefulSet:
512+
description: |-
513+
StatefulSetConfiguration holds the optional custom StatefulSet
514+
that should be merged into the operator created one.
515+
properties:
516+
metadata:
517+
description: StatefulSetMetadataWrapper is a wrapper around
518+
Labels and Annotations
519+
properties:
520+
annotations:
521+
additionalProperties:
522+
type: string
523+
type: object
524+
labels:
525+
additionalProperties:
526+
type: string
527+
type: object
528+
type: object
529+
spec:
530+
type: object
531+
x-kubernetes-preserve-unknown-fields: true
532+
required:
533+
- spec
534+
type: object
535+
required:
536+
- members
537+
type: object
538+
type: array
399539
configServerCount:
400540
type: integer
401541
configSrv:

helm_chart/crds/mongodb.com_mongodb.yaml

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,146 @@ spec:
396396
clusterDomain:
397397
format: hostname
398398
type: string
399+
clusterSpecList:
400+
items:
401+
description: |-
402+
ClusterSpecItem is the mongodb multi-cluster spec that is specific to a
403+
particular Kubernetes cluster, this maps to the statefulset created in each cluster
404+
properties:
405+
clusterName:
406+
description: |-
407+
ClusterName is name of the cluster where the MongoDB Statefulset will be scheduled, the
408+
name should have a one on one mapping with the service-account created in the central cluster
409+
to talk to the workload clusters.
410+
type: string
411+
externalAccess:
412+
description: ExternalAccessConfiguration provides external access
413+
configuration for Multi-Cluster.
414+
properties:
415+
externalDomain:
416+
description: An external domain that is used for exposing
417+
MongoDB to the outside world.
418+
type: string
419+
externalService:
420+
description: Provides a way to override the default (NodePort)
421+
Service
422+
properties:
423+
annotations:
424+
additionalProperties:
425+
type: string
426+
description: A map of annotations that shall be added
427+
to the externally available Service.
428+
type: object
429+
spec:
430+
description: A wrapper for the Service spec object.
431+
type: object
432+
x-kubernetes-preserve-unknown-fields: true
433+
type: object
434+
type: object
435+
memberConfig:
436+
description: MemberConfig allows to specify votes, priorities
437+
and tags for each of the mongodb process.
438+
items:
439+
properties:
440+
priority:
441+
type: string
442+
tags:
443+
additionalProperties:
444+
type: string
445+
type: object
446+
votes:
447+
type: integer
448+
type: object
449+
type: array
450+
members:
451+
description: Amount of members for this MongoDB Replica Set
452+
type: integer
453+
podSpec:
454+
properties:
455+
persistence:
456+
description: Note, that this field is used by MongoDB resources
457+
only, let's keep it here for simplicity
458+
properties:
459+
multiple:
460+
properties:
461+
data:
462+
properties:
463+
labelSelector:
464+
type: object
465+
x-kubernetes-preserve-unknown-fields: true
466+
storage:
467+
type: string
468+
storageClass:
469+
type: string
470+
type: object
471+
journal:
472+
properties:
473+
labelSelector:
474+
type: object
475+
x-kubernetes-preserve-unknown-fields: true
476+
storage:
477+
type: string
478+
storageClass:
479+
type: string
480+
type: object
481+
logs:
482+
properties:
483+
labelSelector:
484+
type: object
485+
x-kubernetes-preserve-unknown-fields: true
486+
storage:
487+
type: string
488+
storageClass:
489+
type: string
490+
type: object
491+
type: object
492+
single:
493+
properties:
494+
labelSelector:
495+
type: object
496+
x-kubernetes-preserve-unknown-fields: true
497+
storage:
498+
type: string
499+
storageClass:
500+
type: string
501+
type: object
502+
type: object
503+
podTemplate:
504+
type: object
505+
x-kubernetes-preserve-unknown-fields: true
506+
type: object
507+
service:
508+
description: this is an optional service, it will get the name
509+
"<rsName>-service" in case not provided
510+
type: string
511+
statefulSet:
512+
description: |-
513+
StatefulSetConfiguration holds the optional custom StatefulSet
514+
that should be merged into the operator created one.
515+
properties:
516+
metadata:
517+
description: StatefulSetMetadataWrapper is a wrapper around
518+
Labels and Annotations
519+
properties:
520+
annotations:
521+
additionalProperties:
522+
type: string
523+
type: object
524+
labels:
525+
additionalProperties:
526+
type: string
527+
type: object
528+
type: object
529+
spec:
530+
type: object
531+
x-kubernetes-preserve-unknown-fields: true
532+
required:
533+
- spec
534+
type: object
535+
required:
536+
- members
537+
type: object
538+
type: array
399539
configServerCount:
400540
type: integer
401541
configSrv:

0 commit comments

Comments
 (0)