From d5c4b32093c4c576ccfb42c8dd3f2dca888ff41c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 May 2022 18:10:58 +0400 Subject: [PATCH] Release 1.0.0 (#535) Co-authored-by: Anton Co-authored-by: Svetlana <5437289+leo-ri@users.noreply.github.com> Co-authored-by: Igor Karpukhin --- bundle.Dockerfile | 2 +- ...atlas.mongodb.com_atlasbackuppolicies.yaml | 54 +- ...tlas.mongodb.com_atlasbackupschedules.yaml | 33 +- .../atlas.mongodb.com_atlasdeployments.yaml | 860 +++++++++++ .../atlas.mongodb.com_atlasprojects.yaml | 233 ++- ...tlas-kubernetes.clusterserviceversion.yaml | 126 +- bundle/metadata/annotations.yaml | 2 +- deploy/all-in-one.yaml | 1306 ++++++++++++----- deploy/clusterwide/clusterwide-config.yaml | 48 +- deploy/clusterwide/crds.yaml | 1278 +++++++++++----- ...atlas.mongodb.com_atlasbackuppolicies.yaml | 101 ++ ...tlas.mongodb.com_atlasbackupschedules.yaml | 123 ++ .../atlas.mongodb.com_atlasdeployments.yaml | 858 +++++++++++ .../crds/atlas.mongodb.com_atlasprojects.yaml | 233 ++- deploy/namespaced/crds.yaml | 1278 +++++++++++----- deploy/namespaced/namespaced-config.yaml | 48 +- deploy/openshift/crds.yaml | 1278 +++++++++++----- deploy/openshift/openshift.yaml | 48 +- third_party_licenses.txt | 126 +- 19 files changed, 6542 insertions(+), 1493 deletions(-) create mode 100644 bundle/manifests/atlas.mongodb.com_atlasdeployments.yaml create mode 100644 deploy/crds/atlas.mongodb.com_atlasbackuppolicies.yaml create mode 100644 deploy/crds/atlas.mongodb.com_atlasbackupschedules.yaml create mode 100644 deploy/crds/atlas.mongodb.com_atlasdeployments.yaml diff --git a/bundle.Dockerfile b/bundle.Dockerfile index 9c316d5096..cd6938fbba 100644 --- a/bundle.Dockerfile +++ b/bundle.Dockerfile @@ -11,7 +11,7 @@ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=mongodb-atlas-kubernetes LABEL operators.operatorframework.io.bundle.channels.v1=beta LABEL operators.operatorframework.io.bundle.channel.default.v1=beta -LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.16.0 +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.15.0+git LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v2 diff --git a/bundle/manifests/atlas.mongodb.com_atlasbackuppolicies.yaml b/bundle/manifests/atlas.mongodb.com_atlasbackuppolicies.yaml index 8fd9796919..81626e1320 100644 --- a/bundle/manifests/atlas.mongodb.com_atlasbackuppolicies.yaml +++ b/bundle/manifests/atlas.mongodb.com_atlasbackuppolicies.yaml @@ -38,13 +38,57 @@ spec: spec: description: AtlasBackupPolicySpec defines the desired state of AtlasBackupPolicy properties: - foo: - description: Foo is an example field of AtlasBackupPolicy. Edit atlasbackuppolicy_types.go - to remove/update - type: string + items: + description: A list of BackupPolicy items + items: + properties: + frequencyInterval: + description: Desired frequency of the new backup policy item + specified by FrequencyType. A value of 1 specifies the first + instance of the corresponding FrequencyType. The only accepted + value you can set for frequency interval with NVMe clusters + is 12. + enum: + - 1 + - 2 + - 4 + - 6 + - 8 + - 12 + type: integer + frequencyType: + description: 'Frequency associated with the backup policy item. + One of the following values: hourly, daily, weekly or monthly. + You cannot specify multiple hourly and daily backup policy + items.' + enum: + - hourly + - daily + - weekly + - monthly + type: string + retentionUnit: + description: 'Scope of the backup policy item: days, weeks, + or months' + enum: + - days + - weeks + - months + type: string + retentionValue: + description: Value to associate with RetentionUnit + type: integer + required: + - frequencyInterval + - frequencyType + - retentionUnit + - retentionValue + type: object + type: array + required: + - items type: object status: - description: AtlasBackupPolicyStatus defines the observed state of AtlasBackupPolicy type: object type: object served: true diff --git a/bundle/manifests/atlas.mongodb.com_atlasbackupschedules.yaml b/bundle/manifests/atlas.mongodb.com_atlasbackupschedules.yaml index 1c779ae6e6..bbe4a9e673 100644 --- a/bundle/manifests/atlas.mongodb.com_atlasbackupschedules.yaml +++ b/bundle/manifests/atlas.mongodb.com_atlasbackupschedules.yaml @@ -54,6 +54,7 @@ spec: cloud backup snapshot to. type: string frequencyType: + default: MONTHLY enum: - MONTHLY type: string @@ -61,23 +62,19 @@ spec: - exportBucketId - frequencyType type: object - policies: - description: Array containing a references (name & namespace) for - each backup policy item in the desired updated backup policy. - items: - description: ResourceRefNamespaced is a reference to a Kubernetes - Resource that allows to configure the namespace - properties: - name: - description: Name is the name of the Kubernetes Resource - type: string - namespace: - description: Namespace is the namespace of the Kubernetes Resource - type: string - required: - - name - type: object - type: array + policy: + description: A reference (name & namespace) for backup policy in the + desired updated backup policy. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object referenceHourOfDay: description: UTC Hour of day between 0 and 23, inclusive, representing which hour of the day that Atlas takes snapshots for backup policy @@ -111,7 +108,7 @@ spec: the snapshots type: boolean required: - - policies + - policy type: object status: type: object diff --git a/bundle/manifests/atlas.mongodb.com_atlasdeployments.yaml b/bundle/manifests/atlas.mongodb.com_atlasdeployments.yaml new file mode 100644 index 0000000000..d6e2405d65 --- /dev/null +++ b/bundle/manifests/atlas.mongodb.com_atlasdeployments.yaml @@ -0,0 +1,860 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + labels: + app.kubernetes.io/component: controller + app.kubernetes.io/instance: mongodb-atlas-kubernetes-operator + app.kubernetes.io/name: mongodb-atlas-kubernetes-operator + name: atlasdeployments.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDeployment + listKind: AtlasDeploymentList + plural: atlasdeployments + singular: atlasdeployment + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasDeployment is the Schema for the atlasclusters API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDeploymentSpec defines the desired state of AtlasDeployment + properties: + advancedDeploymentSpec: + description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ + properties: + backupEnabled: + type: boolean + biConnector: + description: BiConnectorSpec specifies BI Connector for Atlas + configuration on this cluster + properties: + enabled: + description: Flag that indicates whether or not BI Connector + for Atlas is enabled on the cluster. + type: boolean + readPreference: + description: Source from which the BI Connector for Atlas + reads data. Each BI Connector for Atlas read preference + contains a distinct combination of readPreference and readPreferenceTags + options. + type: string + type: object + clusterType: + type: string + connectionStrings: + description: ConnectionStrings configuration for applications + use to connect to this cluster. + properties: + awsPrivateLink: + additionalProperties: + type: string + type: object + awsPrivateLinkSrv: + additionalProperties: + type: string + type: object + private: + type: string + privateEndpoint: + items: + description: PrivateEndpointSpec connection strings. Each + object describes the connection strings you can use to + connect to this cluster through a private endpoint. Atlas + returns this parameter only if you deployed a private + endpoint to all regions to which you deployed this cluster's + nodes. + properties: + connectionString: + type: string + endpoints: + items: + description: EndpointSpec through which you connect + to Atlas. + properties: + endpointId: + type: string + providerName: + type: string + region: + type: string + type: object + type: array + srvConnectionString: + type: string + type: + type: string + type: object + type: array + privateSrv: + type: string + standard: + type: string + standardSrv: + type: string + type: object + createDate: + type: string + diskSizeGB: + type: integer + encryptionAtRestProvider: + type: string + groupId: + type: string + id: + type: string + labels: + items: + description: LabelSpec contains key-value pairs that tag and + categorize the Cluster/DBUser + properties: + key: + maxLength: 255 + type: string + value: + type: string + required: + - key + - value + type: object + type: array + mongoDBMajorVersion: + type: string + mongoDBVersion: + type: string + name: + type: string + paused: + type: boolean + pitEnabled: + type: boolean + replicationSpecs: + items: + properties: + id: + type: string + numShards: + type: integer + regionConfigs: + items: + properties: + analyticsSpecs: + properties: + diskIOPS: + format: int64 + type: integer + ebsVolumeType: + type: string + instanceSize: + type: string + nodeCount: + type: integer + type: object + autoScaling: + description: AutoScalingSpec configures your cluster + to automatically scale its storage + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot + mode for Performance Advisor is enabled. The + default is false. + type: boolean + compute: + description: Collection of settings that configure + how a cluster might scale its cluster tier and + whether the cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster + tier auto-scaling is enabled. The default + is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which + your cluster can automatically scale (such + as M40). Atlas requires this parameter if + "autoScaling.compute.enabled" : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which + your cluster can automatically scale (such + as M10). Atlas requires this parameter if + "autoScaling.compute.scaleDownEnabled" : + true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether + the cluster tier may scale down. Atlas requires + this parameter if "autoScaling.compute.enabled" + : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk + auto-scaling is enabled. The default is true. + type: boolean + type: object + backingProviderName: + type: string + electableSpecs: + properties: + diskIOPS: + format: int64 + type: integer + ebsVolumeType: + type: string + instanceSize: + type: string + nodeCount: + type: integer + type: object + priority: + type: integer + providerName: + type: string + readOnlySpecs: + properties: + diskIOPS: + format: int64 + type: integer + ebsVolumeType: + type: string + instanceSize: + type: string + nodeCount: + type: integer + type: object + regionName: + type: string + type: object + type: array + zoneName: + type: string + type: object + type: array + rootCertType: + type: string + stateName: + type: string + versionReleaseSystem: + type: string + type: object + backupRef: + description: Backup schedule for the AtlasDeployment + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + deploymentSpec: + description: Configuration for the advanced cluster API + properties: + autoScaling: + description: Collection of settings that configures auto-scaling + information for the cluster. If you specify the autoScaling + object, you must also specify the providerSettings.autoScaling + object. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode for + Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how a cluster + might scale its cluster tier and whether the cluster can + scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your cluster + can automatically scale (such as M40). Atlas requires + this parameter if "autoScaling.compute.enabled" : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your cluster + can automatically scale (such as M10). Atlas requires + this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter if + "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + biConnector: + description: Configuration of BI Connector for Atlas on this cluster. + The MongoDB Connector for Business Intelligence for Atlas (BI + Connector) is only available for M10 and larger clusters. + properties: + enabled: + description: Flag that indicates whether or not BI Connector + for Atlas is enabled on the cluster. + type: boolean + readPreference: + description: Source from which the BI Connector for Atlas + reads data. Each BI Connector for Atlas read preference + contains a distinct combination of readPreference and readPreferenceTags + options. + type: string + type: object + clusterType: + description: Type of the cluster that you want to create. The + parameter is required if replicationSpecs are set or if Global + Clusters are deployed. + enum: + - REPLICASET + - SHARDED + - GEOSHARDED + type: string + diskSizeGB: + description: Capacity, in gigabytes, of the host's root volume. + Increase this number to add capacity, up to a maximum possible + value of 4096 (i.e., 4 TB). This value must be a positive integer. + The parameter is required if replicationSpecs are configured. + maximum: 4096 + minimum: 0 + type: integer + encryptionAtRestProvider: + description: Cloud service provider that offers Encryption at + Rest. + enum: + - AWS + - GCP + - AZURE + - NONE + type: string + labels: + description: Collection of key-value pairs that tag and categorize + the cluster. Each key and value has a maximum length of 255 + characters. + items: + description: LabelSpec contains key-value pairs that tag and + categorize the Cluster/DBUser + properties: + key: + maxLength: 255 + type: string + value: + type: string + required: + - key + - value + type: object + type: array + mongoDBMajorVersion: + description: Version of the cluster to deploy. + type: string + name: + description: Name of the cluster as it appears in Atlas. After + Atlas creates the cluster, you can't change its name. + type: string + numShards: + description: Positive integer that specifies the number of shards + to deploy for a sharded cluster. The parameter is required if + replicationSpecs are configured + maximum: 50 + minimum: 1 + type: integer + paused: + description: Flag that indicates whether the cluster should be + paused. + type: boolean + pitEnabled: + description: Flag that indicates the cluster uses continuous cloud + backups. + type: boolean + providerBackupEnabled: + description: Applicable only for M10+ clusters. Flag that indicates + if the cluster uses Cloud Backups for backups. + type: boolean + providerSettings: + description: Configuration for the provisioned hosts on which + MongoDB runs. The available options are specific to the cloud + service provider. + properties: + autoScaling: + description: Range of instance sizes to which your cluster + can scale. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode + for Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how + a cluster might scale its cluster tier and whether the + cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your + cluster can automatically scale (such as M40). Atlas + requires this parameter if "autoScaling.compute.enabled" + : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your + cluster can automatically scale (such as M10). Atlas + requires this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter + if "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + backingProviderName: + description: 'Cloud service provider on which the host for + a multi-tenant cluster is provisioned. This setting only + works when "providerSetting.providerName" : "TENANT" and + "providerSetting.instanceSizeName" : M2 or M5.' + enum: + - AWS + - GCP + - AZURE + type: string + diskIOPS: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + format: int64 + type: integer + diskTypeName: + description: Type of disk if you selected Azure as your cloud + service provider. + type: string + encryptEBSVolume: + description: Flag that indicates whether the Amazon EBS encryption + feature encrypts the host's root volume for both data at + rest within the volume and for data moving between the volume + and the cluster. + type: boolean + instanceSizeName: + description: Atlas provides different cluster tiers, each + with a default storage capacity and RAM size. The cluster + you select is used for all the data-bearing hosts in your + cluster tier. + type: string + providerName: + description: Cloud service provider on which Atlas provisions + the hosts. + enum: + - AWS + - GCP + - AZURE + - TENANT + - SERVERLESS + type: string + regionName: + description: Physical location of your MongoDB cluster. The + region you choose can affect network latency for clients + accessing your databases. + type: string + volumeType: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + enum: + - STANDARD + - PROVISIONED + type: string + required: + - providerName + type: object + replicationSpecs: + description: Configuration for cluster regions. + items: + description: ReplicationSpec represents a configuration for + cluster regions + properties: + numShards: + description: Number of shards to deploy in each specified + zone. The default value is 1. + format: int64 + type: integer + regionsConfig: + additionalProperties: + description: RegionsConfig describes the region’s priority + in elections and the number and type of MongoDB nodes + Atlas deploys to the region. + properties: + analyticsNodes: + description: The number of analytics nodes for Atlas + to deploy to the region. Analytics nodes are useful + for handling analytic data such as reporting queries + from BI Connector for Atlas. Analytics nodes are + read-only, and can never become the primary. If + you do not specify this option, no analytics nodes + are deployed to the region. + format: int64 + type: integer + electableNodes: + description: Number of electable nodes for Atlas to + deploy to the region. Electable nodes can become + the primary and can facilitate local reads. + format: int64 + type: integer + priority: + description: Election priority of the region. For + regions with only replicationSpecs[n].regionsConfig..readOnlyNodes, + set this value to 0. + format: int64 + type: integer + readOnlyNodes: + description: Number of read-only nodes for Atlas to + deploy to the region. Read-only nodes can never + become the primary, but can facilitate local-reads. + format: int64 + type: integer + type: object + description: Configuration for a region. Each regionsConfig + object describes the region's priority in elections and + the number and type of MongoDB nodes that Atlas deploys + to the region. + type: object + zoneName: + description: Name for the zone in a Global Cluster. Don't + provide this value if clusterType is not GEOSHARDED. + type: string + type: object + type: array + required: + - name + - providerSettings + type: object + processArgs: + description: ProcessArgs allows to modify Advanced Configuration Options + properties: + defaultReadConcern: + type: string + defaultWriteConcern: + type: string + failIndexKeyTooLong: + type: boolean + javascriptEnabled: + type: boolean + minimumEnabledTlsProtocol: + type: string + noTableScan: + type: boolean + oplogSizeMB: + format: int64 + type: integer + sampleRefreshIntervalBIConnector: + format: int64 + type: integer + sampleSizeBIConnector: + format: int64 + type: integer + type: object + projectRef: + description: Project is a reference to AtlasProject resource the cluster + belongs to + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + serverlessSpec: + description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ + properties: + name: + description: Name of the cluster as it appears in Atlas. After + Atlas creates the cluster, you can't change its name. + type: string + providerSettings: + description: Configuration for the provisioned hosts on which + MongoDB runs. The available options are specific to the cloud + service provider. + properties: + autoScaling: + description: Range of instance sizes to which your cluster + can scale. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode + for Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how + a cluster might scale its cluster tier and whether the + cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your + cluster can automatically scale (such as M40). Atlas + requires this parameter if "autoScaling.compute.enabled" + : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your + cluster can automatically scale (such as M10). Atlas + requires this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter + if "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + backingProviderName: + description: 'Cloud service provider on which the host for + a multi-tenant cluster is provisioned. This setting only + works when "providerSetting.providerName" : "TENANT" and + "providerSetting.instanceSizeName" : M2 or M5.' + enum: + - AWS + - GCP + - AZURE + type: string + diskIOPS: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + format: int64 + type: integer + diskTypeName: + description: Type of disk if you selected Azure as your cloud + service provider. + type: string + encryptEBSVolume: + description: Flag that indicates whether the Amazon EBS encryption + feature encrypts the host's root volume for both data at + rest within the volume and for data moving between the volume + and the cluster. + type: boolean + instanceSizeName: + description: Atlas provides different cluster tiers, each + with a default storage capacity and RAM size. The cluster + you select is used for all the data-bearing hosts in your + cluster tier. + type: string + providerName: + description: Cloud service provider on which Atlas provisions + the hosts. + enum: + - AWS + - GCP + - AZURE + - TENANT + - SERVERLESS + type: string + regionName: + description: Physical location of your MongoDB cluster. The + region you choose can affect network latency for clients + accessing your databases. + type: string + volumeType: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + enum: + - STANDARD + - PROVISIONED + type: string + required: + - providerName + type: object + required: + - name + - providerSettings + type: object + required: + - projectRef + type: object + status: + description: AtlasDeploymentStatus defines the observed state of AtlasDeployment. + properties: + conditions: + description: Conditions is the list of statuses showing the current + state of the Atlas Custom Resource + items: + description: Condition describes the state of an Atlas Custom Resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Atlas Custom Resource condition. + type: string + required: + - status + - type + type: object + type: array + connectionStrings: + description: ConnectionStrings is a set of connection strings that + your applications use to connect to this cluster. + properties: + private: + description: Network-peering-endpoint-aware mongodb:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. + type: string + privateEndpoint: + description: Private endpoint connection strings. Each object + describes the connection strings you can use to connect to this + cluster through a private endpoint. Atlas returns this parameter + only if you deployed a private endpoint to all regions to which + you deployed this cluster's nodes. + items: + description: PrivateEndpoint connection strings. Each object + describes the connection strings you can use to connect to + this cluster through a private endpoint. Atlas returns this + parameter only if you deployed a private endpoint to all regions + to which you deployed this cluster's nodes. + properties: + connectionString: + description: Private-endpoint-aware mongodb:// connection + string for this private endpoint. + type: string + endpoints: + description: Private endpoint through which you connect + to Atlas when you use connectionStrings.privateEndpoint[n].connectionString + or connectionStrings.privateEndpoint[n].srvConnectionString. + items: + description: Endpoint through which you connect to Atlas + properties: + endpointId: + description: Unique identifier of the private endpoint. + type: string + ip: + description: Private IP address of the private endpoint + network interface you created in your Azure VNet. + type: string + providerName: + description: Cloud provider to which you deployed + the private endpoint. Atlas returns AWS or AZURE. + type: string + region: + description: Region to which you deployed the private + endpoint. + type: string + type: object + type: array + srvConnectionString: + description: Private-endpoint-aware mongodb+srv:// connection + string for this private endpoint. + type: string + type: + description: "Type of MongoDB process that you connect to + with the connection strings \n Atlas returns: \n • MONGOD + for replica sets, or \n • MONGOS for sharded clusters" + type: string + type: object + type: array + privateSrv: + description: Network-peering-endpoint-aware mongodb+srv:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. Use this URI format + if your driver supports it. If it doesn't, use connectionStrings.private. + type: string + standard: + description: Public mongodb:// connection string for this cluster. + type: string + standardSrv: + description: Public mongodb+srv:// connection string for this + cluster. + type: string + type: object + mongoDBVersion: + description: MongoDBVersion is the version of MongoDB the cluster + runs, in . format. + type: string + mongoURIUpdated: + description: MongoURIUpdated is a timestamp in ISO 8601 date and time + format in UTC when the connection string was last updated. The connection + string changes if you update any of the other values. + type: string + observedGeneration: + description: ObservedGeneration indicates the generation of the resource + specification that the Atlas Operator is aware of. The Atlas Operator + updates this field to the 'metadata.generation' as soon as it starts + reconciliation of the resource. + format: int64 + type: integer + stateName: + description: 'StateName is the current state of the cluster. The possible + states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/bundle/manifests/atlas.mongodb.com_atlasprojects.yaml b/bundle/manifests/atlas.mongodb.com_atlasprojects.yaml index 205b5a594e..8aad1d756a 100644 --- a/bundle/manifests/atlas.mongodb.com_atlasprojects.yaml +++ b/bundle/manifests/atlas.mongodb.com_atlasprojects.yaml @@ -55,6 +55,180 @@ spec: required: - name type: object + integrations: + description: Integrations is a list of MongoDB Atlas integrations + for the project + items: + properties: + accountId: + type: string + apiKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + apiTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + channelName: + type: string + enabled: + type: boolean + flowName: + type: string + licenseKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + microsoftTeamsWebhookUrl: + type: string + name: + type: string + orgName: + type: string + passwordRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + readTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + region: + type: string + routingKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + scheme: + type: string + secretRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + serviceDiscovery: + type: string + serviceKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + teamName: + type: string + type: + description: Third Party Integration type such as Slack, New + Relic, etc + enum: + - PAGER_DUTY + - SLACK + - DATADOG + - NEW_RELIC + - OPS_GENIE + - VICTOR_OPS + - FLOWDOCK + - WEBHOOK + - MICROSOFT_TEAMS + - PROMETHEUS + type: string + url: + type: string + username: + type: string + writeTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + type: object + type: array name: description: Name is the name of the Project that is created in Atlas by the Operator if it doesn't exist yet. @@ -64,6 +238,30 @@ spec: for the current Project. items: properties: + endpointGroupName: + description: Unique identifier of the endpoint group. The endpoint + group encompasses all of the endpoints that you created in + Google Cloud. + type: string + endpoints: + description: Collection of individual private endpoints that + comprise your endpoint group. + items: + properties: + endpointName: + description: Forwarding rule that corresponds to the endpoint + you created in Google Cloud. + type: string + ipAddress: + description: Private IP address of the endpoint you created + in Google Cloud. + type: string + type: object + type: array + gcpProjectId: + description: Unique identifier of the Google Cloud project in + which you created your endpoints. + type: string id: description: Unique identifier of the private endpoint you created in your AWS VPC or Azure Vnet. @@ -137,7 +335,7 @@ spec: status: description: AtlasProjectStatus defines the observed state of AtlasProject properties: - AuthModes: + authModes: description: AuthModes contains a list of configured authentication modes "SCRAM" is default authentication method and requires a password for each user "X509" signifies that self-managed X.509 authentication @@ -217,6 +415,23 @@ spec: project items: properties: + endpoints: + description: Collection of individual GCP private endpoints + that comprise your network endpoint group. + items: + properties: + endpointName: + type: string + ipAddress: + type: string + status: + type: string + required: + - endpointName + - ipAddress + - status + type: object + type: array id: description: Unique identifier for AWS or AZURE Private Link Connection. @@ -233,6 +448,13 @@ spec: description: Cloud provider region for which you want to create the private endpoint service. type: string + serviceAttachmentNames: + description: Unique alphanumeric and special character strings + that identify the service attachments associated with the + GCP Private Service Connect endpoint service. + items: + type: string + type: array serviceName: description: Name of the AWS or Azure Private Link Service that Atlas manages. @@ -246,6 +468,15 @@ spec: - region type: object type: array + prometheus: + description: Prometheus contains the status for Prometheus integration + including the prometheusDiscoveryURL + properties: + prometheusDiscoveryURL: + type: string + scheme: + type: string + type: object required: - conditions type: object diff --git a/bundle/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml b/bundle/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml index 2e13c93174..239c328754 100644 --- a/bundle/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml +++ b/bundle/manifests/mongodb-atlas-kubernetes.clusterserviceversion.yaml @@ -10,26 +10,40 @@ metadata: "metadata": { "name": "atlasbackuppolicy-sample" }, - "spec": null + "spec": { + "id": "1", + "items": [ + { + "frequencyInterval": 6, + "frequencyType": "WEEKLY", + "id": "2", + "retentionUnit": "DAYS", + "retentionValue": 6 + } + ] + } }, { "apiVersion": "atlas.mongodb.com/v1", - "kind": "AtlasDeployment", + "kind": "AtlasBackupSchedule", "metadata": { - "name": "my-atlas-cluster" + "name": "atlasbackupschedule-sample" }, "spec": { - "clusterSpec": { - "name": "test-cluster", - "providerSettings": { - "instanceSizeName": "M10", - "providerName": "AWS", - "regionName": "US_EAST_1" + "autoExportEnabled": true, + "policies": [ + { + "name": "atlas-default-backuppolicy", + "namespace": "mongodb-atlas-system" + }, + { + "name": "atlas-default-backuppolicy2", + "namespace": "mongodb-atlas-system" } - }, - "projectRef": { - "name": "my-project" - } + ], + "referenceHourOfDay": 10, + "referenceMinuteOfHour": 10, + "restoreWindowDays": 2 } }, { @@ -55,6 +69,26 @@ metadata: "username": "david" } }, + { + "apiVersion": "atlas.mongodb.com/v1", + "kind": "AtlasDeployment", + "metadata": { + "name": "my-atlas-cluster" + }, + "spec": { + "deploymentSpec": { + "name": "test-cluster", + "providerSettings": { + "instanceSizeName": "M10", + "providerName": "AWS", + "regionName": "US_EAST_1" + } + }, + "projectRef": { + "name": "my-project" + } + } + }, { "apiVersion": "atlas.mongodb.com/v1", "kind": "AtlasProject", @@ -74,29 +108,35 @@ metadata: ] capabilities: Basic Install categories: Database - description: The MongoDB Atlas Kubernetes Operator enables easy management of - Clusters in MongoDB Atlas - operators.operatorframework.io/builder: operator-sdk-v1.16.0 + description: The MongoDB Atlas Kubernetes Operator enables easy management of Clusters in MongoDB Atlas + operators.operatorframework.io/builder: operator-sdk-v1.15.0+git operators.operatorframework.io/project_layout: go.kubebuilder.io/v2 - name: mongodb-atlas-kubernetes.v0.5.0 + name: mongodb-atlas-kubernetes.v1.0.0 namespace: placeholder spec: - apiservicedefinitions: { } + apiservicedefinitions: {} customresourcedefinitions: owned: - - kind: AtlasBackupPolicy + - description: AtlasBackupPolicy is the Schema for the atlasbackuppolicies API + displayName: Atlas Backup Policy + kind: AtlasBackupPolicy name: atlasbackuppolicies.atlas.mongodb.com version: v1 - - description: AtlasDeployment is the Schema for the atlasclusters API - displayName: Atlas Cluster - kind: AtlasDeployment - name: atlasclusters.atlas.mongodb.com + - description: AtlasBackupSchedule is the Schema for the atlasbackupschedules API + displayName: Atlas Backup Schedule + kind: AtlasBackupSchedule + name: atlasbackupschedules.atlas.mongodb.com version: v1 - description: AtlasDatabaseUser is the Schema for the Atlas Database User API displayName: Atlas Database User kind: AtlasDatabaseUser name: atlasdatabaseusers.atlas.mongodb.com version: v1 + - description: AtlasDeployment is the Schema for the atlasclusters API + displayName: Atlas Deployment + kind: AtlasDeployment + name: atlasdeployments.atlas.mongodb.com + version: v1 - description: AtlasProject is the Schema for the atlasprojects API displayName: Atlas Project kind: AtlasProject @@ -261,7 +301,7 @@ spec: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters + - atlasbackupschedules verbs: - create - delete @@ -273,7 +313,7 @@ spec: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters/status + - atlasbackupschedules/status verbs: - get - patch @@ -301,7 +341,7 @@ spec: - apiGroups: - atlas.mongodb.com resources: - - atlasprojects + - atlasdeployments verbs: - create - delete @@ -313,7 +353,7 @@ spec: - apiGroups: - atlas.mongodb.com resources: - - atlasprojects/status + - atlasdeployments/status verbs: - get - patch @@ -321,27 +361,7 @@ spec: - apiGroups: - atlas.mongodb.com resources: - - atlasbackupschedules - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - atlas.mongodb.com - resources: - - atlasbackupschedules/status - verbs: - - get - - patch - - update - - apiGroups: - - atlas.mongodb.com - resources: - - atlasbackuppolicies + - atlasprojects verbs: - create - delete @@ -353,7 +373,7 @@ spec: - apiGroups: - atlas.mongodb.com resources: - - atlasbackuppolicies/status + - atlasprojects/status verbs: - get - patch @@ -368,7 +388,7 @@ spec: app.kubernetes.io/component: controller app.kubernetes.io/instance: mongodb-atlas-kubernetes-operator app.kubernetes.io/name: mongodb-atlas-kubernetes-operator - strategy: { } + strategy: {} template: metadata: labels: @@ -399,7 +419,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.annotations['olm.targetNamespaces'] - image: registry.connect.redhat.com/mongodb/mongodb-atlas-kubernetes-operator:0.8.0 + image: registry.connect.redhat.com/mongodb/mongodb-atlas-kubernetes-operator:1.0.0 imagePullPolicy: Always livenessProbe: httpGet: @@ -474,5 +494,5 @@ spec: maturity: beta provider: name: MongoDB, Inc - version: 0.8.0 - replaces: mongodb-atlas-kubernetes.v0.7.0 + version: 1.0.0 + replaces: mongodb-atlas-kubernetes.v0.5.0 diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml index 56c4abc966..db17cd6665 100644 --- a/bundle/metadata/annotations.yaml +++ b/bundle/metadata/annotations.yaml @@ -6,7 +6,7 @@ annotations: operators.operatorframework.io.bundle.package.v1: mongodb-atlas-kubernetes operators.operatorframework.io.bundle.channels.v1: beta operators.operatorframework.io.bundle.channel.default.v1: beta - operators.operatorframework.io.metrics.builder: operator-sdk-v1.16.0 + operators.operatorframework.io.metrics.builder: operator-sdk-v1.15.0+git operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v2 diff --git a/deploy/all-in-one.yaml b/deploy/all-in-one.yaml index bef6f13deb..c1ebe1db83 100644 --- a/deploy/all-in-one.yaml +++ b/deploy/all-in-one.yaml @@ -17,20 +17,20 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/instance: mongodb-atlas-kubernetes-operator app.kubernetes.io/name: mongodb-atlas-kubernetes-operator - name: atlasclusters.atlas.mongodb.com + name: atlasbackuppolicies.atlas.mongodb.com spec: group: atlas.mongodb.com names: - kind: AtlasCluster - listKind: AtlasClusterList - plural: atlasclusters - singular: atlascluster + kind: AtlasBackupPolicy + listKind: AtlasBackupPolicyList + plural: atlasbackuppolicies + singular: atlasbackuppolicy scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: - description: AtlasCluster is the Schema for the atlasclusters API + description: AtlasBackupPolicy is the Schema for the atlasbackuppolicies API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -45,9 +45,463 @@ spec: metadata: type: object spec: - description: AtlasClusterSpec defines the desired state of AtlasCluster + description: AtlasBackupPolicySpec defines the desired state of AtlasBackupPolicy properties: - advancedClusterSpec: + items: + description: A list of BackupPolicy items + items: + properties: + frequencyInterval: + description: Desired frequency of the new backup policy item + specified by FrequencyType. A value of 1 specifies the first + instance of the corresponding FrequencyType. The only accepted + value you can set for frequency interval with NVMe clusters + is 12. + enum: + - 1 + - 2 + - 4 + - 6 + - 8 + - 12 + type: integer + frequencyType: + description: 'Frequency associated with the backup policy item. + One of the following values: hourly, daily, weekly or monthly. + You cannot specify multiple hourly and daily backup policy + items.' + enum: + - hourly + - daily + - weekly + - monthly + type: string + retentionUnit: + description: 'Scope of the backup policy item: days, weeks, + or months' + enum: + - days + - weeks + - months + type: string + retentionValue: + description: Value to associate with RetentionUnit + type: integer + required: + - frequencyInterval + - frequencyType + - retentionUnit + - retentionValue + type: object + type: array + required: + - items + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + labels: + app.kubernetes.io/component: controller + app.kubernetes.io/instance: mongodb-atlas-kubernetes-operator + app.kubernetes.io/name: mongodb-atlas-kubernetes-operator + name: atlasbackupschedules.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasBackupSchedule + listKind: AtlasBackupScheduleList + plural: atlasbackupschedules + singular: atlasbackupschedule + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasBackupSchedule is the Schema for the atlasbackupschedules + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasBackupScheduleSpec defines the desired state of AtlasBackupSchedule + properties: + autoExportEnabled: + default: true + description: Specify true to enable automatic export of cloud backup + snapshots to the AWS bucket. You must also define the export policy + using export. If omitted, defaults to false. + type: boolean + export: + description: Export policy for automatically exporting cloud backup + snapshots to AWS bucket. + properties: + exportBucketId: + description: Unique identifier of the AWS bucket to export the + cloud backup snapshot to. + type: string + frequencyType: + default: MONTHLY + enum: + - MONTHLY + type: string + required: + - exportBucketId + - frequencyType + type: object + policy: + description: A reference (name & namespace) for backup policy in the + desired updated backup policy. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + referenceHourOfDay: + description: UTC Hour of day between 0 and 23, inclusive, representing + which hour of the day that Atlas takes snapshots for backup policy + items + format: int64 + maximum: 23 + minimum: 0 + type: integer + referenceMinuteOfHour: + description: UTC Minutes after ReferenceHourOfDay that Atlas takes + snapshots for backup policy items. Must be between 0 and 59, inclusive. + format: int64 + maximum: 59 + minimum: 0 + type: integer + restoreWindowDays: + default: 1 + description: Number of days back in time you can restore to with Continuous + Cloud Backup accuracy. Must be a positive, non-zero integer. Applies + to continuous cloud backups only. + format: int64 + type: integer + updateSnapshots: + description: Specify true to apply the retention changes in the updated + backup policy to snapshots that Atlas took previously. + type: boolean + useOrgAndGroupNamesInExportPrefix: + description: Specify true to use organization and project names instead + of organization and project UUIDs in the path for the metadata files + that Atlas uploads to your S3 bucket after it finishes exporting + the snapshots + type: boolean + required: + - policy + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + labels: + app.kubernetes.io/component: controller + app.kubernetes.io/instance: mongodb-atlas-kubernetes-operator + app.kubernetes.io/name: mongodb-atlas-kubernetes-operator + name: atlasdatabaseusers.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDatabaseUser + listKind: AtlasDatabaseUserList + plural: atlasdatabaseusers + singular: atlasdatabaseuser + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: Name + type: string + name: v1 + schema: + openAPIV3Schema: + description: AtlasDatabaseUser is the Schema for the Atlas Database User API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDatabaseUserSpec defines the desired state of Database + User in Atlas + properties: + databaseName: + default: admin + description: DatabaseName is a Database against which Atlas authenticates + the user. Default value is 'admin'. + type: string + deleteAfterDate: + description: DeleteAfterDate is a timestamp in ISO 8601 date and time + format in UTC after which Atlas deletes the user. The specified + date must be in the future and within one week. + type: string + labels: + description: Labels is an array containing key-value pairs that tag + and categorize the database user. Each key and value has a maximum + length of 255 characters. + items: + description: LabelSpec contains key-value pairs that tag and categorize + the Cluster/DBUser + properties: + key: + maxLength: 255 + type: string + value: + type: string + required: + - key + - value + type: object + type: array + passwordSecretRef: + description: PasswordSecret is a reference to the Secret keeping the + user password. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + required: + - name + type: object + projectRef: + description: Project is a reference to AtlasProject resource the user + belongs to + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + roles: + description: Roles is an array of this user's roles and the databases + / collections on which the roles apply. A role allows the user to + perform particular actions on the specified database. + items: + description: RoleSpec allows the user to perform particular actions + on the specified database. A role on the admin database can include + privileges that apply to the other databases as well. + properties: + collectionName: + description: CollectionName is a collection for which the role + applies. + type: string + databaseName: + description: DatabaseName is a database on which the user has + the specified role. A role on the admin database can include + privileges that apply to the other databases. + type: string + roleName: + description: RoleName is a name of the role. This value can + either be a built-in role or a custom role. + type: string + required: + - databaseName + - roleName + type: object + minItems: 1 + type: array + scopes: + description: Scopes is an array of clusters and Atlas Data Lakes that + this user has access to. + items: + description: ScopeSpec if present a database user only have access + to the indicated resource (Cluster or Atlas Data Lake) if none + is given then it has access to all. It's highly recommended to + restrict the access of the database users only to a limited set + of resources. + properties: + name: + description: Name is a name of the cluster or Atlas Data Lake + that the user has access to. + type: string + type: + description: Type is a type of resource that the user has access + to. + enum: + - CLUSTER + - DATA_LAKE + type: string + required: + - name + - type + type: object + type: array + username: + description: Username is a username for authenticating to MongoDB. + type: string + x509Type: + description: X509Type is X.509 method by which the database authenticates + the provided username + type: string + required: + - projectRef + - roles + - username + type: object + status: + description: AtlasDatabaseUserStatus defines the observed state of AtlasProject + properties: + conditions: + description: Conditions is the list of statuses showing the current + state of the Atlas Custom Resource + items: + description: Condition describes the state of an Atlas Custom Resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Atlas Custom Resource condition. + type: string + required: + - status + - type + type: object + type: array + name: + description: UserName is the current name of database user. + type: string + observedGeneration: + description: ObservedGeneration indicates the generation of the resource + specification that the Atlas Operator is aware of. The Atlas Operator + updates this field to the 'metadata.generation' as soon as it starts + reconciliation of the resource. + format: int64 + type: integer + passwordVersion: + description: PasswordVersion is the 'ResourceVersion' of the password + Secret that the Atlas Operator is aware of + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + labels: + app.kubernetes.io/component: controller + app.kubernetes.io/instance: mongodb-atlas-kubernetes-operator + app.kubernetes.io/name: mongodb-atlas-kubernetes-operator + name: atlasdeployments.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDeployment + listKind: AtlasDeploymentList + plural: atlasdeployments + singular: atlasdeployment + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasDeployment is the Schema for the atlasclusters API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDeploymentSpec defines the desired state of AtlasDeployment + properties: + advancedDeploymentSpec: description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ properties: backupEnabled: @@ -266,7 +720,19 @@ spec: versionReleaseSystem: type: string type: object - clusterSpec: + backupRef: + description: Backup schedule for the AtlasDeployment + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + deploymentSpec: description: Configuration for the advanced cluster API properties: autoScaling: @@ -480,6 +946,7 @@ spec: - GCP - AZURE - TENANT + - SERVERLESS type: string regionName: description: Physical location of your MongoDB cluster. The @@ -494,7 +961,6 @@ spec: - PROVISIONED type: string required: - - instanceSizeName - providerName type: object replicationSpecs: @@ -555,255 +1021,36 @@ spec: type: object type: array required: - - name - - providerSettings - type: object - projectRef: - description: Project is a reference to AtlasProject resource the cluster - belongs to - properties: - name: - description: Name is the name of the Kubernetes Resource - type: string - namespace: - description: Namespace is the namespace of the Kubernetes Resource - type: string - required: - - name - type: object - required: - - projectRef - type: object - status: - description: AtlasClusterStatus defines the observed state of AtlasCluster. - properties: - conditions: - description: Conditions is the list of statuses showing the current - state of the Atlas Custom Resource - items: - description: Condition describes the state of an Atlas Custom Resource - at a certain point. - properties: - lastTransitionTime: - description: Last time the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: A human readable message indicating details about - the transition. - type: string - reason: - description: The reason for the condition's last transition. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: Type of Atlas Custom Resource condition. - type: string - required: - - status - - type - type: object - type: array - connectionStrings: - description: ConnectionStrings is a set of connection strings that - your applications use to connect to this cluster. - properties: - private: - description: Network-peering-endpoint-aware mongodb:// connection - strings for each interface VPC endpoint you configured to connect - to this cluster. Atlas returns this parameter only if you created - a network peering connection to this cluster. - type: string - privateEndpoint: - description: Private endpoint connection strings. Each object - describes the connection strings you can use to connect to this - cluster through a private endpoint. Atlas returns this parameter - only if you deployed a private endpoint to all regions to which - you deployed this cluster's nodes. - items: - description: PrivateEndpoint connection strings. Each object - describes the connection strings you can use to connect to - this cluster through a private endpoint. Atlas returns this - parameter only if you deployed a private endpoint to all regions - to which you deployed this cluster's nodes. - properties: - connectionString: - description: Private-endpoint-aware mongodb:// connection - string for this private endpoint. - type: string - endpoints: - description: Private endpoint through which you connect - to Atlas when you use connectionStrings.privateEndpoint[n].connectionString - or connectionStrings.privateEndpoint[n].srvConnectionString. - items: - description: Endpoint through which you connect to Atlas - properties: - endpointId: - description: Unique identifier of the private endpoint. - type: string - ip: - description: Private IP address of the private endpoint - network interface you created in your Azure VNet. - type: string - providerName: - description: Cloud provider to which you deployed - the private endpoint. Atlas returns AWS or AZURE. - type: string - region: - description: Region to which you deployed the private - endpoint. - type: string - type: object - type: array - srvConnectionString: - description: Private-endpoint-aware mongodb+srv:// connection - string for this private endpoint. - type: string - type: - description: "Type of MongoDB process that you connect to - with the connection strings \n Atlas returns: \n • MONGOD - for replica sets, or \n • MONGOS for sharded clusters" - type: string - type: object - type: array - privateSrv: - description: Network-peering-endpoint-aware mongodb+srv:// connection - strings for each interface VPC endpoint you configured to connect - to this cluster. Atlas returns this parameter only if you created - a network peering connection to this cluster. Use this URI format - if your driver supports it. If it doesn't, use connectionStrings.private. - type: string - standard: - description: Public mongodb:// connection string for this cluster. - type: string - standardSrv: - description: Public mongodb+srv:// connection string for this - cluster. - type: string + - name + - providerSettings type: object - mongoDBVersion: - description: MongoDBVersion is the version of MongoDB the cluster - runs, in . format. - type: string - mongoURIUpdated: - description: MongoURIUpdated is a timestamp in ISO 8601 date and time - format in UTC when the connection string was last updated. The connection - string changes if you update any of the other values. - type: string - observedGeneration: - description: ObservedGeneration indicates the generation of the resource - specification that the Atlas Operator is aware of. The Atlas Operator - updates this field to the 'metadata.generation' as soon as it starts - reconciliation of the resource. - format: int64 - type: integer - stateName: - description: 'StateName is the current state of the cluster. The possible - states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' - type: string - required: - - conditions - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - labels: - app.kubernetes.io/component: controller - app.kubernetes.io/instance: mongodb-atlas-kubernetes-operator - app.kubernetes.io/name: mongodb-atlas-kubernetes-operator - name: atlasdatabaseusers.atlas.mongodb.com -spec: - group: atlas.mongodb.com - names: - kind: AtlasDatabaseUser - listKind: AtlasDatabaseUserList - plural: atlasdatabaseusers - singular: atlasdatabaseuser - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.name - name: Name - type: string - name: v1 - schema: - openAPIV3Schema: - description: AtlasDatabaseUser is the Schema for the Atlas Database User API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AtlasDatabaseUserSpec defines the desired state of Database - User in Atlas - properties: - databaseName: - default: admin - description: DatabaseName is a Database against which Atlas authenticates - the user. Default value is 'admin'. - type: string - deleteAfterDate: - description: DeleteAfterDate is a timestamp in ISO 8601 date and time - format in UTC after which Atlas deletes the user. The specified - date must be in the future and within one week. - type: string - labels: - description: Labels is an array containing key-value pairs that tag - and categorize the database user. Each key and value has a maximum - length of 255 characters. - items: - description: LabelSpec contains key-value pairs that tag and categorize - the Cluster/DBUser - properties: - key: - maxLength: 255 - type: string - value: - type: string - required: - - key - - value - type: object - type: array - passwordSecretRef: - description: PasswordSecret is a reference to the Secret keeping the - user password. + processArgs: + description: ProcessArgs allows to modify Advanced Configuration Options properties: - name: - description: Name is the name of the Kubernetes Resource + defaultReadConcern: type: string - required: - - name + defaultWriteConcern: + type: string + failIndexKeyTooLong: + type: boolean + javascriptEnabled: + type: boolean + minimumEnabledTlsProtocol: + type: string + noTableScan: + type: boolean + oplogSizeMB: + format: int64 + type: integer + sampleRefreshIntervalBIConnector: + format: int64 + type: integer + sampleSizeBIConnector: + format: int64 + type: integer type: object projectRef: - description: Project is a reference to AtlasProject resource the user + description: Project is a reference to AtlasProject resource the cluster belongs to properties: name: @@ -815,74 +1062,123 @@ spec: required: - name type: object - roles: - description: Roles is an array of this user's roles and the databases - / collections on which the roles apply. A role allows the user to - perform particular actions on the specified database. - items: - description: RoleSpec allows the user to perform particular actions - on the specified database. A role on the admin database can include - privileges that apply to the other databases as well. - properties: - collectionName: - description: CollectionName is a collection for which the role - applies. - type: string - databaseName: - description: DatabaseName is a database on which the user has - the specified role. A role on the admin database can include - privileges that apply to the other databases. - type: string - roleName: - description: RoleName is a name of the role. This value can - either be a built-in role or a custom role. - type: string - required: - - databaseName - - roleName - type: object - minItems: 1 - type: array - scopes: - description: Scopes is an array of clusters and Atlas Data Lakes that - this user has access to. - items: - description: ScopeSpec if present a database user only have access - to the indicated resource (Cluster or Atlas Data Lake) if none - is given then it has access to all. It's highly recommended to - restrict the access of the database users only to a limited set - of resources. - properties: - name: - description: Name is a name of the cluster or Atlas Data Lake - that the user has access to. - type: string - type: - description: Type is a type of resource that the user has access - to. - enum: - - CLUSTER - - DATA_LAKE - type: string - required: - - name - - type - type: object - type: array - username: - description: Username is a username for authenticating to MongoDB. - type: string - x509Type: - description: X509Type is X.509 method by which the database authenticates - the provided username - type: string + serverlessSpec: + description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ + properties: + name: + description: Name of the cluster as it appears in Atlas. After + Atlas creates the cluster, you can't change its name. + type: string + providerSettings: + description: Configuration for the provisioned hosts on which + MongoDB runs. The available options are specific to the cloud + service provider. + properties: + autoScaling: + description: Range of instance sizes to which your cluster + can scale. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode + for Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how + a cluster might scale its cluster tier and whether the + cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your + cluster can automatically scale (such as M40). Atlas + requires this parameter if "autoScaling.compute.enabled" + : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your + cluster can automatically scale (such as M10). Atlas + requires this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter + if "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + backingProviderName: + description: 'Cloud service provider on which the host for + a multi-tenant cluster is provisioned. This setting only + works when "providerSetting.providerName" : "TENANT" and + "providerSetting.instanceSizeName" : M2 or M5.' + enum: + - AWS + - GCP + - AZURE + type: string + diskIOPS: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + format: int64 + type: integer + diskTypeName: + description: Type of disk if you selected Azure as your cloud + service provider. + type: string + encryptEBSVolume: + description: Flag that indicates whether the Amazon EBS encryption + feature encrypts the host's root volume for both data at + rest within the volume and for data moving between the volume + and the cluster. + type: boolean + instanceSizeName: + description: Atlas provides different cluster tiers, each + with a default storage capacity and RAM size. The cluster + you select is used for all the data-bearing hosts in your + cluster tier. + type: string + providerName: + description: Cloud service provider on which Atlas provisions + the hosts. + enum: + - AWS + - GCP + - AZURE + - TENANT + - SERVERLESS + type: string + regionName: + description: Physical location of your MongoDB cluster. The + region you choose can affect network latency for clients + accessing your databases. + type: string + volumeType: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + enum: + - STANDARD + - PROVISIONED + type: string + required: + - providerName + type: object + required: + - name + - providerSettings + type: object required: - projectRef - - roles - - username type: object status: - description: AtlasDatabaseUserStatus defines the observed state of AtlasProject + description: AtlasDeploymentStatus defines the observed state of AtlasDeployment. properties: conditions: description: Conditions is the list of statuses showing the current @@ -914,8 +1210,91 @@ spec: - type type: object type: array - name: - description: UserName is the current name of database user. + connectionStrings: + description: ConnectionStrings is a set of connection strings that + your applications use to connect to this cluster. + properties: + private: + description: Network-peering-endpoint-aware mongodb:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. + type: string + privateEndpoint: + description: Private endpoint connection strings. Each object + describes the connection strings you can use to connect to this + cluster through a private endpoint. Atlas returns this parameter + only if you deployed a private endpoint to all regions to which + you deployed this cluster's nodes. + items: + description: PrivateEndpoint connection strings. Each object + describes the connection strings you can use to connect to + this cluster through a private endpoint. Atlas returns this + parameter only if you deployed a private endpoint to all regions + to which you deployed this cluster's nodes. + properties: + connectionString: + description: Private-endpoint-aware mongodb:// connection + string for this private endpoint. + type: string + endpoints: + description: Private endpoint through which you connect + to Atlas when you use connectionStrings.privateEndpoint[n].connectionString + or connectionStrings.privateEndpoint[n].srvConnectionString. + items: + description: Endpoint through which you connect to Atlas + properties: + endpointId: + description: Unique identifier of the private endpoint. + type: string + ip: + description: Private IP address of the private endpoint + network interface you created in your Azure VNet. + type: string + providerName: + description: Cloud provider to which you deployed + the private endpoint. Atlas returns AWS or AZURE. + type: string + region: + description: Region to which you deployed the private + endpoint. + type: string + type: object + type: array + srvConnectionString: + description: Private-endpoint-aware mongodb+srv:// connection + string for this private endpoint. + type: string + type: + description: "Type of MongoDB process that you connect to + with the connection strings \n Atlas returns: \n • MONGOD + for replica sets, or \n • MONGOS for sharded clusters" + type: string + type: object + type: array + privateSrv: + description: Network-peering-endpoint-aware mongodb+srv:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. Use this URI format + if your driver supports it. If it doesn't, use connectionStrings.private. + type: string + standard: + description: Public mongodb:// connection string for this cluster. + type: string + standardSrv: + description: Public mongodb+srv:// connection string for this + cluster. + type: string + type: object + mongoDBVersion: + description: MongoDBVersion is the version of MongoDB the cluster + runs, in . format. + type: string + mongoURIUpdated: + description: MongoURIUpdated is a timestamp in ISO 8601 date and time + format in UTC when the connection string was last updated. The connection + string changes if you update any of the other values. type: string observedGeneration: description: ObservedGeneration indicates the generation of the resource @@ -924,9 +1303,9 @@ spec: reconciliation of the resource. format: int64 type: integer - passwordVersion: - description: PasswordVersion is the 'ResourceVersion' of the password - Secret that the Atlas Operator is aware of + stateName: + description: 'StateName is the current state of the cluster. The possible + states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' type: string required: - conditions @@ -1000,6 +1379,180 @@ spec: required: - name type: object + integrations: + description: Integrations is a list of MongoDB Atlas integrations + for the project + items: + properties: + accountId: + type: string + apiKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + apiTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + channelName: + type: string + enabled: + type: boolean + flowName: + type: string + licenseKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + microsoftTeamsWebhookUrl: + type: string + name: + type: string + orgName: + type: string + passwordRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + readTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + region: + type: string + routingKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + scheme: + type: string + secretRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + serviceDiscovery: + type: string + serviceKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + teamName: + type: string + type: + description: Third Party Integration type such as Slack, New + Relic, etc + enum: + - PAGER_DUTY + - SLACK + - DATADOG + - NEW_RELIC + - OPS_GENIE + - VICTOR_OPS + - FLOWDOCK + - WEBHOOK + - MICROSOFT_TEAMS + - PROMETHEUS + type: string + url: + type: string + username: + type: string + writeTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + type: object + type: array name: description: Name is the name of the Project that is created in Atlas by the Operator if it doesn't exist yet. @@ -1009,6 +1562,30 @@ spec: for the current Project. items: properties: + endpointGroupName: + description: Unique identifier of the endpoint group. The endpoint + group encompasses all of the endpoints that you created in + Google Cloud. + type: string + endpoints: + description: Collection of individual private endpoints that + comprise your endpoint group. + items: + properties: + endpointName: + description: Forwarding rule that corresponds to the endpoint + you created in Google Cloud. + type: string + ipAddress: + description: Private IP address of the endpoint you created + in Google Cloud. + type: string + type: object + type: array + gcpProjectId: + description: Unique identifier of the Google Cloud project in + which you created your endpoints. + type: string id: description: Unique identifier of the private endpoint you created in your AWS VPC or Azure Vnet. @@ -1082,7 +1659,7 @@ spec: status: description: AtlasProjectStatus defines the observed state of AtlasProject properties: - AuthModes: + authModes: description: AuthModes contains a list of configured authentication modes "SCRAM" is default authentication method and requires a password for each user "X509" signifies that self-managed X.509 authentication @@ -1162,6 +1739,23 @@ spec: project items: properties: + endpoints: + description: Collection of individual GCP private endpoints + that comprise your network endpoint group. + items: + properties: + endpointName: + type: string + ipAddress: + type: string + status: + type: string + required: + - endpointName + - ipAddress + - status + type: object + type: array id: description: Unique identifier for AWS or AZURE Private Link Connection. @@ -1178,6 +1772,13 @@ spec: description: Cloud provider region for which you want to create the private endpoint service. type: string + serviceAttachmentNames: + description: Unique alphanumeric and special character strings + that identify the service attachments associated with the + GCP Private Service Connect endpoint service. + items: + type: string + type: array serviceName: description: Name of the AWS or Azure Private Link Service that Atlas manages. @@ -1191,6 +1792,15 @@ spec: - region type: object type: array + prometheus: + description: Prometheus contains the status for Prometheus integration + including the prometheusDiscoveryURL + properties: + prometheusDiscoveryURL: + type: string + scheme: + type: string + type: object required: - conditions type: object @@ -1280,7 +1890,27 @@ rules: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters + - atlasbackuppolicies + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - atlas.mongodb.com + resources: + - atlasbackuppolicies/status + verbs: + - get + - patch + - update +- apiGroups: + - atlas.mongodb.com + resources: + - atlasbackupschedules verbs: - create - delete @@ -1292,7 +1922,7 @@ rules: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters/status + - atlasbackupschedules/status verbs: - get - patch @@ -1317,6 +1947,26 @@ rules: - get - patch - update +- apiGroups: + - atlas.mongodb.com + resources: + - atlasdeployments + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - atlas.mongodb.com + resources: + - atlasdeployments/status + verbs: + - get + - patch + - update - apiGroups: - atlas.mongodb.com resources: @@ -1402,6 +2052,8 @@ spec: - --leader-elect - --health-probe-bind-address=:8081 - --metrics-bind-address=127.0.0.1:8080 + - --log-level=info + - --log-encoder=json command: - /manager env: @@ -1413,7 +2065,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: mongodb/mongodb-atlas-kubernetes-operator:0.8.0 + image: mongodb/mongodb-atlas-kubernetes-operator:1.0.0 imagePullPolicy: Always livenessProbe: httpGet: diff --git a/deploy/clusterwide/clusterwide-config.yaml b/deploy/clusterwide/clusterwide-config.yaml index ede981c07c..2b67889cfb 100644 --- a/deploy/clusterwide/clusterwide-config.yaml +++ b/deploy/clusterwide/clusterwide-config.yaml @@ -81,7 +81,7 @@ rules: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters + - atlasbackuppolicies verbs: - create - delete @@ -93,7 +93,27 @@ rules: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters/status + - atlasbackuppolicies/status + verbs: + - get + - patch + - update +- apiGroups: + - atlas.mongodb.com + resources: + - atlasbackupschedules + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - atlas.mongodb.com + resources: + - atlasbackupschedules/status verbs: - get - patch @@ -118,6 +138,26 @@ rules: - get - patch - update +- apiGroups: + - atlas.mongodb.com + resources: + - atlasdeployments + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - atlas.mongodb.com + resources: + - atlasdeployments/status + verbs: + - get + - patch + - update - apiGroups: - atlas.mongodb.com resources: @@ -203,6 +243,8 @@ spec: - --leader-elect - --health-probe-bind-address=:8081 - --metrics-bind-address=127.0.0.1:8080 + - --log-level=info + - --log-encoder=json command: - /manager env: @@ -214,7 +256,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: mongodb/mongodb-atlas-kubernetes-operator:0.8.0 + image: mongodb/mongodb-atlas-kubernetes-operator:1.0.0 imagePullPolicy: Always livenessProbe: httpGet: diff --git a/deploy/clusterwide/crds.yaml b/deploy/clusterwide/crds.yaml index 3e9ea1037e..9b865db502 100644 --- a/deploy/clusterwide/crds.yaml +++ b/deploy/clusterwide/crds.yaml @@ -4,20 +4,20 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null - name: atlasclusters.atlas.mongodb.com + name: atlasbackuppolicies.atlas.mongodb.com spec: group: atlas.mongodb.com names: - kind: AtlasCluster - listKind: AtlasClusterList - plural: atlasclusters - singular: atlascluster + kind: AtlasBackupPolicy + listKind: AtlasBackupPolicyList + plural: atlasbackuppolicies + singular: atlasbackuppolicy scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: - description: AtlasCluster is the Schema for the atlasclusters API + description: AtlasBackupPolicy is the Schema for the atlasbackuppolicies API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -32,9 +32,451 @@ spec: metadata: type: object spec: - description: AtlasClusterSpec defines the desired state of AtlasCluster + description: AtlasBackupPolicySpec defines the desired state of AtlasBackupPolicy properties: - advancedClusterSpec: + items: + description: A list of BackupPolicy items + items: + properties: + frequencyInterval: + description: Desired frequency of the new backup policy item + specified by FrequencyType. A value of 1 specifies the first + instance of the corresponding FrequencyType. The only accepted + value you can set for frequency interval with NVMe clusters + is 12. + enum: + - 1 + - 2 + - 4 + - 6 + - 8 + - 12 + type: integer + frequencyType: + description: 'Frequency associated with the backup policy item. + One of the following values: hourly, daily, weekly or monthly. + You cannot specify multiple hourly and daily backup policy + items.' + enum: + - hourly + - daily + - weekly + - monthly + type: string + retentionUnit: + description: 'Scope of the backup policy item: days, weeks, + or months' + enum: + - days + - weeks + - months + type: string + retentionValue: + description: Value to associate with RetentionUnit + type: integer + required: + - frequencyInterval + - frequencyType + - retentionUnit + - retentionValue + type: object + type: array + required: + - items + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasbackupschedules.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasBackupSchedule + listKind: AtlasBackupScheduleList + plural: atlasbackupschedules + singular: atlasbackupschedule + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasBackupSchedule is the Schema for the atlasbackupschedules + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasBackupScheduleSpec defines the desired state of AtlasBackupSchedule + properties: + autoExportEnabled: + default: true + description: Specify true to enable automatic export of cloud backup + snapshots to the AWS bucket. You must also define the export policy + using export. If omitted, defaults to false. + type: boolean + export: + description: Export policy for automatically exporting cloud backup + snapshots to AWS bucket. + properties: + exportBucketId: + description: Unique identifier of the AWS bucket to export the + cloud backup snapshot to. + type: string + frequencyType: + default: MONTHLY + enum: + - MONTHLY + type: string + required: + - exportBucketId + - frequencyType + type: object + policy: + description: A reference (name & namespace) for backup policy in the + desired updated backup policy. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + referenceHourOfDay: + description: UTC Hour of day between 0 and 23, inclusive, representing + which hour of the day that Atlas takes snapshots for backup policy + items + format: int64 + maximum: 23 + minimum: 0 + type: integer + referenceMinuteOfHour: + description: UTC Minutes after ReferenceHourOfDay that Atlas takes + snapshots for backup policy items. Must be between 0 and 59, inclusive. + format: int64 + maximum: 59 + minimum: 0 + type: integer + restoreWindowDays: + default: 1 + description: Number of days back in time you can restore to with Continuous + Cloud Backup accuracy. Must be a positive, non-zero integer. Applies + to continuous cloud backups only. + format: int64 + type: integer + updateSnapshots: + description: Specify true to apply the retention changes in the updated + backup policy to snapshots that Atlas took previously. + type: boolean + useOrgAndGroupNamesInExportPrefix: + description: Specify true to use organization and project names instead + of organization and project UUIDs in the path for the metadata files + that Atlas uploads to your S3 bucket after it finishes exporting + the snapshots + type: boolean + required: + - policy + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasdatabaseusers.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDatabaseUser + listKind: AtlasDatabaseUserList + plural: atlasdatabaseusers + singular: atlasdatabaseuser + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: Name + type: string + name: v1 + schema: + openAPIV3Schema: + description: AtlasDatabaseUser is the Schema for the Atlas Database User API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDatabaseUserSpec defines the desired state of Database + User in Atlas + properties: + databaseName: + default: admin + description: DatabaseName is a Database against which Atlas authenticates + the user. Default value is 'admin'. + type: string + deleteAfterDate: + description: DeleteAfterDate is a timestamp in ISO 8601 date and time + format in UTC after which Atlas deletes the user. The specified + date must be in the future and within one week. + type: string + labels: + description: Labels is an array containing key-value pairs that tag + and categorize the database user. Each key and value has a maximum + length of 255 characters. + items: + description: LabelSpec contains key-value pairs that tag and categorize + the Cluster/DBUser + properties: + key: + maxLength: 255 + type: string + value: + type: string + required: + - key + - value + type: object + type: array + passwordSecretRef: + description: PasswordSecret is a reference to the Secret keeping the + user password. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + required: + - name + type: object + projectRef: + description: Project is a reference to AtlasProject resource the user + belongs to + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + roles: + description: Roles is an array of this user's roles and the databases + / collections on which the roles apply. A role allows the user to + perform particular actions on the specified database. + items: + description: RoleSpec allows the user to perform particular actions + on the specified database. A role on the admin database can include + privileges that apply to the other databases as well. + properties: + collectionName: + description: CollectionName is a collection for which the role + applies. + type: string + databaseName: + description: DatabaseName is a database on which the user has + the specified role. A role on the admin database can include + privileges that apply to the other databases. + type: string + roleName: + description: RoleName is a name of the role. This value can + either be a built-in role or a custom role. + type: string + required: + - databaseName + - roleName + type: object + minItems: 1 + type: array + scopes: + description: Scopes is an array of clusters and Atlas Data Lakes that + this user has access to. + items: + description: ScopeSpec if present a database user only have access + to the indicated resource (Cluster or Atlas Data Lake) if none + is given then it has access to all. It's highly recommended to + restrict the access of the database users only to a limited set + of resources. + properties: + name: + description: Name is a name of the cluster or Atlas Data Lake + that the user has access to. + type: string + type: + description: Type is a type of resource that the user has access + to. + enum: + - CLUSTER + - DATA_LAKE + type: string + required: + - name + - type + type: object + type: array + username: + description: Username is a username for authenticating to MongoDB. + type: string + x509Type: + description: X509Type is X.509 method by which the database authenticates + the provided username + type: string + required: + - projectRef + - roles + - username + type: object + status: + description: AtlasDatabaseUserStatus defines the observed state of AtlasProject + properties: + conditions: + description: Conditions is the list of statuses showing the current + state of the Atlas Custom Resource + items: + description: Condition describes the state of an Atlas Custom Resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Atlas Custom Resource condition. + type: string + required: + - status + - type + type: object + type: array + name: + description: UserName is the current name of database user. + type: string + observedGeneration: + description: ObservedGeneration indicates the generation of the resource + specification that the Atlas Operator is aware of. The Atlas Operator + updates this field to the 'metadata.generation' as soon as it starts + reconciliation of the resource. + format: int64 + type: integer + passwordVersion: + description: PasswordVersion is the 'ResourceVersion' of the password + Secret that the Atlas Operator is aware of + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasdeployments.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDeployment + listKind: AtlasDeploymentList + plural: atlasdeployments + singular: atlasdeployment + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasDeployment is the Schema for the atlasclusters API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDeploymentSpec defines the desired state of AtlasDeployment + properties: + advancedDeploymentSpec: description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ properties: backupEnabled: @@ -253,7 +695,19 @@ spec: versionReleaseSystem: type: string type: object - clusterSpec: + backupRef: + description: Backup schedule for the AtlasDeployment + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + deploymentSpec: description: Configuration for the advanced cluster API properties: autoScaling: @@ -467,6 +921,7 @@ spec: - GCP - AZURE - TENANT + - SERVERLESS type: string regionName: description: Physical location of your MongoDB cluster. The @@ -481,7 +936,6 @@ spec: - PROVISIONED type: string required: - - instanceSizeName - providerName type: object replicationSpecs: @@ -519,353 +973,187 @@ spec: type: integer priority: description: Election priority of the region. For - regions with only replicationSpecs[n].regionsConfig..readOnlyNodes, - set this value to 0. - format: int64 - type: integer - readOnlyNodes: - description: Number of read-only nodes for Atlas to - deploy to the region. Read-only nodes can never - become the primary, but can facilitate local-reads. - format: int64 - type: integer - type: object - description: Configuration for a region. Each regionsConfig - object describes the region's priority in elections and - the number and type of MongoDB nodes that Atlas deploys - to the region. - type: object - zoneName: - description: Name for the zone in a Global Cluster. Don't - provide this value if clusterType is not GEOSHARDED. - type: string - type: object - type: array - required: - - name - - providerSettings - type: object - projectRef: - description: Project is a reference to AtlasProject resource the cluster - belongs to - properties: - name: - description: Name is the name of the Kubernetes Resource - type: string - namespace: - description: Namespace is the namespace of the Kubernetes Resource - type: string - required: - - name - type: object - required: - - projectRef - type: object - status: - description: AtlasClusterStatus defines the observed state of AtlasCluster. - properties: - conditions: - description: Conditions is the list of statuses showing the current - state of the Atlas Custom Resource - items: - description: Condition describes the state of an Atlas Custom Resource - at a certain point. - properties: - lastTransitionTime: - description: Last time the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: A human readable message indicating details about - the transition. - type: string - reason: - description: The reason for the condition's last transition. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: Type of Atlas Custom Resource condition. - type: string - required: - - status - - type - type: object - type: array - connectionStrings: - description: ConnectionStrings is a set of connection strings that - your applications use to connect to this cluster. - properties: - private: - description: Network-peering-endpoint-aware mongodb:// connection - strings for each interface VPC endpoint you configured to connect - to this cluster. Atlas returns this parameter only if you created - a network peering connection to this cluster. - type: string - privateEndpoint: - description: Private endpoint connection strings. Each object - describes the connection strings you can use to connect to this - cluster through a private endpoint. Atlas returns this parameter - only if you deployed a private endpoint to all regions to which - you deployed this cluster's nodes. - items: - description: PrivateEndpoint connection strings. Each object - describes the connection strings you can use to connect to - this cluster through a private endpoint. Atlas returns this - parameter only if you deployed a private endpoint to all regions - to which you deployed this cluster's nodes. - properties: - connectionString: - description: Private-endpoint-aware mongodb:// connection - string for this private endpoint. - type: string - endpoints: - description: Private endpoint through which you connect - to Atlas when you use connectionStrings.privateEndpoint[n].connectionString - or connectionStrings.privateEndpoint[n].srvConnectionString. - items: - description: Endpoint through which you connect to Atlas - properties: - endpointId: - description: Unique identifier of the private endpoint. - type: string - ip: - description: Private IP address of the private endpoint - network interface you created in your Azure VNet. - type: string - providerName: - description: Cloud provider to which you deployed - the private endpoint. Atlas returns AWS or AZURE. - type: string - region: - description: Region to which you deployed the private - endpoint. - type: string + regions with only replicationSpecs[n].regionsConfig..readOnlyNodes, + set this value to 0. + format: int64 + type: integer + readOnlyNodes: + description: Number of read-only nodes for Atlas to + deploy to the region. Read-only nodes can never + become the primary, but can facilitate local-reads. + format: int64 + type: integer type: object - type: array - srvConnectionString: - description: Private-endpoint-aware mongodb+srv:// connection - string for this private endpoint. - type: string - type: - description: "Type of MongoDB process that you connect to - with the connection strings \n Atlas returns: \n • MONGOD - for replica sets, or \n • MONGOS for sharded clusters" + description: Configuration for a region. Each regionsConfig + object describes the region's priority in elections and + the number and type of MongoDB nodes that Atlas deploys + to the region. + type: object + zoneName: + description: Name for the zone in a Global Cluster. Don't + provide this value if clusterType is not GEOSHARDED. type: string type: object type: array - privateSrv: - description: Network-peering-endpoint-aware mongodb+srv:// connection - strings for each interface VPC endpoint you configured to connect - to this cluster. Atlas returns this parameter only if you created - a network peering connection to this cluster. Use this URI format - if your driver supports it. If it doesn't, use connectionStrings.private. + required: + - name + - providerSettings + type: object + processArgs: + description: ProcessArgs allows to modify Advanced Configuration Options + properties: + defaultReadConcern: type: string - standard: - description: Public mongodb:// connection string for this cluster. + defaultWriteConcern: type: string - standardSrv: - description: Public mongodb+srv:// connection string for this - cluster. + failIndexKeyTooLong: + type: boolean + javascriptEnabled: + type: boolean + minimumEnabledTlsProtocol: type: string + noTableScan: + type: boolean + oplogSizeMB: + format: int64 + type: integer + sampleRefreshIntervalBIConnector: + format: int64 + type: integer + sampleSizeBIConnector: + format: int64 + type: integer type: object - mongoDBVersion: - description: MongoDBVersion is the version of MongoDB the cluster - runs, in . format. - type: string - mongoURIUpdated: - description: MongoURIUpdated is a timestamp in ISO 8601 date and time - format in UTC when the connection string was last updated. The connection - string changes if you update any of the other values. - type: string - observedGeneration: - description: ObservedGeneration indicates the generation of the resource - specification that the Atlas Operator is aware of. The Atlas Operator - updates this field to the 'metadata.generation' as soon as it starts - reconciliation of the resource. - format: int64 - type: integer - stateName: - description: 'StateName is the current state of the cluster. The possible - states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' - type: string - required: - - conditions - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: atlasdatabaseusers.atlas.mongodb.com -spec: - group: atlas.mongodb.com - names: - kind: AtlasDatabaseUser - listKind: AtlasDatabaseUserList - plural: atlasdatabaseusers - singular: atlasdatabaseuser - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.name - name: Name - type: string - name: v1 - schema: - openAPIV3Schema: - description: AtlasDatabaseUser is the Schema for the Atlas Database User API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AtlasDatabaseUserSpec defines the desired state of Database - User in Atlas - properties: - databaseName: - default: admin - description: DatabaseName is a Database against which Atlas authenticates - the user. Default value is 'admin'. - type: string - deleteAfterDate: - description: DeleteAfterDate is a timestamp in ISO 8601 date and time - format in UTC after which Atlas deletes the user. The specified - date must be in the future and within one week. - type: string - labels: - description: Labels is an array containing key-value pairs that tag - and categorize the database user. Each key and value has a maximum - length of 255 characters. - items: - description: LabelSpec contains key-value pairs that tag and categorize - the Cluster/DBUser - properties: - key: - maxLength: 255 - type: string - value: - type: string - required: - - key - - value - type: object - type: array - passwordSecretRef: - description: PasswordSecret is a reference to the Secret keeping the - user password. + projectRef: + description: Project is a reference to AtlasProject resource the cluster + belongs to properties: name: description: Name is the name of the Kubernetes Resource type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string required: - name type: object - projectRef: - description: Project is a reference to AtlasProject resource the user - belongs to + serverlessSpec: + description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ properties: name: - description: Name is the name of the Kubernetes Resource - type: string - namespace: - description: Namespace is the namespace of the Kubernetes Resource + description: Name of the cluster as it appears in Atlas. After + Atlas creates the cluster, you can't change its name. type: string + providerSettings: + description: Configuration for the provisioned hosts on which + MongoDB runs. The available options are specific to the cloud + service provider. + properties: + autoScaling: + description: Range of instance sizes to which your cluster + can scale. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode + for Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how + a cluster might scale its cluster tier and whether the + cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your + cluster can automatically scale (such as M40). Atlas + requires this parameter if "autoScaling.compute.enabled" + : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your + cluster can automatically scale (such as M10). Atlas + requires this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter + if "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + backingProviderName: + description: 'Cloud service provider on which the host for + a multi-tenant cluster is provisioned. This setting only + works when "providerSetting.providerName" : "TENANT" and + "providerSetting.instanceSizeName" : M2 or M5.' + enum: + - AWS + - GCP + - AZURE + type: string + diskIOPS: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + format: int64 + type: integer + diskTypeName: + description: Type of disk if you selected Azure as your cloud + service provider. + type: string + encryptEBSVolume: + description: Flag that indicates whether the Amazon EBS encryption + feature encrypts the host's root volume for both data at + rest within the volume and for data moving between the volume + and the cluster. + type: boolean + instanceSizeName: + description: Atlas provides different cluster tiers, each + with a default storage capacity and RAM size. The cluster + you select is used for all the data-bearing hosts in your + cluster tier. + type: string + providerName: + description: Cloud service provider on which Atlas provisions + the hosts. + enum: + - AWS + - GCP + - AZURE + - TENANT + - SERVERLESS + type: string + regionName: + description: Physical location of your MongoDB cluster. The + region you choose can affect network latency for clients + accessing your databases. + type: string + volumeType: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + enum: + - STANDARD + - PROVISIONED + type: string + required: + - providerName + type: object required: - name + - providerSettings type: object - roles: - description: Roles is an array of this user's roles and the databases - / collections on which the roles apply. A role allows the user to - perform particular actions on the specified database. - items: - description: RoleSpec allows the user to perform particular actions - on the specified database. A role on the admin database can include - privileges that apply to the other databases as well. - properties: - collectionName: - description: CollectionName is a collection for which the role - applies. - type: string - databaseName: - description: DatabaseName is a database on which the user has - the specified role. A role on the admin database can include - privileges that apply to the other databases. - type: string - roleName: - description: RoleName is a name of the role. This value can - either be a built-in role or a custom role. - type: string - required: - - databaseName - - roleName - type: object - minItems: 1 - type: array - scopes: - description: Scopes is an array of clusters and Atlas Data Lakes that - this user has access to. - items: - description: ScopeSpec if present a database user only have access - to the indicated resource (Cluster or Atlas Data Lake) if none - is given then it has access to all. It's highly recommended to - restrict the access of the database users only to a limited set - of resources. - properties: - name: - description: Name is a name of the cluster or Atlas Data Lake - that the user has access to. - type: string - type: - description: Type is a type of resource that the user has access - to. - enum: - - CLUSTER - - DATA_LAKE - type: string - required: - - name - - type - type: object - type: array - username: - description: Username is a username for authenticating to MongoDB. - type: string - x509Type: - description: X509Type is X.509 method by which the database authenticates - the provided username - type: string required: - projectRef - - roles - - username type: object status: - description: AtlasDatabaseUserStatus defines the observed state of AtlasProject + description: AtlasDeploymentStatus defines the observed state of AtlasDeployment. properties: conditions: description: Conditions is the list of statuses showing the current @@ -897,8 +1185,91 @@ spec: - type type: object type: array - name: - description: UserName is the current name of database user. + connectionStrings: + description: ConnectionStrings is a set of connection strings that + your applications use to connect to this cluster. + properties: + private: + description: Network-peering-endpoint-aware mongodb:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. + type: string + privateEndpoint: + description: Private endpoint connection strings. Each object + describes the connection strings you can use to connect to this + cluster through a private endpoint. Atlas returns this parameter + only if you deployed a private endpoint to all regions to which + you deployed this cluster's nodes. + items: + description: PrivateEndpoint connection strings. Each object + describes the connection strings you can use to connect to + this cluster through a private endpoint. Atlas returns this + parameter only if you deployed a private endpoint to all regions + to which you deployed this cluster's nodes. + properties: + connectionString: + description: Private-endpoint-aware mongodb:// connection + string for this private endpoint. + type: string + endpoints: + description: Private endpoint through which you connect + to Atlas when you use connectionStrings.privateEndpoint[n].connectionString + or connectionStrings.privateEndpoint[n].srvConnectionString. + items: + description: Endpoint through which you connect to Atlas + properties: + endpointId: + description: Unique identifier of the private endpoint. + type: string + ip: + description: Private IP address of the private endpoint + network interface you created in your Azure VNet. + type: string + providerName: + description: Cloud provider to which you deployed + the private endpoint. Atlas returns AWS or AZURE. + type: string + region: + description: Region to which you deployed the private + endpoint. + type: string + type: object + type: array + srvConnectionString: + description: Private-endpoint-aware mongodb+srv:// connection + string for this private endpoint. + type: string + type: + description: "Type of MongoDB process that you connect to + with the connection strings \n Atlas returns: \n • MONGOD + for replica sets, or \n • MONGOS for sharded clusters" + type: string + type: object + type: array + privateSrv: + description: Network-peering-endpoint-aware mongodb+srv:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. Use this URI format + if your driver supports it. If it doesn't, use connectionStrings.private. + type: string + standard: + description: Public mongodb:// connection string for this cluster. + type: string + standardSrv: + description: Public mongodb+srv:// connection string for this + cluster. + type: string + type: object + mongoDBVersion: + description: MongoDBVersion is the version of MongoDB the cluster + runs, in . format. + type: string + mongoURIUpdated: + description: MongoURIUpdated is a timestamp in ISO 8601 date and time + format in UTC when the connection string was last updated. The connection + string changes if you update any of the other values. type: string observedGeneration: description: ObservedGeneration indicates the generation of the resource @@ -907,9 +1278,9 @@ spec: reconciliation of the resource. format: int64 type: integer - passwordVersion: - description: PasswordVersion is the 'ResourceVersion' of the password - Secret that the Atlas Operator is aware of + stateName: + description: 'StateName is the current state of the cluster. The possible + states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' type: string required: - conditions @@ -979,6 +1350,180 @@ spec: required: - name type: object + integrations: + description: Integrations is a list of MongoDB Atlas integrations + for the project + items: + properties: + accountId: + type: string + apiKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + apiTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + channelName: + type: string + enabled: + type: boolean + flowName: + type: string + licenseKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + microsoftTeamsWebhookUrl: + type: string + name: + type: string + orgName: + type: string + passwordRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + readTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + region: + type: string + routingKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + scheme: + type: string + secretRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + serviceDiscovery: + type: string + serviceKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + teamName: + type: string + type: + description: Third Party Integration type such as Slack, New + Relic, etc + enum: + - PAGER_DUTY + - SLACK + - DATADOG + - NEW_RELIC + - OPS_GENIE + - VICTOR_OPS + - FLOWDOCK + - WEBHOOK + - MICROSOFT_TEAMS + - PROMETHEUS + type: string + url: + type: string + username: + type: string + writeTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + type: object + type: array name: description: Name is the name of the Project that is created in Atlas by the Operator if it doesn't exist yet. @@ -988,6 +1533,30 @@ spec: for the current Project. items: properties: + endpointGroupName: + description: Unique identifier of the endpoint group. The endpoint + group encompasses all of the endpoints that you created in + Google Cloud. + type: string + endpoints: + description: Collection of individual private endpoints that + comprise your endpoint group. + items: + properties: + endpointName: + description: Forwarding rule that corresponds to the endpoint + you created in Google Cloud. + type: string + ipAddress: + description: Private IP address of the endpoint you created + in Google Cloud. + type: string + type: object + type: array + gcpProjectId: + description: Unique identifier of the Google Cloud project in + which you created your endpoints. + type: string id: description: Unique identifier of the private endpoint you created in your AWS VPC or Azure Vnet. @@ -1061,7 +1630,7 @@ spec: status: description: AtlasProjectStatus defines the observed state of AtlasProject properties: - AuthModes: + authModes: description: AuthModes contains a list of configured authentication modes "SCRAM" is default authentication method and requires a password for each user "X509" signifies that self-managed X.509 authentication @@ -1141,6 +1710,23 @@ spec: project items: properties: + endpoints: + description: Collection of individual GCP private endpoints + that comprise your network endpoint group. + items: + properties: + endpointName: + type: string + ipAddress: + type: string + status: + type: string + required: + - endpointName + - ipAddress + - status + type: object + type: array id: description: Unique identifier for AWS or AZURE Private Link Connection. @@ -1157,6 +1743,13 @@ spec: description: Cloud provider region for which you want to create the private endpoint service. type: string + serviceAttachmentNames: + description: Unique alphanumeric and special character strings + that identify the service attachments associated with the + GCP Private Service Connect endpoint service. + items: + type: string + type: array serviceName: description: Name of the AWS or Azure Private Link Service that Atlas manages. @@ -1170,6 +1763,15 @@ spec: - region type: object type: array + prometheus: + description: Prometheus contains the status for Prometheus integration + including the prometheusDiscoveryURL + properties: + prometheusDiscoveryURL: + type: string + scheme: + type: string + type: object required: - conditions type: object diff --git a/deploy/crds/atlas.mongodb.com_atlasbackuppolicies.yaml b/deploy/crds/atlas.mongodb.com_atlasbackuppolicies.yaml new file mode 100644 index 0000000000..57a494d36d --- /dev/null +++ b/deploy/crds/atlas.mongodb.com_atlasbackuppolicies.yaml @@ -0,0 +1,101 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasbackuppolicies.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasBackupPolicy + listKind: AtlasBackupPolicyList + plural: atlasbackuppolicies + singular: atlasbackuppolicy + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasBackupPolicy is the Schema for the atlasbackuppolicies API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasBackupPolicySpec defines the desired state of AtlasBackupPolicy + properties: + items: + description: A list of BackupPolicy items + items: + properties: + frequencyInterval: + description: Desired frequency of the new backup policy item + specified by FrequencyType. A value of 1 specifies the first + instance of the corresponding FrequencyType. The only accepted + value you can set for frequency interval with NVMe clusters + is 12. + enum: + - 1 + - 2 + - 4 + - 6 + - 8 + - 12 + type: integer + frequencyType: + description: 'Frequency associated with the backup policy item. + One of the following values: hourly, daily, weekly or monthly. + You cannot specify multiple hourly and daily backup policy + items.' + enum: + - hourly + - daily + - weekly + - monthly + type: string + retentionUnit: + description: 'Scope of the backup policy item: days, weeks, + or months' + enum: + - days + - weeks + - months + type: string + retentionValue: + description: Value to associate with RetentionUnit + type: integer + required: + - frequencyInterval + - frequencyType + - retentionUnit + - retentionValue + type: object + type: array + required: + - items + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/deploy/crds/atlas.mongodb.com_atlasbackupschedules.yaml b/deploy/crds/atlas.mongodb.com_atlasbackupschedules.yaml new file mode 100644 index 0000000000..7ac80e042d --- /dev/null +++ b/deploy/crds/atlas.mongodb.com_atlasbackupschedules.yaml @@ -0,0 +1,123 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasbackupschedules.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasBackupSchedule + listKind: AtlasBackupScheduleList + plural: atlasbackupschedules + singular: atlasbackupschedule + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasBackupSchedule is the Schema for the atlasbackupschedules + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasBackupScheduleSpec defines the desired state of AtlasBackupSchedule + properties: + autoExportEnabled: + default: true + description: Specify true to enable automatic export of cloud backup + snapshots to the AWS bucket. You must also define the export policy + using export. If omitted, defaults to false. + type: boolean + export: + description: Export policy for automatically exporting cloud backup + snapshots to AWS bucket. + properties: + exportBucketId: + description: Unique identifier of the AWS bucket to export the + cloud backup snapshot to. + type: string + frequencyType: + default: MONTHLY + enum: + - MONTHLY + type: string + required: + - exportBucketId + - frequencyType + type: object + policy: + description: A reference (name & namespace) for backup policy in the + desired updated backup policy. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + referenceHourOfDay: + description: UTC Hour of day between 0 and 23, inclusive, representing + which hour of the day that Atlas takes snapshots for backup policy + items + format: int64 + maximum: 23 + minimum: 0 + type: integer + referenceMinuteOfHour: + description: UTC Minutes after ReferenceHourOfDay that Atlas takes + snapshots for backup policy items. Must be between 0 and 59, inclusive. + format: int64 + maximum: 59 + minimum: 0 + type: integer + restoreWindowDays: + default: 1 + description: Number of days back in time you can restore to with Continuous + Cloud Backup accuracy. Must be a positive, non-zero integer. Applies + to continuous cloud backups only. + format: int64 + type: integer + updateSnapshots: + description: Specify true to apply the retention changes in the updated + backup policy to snapshots that Atlas took previously. + type: boolean + useOrgAndGroupNamesInExportPrefix: + description: Specify true to use organization and project names instead + of organization and project UUIDs in the path for the metadata files + that Atlas uploads to your S3 bucket after it finishes exporting + the snapshots + type: boolean + required: + - policy + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/deploy/crds/atlas.mongodb.com_atlasdeployments.yaml b/deploy/crds/atlas.mongodb.com_atlasdeployments.yaml new file mode 100644 index 0000000000..ec30769b1e --- /dev/null +++ b/deploy/crds/atlas.mongodb.com_atlasdeployments.yaml @@ -0,0 +1,858 @@ + +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasdeployments.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDeployment + listKind: AtlasDeploymentList + plural: atlasdeployments + singular: atlasdeployment + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasDeployment is the Schema for the atlasclusters API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDeploymentSpec defines the desired state of AtlasDeployment + properties: + advancedDeploymentSpec: + description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ + properties: + backupEnabled: + type: boolean + biConnector: + description: BiConnectorSpec specifies BI Connector for Atlas + configuration on this cluster + properties: + enabled: + description: Flag that indicates whether or not BI Connector + for Atlas is enabled on the cluster. + type: boolean + readPreference: + description: Source from which the BI Connector for Atlas + reads data. Each BI Connector for Atlas read preference + contains a distinct combination of readPreference and readPreferenceTags + options. + type: string + type: object + clusterType: + type: string + connectionStrings: + description: ConnectionStrings configuration for applications + use to connect to this cluster. + properties: + awsPrivateLink: + additionalProperties: + type: string + type: object + awsPrivateLinkSrv: + additionalProperties: + type: string + type: object + private: + type: string + privateEndpoint: + items: + description: PrivateEndpointSpec connection strings. Each + object describes the connection strings you can use to + connect to this cluster through a private endpoint. Atlas + returns this parameter only if you deployed a private + endpoint to all regions to which you deployed this cluster's + nodes. + properties: + connectionString: + type: string + endpoints: + items: + description: EndpointSpec through which you connect + to Atlas. + properties: + endpointId: + type: string + providerName: + type: string + region: + type: string + type: object + type: array + srvConnectionString: + type: string + type: + type: string + type: object + type: array + privateSrv: + type: string + standard: + type: string + standardSrv: + type: string + type: object + createDate: + type: string + diskSizeGB: + type: integer + encryptionAtRestProvider: + type: string + groupId: + type: string + id: + type: string + labels: + items: + description: LabelSpec contains key-value pairs that tag and + categorize the Cluster/DBUser + properties: + key: + maxLength: 255 + type: string + value: + type: string + required: + - key + - value + type: object + type: array + mongoDBMajorVersion: + type: string + mongoDBVersion: + type: string + name: + type: string + paused: + type: boolean + pitEnabled: + type: boolean + replicationSpecs: + items: + properties: + id: + type: string + numShards: + type: integer + regionConfigs: + items: + properties: + analyticsSpecs: + properties: + diskIOPS: + format: int64 + type: integer + ebsVolumeType: + type: string + instanceSize: + type: string + nodeCount: + type: integer + type: object + autoScaling: + description: AutoScalingSpec configures your cluster + to automatically scale its storage + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot + mode for Performance Advisor is enabled. The + default is false. + type: boolean + compute: + description: Collection of settings that configure + how a cluster might scale its cluster tier and + whether the cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster + tier auto-scaling is enabled. The default + is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which + your cluster can automatically scale (such + as M40). Atlas requires this parameter if + "autoScaling.compute.enabled" : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which + your cluster can automatically scale (such + as M10). Atlas requires this parameter if + "autoScaling.compute.scaleDownEnabled" : + true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether + the cluster tier may scale down. Atlas requires + this parameter if "autoScaling.compute.enabled" + : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk + auto-scaling is enabled. The default is true. + type: boolean + type: object + backingProviderName: + type: string + electableSpecs: + properties: + diskIOPS: + format: int64 + type: integer + ebsVolumeType: + type: string + instanceSize: + type: string + nodeCount: + type: integer + type: object + priority: + type: integer + providerName: + type: string + readOnlySpecs: + properties: + diskIOPS: + format: int64 + type: integer + ebsVolumeType: + type: string + instanceSize: + type: string + nodeCount: + type: integer + type: object + regionName: + type: string + type: object + type: array + zoneName: + type: string + type: object + type: array + rootCertType: + type: string + stateName: + type: string + versionReleaseSystem: + type: string + type: object + backupRef: + description: Backup schedule for the AtlasDeployment + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + deploymentSpec: + description: Configuration for the advanced cluster API + properties: + autoScaling: + description: Collection of settings that configures auto-scaling + information for the cluster. If you specify the autoScaling + object, you must also specify the providerSettings.autoScaling + object. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode for + Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how a cluster + might scale its cluster tier and whether the cluster can + scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your cluster + can automatically scale (such as M40). Atlas requires + this parameter if "autoScaling.compute.enabled" : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your cluster + can automatically scale (such as M10). Atlas requires + this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter if + "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + biConnector: + description: Configuration of BI Connector for Atlas on this cluster. + The MongoDB Connector for Business Intelligence for Atlas (BI + Connector) is only available for M10 and larger clusters. + properties: + enabled: + description: Flag that indicates whether or not BI Connector + for Atlas is enabled on the cluster. + type: boolean + readPreference: + description: Source from which the BI Connector for Atlas + reads data. Each BI Connector for Atlas read preference + contains a distinct combination of readPreference and readPreferenceTags + options. + type: string + type: object + clusterType: + description: Type of the cluster that you want to create. The + parameter is required if replicationSpecs are set or if Global + Clusters are deployed. + enum: + - REPLICASET + - SHARDED + - GEOSHARDED + type: string + diskSizeGB: + description: Capacity, in gigabytes, of the host's root volume. + Increase this number to add capacity, up to a maximum possible + value of 4096 (i.e., 4 TB). This value must be a positive integer. + The parameter is required if replicationSpecs are configured. + maximum: 4096 + minimum: 0 + type: integer + encryptionAtRestProvider: + description: Cloud service provider that offers Encryption at + Rest. + enum: + - AWS + - GCP + - AZURE + - NONE + type: string + labels: + description: Collection of key-value pairs that tag and categorize + the cluster. Each key and value has a maximum length of 255 + characters. + items: + description: LabelSpec contains key-value pairs that tag and + categorize the Cluster/DBUser + properties: + key: + maxLength: 255 + type: string + value: + type: string + required: + - key + - value + type: object + type: array + mongoDBMajorVersion: + description: Version of the cluster to deploy. + type: string + name: + description: Name of the cluster as it appears in Atlas. After + Atlas creates the cluster, you can't change its name. + type: string + numShards: + description: Positive integer that specifies the number of shards + to deploy for a sharded cluster. The parameter is required if + replicationSpecs are configured + maximum: 50 + minimum: 1 + type: integer + paused: + description: Flag that indicates whether the cluster should be + paused. + type: boolean + pitEnabled: + description: Flag that indicates the cluster uses continuous cloud + backups. + type: boolean + providerBackupEnabled: + description: Applicable only for M10+ clusters. Flag that indicates + if the cluster uses Cloud Backups for backups. + type: boolean + providerSettings: + description: Configuration for the provisioned hosts on which + MongoDB runs. The available options are specific to the cloud + service provider. + properties: + autoScaling: + description: Range of instance sizes to which your cluster + can scale. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode + for Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how + a cluster might scale its cluster tier and whether the + cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your + cluster can automatically scale (such as M40). Atlas + requires this parameter if "autoScaling.compute.enabled" + : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your + cluster can automatically scale (such as M10). Atlas + requires this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter + if "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + backingProviderName: + description: 'Cloud service provider on which the host for + a multi-tenant cluster is provisioned. This setting only + works when "providerSetting.providerName" : "TENANT" and + "providerSetting.instanceSizeName" : M2 or M5.' + enum: + - AWS + - GCP + - AZURE + type: string + diskIOPS: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + format: int64 + type: integer + diskTypeName: + description: Type of disk if you selected Azure as your cloud + service provider. + type: string + encryptEBSVolume: + description: Flag that indicates whether the Amazon EBS encryption + feature encrypts the host's root volume for both data at + rest within the volume and for data moving between the volume + and the cluster. + type: boolean + instanceSizeName: + description: Atlas provides different cluster tiers, each + with a default storage capacity and RAM size. The cluster + you select is used for all the data-bearing hosts in your + cluster tier. + type: string + providerName: + description: Cloud service provider on which Atlas provisions + the hosts. + enum: + - AWS + - GCP + - AZURE + - TENANT + - SERVERLESS + type: string + regionName: + description: Physical location of your MongoDB cluster. The + region you choose can affect network latency for clients + accessing your databases. + type: string + volumeType: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + enum: + - STANDARD + - PROVISIONED + type: string + required: + - providerName + type: object + replicationSpecs: + description: Configuration for cluster regions. + items: + description: ReplicationSpec represents a configuration for + cluster regions + properties: + numShards: + description: Number of shards to deploy in each specified + zone. The default value is 1. + format: int64 + type: integer + regionsConfig: + additionalProperties: + description: RegionsConfig describes the region’s priority + in elections and the number and type of MongoDB nodes + Atlas deploys to the region. + properties: + analyticsNodes: + description: The number of analytics nodes for Atlas + to deploy to the region. Analytics nodes are useful + for handling analytic data such as reporting queries + from BI Connector for Atlas. Analytics nodes are + read-only, and can never become the primary. If + you do not specify this option, no analytics nodes + are deployed to the region. + format: int64 + type: integer + electableNodes: + description: Number of electable nodes for Atlas to + deploy to the region. Electable nodes can become + the primary and can facilitate local reads. + format: int64 + type: integer + priority: + description: Election priority of the region. For + regions with only replicationSpecs[n].regionsConfig..readOnlyNodes, + set this value to 0. + format: int64 + type: integer + readOnlyNodes: + description: Number of read-only nodes for Atlas to + deploy to the region. Read-only nodes can never + become the primary, but can facilitate local-reads. + format: int64 + type: integer + type: object + description: Configuration for a region. Each regionsConfig + object describes the region's priority in elections and + the number and type of MongoDB nodes that Atlas deploys + to the region. + type: object + zoneName: + description: Name for the zone in a Global Cluster. Don't + provide this value if clusterType is not GEOSHARDED. + type: string + type: object + type: array + required: + - name + - providerSettings + type: object + processArgs: + description: ProcessArgs allows to modify Advanced Configuration Options + properties: + defaultReadConcern: + type: string + defaultWriteConcern: + type: string + failIndexKeyTooLong: + type: boolean + javascriptEnabled: + type: boolean + minimumEnabledTlsProtocol: + type: string + noTableScan: + type: boolean + oplogSizeMB: + format: int64 + type: integer + sampleRefreshIntervalBIConnector: + format: int64 + type: integer + sampleSizeBIConnector: + format: int64 + type: integer + type: object + projectRef: + description: Project is a reference to AtlasProject resource the cluster + belongs to + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + serverlessSpec: + description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ + properties: + name: + description: Name of the cluster as it appears in Atlas. After + Atlas creates the cluster, you can't change its name. + type: string + providerSettings: + description: Configuration for the provisioned hosts on which + MongoDB runs. The available options are specific to the cloud + service provider. + properties: + autoScaling: + description: Range of instance sizes to which your cluster + can scale. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode + for Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how + a cluster might scale its cluster tier and whether the + cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your + cluster can automatically scale (such as M40). Atlas + requires this parameter if "autoScaling.compute.enabled" + : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your + cluster can automatically scale (such as M10). Atlas + requires this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter + if "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + backingProviderName: + description: 'Cloud service provider on which the host for + a multi-tenant cluster is provisioned. This setting only + works when "providerSetting.providerName" : "TENANT" and + "providerSetting.instanceSizeName" : M2 or M5.' + enum: + - AWS + - GCP + - AZURE + type: string + diskIOPS: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + format: int64 + type: integer + diskTypeName: + description: Type of disk if you selected Azure as your cloud + service provider. + type: string + encryptEBSVolume: + description: Flag that indicates whether the Amazon EBS encryption + feature encrypts the host's root volume for both data at + rest within the volume and for data moving between the volume + and the cluster. + type: boolean + instanceSizeName: + description: Atlas provides different cluster tiers, each + with a default storage capacity and RAM size. The cluster + you select is used for all the data-bearing hosts in your + cluster tier. + type: string + providerName: + description: Cloud service provider on which Atlas provisions + the hosts. + enum: + - AWS + - GCP + - AZURE + - TENANT + - SERVERLESS + type: string + regionName: + description: Physical location of your MongoDB cluster. The + region you choose can affect network latency for clients + accessing your databases. + type: string + volumeType: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + enum: + - STANDARD + - PROVISIONED + type: string + required: + - providerName + type: object + required: + - name + - providerSettings + type: object + required: + - projectRef + type: object + status: + description: AtlasDeploymentStatus defines the observed state of AtlasDeployment. + properties: + conditions: + description: Conditions is the list of statuses showing the current + state of the Atlas Custom Resource + items: + description: Condition describes the state of an Atlas Custom Resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Atlas Custom Resource condition. + type: string + required: + - status + - type + type: object + type: array + connectionStrings: + description: ConnectionStrings is a set of connection strings that + your applications use to connect to this cluster. + properties: + private: + description: Network-peering-endpoint-aware mongodb:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. + type: string + privateEndpoint: + description: Private endpoint connection strings. Each object + describes the connection strings you can use to connect to this + cluster through a private endpoint. Atlas returns this parameter + only if you deployed a private endpoint to all regions to which + you deployed this cluster's nodes. + items: + description: PrivateEndpoint connection strings. Each object + describes the connection strings you can use to connect to + this cluster through a private endpoint. Atlas returns this + parameter only if you deployed a private endpoint to all regions + to which you deployed this cluster's nodes. + properties: + connectionString: + description: Private-endpoint-aware mongodb:// connection + string for this private endpoint. + type: string + endpoints: + description: Private endpoint through which you connect + to Atlas when you use connectionStrings.privateEndpoint[n].connectionString + or connectionStrings.privateEndpoint[n].srvConnectionString. + items: + description: Endpoint through which you connect to Atlas + properties: + endpointId: + description: Unique identifier of the private endpoint. + type: string + ip: + description: Private IP address of the private endpoint + network interface you created in your Azure VNet. + type: string + providerName: + description: Cloud provider to which you deployed + the private endpoint. Atlas returns AWS or AZURE. + type: string + region: + description: Region to which you deployed the private + endpoint. + type: string + type: object + type: array + srvConnectionString: + description: Private-endpoint-aware mongodb+srv:// connection + string for this private endpoint. + type: string + type: + description: "Type of MongoDB process that you connect to + with the connection strings \n Atlas returns: \n • MONGOD + for replica sets, or \n • MONGOS for sharded clusters" + type: string + type: object + type: array + privateSrv: + description: Network-peering-endpoint-aware mongodb+srv:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. Use this URI format + if your driver supports it. If it doesn't, use connectionStrings.private. + type: string + standard: + description: Public mongodb:// connection string for this cluster. + type: string + standardSrv: + description: Public mongodb+srv:// connection string for this + cluster. + type: string + type: object + mongoDBVersion: + description: MongoDBVersion is the version of MongoDB the cluster + runs, in . format. + type: string + mongoURIUpdated: + description: MongoURIUpdated is a timestamp in ISO 8601 date and time + format in UTC when the connection string was last updated. The connection + string changes if you update any of the other values. + type: string + observedGeneration: + description: ObservedGeneration indicates the generation of the resource + specification that the Atlas Operator is aware of. The Atlas Operator + updates this field to the 'metadata.generation' as soon as it starts + reconciliation of the resource. + format: int64 + type: integer + stateName: + description: 'StateName is the current state of the cluster. The possible + states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/deploy/crds/atlas.mongodb.com_atlasprojects.yaml b/deploy/crds/atlas.mongodb.com_atlasprojects.yaml index 1df86750b9..ce8d4c8553 100644 --- a/deploy/crds/atlas.mongodb.com_atlasprojects.yaml +++ b/deploy/crds/atlas.mongodb.com_atlasprojects.yaml @@ -53,6 +53,180 @@ spec: required: - name type: object + integrations: + description: Integrations is a list of MongoDB Atlas integrations + for the project + items: + properties: + accountId: + type: string + apiKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + apiTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + channelName: + type: string + enabled: + type: boolean + flowName: + type: string + licenseKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + microsoftTeamsWebhookUrl: + type: string + name: + type: string + orgName: + type: string + passwordRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + readTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + region: + type: string + routingKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + scheme: + type: string + secretRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + serviceDiscovery: + type: string + serviceKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + teamName: + type: string + type: + description: Third Party Integration type such as Slack, New + Relic, etc + enum: + - PAGER_DUTY + - SLACK + - DATADOG + - NEW_RELIC + - OPS_GENIE + - VICTOR_OPS + - FLOWDOCK + - WEBHOOK + - MICROSOFT_TEAMS + - PROMETHEUS + type: string + url: + type: string + username: + type: string + writeTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + type: object + type: array name: description: Name is the name of the Project that is created in Atlas by the Operator if it doesn't exist yet. @@ -62,6 +236,30 @@ spec: for the current Project. items: properties: + endpointGroupName: + description: Unique identifier of the endpoint group. The endpoint + group encompasses all of the endpoints that you created in + Google Cloud. + type: string + endpoints: + description: Collection of individual private endpoints that + comprise your endpoint group. + items: + properties: + endpointName: + description: Forwarding rule that corresponds to the endpoint + you created in Google Cloud. + type: string + ipAddress: + description: Private IP address of the endpoint you created + in Google Cloud. + type: string + type: object + type: array + gcpProjectId: + description: Unique identifier of the Google Cloud project in + which you created your endpoints. + type: string id: description: Unique identifier of the private endpoint you created in your AWS VPC or Azure Vnet. @@ -135,7 +333,7 @@ spec: status: description: AtlasProjectStatus defines the observed state of AtlasProject properties: - AuthModes: + authModes: description: AuthModes contains a list of configured authentication modes "SCRAM" is default authentication method and requires a password for each user "X509" signifies that self-managed X.509 authentication @@ -215,6 +413,23 @@ spec: project items: properties: + endpoints: + description: Collection of individual GCP private endpoints + that comprise your network endpoint group. + items: + properties: + endpointName: + type: string + ipAddress: + type: string + status: + type: string + required: + - endpointName + - ipAddress + - status + type: object + type: array id: description: Unique identifier for AWS or AZURE Private Link Connection. @@ -231,6 +446,13 @@ spec: description: Cloud provider region for which you want to create the private endpoint service. type: string + serviceAttachmentNames: + description: Unique alphanumeric and special character strings + that identify the service attachments associated with the + GCP Private Service Connect endpoint service. + items: + type: string + type: array serviceName: description: Name of the AWS or Azure Private Link Service that Atlas manages. @@ -244,6 +466,15 @@ spec: - region type: object type: array + prometheus: + description: Prometheus contains the status for Prometheus integration + including the prometheusDiscoveryURL + properties: + prometheusDiscoveryURL: + type: string + scheme: + type: string + type: object required: - conditions type: object diff --git a/deploy/namespaced/crds.yaml b/deploy/namespaced/crds.yaml index 3e9ea1037e..9b865db502 100644 --- a/deploy/namespaced/crds.yaml +++ b/deploy/namespaced/crds.yaml @@ -4,20 +4,20 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null - name: atlasclusters.atlas.mongodb.com + name: atlasbackuppolicies.atlas.mongodb.com spec: group: atlas.mongodb.com names: - kind: AtlasCluster - listKind: AtlasClusterList - plural: atlasclusters - singular: atlascluster + kind: AtlasBackupPolicy + listKind: AtlasBackupPolicyList + plural: atlasbackuppolicies + singular: atlasbackuppolicy scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: - description: AtlasCluster is the Schema for the atlasclusters API + description: AtlasBackupPolicy is the Schema for the atlasbackuppolicies API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -32,9 +32,451 @@ spec: metadata: type: object spec: - description: AtlasClusterSpec defines the desired state of AtlasCluster + description: AtlasBackupPolicySpec defines the desired state of AtlasBackupPolicy properties: - advancedClusterSpec: + items: + description: A list of BackupPolicy items + items: + properties: + frequencyInterval: + description: Desired frequency of the new backup policy item + specified by FrequencyType. A value of 1 specifies the first + instance of the corresponding FrequencyType. The only accepted + value you can set for frequency interval with NVMe clusters + is 12. + enum: + - 1 + - 2 + - 4 + - 6 + - 8 + - 12 + type: integer + frequencyType: + description: 'Frequency associated with the backup policy item. + One of the following values: hourly, daily, weekly or monthly. + You cannot specify multiple hourly and daily backup policy + items.' + enum: + - hourly + - daily + - weekly + - monthly + type: string + retentionUnit: + description: 'Scope of the backup policy item: days, weeks, + or months' + enum: + - days + - weeks + - months + type: string + retentionValue: + description: Value to associate with RetentionUnit + type: integer + required: + - frequencyInterval + - frequencyType + - retentionUnit + - retentionValue + type: object + type: array + required: + - items + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasbackupschedules.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasBackupSchedule + listKind: AtlasBackupScheduleList + plural: atlasbackupschedules + singular: atlasbackupschedule + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasBackupSchedule is the Schema for the atlasbackupschedules + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasBackupScheduleSpec defines the desired state of AtlasBackupSchedule + properties: + autoExportEnabled: + default: true + description: Specify true to enable automatic export of cloud backup + snapshots to the AWS bucket. You must also define the export policy + using export. If omitted, defaults to false. + type: boolean + export: + description: Export policy for automatically exporting cloud backup + snapshots to AWS bucket. + properties: + exportBucketId: + description: Unique identifier of the AWS bucket to export the + cloud backup snapshot to. + type: string + frequencyType: + default: MONTHLY + enum: + - MONTHLY + type: string + required: + - exportBucketId + - frequencyType + type: object + policy: + description: A reference (name & namespace) for backup policy in the + desired updated backup policy. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + referenceHourOfDay: + description: UTC Hour of day between 0 and 23, inclusive, representing + which hour of the day that Atlas takes snapshots for backup policy + items + format: int64 + maximum: 23 + minimum: 0 + type: integer + referenceMinuteOfHour: + description: UTC Minutes after ReferenceHourOfDay that Atlas takes + snapshots for backup policy items. Must be between 0 and 59, inclusive. + format: int64 + maximum: 59 + minimum: 0 + type: integer + restoreWindowDays: + default: 1 + description: Number of days back in time you can restore to with Continuous + Cloud Backup accuracy. Must be a positive, non-zero integer. Applies + to continuous cloud backups only. + format: int64 + type: integer + updateSnapshots: + description: Specify true to apply the retention changes in the updated + backup policy to snapshots that Atlas took previously. + type: boolean + useOrgAndGroupNamesInExportPrefix: + description: Specify true to use organization and project names instead + of organization and project UUIDs in the path for the metadata files + that Atlas uploads to your S3 bucket after it finishes exporting + the snapshots + type: boolean + required: + - policy + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasdatabaseusers.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDatabaseUser + listKind: AtlasDatabaseUserList + plural: atlasdatabaseusers + singular: atlasdatabaseuser + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: Name + type: string + name: v1 + schema: + openAPIV3Schema: + description: AtlasDatabaseUser is the Schema for the Atlas Database User API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDatabaseUserSpec defines the desired state of Database + User in Atlas + properties: + databaseName: + default: admin + description: DatabaseName is a Database against which Atlas authenticates + the user. Default value is 'admin'. + type: string + deleteAfterDate: + description: DeleteAfterDate is a timestamp in ISO 8601 date and time + format in UTC after which Atlas deletes the user. The specified + date must be in the future and within one week. + type: string + labels: + description: Labels is an array containing key-value pairs that tag + and categorize the database user. Each key and value has a maximum + length of 255 characters. + items: + description: LabelSpec contains key-value pairs that tag and categorize + the Cluster/DBUser + properties: + key: + maxLength: 255 + type: string + value: + type: string + required: + - key + - value + type: object + type: array + passwordSecretRef: + description: PasswordSecret is a reference to the Secret keeping the + user password. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + required: + - name + type: object + projectRef: + description: Project is a reference to AtlasProject resource the user + belongs to + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + roles: + description: Roles is an array of this user's roles and the databases + / collections on which the roles apply. A role allows the user to + perform particular actions on the specified database. + items: + description: RoleSpec allows the user to perform particular actions + on the specified database. A role on the admin database can include + privileges that apply to the other databases as well. + properties: + collectionName: + description: CollectionName is a collection for which the role + applies. + type: string + databaseName: + description: DatabaseName is a database on which the user has + the specified role. A role on the admin database can include + privileges that apply to the other databases. + type: string + roleName: + description: RoleName is a name of the role. This value can + either be a built-in role or a custom role. + type: string + required: + - databaseName + - roleName + type: object + minItems: 1 + type: array + scopes: + description: Scopes is an array of clusters and Atlas Data Lakes that + this user has access to. + items: + description: ScopeSpec if present a database user only have access + to the indicated resource (Cluster or Atlas Data Lake) if none + is given then it has access to all. It's highly recommended to + restrict the access of the database users only to a limited set + of resources. + properties: + name: + description: Name is a name of the cluster or Atlas Data Lake + that the user has access to. + type: string + type: + description: Type is a type of resource that the user has access + to. + enum: + - CLUSTER + - DATA_LAKE + type: string + required: + - name + - type + type: object + type: array + username: + description: Username is a username for authenticating to MongoDB. + type: string + x509Type: + description: X509Type is X.509 method by which the database authenticates + the provided username + type: string + required: + - projectRef + - roles + - username + type: object + status: + description: AtlasDatabaseUserStatus defines the observed state of AtlasProject + properties: + conditions: + description: Conditions is the list of statuses showing the current + state of the Atlas Custom Resource + items: + description: Condition describes the state of an Atlas Custom Resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Atlas Custom Resource condition. + type: string + required: + - status + - type + type: object + type: array + name: + description: UserName is the current name of database user. + type: string + observedGeneration: + description: ObservedGeneration indicates the generation of the resource + specification that the Atlas Operator is aware of. The Atlas Operator + updates this field to the 'metadata.generation' as soon as it starts + reconciliation of the resource. + format: int64 + type: integer + passwordVersion: + description: PasswordVersion is the 'ResourceVersion' of the password + Secret that the Atlas Operator is aware of + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasdeployments.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDeployment + listKind: AtlasDeploymentList + plural: atlasdeployments + singular: atlasdeployment + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasDeployment is the Schema for the atlasclusters API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDeploymentSpec defines the desired state of AtlasDeployment + properties: + advancedDeploymentSpec: description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ properties: backupEnabled: @@ -253,7 +695,19 @@ spec: versionReleaseSystem: type: string type: object - clusterSpec: + backupRef: + description: Backup schedule for the AtlasDeployment + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + deploymentSpec: description: Configuration for the advanced cluster API properties: autoScaling: @@ -467,6 +921,7 @@ spec: - GCP - AZURE - TENANT + - SERVERLESS type: string regionName: description: Physical location of your MongoDB cluster. The @@ -481,7 +936,6 @@ spec: - PROVISIONED type: string required: - - instanceSizeName - providerName type: object replicationSpecs: @@ -519,353 +973,187 @@ spec: type: integer priority: description: Election priority of the region. For - regions with only replicationSpecs[n].regionsConfig..readOnlyNodes, - set this value to 0. - format: int64 - type: integer - readOnlyNodes: - description: Number of read-only nodes for Atlas to - deploy to the region. Read-only nodes can never - become the primary, but can facilitate local-reads. - format: int64 - type: integer - type: object - description: Configuration for a region. Each regionsConfig - object describes the region's priority in elections and - the number and type of MongoDB nodes that Atlas deploys - to the region. - type: object - zoneName: - description: Name for the zone in a Global Cluster. Don't - provide this value if clusterType is not GEOSHARDED. - type: string - type: object - type: array - required: - - name - - providerSettings - type: object - projectRef: - description: Project is a reference to AtlasProject resource the cluster - belongs to - properties: - name: - description: Name is the name of the Kubernetes Resource - type: string - namespace: - description: Namespace is the namespace of the Kubernetes Resource - type: string - required: - - name - type: object - required: - - projectRef - type: object - status: - description: AtlasClusterStatus defines the observed state of AtlasCluster. - properties: - conditions: - description: Conditions is the list of statuses showing the current - state of the Atlas Custom Resource - items: - description: Condition describes the state of an Atlas Custom Resource - at a certain point. - properties: - lastTransitionTime: - description: Last time the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: A human readable message indicating details about - the transition. - type: string - reason: - description: The reason for the condition's last transition. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: Type of Atlas Custom Resource condition. - type: string - required: - - status - - type - type: object - type: array - connectionStrings: - description: ConnectionStrings is a set of connection strings that - your applications use to connect to this cluster. - properties: - private: - description: Network-peering-endpoint-aware mongodb:// connection - strings for each interface VPC endpoint you configured to connect - to this cluster. Atlas returns this parameter only if you created - a network peering connection to this cluster. - type: string - privateEndpoint: - description: Private endpoint connection strings. Each object - describes the connection strings you can use to connect to this - cluster through a private endpoint. Atlas returns this parameter - only if you deployed a private endpoint to all regions to which - you deployed this cluster's nodes. - items: - description: PrivateEndpoint connection strings. Each object - describes the connection strings you can use to connect to - this cluster through a private endpoint. Atlas returns this - parameter only if you deployed a private endpoint to all regions - to which you deployed this cluster's nodes. - properties: - connectionString: - description: Private-endpoint-aware mongodb:// connection - string for this private endpoint. - type: string - endpoints: - description: Private endpoint through which you connect - to Atlas when you use connectionStrings.privateEndpoint[n].connectionString - or connectionStrings.privateEndpoint[n].srvConnectionString. - items: - description: Endpoint through which you connect to Atlas - properties: - endpointId: - description: Unique identifier of the private endpoint. - type: string - ip: - description: Private IP address of the private endpoint - network interface you created in your Azure VNet. - type: string - providerName: - description: Cloud provider to which you deployed - the private endpoint. Atlas returns AWS or AZURE. - type: string - region: - description: Region to which you deployed the private - endpoint. - type: string + regions with only replicationSpecs[n].regionsConfig..readOnlyNodes, + set this value to 0. + format: int64 + type: integer + readOnlyNodes: + description: Number of read-only nodes for Atlas to + deploy to the region. Read-only nodes can never + become the primary, but can facilitate local-reads. + format: int64 + type: integer type: object - type: array - srvConnectionString: - description: Private-endpoint-aware mongodb+srv:// connection - string for this private endpoint. - type: string - type: - description: "Type of MongoDB process that you connect to - with the connection strings \n Atlas returns: \n • MONGOD - for replica sets, or \n • MONGOS for sharded clusters" + description: Configuration for a region. Each regionsConfig + object describes the region's priority in elections and + the number and type of MongoDB nodes that Atlas deploys + to the region. + type: object + zoneName: + description: Name for the zone in a Global Cluster. Don't + provide this value if clusterType is not GEOSHARDED. type: string type: object type: array - privateSrv: - description: Network-peering-endpoint-aware mongodb+srv:// connection - strings for each interface VPC endpoint you configured to connect - to this cluster. Atlas returns this parameter only if you created - a network peering connection to this cluster. Use this URI format - if your driver supports it. If it doesn't, use connectionStrings.private. + required: + - name + - providerSettings + type: object + processArgs: + description: ProcessArgs allows to modify Advanced Configuration Options + properties: + defaultReadConcern: type: string - standard: - description: Public mongodb:// connection string for this cluster. + defaultWriteConcern: type: string - standardSrv: - description: Public mongodb+srv:// connection string for this - cluster. + failIndexKeyTooLong: + type: boolean + javascriptEnabled: + type: boolean + minimumEnabledTlsProtocol: type: string + noTableScan: + type: boolean + oplogSizeMB: + format: int64 + type: integer + sampleRefreshIntervalBIConnector: + format: int64 + type: integer + sampleSizeBIConnector: + format: int64 + type: integer type: object - mongoDBVersion: - description: MongoDBVersion is the version of MongoDB the cluster - runs, in . format. - type: string - mongoURIUpdated: - description: MongoURIUpdated is a timestamp in ISO 8601 date and time - format in UTC when the connection string was last updated. The connection - string changes if you update any of the other values. - type: string - observedGeneration: - description: ObservedGeneration indicates the generation of the resource - specification that the Atlas Operator is aware of. The Atlas Operator - updates this field to the 'metadata.generation' as soon as it starts - reconciliation of the resource. - format: int64 - type: integer - stateName: - description: 'StateName is the current state of the cluster. The possible - states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' - type: string - required: - - conditions - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: atlasdatabaseusers.atlas.mongodb.com -spec: - group: atlas.mongodb.com - names: - kind: AtlasDatabaseUser - listKind: AtlasDatabaseUserList - plural: atlasdatabaseusers - singular: atlasdatabaseuser - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.name - name: Name - type: string - name: v1 - schema: - openAPIV3Schema: - description: AtlasDatabaseUser is the Schema for the Atlas Database User API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AtlasDatabaseUserSpec defines the desired state of Database - User in Atlas - properties: - databaseName: - default: admin - description: DatabaseName is a Database against which Atlas authenticates - the user. Default value is 'admin'. - type: string - deleteAfterDate: - description: DeleteAfterDate is a timestamp in ISO 8601 date and time - format in UTC after which Atlas deletes the user. The specified - date must be in the future and within one week. - type: string - labels: - description: Labels is an array containing key-value pairs that tag - and categorize the database user. Each key and value has a maximum - length of 255 characters. - items: - description: LabelSpec contains key-value pairs that tag and categorize - the Cluster/DBUser - properties: - key: - maxLength: 255 - type: string - value: - type: string - required: - - key - - value - type: object - type: array - passwordSecretRef: - description: PasswordSecret is a reference to the Secret keeping the - user password. + projectRef: + description: Project is a reference to AtlasProject resource the cluster + belongs to properties: name: description: Name is the name of the Kubernetes Resource type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string required: - name type: object - projectRef: - description: Project is a reference to AtlasProject resource the user - belongs to + serverlessSpec: + description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ properties: name: - description: Name is the name of the Kubernetes Resource - type: string - namespace: - description: Namespace is the namespace of the Kubernetes Resource + description: Name of the cluster as it appears in Atlas. After + Atlas creates the cluster, you can't change its name. type: string + providerSettings: + description: Configuration for the provisioned hosts on which + MongoDB runs. The available options are specific to the cloud + service provider. + properties: + autoScaling: + description: Range of instance sizes to which your cluster + can scale. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode + for Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how + a cluster might scale its cluster tier and whether the + cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your + cluster can automatically scale (such as M40). Atlas + requires this parameter if "autoScaling.compute.enabled" + : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your + cluster can automatically scale (such as M10). Atlas + requires this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter + if "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + backingProviderName: + description: 'Cloud service provider on which the host for + a multi-tenant cluster is provisioned. This setting only + works when "providerSetting.providerName" : "TENANT" and + "providerSetting.instanceSizeName" : M2 or M5.' + enum: + - AWS + - GCP + - AZURE + type: string + diskIOPS: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + format: int64 + type: integer + diskTypeName: + description: Type of disk if you selected Azure as your cloud + service provider. + type: string + encryptEBSVolume: + description: Flag that indicates whether the Amazon EBS encryption + feature encrypts the host's root volume for both data at + rest within the volume and for data moving between the volume + and the cluster. + type: boolean + instanceSizeName: + description: Atlas provides different cluster tiers, each + with a default storage capacity and RAM size. The cluster + you select is used for all the data-bearing hosts in your + cluster tier. + type: string + providerName: + description: Cloud service provider on which Atlas provisions + the hosts. + enum: + - AWS + - GCP + - AZURE + - TENANT + - SERVERLESS + type: string + regionName: + description: Physical location of your MongoDB cluster. The + region you choose can affect network latency for clients + accessing your databases. + type: string + volumeType: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + enum: + - STANDARD + - PROVISIONED + type: string + required: + - providerName + type: object required: - name + - providerSettings type: object - roles: - description: Roles is an array of this user's roles and the databases - / collections on which the roles apply. A role allows the user to - perform particular actions on the specified database. - items: - description: RoleSpec allows the user to perform particular actions - on the specified database. A role on the admin database can include - privileges that apply to the other databases as well. - properties: - collectionName: - description: CollectionName is a collection for which the role - applies. - type: string - databaseName: - description: DatabaseName is a database on which the user has - the specified role. A role on the admin database can include - privileges that apply to the other databases. - type: string - roleName: - description: RoleName is a name of the role. This value can - either be a built-in role or a custom role. - type: string - required: - - databaseName - - roleName - type: object - minItems: 1 - type: array - scopes: - description: Scopes is an array of clusters and Atlas Data Lakes that - this user has access to. - items: - description: ScopeSpec if present a database user only have access - to the indicated resource (Cluster or Atlas Data Lake) if none - is given then it has access to all. It's highly recommended to - restrict the access of the database users only to a limited set - of resources. - properties: - name: - description: Name is a name of the cluster or Atlas Data Lake - that the user has access to. - type: string - type: - description: Type is a type of resource that the user has access - to. - enum: - - CLUSTER - - DATA_LAKE - type: string - required: - - name - - type - type: object - type: array - username: - description: Username is a username for authenticating to MongoDB. - type: string - x509Type: - description: X509Type is X.509 method by which the database authenticates - the provided username - type: string required: - projectRef - - roles - - username type: object status: - description: AtlasDatabaseUserStatus defines the observed state of AtlasProject + description: AtlasDeploymentStatus defines the observed state of AtlasDeployment. properties: conditions: description: Conditions is the list of statuses showing the current @@ -897,8 +1185,91 @@ spec: - type type: object type: array - name: - description: UserName is the current name of database user. + connectionStrings: + description: ConnectionStrings is a set of connection strings that + your applications use to connect to this cluster. + properties: + private: + description: Network-peering-endpoint-aware mongodb:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. + type: string + privateEndpoint: + description: Private endpoint connection strings. Each object + describes the connection strings you can use to connect to this + cluster through a private endpoint. Atlas returns this parameter + only if you deployed a private endpoint to all regions to which + you deployed this cluster's nodes. + items: + description: PrivateEndpoint connection strings. Each object + describes the connection strings you can use to connect to + this cluster through a private endpoint. Atlas returns this + parameter only if you deployed a private endpoint to all regions + to which you deployed this cluster's nodes. + properties: + connectionString: + description: Private-endpoint-aware mongodb:// connection + string for this private endpoint. + type: string + endpoints: + description: Private endpoint through which you connect + to Atlas when you use connectionStrings.privateEndpoint[n].connectionString + or connectionStrings.privateEndpoint[n].srvConnectionString. + items: + description: Endpoint through which you connect to Atlas + properties: + endpointId: + description: Unique identifier of the private endpoint. + type: string + ip: + description: Private IP address of the private endpoint + network interface you created in your Azure VNet. + type: string + providerName: + description: Cloud provider to which you deployed + the private endpoint. Atlas returns AWS or AZURE. + type: string + region: + description: Region to which you deployed the private + endpoint. + type: string + type: object + type: array + srvConnectionString: + description: Private-endpoint-aware mongodb+srv:// connection + string for this private endpoint. + type: string + type: + description: "Type of MongoDB process that you connect to + with the connection strings \n Atlas returns: \n • MONGOD + for replica sets, or \n • MONGOS for sharded clusters" + type: string + type: object + type: array + privateSrv: + description: Network-peering-endpoint-aware mongodb+srv:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. Use this URI format + if your driver supports it. If it doesn't, use connectionStrings.private. + type: string + standard: + description: Public mongodb:// connection string for this cluster. + type: string + standardSrv: + description: Public mongodb+srv:// connection string for this + cluster. + type: string + type: object + mongoDBVersion: + description: MongoDBVersion is the version of MongoDB the cluster + runs, in . format. + type: string + mongoURIUpdated: + description: MongoURIUpdated is a timestamp in ISO 8601 date and time + format in UTC when the connection string was last updated. The connection + string changes if you update any of the other values. type: string observedGeneration: description: ObservedGeneration indicates the generation of the resource @@ -907,9 +1278,9 @@ spec: reconciliation of the resource. format: int64 type: integer - passwordVersion: - description: PasswordVersion is the 'ResourceVersion' of the password - Secret that the Atlas Operator is aware of + stateName: + description: 'StateName is the current state of the cluster. The possible + states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' type: string required: - conditions @@ -979,6 +1350,180 @@ spec: required: - name type: object + integrations: + description: Integrations is a list of MongoDB Atlas integrations + for the project + items: + properties: + accountId: + type: string + apiKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + apiTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + channelName: + type: string + enabled: + type: boolean + flowName: + type: string + licenseKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + microsoftTeamsWebhookUrl: + type: string + name: + type: string + orgName: + type: string + passwordRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + readTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + region: + type: string + routingKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + scheme: + type: string + secretRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + serviceDiscovery: + type: string + serviceKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + teamName: + type: string + type: + description: Third Party Integration type such as Slack, New + Relic, etc + enum: + - PAGER_DUTY + - SLACK + - DATADOG + - NEW_RELIC + - OPS_GENIE + - VICTOR_OPS + - FLOWDOCK + - WEBHOOK + - MICROSOFT_TEAMS + - PROMETHEUS + type: string + url: + type: string + username: + type: string + writeTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + type: object + type: array name: description: Name is the name of the Project that is created in Atlas by the Operator if it doesn't exist yet. @@ -988,6 +1533,30 @@ spec: for the current Project. items: properties: + endpointGroupName: + description: Unique identifier of the endpoint group. The endpoint + group encompasses all of the endpoints that you created in + Google Cloud. + type: string + endpoints: + description: Collection of individual private endpoints that + comprise your endpoint group. + items: + properties: + endpointName: + description: Forwarding rule that corresponds to the endpoint + you created in Google Cloud. + type: string + ipAddress: + description: Private IP address of the endpoint you created + in Google Cloud. + type: string + type: object + type: array + gcpProjectId: + description: Unique identifier of the Google Cloud project in + which you created your endpoints. + type: string id: description: Unique identifier of the private endpoint you created in your AWS VPC or Azure Vnet. @@ -1061,7 +1630,7 @@ spec: status: description: AtlasProjectStatus defines the observed state of AtlasProject properties: - AuthModes: + authModes: description: AuthModes contains a list of configured authentication modes "SCRAM" is default authentication method and requires a password for each user "X509" signifies that self-managed X.509 authentication @@ -1141,6 +1710,23 @@ spec: project items: properties: + endpoints: + description: Collection of individual GCP private endpoints + that comprise your network endpoint group. + items: + properties: + endpointName: + type: string + ipAddress: + type: string + status: + type: string + required: + - endpointName + - ipAddress + - status + type: object + type: array id: description: Unique identifier for AWS or AZURE Private Link Connection. @@ -1157,6 +1743,13 @@ spec: description: Cloud provider region for which you want to create the private endpoint service. type: string + serviceAttachmentNames: + description: Unique alphanumeric and special character strings + that identify the service attachments associated with the + GCP Private Service Connect endpoint service. + items: + type: string + type: array serviceName: description: Name of the AWS or Azure Private Link Service that Atlas manages. @@ -1170,6 +1763,15 @@ spec: - region type: object type: array + prometheus: + description: Prometheus contains the status for Prometheus integration + including the prometheusDiscoveryURL + properties: + prometheusDiscoveryURL: + type: string + scheme: + type: string + type: object required: - conditions type: object diff --git a/deploy/namespaced/namespaced-config.yaml b/deploy/namespaced/namespaced-config.yaml index a40b87ae84..73906f16a7 100644 --- a/deploy/namespaced/namespaced-config.yaml +++ b/deploy/namespaced/namespaced-config.yaml @@ -82,7 +82,7 @@ rules: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters + - atlasbackuppolicies verbs: - create - delete @@ -94,7 +94,27 @@ rules: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters/status + - atlasbackuppolicies/status + verbs: + - get + - patch + - update +- apiGroups: + - atlas.mongodb.com + resources: + - atlasbackupschedules + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - atlas.mongodb.com + resources: + - atlasbackupschedules/status verbs: - get - patch @@ -119,6 +139,26 @@ rules: - get - patch - update +- apiGroups: + - atlas.mongodb.com + resources: + - atlasdeployments + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - atlas.mongodb.com + resources: + - atlasdeployments/status + verbs: + - get + - patch + - update - apiGroups: - atlas.mongodb.com resources: @@ -205,6 +245,8 @@ spec: - --leader-elect - --health-probe-bind-address=:8081 - --metrics-bind-address=127.0.0.1:8080 + - --log-level=info + - --log-encoder=json command: - /manager env: @@ -220,7 +262,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: mongodb/mongodb-atlas-kubernetes-operator:0.8.0 + image: mongodb/mongodb-atlas-kubernetes-operator:1.0.0 imagePullPolicy: Always livenessProbe: httpGet: diff --git a/deploy/openshift/crds.yaml b/deploy/openshift/crds.yaml index 3e9ea1037e..9b865db502 100644 --- a/deploy/openshift/crds.yaml +++ b/deploy/openshift/crds.yaml @@ -4,20 +4,20 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null - name: atlasclusters.atlas.mongodb.com + name: atlasbackuppolicies.atlas.mongodb.com spec: group: atlas.mongodb.com names: - kind: AtlasCluster - listKind: AtlasClusterList - plural: atlasclusters - singular: atlascluster + kind: AtlasBackupPolicy + listKind: AtlasBackupPolicyList + plural: atlasbackuppolicies + singular: atlasbackuppolicy scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: - description: AtlasCluster is the Schema for the atlasclusters API + description: AtlasBackupPolicy is the Schema for the atlasbackuppolicies API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -32,9 +32,451 @@ spec: metadata: type: object spec: - description: AtlasClusterSpec defines the desired state of AtlasCluster + description: AtlasBackupPolicySpec defines the desired state of AtlasBackupPolicy properties: - advancedClusterSpec: + items: + description: A list of BackupPolicy items + items: + properties: + frequencyInterval: + description: Desired frequency of the new backup policy item + specified by FrequencyType. A value of 1 specifies the first + instance of the corresponding FrequencyType. The only accepted + value you can set for frequency interval with NVMe clusters + is 12. + enum: + - 1 + - 2 + - 4 + - 6 + - 8 + - 12 + type: integer + frequencyType: + description: 'Frequency associated with the backup policy item. + One of the following values: hourly, daily, weekly or monthly. + You cannot specify multiple hourly and daily backup policy + items.' + enum: + - hourly + - daily + - weekly + - monthly + type: string + retentionUnit: + description: 'Scope of the backup policy item: days, weeks, + or months' + enum: + - days + - weeks + - months + type: string + retentionValue: + description: Value to associate with RetentionUnit + type: integer + required: + - frequencyInterval + - frequencyType + - retentionUnit + - retentionValue + type: object + type: array + required: + - items + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasbackupschedules.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasBackupSchedule + listKind: AtlasBackupScheduleList + plural: atlasbackupschedules + singular: atlasbackupschedule + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasBackupSchedule is the Schema for the atlasbackupschedules + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasBackupScheduleSpec defines the desired state of AtlasBackupSchedule + properties: + autoExportEnabled: + default: true + description: Specify true to enable automatic export of cloud backup + snapshots to the AWS bucket. You must also define the export policy + using export. If omitted, defaults to false. + type: boolean + export: + description: Export policy for automatically exporting cloud backup + snapshots to AWS bucket. + properties: + exportBucketId: + description: Unique identifier of the AWS bucket to export the + cloud backup snapshot to. + type: string + frequencyType: + default: MONTHLY + enum: + - MONTHLY + type: string + required: + - exportBucketId + - frequencyType + type: object + policy: + description: A reference (name & namespace) for backup policy in the + desired updated backup policy. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + referenceHourOfDay: + description: UTC Hour of day between 0 and 23, inclusive, representing + which hour of the day that Atlas takes snapshots for backup policy + items + format: int64 + maximum: 23 + minimum: 0 + type: integer + referenceMinuteOfHour: + description: UTC Minutes after ReferenceHourOfDay that Atlas takes + snapshots for backup policy items. Must be between 0 and 59, inclusive. + format: int64 + maximum: 59 + minimum: 0 + type: integer + restoreWindowDays: + default: 1 + description: Number of days back in time you can restore to with Continuous + Cloud Backup accuracy. Must be a positive, non-zero integer. Applies + to continuous cloud backups only. + format: int64 + type: integer + updateSnapshots: + description: Specify true to apply the retention changes in the updated + backup policy to snapshots that Atlas took previously. + type: boolean + useOrgAndGroupNamesInExportPrefix: + description: Specify true to use organization and project names instead + of organization and project UUIDs in the path for the metadata files + that Atlas uploads to your S3 bucket after it finishes exporting + the snapshots + type: boolean + required: + - policy + type: object + status: + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasdatabaseusers.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDatabaseUser + listKind: AtlasDatabaseUserList + plural: atlasdatabaseusers + singular: atlasdatabaseuser + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: Name + type: string + name: v1 + schema: + openAPIV3Schema: + description: AtlasDatabaseUser is the Schema for the Atlas Database User API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDatabaseUserSpec defines the desired state of Database + User in Atlas + properties: + databaseName: + default: admin + description: DatabaseName is a Database against which Atlas authenticates + the user. Default value is 'admin'. + type: string + deleteAfterDate: + description: DeleteAfterDate is a timestamp in ISO 8601 date and time + format in UTC after which Atlas deletes the user. The specified + date must be in the future and within one week. + type: string + labels: + description: Labels is an array containing key-value pairs that tag + and categorize the database user. Each key and value has a maximum + length of 255 characters. + items: + description: LabelSpec contains key-value pairs that tag and categorize + the Cluster/DBUser + properties: + key: + maxLength: 255 + type: string + value: + type: string + required: + - key + - value + type: object + type: array + passwordSecretRef: + description: PasswordSecret is a reference to the Secret keeping the + user password. + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + required: + - name + type: object + projectRef: + description: Project is a reference to AtlasProject resource the user + belongs to + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + roles: + description: Roles is an array of this user's roles and the databases + / collections on which the roles apply. A role allows the user to + perform particular actions on the specified database. + items: + description: RoleSpec allows the user to perform particular actions + on the specified database. A role on the admin database can include + privileges that apply to the other databases as well. + properties: + collectionName: + description: CollectionName is a collection for which the role + applies. + type: string + databaseName: + description: DatabaseName is a database on which the user has + the specified role. A role on the admin database can include + privileges that apply to the other databases. + type: string + roleName: + description: RoleName is a name of the role. This value can + either be a built-in role or a custom role. + type: string + required: + - databaseName + - roleName + type: object + minItems: 1 + type: array + scopes: + description: Scopes is an array of clusters and Atlas Data Lakes that + this user has access to. + items: + description: ScopeSpec if present a database user only have access + to the indicated resource (Cluster or Atlas Data Lake) if none + is given then it has access to all. It's highly recommended to + restrict the access of the database users only to a limited set + of resources. + properties: + name: + description: Name is a name of the cluster or Atlas Data Lake + that the user has access to. + type: string + type: + description: Type is a type of resource that the user has access + to. + enum: + - CLUSTER + - DATA_LAKE + type: string + required: + - name + - type + type: object + type: array + username: + description: Username is a username for authenticating to MongoDB. + type: string + x509Type: + description: X509Type is X.509 method by which the database authenticates + the provided username + type: string + required: + - projectRef + - roles + - username + type: object + status: + description: AtlasDatabaseUserStatus defines the observed state of AtlasProject + properties: + conditions: + description: Conditions is the list of statuses showing the current + state of the Atlas Custom Resource + items: + description: Condition describes the state of an Atlas Custom Resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Atlas Custom Resource condition. + type: string + required: + - status + - type + type: object + type: array + name: + description: UserName is the current name of database user. + type: string + observedGeneration: + description: ObservedGeneration indicates the generation of the resource + specification that the Atlas Operator is aware of. The Atlas Operator + updates this field to the 'metadata.generation' as soon as it starts + reconciliation of the resource. + format: int64 + type: integer + passwordVersion: + description: PasswordVersion is the 'ResourceVersion' of the password + Secret that the Atlas Operator is aware of + type: string + required: + - conditions + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: atlasdeployments.atlas.mongodb.com +spec: + group: atlas.mongodb.com + names: + kind: AtlasDeployment + listKind: AtlasDeploymentList + plural: atlasdeployments + singular: atlasdeployment + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AtlasDeployment is the Schema for the atlasclusters API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AtlasDeploymentSpec defines the desired state of AtlasDeployment + properties: + advancedDeploymentSpec: description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ properties: backupEnabled: @@ -253,7 +695,19 @@ spec: versionReleaseSystem: type: string type: object - clusterSpec: + backupRef: + description: Backup schedule for the AtlasDeployment + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string + required: + - name + type: object + deploymentSpec: description: Configuration for the advanced cluster API properties: autoScaling: @@ -467,6 +921,7 @@ spec: - GCP - AZURE - TENANT + - SERVERLESS type: string regionName: description: Physical location of your MongoDB cluster. The @@ -481,7 +936,6 @@ spec: - PROVISIONED type: string required: - - instanceSizeName - providerName type: object replicationSpecs: @@ -519,353 +973,187 @@ spec: type: integer priority: description: Election priority of the region. For - regions with only replicationSpecs[n].regionsConfig..readOnlyNodes, - set this value to 0. - format: int64 - type: integer - readOnlyNodes: - description: Number of read-only nodes for Atlas to - deploy to the region. Read-only nodes can never - become the primary, but can facilitate local-reads. - format: int64 - type: integer - type: object - description: Configuration for a region. Each regionsConfig - object describes the region's priority in elections and - the number and type of MongoDB nodes that Atlas deploys - to the region. - type: object - zoneName: - description: Name for the zone in a Global Cluster. Don't - provide this value if clusterType is not GEOSHARDED. - type: string - type: object - type: array - required: - - name - - providerSettings - type: object - projectRef: - description: Project is a reference to AtlasProject resource the cluster - belongs to - properties: - name: - description: Name is the name of the Kubernetes Resource - type: string - namespace: - description: Namespace is the namespace of the Kubernetes Resource - type: string - required: - - name - type: object - required: - - projectRef - type: object - status: - description: AtlasClusterStatus defines the observed state of AtlasCluster. - properties: - conditions: - description: Conditions is the list of statuses showing the current - state of the Atlas Custom Resource - items: - description: Condition describes the state of an Atlas Custom Resource - at a certain point. - properties: - lastTransitionTime: - description: Last time the condition transitioned from one status - to another. - format: date-time - type: string - message: - description: A human readable message indicating details about - the transition. - type: string - reason: - description: The reason for the condition's last transition. - type: string - status: - description: Status of the condition, one of True, False, Unknown. - type: string - type: - description: Type of Atlas Custom Resource condition. - type: string - required: - - status - - type - type: object - type: array - connectionStrings: - description: ConnectionStrings is a set of connection strings that - your applications use to connect to this cluster. - properties: - private: - description: Network-peering-endpoint-aware mongodb:// connection - strings for each interface VPC endpoint you configured to connect - to this cluster. Atlas returns this parameter only if you created - a network peering connection to this cluster. - type: string - privateEndpoint: - description: Private endpoint connection strings. Each object - describes the connection strings you can use to connect to this - cluster through a private endpoint. Atlas returns this parameter - only if you deployed a private endpoint to all regions to which - you deployed this cluster's nodes. - items: - description: PrivateEndpoint connection strings. Each object - describes the connection strings you can use to connect to - this cluster through a private endpoint. Atlas returns this - parameter only if you deployed a private endpoint to all regions - to which you deployed this cluster's nodes. - properties: - connectionString: - description: Private-endpoint-aware mongodb:// connection - string for this private endpoint. - type: string - endpoints: - description: Private endpoint through which you connect - to Atlas when you use connectionStrings.privateEndpoint[n].connectionString - or connectionStrings.privateEndpoint[n].srvConnectionString. - items: - description: Endpoint through which you connect to Atlas - properties: - endpointId: - description: Unique identifier of the private endpoint. - type: string - ip: - description: Private IP address of the private endpoint - network interface you created in your Azure VNet. - type: string - providerName: - description: Cloud provider to which you deployed - the private endpoint. Atlas returns AWS or AZURE. - type: string - region: - description: Region to which you deployed the private - endpoint. - type: string + regions with only replicationSpecs[n].regionsConfig..readOnlyNodes, + set this value to 0. + format: int64 + type: integer + readOnlyNodes: + description: Number of read-only nodes for Atlas to + deploy to the region. Read-only nodes can never + become the primary, but can facilitate local-reads. + format: int64 + type: integer type: object - type: array - srvConnectionString: - description: Private-endpoint-aware mongodb+srv:// connection - string for this private endpoint. - type: string - type: - description: "Type of MongoDB process that you connect to - with the connection strings \n Atlas returns: \n • MONGOD - for replica sets, or \n • MONGOS for sharded clusters" + description: Configuration for a region. Each regionsConfig + object describes the region's priority in elections and + the number and type of MongoDB nodes that Atlas deploys + to the region. + type: object + zoneName: + description: Name for the zone in a Global Cluster. Don't + provide this value if clusterType is not GEOSHARDED. type: string type: object type: array - privateSrv: - description: Network-peering-endpoint-aware mongodb+srv:// connection - strings for each interface VPC endpoint you configured to connect - to this cluster. Atlas returns this parameter only if you created - a network peering connection to this cluster. Use this URI format - if your driver supports it. If it doesn't, use connectionStrings.private. + required: + - name + - providerSettings + type: object + processArgs: + description: ProcessArgs allows to modify Advanced Configuration Options + properties: + defaultReadConcern: type: string - standard: - description: Public mongodb:// connection string for this cluster. + defaultWriteConcern: type: string - standardSrv: - description: Public mongodb+srv:// connection string for this - cluster. + failIndexKeyTooLong: + type: boolean + javascriptEnabled: + type: boolean + minimumEnabledTlsProtocol: type: string + noTableScan: + type: boolean + oplogSizeMB: + format: int64 + type: integer + sampleRefreshIntervalBIConnector: + format: int64 + type: integer + sampleSizeBIConnector: + format: int64 + type: integer type: object - mongoDBVersion: - description: MongoDBVersion is the version of MongoDB the cluster - runs, in . format. - type: string - mongoURIUpdated: - description: MongoURIUpdated is a timestamp in ISO 8601 date and time - format in UTC when the connection string was last updated. The connection - string changes if you update any of the other values. - type: string - observedGeneration: - description: ObservedGeneration indicates the generation of the resource - specification that the Atlas Operator is aware of. The Atlas Operator - updates this field to the 'metadata.generation' as soon as it starts - reconciliation of the resource. - format: int64 - type: integer - stateName: - description: 'StateName is the current state of the cluster. The possible - states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' - type: string - required: - - conditions - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: atlasdatabaseusers.atlas.mongodb.com -spec: - group: atlas.mongodb.com - names: - kind: AtlasDatabaseUser - listKind: AtlasDatabaseUserList - plural: atlasdatabaseusers - singular: atlasdatabaseuser - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.name - name: Name - type: string - name: v1 - schema: - openAPIV3Schema: - description: AtlasDatabaseUser is the Schema for the Atlas Database User API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: AtlasDatabaseUserSpec defines the desired state of Database - User in Atlas - properties: - databaseName: - default: admin - description: DatabaseName is a Database against which Atlas authenticates - the user. Default value is 'admin'. - type: string - deleteAfterDate: - description: DeleteAfterDate is a timestamp in ISO 8601 date and time - format in UTC after which Atlas deletes the user. The specified - date must be in the future and within one week. - type: string - labels: - description: Labels is an array containing key-value pairs that tag - and categorize the database user. Each key and value has a maximum - length of 255 characters. - items: - description: LabelSpec contains key-value pairs that tag and categorize - the Cluster/DBUser - properties: - key: - maxLength: 255 - type: string - value: - type: string - required: - - key - - value - type: object - type: array - passwordSecretRef: - description: PasswordSecret is a reference to the Secret keeping the - user password. + projectRef: + description: Project is a reference to AtlasProject resource the cluster + belongs to properties: name: description: Name is the name of the Kubernetes Resource type: string + namespace: + description: Namespace is the namespace of the Kubernetes Resource + type: string required: - name type: object - projectRef: - description: Project is a reference to AtlasProject resource the user - belongs to + serverlessSpec: + description: Configuration for the advanced cluster API. https://docs.atlas.mongodb.com/reference/api/clusters-advanced/ properties: name: - description: Name is the name of the Kubernetes Resource - type: string - namespace: - description: Namespace is the namespace of the Kubernetes Resource + description: Name of the cluster as it appears in Atlas. After + Atlas creates the cluster, you can't change its name. type: string + providerSettings: + description: Configuration for the provisioned hosts on which + MongoDB runs. The available options are specific to the cloud + service provider. + properties: + autoScaling: + description: Range of instance sizes to which your cluster + can scale. + properties: + autoIndexingEnabled: + description: Flag that indicates whether autopilot mode + for Performance Advisor is enabled. The default is false. + type: boolean + compute: + description: Collection of settings that configure how + a cluster might scale its cluster tier and whether the + cluster can scale down. + properties: + enabled: + description: Flag that indicates whether cluster tier + auto-scaling is enabled. The default is false. + type: boolean + maxInstanceSize: + description: 'Maximum instance size to which your + cluster can automatically scale (such as M40). Atlas + requires this parameter if "autoScaling.compute.enabled" + : true.' + type: string + minInstanceSize: + description: 'Minimum instance size to which your + cluster can automatically scale (such as M10). Atlas + requires this parameter if "autoScaling.compute.scaleDownEnabled" + : true.' + type: string + scaleDownEnabled: + description: 'Flag that indicates whether the cluster + tier may scale down. Atlas requires this parameter + if "autoScaling.compute.enabled" : true.' + type: boolean + type: object + diskGBEnabled: + description: Flag that indicates whether disk auto-scaling + is enabled. The default is true. + type: boolean + type: object + backingProviderName: + description: 'Cloud service provider on which the host for + a multi-tenant cluster is provisioned. This setting only + works when "providerSetting.providerName" : "TENANT" and + "providerSetting.instanceSizeName" : M2 or M5.' + enum: + - AWS + - GCP + - AZURE + type: string + diskIOPS: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + format: int64 + type: integer + diskTypeName: + description: Type of disk if you selected Azure as your cloud + service provider. + type: string + encryptEBSVolume: + description: Flag that indicates whether the Amazon EBS encryption + feature encrypts the host's root volume for both data at + rest within the volume and for data moving between the volume + and the cluster. + type: boolean + instanceSizeName: + description: Atlas provides different cluster tiers, each + with a default storage capacity and RAM size. The cluster + you select is used for all the data-bearing hosts in your + cluster tier. + type: string + providerName: + description: Cloud service provider on which Atlas provisions + the hosts. + enum: + - AWS + - GCP + - AZURE + - TENANT + - SERVERLESS + type: string + regionName: + description: Physical location of your MongoDB cluster. The + region you choose can affect network latency for clients + accessing your databases. + type: string + volumeType: + description: Disk IOPS setting for AWS storage. Set only if + you selected AWS as your cloud service provider. + enum: + - STANDARD + - PROVISIONED + type: string + required: + - providerName + type: object required: - name + - providerSettings type: object - roles: - description: Roles is an array of this user's roles and the databases - / collections on which the roles apply. A role allows the user to - perform particular actions on the specified database. - items: - description: RoleSpec allows the user to perform particular actions - on the specified database. A role on the admin database can include - privileges that apply to the other databases as well. - properties: - collectionName: - description: CollectionName is a collection for which the role - applies. - type: string - databaseName: - description: DatabaseName is a database on which the user has - the specified role. A role on the admin database can include - privileges that apply to the other databases. - type: string - roleName: - description: RoleName is a name of the role. This value can - either be a built-in role or a custom role. - type: string - required: - - databaseName - - roleName - type: object - minItems: 1 - type: array - scopes: - description: Scopes is an array of clusters and Atlas Data Lakes that - this user has access to. - items: - description: ScopeSpec if present a database user only have access - to the indicated resource (Cluster or Atlas Data Lake) if none - is given then it has access to all. It's highly recommended to - restrict the access of the database users only to a limited set - of resources. - properties: - name: - description: Name is a name of the cluster or Atlas Data Lake - that the user has access to. - type: string - type: - description: Type is a type of resource that the user has access - to. - enum: - - CLUSTER - - DATA_LAKE - type: string - required: - - name - - type - type: object - type: array - username: - description: Username is a username for authenticating to MongoDB. - type: string - x509Type: - description: X509Type is X.509 method by which the database authenticates - the provided username - type: string required: - projectRef - - roles - - username type: object status: - description: AtlasDatabaseUserStatus defines the observed state of AtlasProject + description: AtlasDeploymentStatus defines the observed state of AtlasDeployment. properties: conditions: description: Conditions is the list of statuses showing the current @@ -897,8 +1185,91 @@ spec: - type type: object type: array - name: - description: UserName is the current name of database user. + connectionStrings: + description: ConnectionStrings is a set of connection strings that + your applications use to connect to this cluster. + properties: + private: + description: Network-peering-endpoint-aware mongodb:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. + type: string + privateEndpoint: + description: Private endpoint connection strings. Each object + describes the connection strings you can use to connect to this + cluster through a private endpoint. Atlas returns this parameter + only if you deployed a private endpoint to all regions to which + you deployed this cluster's nodes. + items: + description: PrivateEndpoint connection strings. Each object + describes the connection strings you can use to connect to + this cluster through a private endpoint. Atlas returns this + parameter only if you deployed a private endpoint to all regions + to which you deployed this cluster's nodes. + properties: + connectionString: + description: Private-endpoint-aware mongodb:// connection + string for this private endpoint. + type: string + endpoints: + description: Private endpoint through which you connect + to Atlas when you use connectionStrings.privateEndpoint[n].connectionString + or connectionStrings.privateEndpoint[n].srvConnectionString. + items: + description: Endpoint through which you connect to Atlas + properties: + endpointId: + description: Unique identifier of the private endpoint. + type: string + ip: + description: Private IP address of the private endpoint + network interface you created in your Azure VNet. + type: string + providerName: + description: Cloud provider to which you deployed + the private endpoint. Atlas returns AWS or AZURE. + type: string + region: + description: Region to which you deployed the private + endpoint. + type: string + type: object + type: array + srvConnectionString: + description: Private-endpoint-aware mongodb+srv:// connection + string for this private endpoint. + type: string + type: + description: "Type of MongoDB process that you connect to + with the connection strings \n Atlas returns: \n • MONGOD + for replica sets, or \n • MONGOS for sharded clusters" + type: string + type: object + type: array + privateSrv: + description: Network-peering-endpoint-aware mongodb+srv:// connection + strings for each interface VPC endpoint you configured to connect + to this cluster. Atlas returns this parameter only if you created + a network peering connection to this cluster. Use this URI format + if your driver supports it. If it doesn't, use connectionStrings.private. + type: string + standard: + description: Public mongodb:// connection string for this cluster. + type: string + standardSrv: + description: Public mongodb+srv:// connection string for this + cluster. + type: string + type: object + mongoDBVersion: + description: MongoDBVersion is the version of MongoDB the cluster + runs, in . format. + type: string + mongoURIUpdated: + description: MongoURIUpdated is a timestamp in ISO 8601 date and time + format in UTC when the connection string was last updated. The connection + string changes if you update any of the other values. type: string observedGeneration: description: ObservedGeneration indicates the generation of the resource @@ -907,9 +1278,9 @@ spec: reconciliation of the resource. format: int64 type: integer - passwordVersion: - description: PasswordVersion is the 'ResourceVersion' of the password - Secret that the Atlas Operator is aware of + stateName: + description: 'StateName is the current state of the cluster. The possible + states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING' type: string required: - conditions @@ -979,6 +1350,180 @@ spec: required: - name type: object + integrations: + description: Integrations is a list of MongoDB Atlas integrations + for the project + items: + properties: + accountId: + type: string + apiKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + apiTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + channelName: + type: string + enabled: + type: boolean + flowName: + type: string + licenseKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + microsoftTeamsWebhookUrl: + type: string + name: + type: string + orgName: + type: string + passwordRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + readTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + region: + type: string + routingKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + scheme: + type: string + secretRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + serviceDiscovery: + type: string + serviceKeyRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + teamName: + type: string + type: + description: Third Party Integration type such as Slack, New + Relic, etc + enum: + - PAGER_DUTY + - SLACK + - DATADOG + - NEW_RELIC + - OPS_GENIE + - VICTOR_OPS + - FLOWDOCK + - WEBHOOK + - MICROSOFT_TEAMS + - PROMETHEUS + type: string + url: + type: string + username: + type: string + writeTokenRef: + description: ResourceRefNamespaced is a reference to a Kubernetes + Resource that allows to configure the namespace + properties: + name: + description: Name is the name of the Kubernetes Resource + type: string + namespace: + description: Namespace is the namespace of the Kubernetes + Resource + type: string + required: + - name + type: object + type: object + type: array name: description: Name is the name of the Project that is created in Atlas by the Operator if it doesn't exist yet. @@ -988,6 +1533,30 @@ spec: for the current Project. items: properties: + endpointGroupName: + description: Unique identifier of the endpoint group. The endpoint + group encompasses all of the endpoints that you created in + Google Cloud. + type: string + endpoints: + description: Collection of individual private endpoints that + comprise your endpoint group. + items: + properties: + endpointName: + description: Forwarding rule that corresponds to the endpoint + you created in Google Cloud. + type: string + ipAddress: + description: Private IP address of the endpoint you created + in Google Cloud. + type: string + type: object + type: array + gcpProjectId: + description: Unique identifier of the Google Cloud project in + which you created your endpoints. + type: string id: description: Unique identifier of the private endpoint you created in your AWS VPC or Azure Vnet. @@ -1061,7 +1630,7 @@ spec: status: description: AtlasProjectStatus defines the observed state of AtlasProject properties: - AuthModes: + authModes: description: AuthModes contains a list of configured authentication modes "SCRAM" is default authentication method and requires a password for each user "X509" signifies that self-managed X.509 authentication @@ -1141,6 +1710,23 @@ spec: project items: properties: + endpoints: + description: Collection of individual GCP private endpoints + that comprise your network endpoint group. + items: + properties: + endpointName: + type: string + ipAddress: + type: string + status: + type: string + required: + - endpointName + - ipAddress + - status + type: object + type: array id: description: Unique identifier for AWS or AZURE Private Link Connection. @@ -1157,6 +1743,13 @@ spec: description: Cloud provider region for which you want to create the private endpoint service. type: string + serviceAttachmentNames: + description: Unique alphanumeric and special character strings + that identify the service attachments associated with the + GCP Private Service Connect endpoint service. + items: + type: string + type: array serviceName: description: Name of the AWS or Azure Private Link Service that Atlas manages. @@ -1170,6 +1763,15 @@ spec: - region type: object type: array + prometheus: + description: Prometheus contains the status for Prometheus integration + including the prometheusDiscoveryURL + properties: + prometheusDiscoveryURL: + type: string + scheme: + type: string + type: object required: - conditions type: object diff --git a/deploy/openshift/openshift.yaml b/deploy/openshift/openshift.yaml index 7df59f99a2..a1a159eb3c 100644 --- a/deploy/openshift/openshift.yaml +++ b/deploy/openshift/openshift.yaml @@ -82,7 +82,7 @@ rules: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters + - atlasbackuppolicies verbs: - create - delete @@ -94,7 +94,27 @@ rules: - apiGroups: - atlas.mongodb.com resources: - - atlasclusters/status + - atlasbackuppolicies/status + verbs: + - get + - patch + - update +- apiGroups: + - atlas.mongodb.com + resources: + - atlasbackupschedules + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - atlas.mongodb.com + resources: + - atlasbackupschedules/status verbs: - get - patch @@ -119,6 +139,26 @@ rules: - get - patch - update +- apiGroups: + - atlas.mongodb.com + resources: + - atlasdeployments + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - atlas.mongodb.com + resources: + - atlasdeployments/status + verbs: + - get + - patch + - update - apiGroups: - atlas.mongodb.com resources: @@ -204,6 +244,8 @@ spec: - --leader-elect - --health-probe-bind-address=:8081 - --metrics-bind-address=127.0.0.1:8080 + - --log-level=info + - --log-encoder=json command: - /manager env: @@ -219,7 +261,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: mongodb/mongodb-atlas-kubernetes-operator:0.8.0 + image: mongodb/mongodb-atlas-kubernetes-operator:1.0.0 imagePullPolicy: Always livenessProbe: httpGet: diff --git a/third_party_licenses.txt b/third_party_licenses.txt index 63844b7b18..bedd726ab7 100644 --- a/third_party_licenses.txt +++ b/third_party_licenses.txt @@ -1,63 +1,63 @@ -go.mongodb.org/atlas/mongodbatlas,Unknown,Apache-2.0 -k8s.io/apimachinery/third_party/forked/golang,Unknown,BSD-3-Clause -github.com/json-iterator/go,https://github.com/json-iterator/go/blob/master/LICENSE,MIT -gopkg.in/inf.v0,Unknown,BSD-3-Clause -gopkg.in/yaml.v2,Unknown,Apache-2.0 -golang.org/x/text,Unknown,BSD-3-Clause -github.com/evanphx/json-patch,https://github.com/evanphx/json-patch/blob/master/LICENSE,BSD-3-Clause -gopkg.in/yaml.v3,Unknown,MIT -k8s.io/client-go/third_party/forked/golang/template,Unknown,BSD-3-Clause -k8s.io/api,Unknown,Apache-2.0 -github.com/go-logr/logr,https://github.com/go-logr/logr/blob/master/LICENSE,Apache-2.0 -golang.org/x/oauth2,Unknown,BSD-3-Clause -github.com/golang/groupcache/lru,https://github.com/golang/groupcache/blob/master/lru/LICENSE,Apache-2.0 -github.com/hashicorp/go-multierror,https://github.com/hashicorp/go-multierror/blob/master/LICENSE,MPL-2.0 -github.com/prometheus/client_golang/prometheus,https://github.com/prometheus/client_golang/blob/master/prometheus/LICENSE,Apache-2.0 -golang.org/x/time/rate,Unknown,BSD-3-Clause -github.com/cespare/xxhash/v2,https://github.com/cespare/xxhash/blob/master/v2/LICENSE.txt,MIT -github.com/spf13/pflag,https://github.com/spf13/pflag/blob/master/LICENSE,BSD-3-Clause -github.com/google/go-querystring/query,https://github.com/google/go-querystring/blob/master/query/LICENSE,BSD-3-Clause -github.com/gogo/protobuf,https://github.com/gogo/protobuf/blob/master/LICENSE,BSD-3-Clause -k8s.io/utils/internal/third_party/forked/golang/net,Unknown,BSD-3-Clause -github.com/beorn7/perks/quantile,https://github.com/beorn7/perks/blob/master/quantile/LICENSE,MIT -github.com/google/uuid,https://github.com/google/uuid/blob/master/LICENSE,BSD-3-Clause -go.uber.org/zap,Unknown,MIT -github.com/golang/protobuf,https://github.com/golang/protobuf/blob/master/LICENSE,BSD-3-Clause -github.com/prometheus/client_model/go,https://github.com/prometheus/client_model/blob/master/go/LICENSE,Apache-2.0 -github.com/matttproud/golang_protobuf_extensions/pbutil,https://github.com/matttproud/golang_protobuf_extensions/blob/master/pbutil/LICENSE,Apache-2.0 -go.uber.org/multierr,Unknown,MIT -k8s.io/klog/v2,Unknown,Apache-2.0 -github.com/davecgh/go-spew/spew,https://github.com/davecgh/go-spew/blob/master/spew/LICENSE,ISC -golang.org/x/sys,Unknown,BSD-3-Clause -github.com/imdario/mergo,https://github.com/imdario/mergo/blob/master/LICENSE,BSD-3-Clause -github.com/openlyinc/pointy,https://github.com/openlyinc/pointy/blob/master/LICENSE,MIT -k8s.io/apimachinery/pkg,Unknown,Apache-2.0 -github.com/google/gofuzz,https://github.com/google/gofuzz/blob/master/LICENSE,Apache-2.0 -k8s.io/utils,Unknown,Apache-2.0 -cloud.google.com/go/compute/metadata,Unknown,Apache-2.0 -go.uber.org/atomic,Unknown,MIT -github.com/pkg/errors,https://github.com/pkg/errors/blob/master/LICENSE,BSD-2-Clause -github.com/mongodb-forks/digest,https://github.com/mongodb-forks/digest/blob/master/COPYING,Apache-2.0 -sigs.k8s.io/structured-merge-diff/v4,Unknown,Apache-2.0 -sigs.k8s.io/controller-runtime,Unknown,Apache-2.0 -github.com/prometheus/procfs,https://github.com/prometheus/procfs/blob/master/LICENSE,Apache-2.0 -github.com/fsnotify/fsnotify,https://github.com/fsnotify/fsnotify/blob/master/LICENSE,BSD-3-Clause -github.com/googleapis/gnostic,https://github.com/googleapis/gnostic/blob/master/LICENSE,Apache-2.0 -github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg,https://github.com/prometheus/common/blob/master/internal/bitbucket.org/ww/goautoneg/README.txt,BSD-3-Clause -gomodules.xyz/jsonpatch/v2,Unknown,Apache-2.0 -,https://github.com/mongodb/mongodb-atlas-kubernetes/blob/master/LICENSE,Apache-2.0 -k8s.io/kube-openapi/pkg,Unknown,Apache-2.0 -google.golang.org/protobuf,Unknown,BSD-3-Clause -github.com/go-logr/zapr,https://github.com/go-logr/zapr/blob/master/LICENSE,Apache-2.0 -github.com/google/go-cmp/cmp,https://github.com/google/go-cmp/blob/master/cmp/LICENSE,BSD-3-Clause -github.com/modern-go/concurrent,https://github.com/modern-go/concurrent/blob/master/LICENSE,Apache-2.0 -github.com/modern-go/reflect2,https://github.com/modern-go/reflect2/blob/master/LICENSE,Apache-2.0 -golang.org/x/net,Unknown,BSD-3-Clause -sigs.k8s.io/yaml,Unknown,MIT -k8s.io/component-base/config,Unknown,Apache-2.0 -sigs.k8s.io/json,Unknown,Apache-2.0 -golang.org/x/term,Unknown,BSD-3-Clause -k8s.io/apiextensions-apiserver/pkg/apis/apiextensions,Unknown,Apache-2.0 -k8s.io/client-go,Unknown,Apache-2.0 -github.com/hashicorp/errwrap,https://github.com/hashicorp/errwrap/blob/master/LICENSE,MPL-2.0 -github.com/prometheus/common,https://github.com/prometheus/common/blob/master/LICENSE,Apache-2.0 +,https://github.com/mongodb/mongodb-atlas-kubernetes/blob/HEAD/LICENSE,Apache-2.0 +cloud.google.com/go/compute/metadata,https://github.com/googleapis/google-cloud-go/blob/compute/v1.5.0/compute/LICENSE,Apache-2.0 +github.com/beorn7/perks/quantile,https://github.com/beorn7/perks/blob/v1.0.1/LICENSE,MIT +github.com/cespare/xxhash/v2,https://github.com/cespare/xxhash/blob/v2.1.2/LICENSE.txt,MIT +github.com/davecgh/go-spew/spew,https://github.com/davecgh/go-spew/blob/v1.1.1/LICENSE,ISC +github.com/evanphx/json-patch,https://github.com/evanphx/json-patch/blob/v5.6.0/LICENSE,BSD-3-Clause +github.com/fsnotify/fsnotify,https://github.com/fsnotify/fsnotify/blob/v1.5.1/LICENSE,BSD-3-Clause +github.com/go-logr/logr,https://github.com/go-logr/logr/blob/v1.2.2/LICENSE,Apache-2.0 +github.com/go-logr/zapr,https://github.com/go-logr/zapr/blob/v1.2.3/LICENSE,Apache-2.0 +github.com/gogo/protobuf,https://github.com/gogo/protobuf/blob/v1.3.2/LICENSE,BSD-3-Clause +github.com/golang/groupcache/lru,https://github.com/golang/groupcache/blob/41bb18bfe9da/LICENSE,Apache-2.0 +github.com/golang/protobuf,https://github.com/golang/protobuf/blob/v1.5.2/LICENSE,BSD-3-Clause +github.com/google/go-cmp/cmp,https://github.com/google/go-cmp/blob/v0.5.7/LICENSE,BSD-3-Clause +github.com/google/go-querystring/query,https://github.com/google/go-querystring/blob/v1.1.0/LICENSE,BSD-3-Clause +github.com/google/gofuzz,https://github.com/google/gofuzz/blob/v1.2.0/LICENSE,Apache-2.0 +github.com/google/uuid,https://github.com/google/uuid/blob/v1.3.0/LICENSE,BSD-3-Clause +github.com/googleapis/gnostic,https://github.com/googleapis/gnostic/blob/v0.5.5/LICENSE,Apache-2.0 +github.com/hashicorp/errwrap,https://github.com/hashicorp/errwrap/blob/v1.0.0/LICENSE,MPL-2.0 +github.com/hashicorp/go-multierror,https://github.com/hashicorp/go-multierror/blob/v1.1.1/LICENSE,MPL-2.0 +github.com/imdario/mergo,https://github.com/imdario/mergo/blob/v0.3.12/LICENSE,BSD-3-Clause +github.com/json-iterator/go,https://github.com/json-iterator/go/blob/v1.1.12/LICENSE,MIT +github.com/matttproud/golang_protobuf_extensions/pbutil,https://github.com/matttproud/golang_protobuf_extensions/blob/c182affec369/LICENSE,Apache-2.0 +github.com/modern-go/concurrent,https://github.com/modern-go/concurrent/blob/bacd9c7ef1dd/LICENSE,Apache-2.0 +github.com/modern-go/reflect2,https://github.com/modern-go/reflect2/blob/v1.0.2/LICENSE,Apache-2.0 +github.com/mongodb-forks/digest,https://github.com/mongodb-forks/digest/blob/v1.0.3/COPYING,Apache-2.0 +github.com/openlyinc/pointy,https://github.com/openlyinc/pointy/blob/v1.1.2/LICENSE,MIT +github.com/pkg/errors,https://github.com/pkg/errors/blob/v0.9.1/LICENSE,BSD-2-Clause +github.com/prometheus/client_golang/prometheus,https://github.com/prometheus/client_golang/blob/v1.12.1/LICENSE,Apache-2.0 +github.com/prometheus/client_model/go,https://github.com/prometheus/client_model/blob/v0.2.0/LICENSE,Apache-2.0 +github.com/prometheus/common,https://github.com/prometheus/common/blob/v0.32.1/LICENSE,Apache-2.0 +github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg,https://github.com/prometheus/common/blob/v0.32.1/internal/bitbucket.org/ww/goautoneg/README.txt,BSD-3-Clause +github.com/prometheus/procfs,https://github.com/prometheus/procfs/blob/v0.7.3/LICENSE,Apache-2.0 +github.com/spf13/pflag,https://github.com/spf13/pflag/blob/v1.0.5/LICENSE,BSD-3-Clause +go.mongodb.org/atlas/mongodbatlas,https://github.com/mongodb/go-client-mongodb-atlas/blob/v0.16.0/LICENSE,Apache-2.0 +go.uber.org/atomic,https://github.com/uber-go/atomic/blob/v1.9.0/LICENSE.txt,MIT +go.uber.org/multierr,https://github.com/uber-go/multierr/blob/v1.7.0/LICENSE.txt,MIT +go.uber.org/zap,https://github.com/uber-go/zap/blob/v1.21.0/LICENSE.txt,MIT +golang.org/x/net,https://cs.opensource.google/go/x/net/+/27dd8689:LICENSE,BSD-3-Clause +golang.org/x/oauth2,https://cs.opensource.google/go/x/oauth2/+/ee480838:LICENSE,BSD-3-Clause +golang.org/x/sys,https://cs.opensource.google/go/x/sys/+/4e6760a1:LICENSE,BSD-3-Clause +golang.org/x/term,https://cs.opensource.google/go/x/term/+/03fcf44c:LICENSE,BSD-3-Clause +golang.org/x/text,https://cs.opensource.google/go/x/text/+/v0.3.7:LICENSE,BSD-3-Clause +golang.org/x/time/rate,https://cs.opensource.google/go/x/time/+/0e9765cc:LICENSE,BSD-3-Clause +gomodules.xyz/jsonpatch/v2,https://github.com/gomodules/jsonpatch/blob/v2.2.0/v2/LICENSE,Apache-2.0 +google.golang.org/protobuf,https://github.com/protocolbuffers/protobuf-go/blob/v1.27.1/LICENSE,BSD-3-Clause +gopkg.in/inf.v0,https://github.com/go-inf/inf/blob/v0.9.1/LICENSE,BSD-3-Clause +gopkg.in/yaml.v2,https://github.com/go-yaml/yaml/blob/v2.4.0/LICENSE,Apache-2.0 +gopkg.in/yaml.v3,https://github.com/go-yaml/yaml/blob/496545a6307b/LICENSE,MIT +k8s.io/api,https://github.com/kubernetes/api/blob/v0.23.4/LICENSE,Apache-2.0 +k8s.io/apiextensions-apiserver/pkg/apis/apiextensions,https://github.com/kubernetes/apiextensions-apiserver/blob/v0.23.4/LICENSE,Apache-2.0 +k8s.io/apimachinery/pkg,https://github.com/kubernetes/apimachinery/blob/v0.23.4/LICENSE,Apache-2.0 +k8s.io/apimachinery/third_party/forked/golang,https://github.com/kubernetes/apimachinery/blob/v0.23.4/third_party/forked/golang/LICENSE,BSD-3-Clause +k8s.io/client-go,https://github.com/kubernetes/client-go/blob/v0.23.4/LICENSE,Apache-2.0 +k8s.io/client-go/third_party/forked/golang/template,https://github.com/kubernetes/client-go/blob/v0.23.4/third_party/forked/golang/LICENSE,BSD-3-Clause +k8s.io/component-base/config,https://github.com/kubernetes/component-base/blob/v0.23.4/LICENSE,Apache-2.0 +k8s.io/klog/v2,https://github.com/kubernetes/klog/blob/v2.40.1/LICENSE,Apache-2.0 +k8s.io/kube-openapi/pkg,https://github.com/kubernetes/kube-openapi/blob/424119656bbf/LICENSE,Apache-2.0 +k8s.io/utils,https://github.com/kubernetes/utils/blob/3a6ce19ff2f9/LICENSE,Apache-2.0 +k8s.io/utils/internal/third_party/forked/golang/net,https://github.com/kubernetes/utils/blob/3a6ce19ff2f9/internal/third_party/forked/golang/LICENSE,BSD-3-Clause +sigs.k8s.io/controller-runtime,https://github.com/kubernetes-sigs/controller-runtime/blob/v0.11.1/LICENSE,Apache-2.0 +sigs.k8s.io/json,https://github.com/kubernetes-sigs/json/blob/9f7c6b3444d2/LICENSE,Apache-2.0 +sigs.k8s.io/structured-merge-diff/v4,https://github.com/kubernetes-sigs/structured-merge-diff/blob/v4.2.1/LICENSE,Apache-2.0 +sigs.k8s.io/yaml,https://github.com/kubernetes-sigs/yaml/blob/v1.3.0/LICENSE,MIT