# ============LICENSE_START======================================================= # Copyright (C) 2021 The Nordix Foundation. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= ################################################################################################################### # Create the CRDs that are necessary before creating your Rook cluster. # These resources *must* be created before the cluster.yaml or their variants. ################################################################################################################### # OLM: BEGIN CEPH CRD apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephclusters.ceph.rook.io spec: group: ceph.rook.io names: kind: CephCluster plural: cephclusters singular: cephcluster scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: cephVersion: type: object properties: allowUnsupported: type: boolean image: type: string dashboard: type: object properties: enabled: type: boolean urlPrefix: type: string port: type: integer minimum: 0 maximum: 65535 ssl: type: boolean dataDirHostPath: pattern: ^/(\S+) type: string disruptionManagement: type: object properties: machineDisruptionBudgetNamespace: type: string managePodBudgets: type: boolean osdMaintenanceTimeout: type: integer pgHealthCheckTimeout: type: integer manageMachineDisruptionBudgets: type: boolean skipUpgradeChecks: type: boolean continueUpgradeAfterChecksEvenIfNotHealthy: type: boolean waitTimeoutForHealthyOSDInMinutes: type: integer mon: type: object properties: allowMultiplePerNode: type: boolean count: maximum: 9 minimum: 0 type: integer volumeClaimTemplate: type: object x-kubernetes-preserve-unknown-fields: true stretchCluster: type: object nullable: true properties: failureDomainLabel: type: string subFailureDomain: type: string zones: type: array items: type: object properties: name: type: string arbiter: type: boolean volumeClaimTemplate: type: object x-kubernetes-preserve-unknown-fields: true mgr: type: object properties: modules: type: array items: type: object properties: name: type: string enabled: type: boolean crashCollector: type: object properties: disable: type: boolean network: type: object nullable: true properties: hostNetwork: type: boolean provider: type: string selectors: type: object nullable: true x-kubernetes-preserve-unknown-fields: true ipFamily: type: string storage: type: object properties: disruptionManagement: type: object nullable: true properties: machineDisruptionBudgetNamespace: type: string managePodBudgets: type: boolean osdMaintenanceTimeout: type: integer pgHealthCheckTimeout: type: integer manageMachineDisruptionBudgets: type: boolean useAllNodes: type: boolean nodes: type: array nullable: true items: type: object properties: name: type: string config: type: object nullable: true properties: metadataDevice: type: string storeType: type: string pattern: ^(bluestore)$ databaseSizeMB: type: string walSizeMB: type: string journalSizeMB: type: string osdsPerDevice: type: string encryptedDevice: type: string pattern: ^(true|false)$ useAllDevices: type: boolean deviceFilter: type: string nullable: true devicePathFilter: type: string devices: type: array items: type: object properties: name: type: string fullPath: type: string config: type: object nullable: true x-kubernetes-preserve-unknown-fields: true resources: type: object nullable: true x-kubernetes-preserve-unknown-fields: true useAllDevices: type: boolean deviceFilter: type: string nullable: true devicePathFilter: type: string config: type: object nullable: true x-kubernetes-preserve-unknown-fields: true devices: type: array items: type: object properties: name: type: string fullPath: type: string config: type: object nullable: true x-kubernetes-preserve-unknown-fields: true storageClassDeviceSets: type: array nullable: true items: type: object properties: name: type: string count: type: integer format: int32 portable: type: boolean tuneDeviceClass: type: boolean tuneFastDeviceClass: type: boolean encrypted: type: boolean schedulerName: type: string config: type: object nullable: true x-kubernetes-preserve-unknown-fields: true placement: type: object nullable: true x-kubernetes-preserve-unknown-fields: true preparePlacement: type: object nullable: true x-kubernetes-preserve-unknown-fields: true resources: type: object nullable: true x-kubernetes-preserve-unknown-fields: true volumeClaimTemplates: type: array items: type: object x-kubernetes-preserve-unknown-fields: true driveGroups: type: array nullable: true items: type: object properties: name: type: string spec: type: object x-kubernetes-preserve-unknown-fields: true placement: type: object nullable: true x-kubernetes-preserve-unknown-fields: true required: - name - spec monitoring: type: object properties: enabled: type: boolean rulesNamespace: type: string externalMgrEndpoints: type: array items: type: object properties: ip: type: string externalMgrPrometheusPort: type: integer minimum: 0 maximum: 65535 removeOSDsIfOutAndSafeToRemove: type: boolean external: type: object properties: enable: type: boolean cleanupPolicy: type: object properties: allowUninstallWithVolumes: type: boolean confirmation: type: string pattern: ^$|^yes-really-destroy-data$ sanitizeDisks: type: object properties: method: type: string pattern: ^(complete|quick)$ dataSource: type: string pattern: ^(zero|random)$ iteration: type: integer format: int32 security: type: object properties: kms: type: object properties: connectionDetails: type: object nullable: true x-kubernetes-preserve-unknown-fields: true tokenSecretName: type: string logCollector: type: object properties: enabled: type: boolean periodicity: type: string annotations: type: object nullable: true x-kubernetes-preserve-unknown-fields: true placement: type: object nullable: true x-kubernetes-preserve-unknown-fields: true labels: type: object nullable: true x-kubernetes-preserve-unknown-fields: true resources: type: object nullable: true x-kubernetes-preserve-unknown-fields: true healthCheck: type: object nullable: true x-kubernetes-preserve-unknown-fields: true priorityClassNames: type: object nullable: true x-kubernetes-preserve-unknown-fields: true status: type: object x-kubernetes-preserve-unknown-fields: true additionalPrinterColumns: - name: DataDirHostPath type: string description: Directory used on the K8s nodes jsonPath: .spec.dataDirHostPath - name: MonCount type: string description: Number of MONs jsonPath: .spec.mon.count - name: Age type: date jsonPath: .metadata.creationTimestamp - name: Phase type: string description: Phase jsonPath: .status.phase - name: Message type: string description: Message jsonPath: .status.message - name: Health type: string description: Ceph Health jsonPath: .status.ceph.health subresources: status: {} # OLM: END CEPH CRD # OLM: BEGIN CEPH CLIENT CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephclients.ceph.rook.io spec: group: ceph.rook.io names: kind: CephClient listKind: CephClientList plural: cephclients singular: cephclient scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: caps: type: object x-kubernetes-preserve-unknown-fields: true status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH CLIENT CRD # OLM: BEGIN CEPH RBD MIRROR CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephrbdmirrors.ceph.rook.io spec: group: ceph.rook.io names: kind: CephRBDMirror listKind: CephRBDMirrorList plural: cephrbdmirrors singular: cephrbdmirror scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: count: type: integer minimum: 1 maximum: 100 peers: type: object properties: secretNames: type: array items: type: string resources: type: object nullable: true x-kubernetes-preserve-unknown-fields: true priorityClassName: type: string placement: type: object nullable: true x-kubernetes-preserve-unknown-fields: true annotations: type: object nullable: true x-kubernetes-preserve-unknown-fields: true status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH RBD MIRROR CRD # OLM: BEGIN CEPH FS CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephfilesystems.ceph.rook.io spec: group: ceph.rook.io names: kind: CephFilesystem listKind: CephFilesystemList plural: cephfilesystems singular: cephfilesystem scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: metadataServer: type: object properties: activeCount: minimum: 1 maximum: 10 type: integer activeStandby: type: boolean annotations: type: object nullable: true x-kubernetes-preserve-unknown-fields: true placement: type: object nullable: true x-kubernetes-preserve-unknown-fields: true resources: type: object nullable: true x-kubernetes-preserve-unknown-fields: true priorityClassName: type: string labels: type: object nullable: true x-kubernetes-preserve-unknown-fields: true metadataPool: type: object nullable: true properties: failureDomain: type: string deviceClass: type: string crushRoot: type: string replicated: type: object nullable: true properties: size: minimum: 0 maximum: 10 type: integer requireSafeReplicaSize: type: boolean replicasPerFailureDomain: type: integer subFailureDomain: type: string parameters: type: object x-kubernetes-preserve-unknown-fields: true erasureCoded: type: object nullable: true properties: dataChunks: minimum: 0 maximum: 10 type: integer codingChunks: minimum: 0 maximum: 10 type: integer compressionMode: type: string enum: - "" - none - passive - aggressive - force dataPools: type: array nullable: true items: type: object properties: failureDomain: type: string deviceClass: type: string crushRoot: type: string replicated: type: object nullable: true properties: size: minimum: 0 maximum: 10 type: integer requireSafeReplicaSize: type: boolean replicasPerFailureDomain: type: integer subFailureDomain: type: string erasureCoded: type: object nullable: true properties: dataChunks: minimum: 0 maximum: 10 type: integer codingChunks: minimum: 0 maximum: 10 type: integer compressionMode: type: string enum: - "" - none - passive - aggressive - force parameters: type: object nullable: true x-kubernetes-preserve-unknown-fields: true preservePoolsOnDelete: type: boolean preserveFilesystemOnDelete: type: boolean status: type: object x-kubernetes-preserve-unknown-fields: true additionalPrinterColumns: - name: ActiveMDS type: string description: Number of desired active MDS daemons jsonPath: .spec.metadataServer.activeCount - name: Age type: date jsonPath: .metadata.creationTimestamp subresources: status: {} # OLM: END CEPH FS CRD # OLM: BEGIN CEPH NFS CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephnfses.ceph.rook.io spec: group: ceph.rook.io names: kind: CephNFS listKind: CephNFSList plural: cephnfses singular: cephnfs shortNames: - nfs scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: rados: type: object properties: pool: type: string namespace: type: string server: type: object properties: active: type: integer annotations: type: object nullable: true x-kubernetes-preserve-unknown-fields: true placement: type: object nullable: true x-kubernetes-preserve-unknown-fields: true resources: type: object nullable: true x-kubernetes-preserve-unknown-fields: true priorityClassName: type: string logLevel: type: string status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH NFS CRD # OLM: BEGIN CEPH OBJECT STORE CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephobjectstores.ceph.rook.io spec: group: ceph.rook.io names: kind: CephObjectStore listKind: CephObjectStoreList plural: cephobjectstores singular: cephobjectstore scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: gateway: type: object properties: type: type: string sslCertificateRef: type: string nullable: true port: type: integer minimum: 0 maximum: 65535 securePort: type: integer minimum: 0 maximum: 65535 instances: type: integer externalRgwEndpoints: type: array nullable: true items: type: object properties: ip: type: string annotations: type: object nullable: true x-kubernetes-preserve-unknown-fields: true placement: type: object nullable: true x-kubernetes-preserve-unknown-fields: true resources: type: object nullable: true x-kubernetes-preserve-unknown-fields: true labels: type: object nullable: true x-kubernetes-preserve-unknown-fields: true priorityClassName: type: string metadataPool: type: object nullable: true properties: failureDomain: type: string deviceClass: type: string crushRoot: type: string replicated: type: object nullable: true properties: size: type: integer requireSafeReplicaSize: type: boolean replicasPerFailureDomain: type: integer subFailureDomain: type: string erasureCoded: type: object nullable: true properties: dataChunks: type: integer codingChunks: type: integer compressionMode: type: string enum: - "" - none - passive - aggressive - force parameters: type: object nullable: true x-kubernetes-preserve-unknown-fields: true zone: type: object properties: name: type: string dataPool: type: object nullable: true properties: failureDomain: type: string deviceClass: type: string crushRoot: type: string replicated: type: object nullable: true properties: size: type: integer requireSafeReplicaSize: type: boolean replicasPerFailureDomain: type: integer subFailureDomain: type: string erasureCoded: type: object nullable: true properties: dataChunks: type: integer codingChunks: type: integer compressionMode: type: string enum: - "" - none - passive - aggressive - force parameters: type: object x-kubernetes-preserve-unknown-fields: true preservePoolsOnDelete: type: boolean healthCheck: type: object nullable: true properties: bucket: type: object nullable: true properties: disabled: type: boolean interval: type: string timeout: type: string livenessProbe: type: object nullable: true properties: disabled: type: boolean status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH OBJECT STORE CRD # OLM: BEGIN CEPH OBJECT STORE USERS CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephobjectstoreusers.ceph.rook.io spec: group: ceph.rook.io names: kind: CephObjectStoreUser listKind: CephObjectStoreUserList plural: cephobjectstoreusers singular: cephobjectstoreuser shortNames: - rcou - objectuser scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: store: type: string displayName: type: string status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH OBJECT STORE USERS CRD # OLM: BEGIN CEPH OBJECT REALM CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephobjectrealms.ceph.rook.io spec: group: ceph.rook.io names: kind: CephObjectRealm listKind: CephObjectRealmList plural: cephobjectrealms singular: cephobjectrealm scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: pull: type: object properties: endpoint: type: string status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH OBJECT REALM CRD # OLM: BEGIN CEPH OBJECT ZONEGROUP CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephobjectzonegroups.ceph.rook.io spec: group: ceph.rook.io names: kind: CephObjectZoneGroup listKind: CephObjectZoneGroupList plural: cephobjectzonegroups singular: cephobjectzonegroup scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: realm: type: string status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH OBJECT ZONEGROUP CRD # OLM: BEGIN CEPH OBJECT ZONE CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephobjectzones.ceph.rook.io spec: group: ceph.rook.io names: kind: CephObjectZone listKind: CephObjectZoneList plural: cephobjectzones singular: cephobjectzone scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: zoneGroup: type: string metadataPool: type: object nullable: true properties: failureDomain: type: string crushRoot: type: string replicated: type: object nullable: true properties: size: type: integer requireSafeReplicaSize: type: boolean erasureCoded: type: object nullable: true properties: dataChunks: type: integer codingChunks: type: integer compressionMode: type: string enum: - "" - none - passive - aggressive - force parameters: type: object nullable: true x-kubernetes-preserve-unknown-fields: true dataPool: type: object properties: failureDomain: type: string crushRoot: type: string replicated: type: object nullable: true properties: size: type: integer requireSafeReplicaSize: type: boolean erasureCoded: type: object nullable: true properties: dataChunks: type: integer codingChunks: type: integer compressionMode: type: string enum: - "" - none - passive - aggressive - force parameters: type: object nullable: true x-kubernetes-preserve-unknown-fields: true preservePoolsOnDelete: type: boolean status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH OBJECT ZONE CRD # OLM: BEGIN CEPH BLOCK POOL CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: cephblockpools.ceph.rook.io spec: group: ceph.rook.io names: kind: CephBlockPool listKind: CephBlockPoolList plural: cephblockpools singular: cephblockpool scope: Namespaced versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: failureDomain: type: string deviceClass: type: string crushRoot: type: string replicated: type: object nullable: true properties: size: type: integer minimum: 0 maximum: 9 targetSizeRatio: type: number requireSafeReplicaSize: type: boolean replicasPerFailureDomain: type: integer subFailureDomain: type: string erasureCoded: type: object nullable: true properties: dataChunks: type: integer minimum: 0 maximum: 9 codingChunks: type: integer minimum: 0 maximum: 9 compressionMode: type: string enum: - "" - none - passive - aggressive - force enableRBDStats: description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool type: boolean parameters: type: object nullable: true x-kubernetes-preserve-unknown-fields: true mirroring: type: object nullable: true properties: enabled: type: boolean mode: type: string enum: - image - pool snapshotSchedules: type: array items: type: object nullable: true properties: interval: type: string startTime: type: string quotas: type: object nullable: true properties: maxBytes: type: integer minimum: 0 maxSize: pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE][i]?)?$ type: string maxObjects: type: integer minimum: 0 statusCheck: type: object x-kubernetes-preserve-unknown-fields: true annotations: type: object nullable: true x-kubernetes-preserve-unknown-fields: true status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH BLOCK POOL CRD # OLM: BEGIN CEPH VOLUME POOL CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: volumes.rook.io spec: group: rook.io names: kind: Volume listKind: VolumeList plural: volumes singular: volume shortNames: - rv scope: Namespaced versions: - name: v1alpha2 served: true storage: true schema: openAPIV3Schema: type: object properties: attachments: type: array items: type: object properties: node: type: string podNamespace: type: string podName: type: string clusterName: type: string mountDir: type: string readOnly: type: boolean status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END CEPH VOLUME POOL CRD # OLM: BEGIN OBJECTBUCKET CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: objectbuckets.objectbucket.io spec: group: objectbucket.io names: kind: ObjectBucket listKind: ObjectBucketList plural: objectbuckets singular: objectbucket shortNames: - ob - obs scope: Cluster versions: - name: v1alpha1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: storageClassName: type: string endpoint: type: object nullable: true properties: bucketHost: type: string bucketPort: type: integer format: int32 bucketName: type: string region: type: string subRegion: type: string additionalConfig: type: object nullable: true x-kubernetes-preserve-unknown-fields: true authentication: type: object nullable: true items: type: object x-kubernetes-preserve-unknown-fields: true additionalState: type: object nullable: true x-kubernetes-preserve-unknown-fields: true reclaimPolicy: type: string claimRef: type: object nullable: true x-kubernetes-preserve-unknown-fields: true status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END OBJECTBUCKET CRD # OLM: BEGIN OBJECTBUCKETCLAIM CRD --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: objectbucketclaims.objectbucket.io spec: group: objectbucket.io names: kind: ObjectBucketClaim listKind: ObjectBucketClaimList plural: objectbucketclaims singular: objectbucketclaim shortNames: - obc - obcs scope: Namespaced versions: - name: v1alpha1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: storageClassName: type: string bucketName: type: string generateBucketName: type: string additionalConfig: type: object nullable: true x-kubernetes-preserve-unknown-fields: true objectBucketName: type: string status: type: object x-kubernetes-preserve-unknown-fields: true subresources: status: {} # OLM: END OBJECTBUCKETCLAIM CRD