CephCluster
ceph.rook.io / v1
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: example
apiVersion
string
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
kind
string
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
metadata
object required
spec object required
ClusterSpec represents the specification of Ceph Cluster
annotations
object
The annotations-related configuration to add/set on each Pod related object.
cephConfig
object
Ceph Config options
cephVersion object
The version information that instructs Rook to orchestrate a particular version of Ceph.
allowUnsupported
boolean
Whether to allow unsupported versions (do not set to true in production)
image
string
Image is the container image used to launch the ceph daemons, such as quay.io/ceph/ceph:<tag>
The full list of images can be found at https://quay.io/repository/ceph/ceph?tab=tags
imagePullPolicy
string
ImagePullPolicy describes a policy for if/when to pull a container image
One of Always, Never, IfNotPresent.
enum:
IfNotPresent, Always, Never, cleanupPolicy object
Indicates user intent when deleting a cluster; blocks orchestration and should not be set if cluster
deletion is not imminent.
allowUninstallWithVolumes
boolean
AllowUninstallWithVolumes defines whether we can proceed with the uninstall if they are RBD images still present
confirmation
string
Confirmation represents the cleanup confirmation
pattern:
^$|^yes-really-destroy-data$sanitizeDisks object
SanitizeDisks represents way we sanitize disks
dataSource
string
DataSource is the data source to use to sanitize the disk with
enum:
zero, random
iteration
integer
Iteration is the number of pass to apply the sanitizing
format:
int32
method
string
Method is the method we use to sanitize disks
enum:
complete, quick
continueUpgradeAfterChecksEvenIfNotHealthy
boolean
ContinueUpgradeAfterChecksEvenIfNotHealthy defines if an upgrade should continue even if PGs are not clean
crashCollector object
A spec for the crash controller
daysToRetain
integer
DaysToRetain represents the number of days to retain crash until they get pruned
disable
boolean
Disable determines whether we should enable the crash collector
csi object
CSI Driver Options applied per cluster.
cephfs object
CephFS defines CSI Driver settings for CephFS driver.
fuseMountOptions
string
FuseMountOptions defines the mount options for ceph fuse mounter.
kernelMountOptions
string
KernelMountOptions defines the mount options for kernel mounter.
readAffinity object
ReadAffinity defines the read affinity settings for CSI driver.
crushLocationLabels
[]string
CrushLocationLabels defines which node labels to use
as CRUSH location. This should correspond to the values set in
the CRUSH map.
enabled
boolean
Enables read affinity for CSI driver.
dashboard object
Dashboard settings
enabled
boolean
Enabled determines whether to enable the dashboard
port
integer
Port is the dashboard webserver port
minimum:
0maximum:
65535
prometheusEndpoint
string
Endpoint for the Prometheus host
prometheusEndpointSSLVerify
boolean
Whether to verify the ssl endpoint for prometheus. Set to false for a self-signed cert.
ssl
boolean
SSL determines whether SSL should be used
urlPrefix
string
URLPrefix is a prefix for all URLs to use the dashboard with a reverse proxy
dataDirHostPath
string
The path on the host where config and data can be persisted
pattern:
^/(\S+)disruptionManagement object
A spec for configuring disruption management.
machineDisruptionBudgetNamespace
string
Deprecated. Namespace to look for MDBs by the machineDisruptionBudgetController
manageMachineDisruptionBudgets
boolean
Deprecated. This enables management of machinedisruptionbudgets.
managePodBudgets
boolean
This enables management of poddisruptionbudgets
osdMaintenanceTimeout
integer
OSDMaintenanceTimeout sets how many additional minutes the DOWN/OUT interval is for drained failure domains
it only works if managePodBudgets is true.
the default is 30 minutes
format:
int64
pgHealthCheckTimeout
integer
PGHealthCheckTimeout is the time (in minutes) that the operator will wait for the placement groups to become
healthy (active+clean) after a drain was completed and OSDs came back up. Rook will continue with the next drain
if the timeout exceeds. It only works if managePodBudgets is true.
No values or 0 means that the operator will wait until the placement groups are healthy before unblocking the next drain.
format:
int64
pgHealthyRegex
string
PgHealthyRegex is the regular expression that is used to determine which PG states should be considered healthy.
The default is `^(active\+clean|active\+clean\+scrubbing|active\+clean\+scrubbing\+deep)$`
external object
Whether the Ceph Cluster is running external to this Kubernetes cluster
mon, mgr, osd, mds, and discover daemons will not be created for external clusters.
enable
boolean
Enable determines whether external mode is enabled or not
healthCheck object
Internal daemon healthchecks and liveness probe
daemonHealth object
DaemonHealth is the health check for a given daemon
mon object
Monitor represents the health check settings for the Ceph monitor
disabled
boolean
interval
string
Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
timeout
string
osd object
ObjectStorageDaemon represents the health check settings for the Ceph OSDs
disabled
boolean
interval
string
Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
timeout
string
status object
Status represents the health check settings for the Ceph health
disabled
boolean
interval
string
Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
timeout
string
livenessProbe
object
LivenessProbe allows changing the livenessProbe configuration for a given daemon
startupProbe
object
StartupProbe allows changing the startupProbe configuration for a given daemon
labels
object
The labels-related configuration to add/set on each Pod related object.
logCollector object
Logging represents loggings settings
enabled
boolean
Enabled represents whether the log collector is enabled
maxLogSize
string | integer
MaxLogSize is the maximum size of the log per ceph daemons. Must be at least 1M.
string pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
periodicity
string
Periodicity is the periodicity of the log rotation.
pattern:
^$|^(hourly|daily|weekly|monthly|1h|24h|1d)$mgr object
A spec for mgr related options
allowMultiplePerNode
boolean
AllowMultiplePerNode allows to run multiple managers on the same node (not recommended)
count
integer
Count is the number of manager daemons to run
minimum:
0maximum:
5modules []object
Modules is the list of ceph manager modules to enable/disable
enabled
boolean
Enabled determines whether a module should be enabled or not
name
string
Name is the name of the ceph manager module
settings object
Settings to further configure the module
balancerMode
string
BalancerMode sets the `balancer` module with different modes like `upmap`, `crush-compact` etc
enum:
, crush-compat, upmap, read, upmap-readmon object
A spec for mon related options
allowMultiplePerNode
boolean
AllowMultiplePerNode determines if we can run multiple monitors on the same node (not recommended)
count
integer
Count is the number of Ceph monitors
minimum:
0maximum:
9
failureDomainLabel
string
stretchCluster object
StretchCluster is the stretch cluster specification
failureDomainLabel
string
FailureDomainLabel the failure domain name (e,g: zone)
subFailureDomain
string
SubFailureDomain is the failure domain within a zone
zones []object
Zones is the list of zones
arbiter
boolean
Arbiter determines if the zone contains the arbiter used for stretch cluster mode
name
string
Name is the name of the zone
volumeClaimTemplate object
VolumeClaimTemplate is the PVC template
metadata object
Standard object's metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
annotations
object
finalizers
[]string
labels
object
name
string
namespace
string
spec object
spec defines the desired characteristics of a volume requested by a pod author.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
accessModes
[]string
accessModes contains the desired access modes the volume should have.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource object
dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
* An existing PVC (PersistentVolumeClaim)
If the provisioner or an external controller can support the specified data source,
it will create a new volume based on the contents of the specified data source.
When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
If the namespace is specified, then dataSourceRef will not be copied to dataSource.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
dataSourceRef object
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
volume is desired. This may be any object from a non-empty API group (non
core object) or a PersistentVolumeClaim object.
When this field is specified, volume binding will only succeed if the type of
the specified object matches some installed volume populator or dynamic
provisioner.
This field will replace the functionality of the dataSource field and as such
if both fields are non-empty, they must have the same value. For backwards
compatibility, when namespace isn't specified in dataSourceRef,
both fields (dataSource and dataSourceRef) will be set to the same
value automatically if one of them is empty and the other is non-empty.
When namespace is specified in dataSourceRef,
dataSource isn't set to the same value and must be empty.
There are three important differences between dataSource and dataSourceRef:
* While dataSource only allows two specific types of objects, dataSourceRef
allows any non-core object, as well as PersistentVolumeClaim objects.
* While dataSource ignores disallowed values (dropping them), dataSourceRef
preserves all values, and generates an error if a disallowed value is
specified.
* While dataSource only allows local objects, dataSourceRef allows objects
in any namespaces.
(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
namespace
string
Namespace is the namespace of resource being referenced
Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
resources object
resources represents the minimum resources the volume should have.
If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
that are lower than previous value but must still be higher than capacity recorded in the
status field of the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
limits
object
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requests
object
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
selector object
selector is a label query over volumes to consider for binding.
matchExpressions []object
matchExpressions is a list of label selector requirements. The requirements are ANDed.
key
string required
key is the label key that the selector applies to.
operator
string required
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
values
[]string
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
matchLabels
object
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
storageClassName
string
storageClassName is the name of the StorageClass required by the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
volumeAttributesClassName
string
volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
If specified, the CSI driver will create or update the volume with the attributes defined
in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
will be set by the persistentvolume controller if it exists.
If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
exists.
More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
(Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
volumeMode
string
volumeMode defines what type of volume is required by the claim.
Value of Filesystem is implied when not included in claim spec.
volumeName
string
volumeName is the binding reference to the PersistentVolume backing this claim.
volumeClaimTemplate object
VolumeClaimTemplate is the PVC definition
metadata object
Standard object's metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
annotations
object
finalizers
[]string
labels
object
name
string
namespace
string
spec object
spec defines the desired characteristics of a volume requested by a pod author.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
accessModes
[]string
accessModes contains the desired access modes the volume should have.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource object
dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
* An existing PVC (PersistentVolumeClaim)
If the provisioner or an external controller can support the specified data source,
it will create a new volume based on the contents of the specified data source.
When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
If the namespace is specified, then dataSourceRef will not be copied to dataSource.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
dataSourceRef object
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
volume is desired. This may be any object from a non-empty API group (non
core object) or a PersistentVolumeClaim object.
When this field is specified, volume binding will only succeed if the type of
the specified object matches some installed volume populator or dynamic
provisioner.
This field will replace the functionality of the dataSource field and as such
if both fields are non-empty, they must have the same value. For backwards
compatibility, when namespace isn't specified in dataSourceRef,
both fields (dataSource and dataSourceRef) will be set to the same
value automatically if one of them is empty and the other is non-empty.
When namespace is specified in dataSourceRef,
dataSource isn't set to the same value and must be empty.
There are three important differences between dataSource and dataSourceRef:
* While dataSource only allows two specific types of objects, dataSourceRef
allows any non-core object, as well as PersistentVolumeClaim objects.
* While dataSource ignores disallowed values (dropping them), dataSourceRef
preserves all values, and generates an error if a disallowed value is
specified.
* While dataSource only allows local objects, dataSourceRef allows objects
in any namespaces.
(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
namespace
string
Namespace is the namespace of resource being referenced
Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
resources object
resources represents the minimum resources the volume should have.
If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
that are lower than previous value but must still be higher than capacity recorded in the
status field of the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
limits
object
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requests
object
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
selector object
selector is a label query over volumes to consider for binding.
matchExpressions []object
matchExpressions is a list of label selector requirements. The requirements are ANDed.
key
string required
key is the label key that the selector applies to.
operator
string required
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
values
[]string
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
matchLabels
object
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
storageClassName
string
storageClassName is the name of the StorageClass required by the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
volumeAttributesClassName
string
volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
If specified, the CSI driver will create or update the volume with the attributes defined
in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
will be set by the persistentvolume controller if it exists.
If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
exists.
More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
(Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
volumeMode
string
volumeMode defines what type of volume is required by the claim.
Value of Filesystem is implied when not included in claim spec.
volumeName
string
volumeName is the binding reference to the PersistentVolume backing this claim.
zones []object
Zones are specified when we want to provide zonal awareness to mons
arbiter
boolean
Arbiter determines if the zone contains the arbiter used for stretch cluster mode
name
string
Name is the name of the zone
volumeClaimTemplate object
VolumeClaimTemplate is the PVC template
metadata object
Standard object's metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
annotations
object
finalizers
[]string
labels
object
name
string
namespace
string
spec object
spec defines the desired characteristics of a volume requested by a pod author.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
accessModes
[]string
accessModes contains the desired access modes the volume should have.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource object
dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
* An existing PVC (PersistentVolumeClaim)
If the provisioner or an external controller can support the specified data source,
it will create a new volume based on the contents of the specified data source.
When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
If the namespace is specified, then dataSourceRef will not be copied to dataSource.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
dataSourceRef object
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
volume is desired. This may be any object from a non-empty API group (non
core object) or a PersistentVolumeClaim object.
When this field is specified, volume binding will only succeed if the type of
the specified object matches some installed volume populator or dynamic
provisioner.
This field will replace the functionality of the dataSource field and as such
if both fields are non-empty, they must have the same value. For backwards
compatibility, when namespace isn't specified in dataSourceRef,
both fields (dataSource and dataSourceRef) will be set to the same
value automatically if one of them is empty and the other is non-empty.
When namespace is specified in dataSourceRef,
dataSource isn't set to the same value and must be empty.
There are three important differences between dataSource and dataSourceRef:
* While dataSource only allows two specific types of objects, dataSourceRef
allows any non-core object, as well as PersistentVolumeClaim objects.
* While dataSource ignores disallowed values (dropping them), dataSourceRef
preserves all values, and generates an error if a disallowed value is
specified.
* While dataSource only allows local objects, dataSourceRef allows objects
in any namespaces.
(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
namespace
string
Namespace is the namespace of resource being referenced
Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
resources object
resources represents the minimum resources the volume should have.
If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
that are lower than previous value but must still be higher than capacity recorded in the
status field of the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
limits
object
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requests
object
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
selector object
selector is a label query over volumes to consider for binding.
matchExpressions []object
matchExpressions is a list of label selector requirements. The requirements are ANDed.
key
string required
key is the label key that the selector applies to.
operator
string required
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
values
[]string
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
matchLabels
object
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
storageClassName
string
storageClassName is the name of the StorageClass required by the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
volumeAttributesClassName
string
volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
If specified, the CSI driver will create or update the volume with the attributes defined
in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
will be set by the persistentvolume controller if it exists.
If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
exists.
More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
(Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
volumeMode
string
volumeMode defines what type of volume is required by the claim.
Value of Filesystem is implied when not included in claim spec.
volumeName
string
volumeName is the binding reference to the PersistentVolume backing this claim.
monitoring object
Prometheus based Monitoring settings
enabled
boolean
Enabled determines whether to create the prometheus rules for the ceph cluster. If true, the prometheus
types must exist or the creation will fail. Default is false.
exporter object
Ceph exporter configuration
perfCountersPrioLimit
integer
Only performance counters greater than or equal to this option are fetched
format:
int64
statsPeriodSeconds
integer
Time to wait before sending requests again to exporter server (seconds)
format:
int64externalMgrEndpoints []object
ExternalMgrEndpoints points to an existing Ceph prometheus exporter endpoint
hostname
string
The Hostname of this endpoint
ip
string required
The IP of this endpoint.
May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
or link-local multicast (224.0.0.0/24 or ff02::/16).
nodeName
string
Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
targetRef object
Reference to object providing the endpoint.
apiVersion
string
API version of the referent.
fieldPath
string
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
kind
string
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
name
string
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
namespace
string
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
resourceVersion
string
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
uid
string
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
externalMgrPrometheusPort
integer
ExternalMgrPrometheusPort Prometheus exporter port
minimum:
0maximum:
65535
interval
string
Interval determines prometheus scrape interval
metricsDisabled
boolean
Whether to disable the metrics reported by Ceph. If false, the prometheus mgr module and Ceph exporter are enabled.
If true, the prometheus mgr module and Ceph exporter are both disabled. Default is false.
port
integer
Port is the prometheus server port
minimum:
0maximum:
65535network object
Network related configuration
addressRanges object
AddressRanges specify a list of CIDRs that Rook will apply to Ceph's 'public_network' and/or
'cluster_network' configurations. This config section may be used for the "host" or "multus"
network providers.
cluster
[]string
Cluster defines a list of CIDRs to use for Ceph cluster network communication.
public
[]string
Public defines a list of CIDRs to use for Ceph public network communication.
connections object
Settings for network connections such as compression and encryption across the
wire.
compression object
Compression settings for the network connections.
enabled
boolean
Whether to compress the data in transit across the wire.
The default is not set.
encryption object
Encryption settings for the network connections.
enabled
boolean
Whether to encrypt the data in transit across the wire to prevent eavesdropping
the data on the network. The default is not set. Even if encryption is not enabled,
clients still establish a strong initial authentication for the connection
and data integrity is still validated with a crc check. When encryption is enabled,
all communication between clients and Ceph daemons, or between Ceph daemons will
be encrypted.
requireMsgr2
boolean
Whether to require msgr2 (port 3300) even if compression or encryption are not enabled.
If true, the msgr1 port (6789) will be disabled.
Requires a kernel that supports msgr2 (kernel 5.11 or CentOS 8.4 or newer).
dualStack
boolean
DualStack determines whether Ceph daemons should listen on both IPv4 and IPv6
hostNetwork
boolean
HostNetwork to enable host network.
If host networking is enabled or disabled on a running cluster, then the operator will automatically fail over all the mons to
apply the new network settings.
ipFamily
string
IPFamily is the single stack IPv6 or IPv4 protocol
enum:
IPv4, IPv6multiClusterService object
Enable multiClusterService to export the Services between peer clusters
clusterID
string
ClusterID uniquely identifies a cluster. It is used as a prefix to nslookup exported
services. For example: <clusterid>.<svc>.<ns>.svc.clusterset.local
enabled
boolean
Enable multiClusterService to export the mon and OSD services to peer cluster.
Ensure that peer clusters are connected using an MCS API compatible application,
like Globalnet Submariner.
provider
string
Provider is what provides network connectivity to the cluster e.g. "host" or "multus".
If the Provider is updated from being empty to "host" on a running cluster, then the operator will automatically fail over all the mons to apply the "host" network settings.
enum:
, host, multus
selectors
object
Selectors define NetworkAttachmentDefinitions to be used for Ceph public and/or cluster
networks when the "multus" network provider is used. This config section is not used for
other network providers.
Valid keys are "public" and "cluster". Refer to Ceph networking documentation for more:
https://docs.ceph.com/en/latest/rados/configuration/network-config-ref/
Refer to Multus network annotation documentation for help selecting values:
https://github.com/k8snetworkplumbingwg/multus-cni/blob/master/docs/how-to-use.md#run-pod-with-network-annotation
Rook will make a best-effort attempt to automatically detect CIDR address ranges for given
network attachment definitions. Rook's methods are robust but may be imprecise for
sufficiently complicated networks. Rook's auto-detection process obtains a new IP address
lease for each CephCluster reconcile. If Rook fails to detect, incorrectly detects, only
partially detects, or if underlying networks do not support reusing old IP addresses, it is
best to use the 'addressRanges' config section to specify CIDR ranges for the Ceph cluster.
As a contrived example, one can use a theoretical Kubernetes-wide network for Ceph client
traffic and a theoretical Rook-only network for Ceph replication traffic as shown:
selectors:
public: "default/cluster-fast-net"
cluster: "rook-ceph/ceph-backend-net"
placement
object
priorityClassNames
object
PriorityClassNames sets priority classes on components
removeOSDsIfOutAndSafeToRemove
boolean
Remove the OSD that is out and safe to remove only if this option is true
resources
object
Resources set resource requests and limits
security object
Security represents security settings
keyRotation object
KeyRotation defines options for Key Rotation.
enabled
boolean
Enabled represents whether the key rotation is enabled.
schedule
string
Schedule represents the cron schedule for key rotation.
kms object
KeyManagementService is the main Key Management option
connectionDetails
object
ConnectionDetails contains the KMS connection details (address, port etc)
tokenSecretName
string
TokenSecretName is the kubernetes secret containing the KMS token
skipUpgradeChecks
boolean
SkipUpgradeChecks defines if an upgrade should be forced even if one of the check fails
storage object
A spec for available storage in the cluster and how it should be used
allowDeviceClassUpdate
boolean
Whether to allow updating the device class after the OSD is initially provisioned
allowOsdCrushWeightUpdate
boolean
Whether Rook will resize the OSD CRUSH weight when the OSD PVC size is increased.
This allows cluster data to be rebalanced to make most effective use of new OSD space.
The default is false since data rebalancing can cause temporary cluster slowdown.
backfillFullRatio
number
BackfillFullRatio is the ratio at which the cluster is too full for backfill. Backfill will be disabled if above this threshold. Default is 0.90.
minimum:
0maximum:
1
config
object
deviceFilter
string
A regular expression to allow more fine-grained selection of devices on nodes across the cluster
devicePathFilter
string
A regular expression to allow more fine-grained selection of devices with path names
devices []object
List of devices to use as storage devices
config
object
fullpath
string
name
string
flappingRestartIntervalHours
integer
FlappingRestartIntervalHours defines the time for which the OSD pods, that failed with zero exit code, will sleep before restarting.
This is needed for OSD flapping where OSD daemons are marked down more than 5 times in 600 seconds by Ceph.
Preventing the OSD pods to restart immediately in such scenarios will prevent Rook from marking OSD as `up` and thus
peering of the PGs mapped to the OSD.
User needs to manually restart the OSD pod if they manage to fix the underlying OSD flapping issue before the restart interval.
The sleep will be disabled if this interval is set to 0.
fullRatio
number
FullRatio is the ratio at which the cluster is considered full and ceph will stop accepting writes. Default is 0.95.
minimum:
0maximum:
1
nearFullRatio
number
NearFullRatio is the ratio at which the cluster is considered nearly full and will raise a ceph health warning. Default is 0.85.
minimum:
0maximum:
1nodes []object
config
object
deviceFilter
string
A regular expression to allow more fine-grained selection of devices on nodes across the cluster
devicePathFilter
string
A regular expression to allow more fine-grained selection of devices with path names
devices []object
List of devices to use as storage devices
config
object
fullpath
string
name
string
name
string
resources object
ResourceRequirements describes the compute resource requirements.
claims []object
Claims lists the names of resources, defined in spec.resourceClaims,
that are used by this container.
This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate.
This field is immutable. It can only be set for containers.
name
string required
Name must match the name of one entry in pod.spec.resourceClaims of
the Pod where this field is used. It makes that resource available
inside a container.
request
string
Request is the name chosen for a request in the referenced claim.
If empty, everything from the claim is made available, otherwise
only the result of this request.
limits
object
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requests
object
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
useAllDevices
boolean
Whether to consume all the storage devices found on a machine
volumeClaimTemplates []object
PersistentVolumeClaims to use as storage
metadata object
Standard object's metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
annotations
object
finalizers
[]string
labels
object
name
string
namespace
string
spec object
spec defines the desired characteristics of a volume requested by a pod author.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
accessModes
[]string
accessModes contains the desired access modes the volume should have.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource object
dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
* An existing PVC (PersistentVolumeClaim)
If the provisioner or an external controller can support the specified data source,
it will create a new volume based on the contents of the specified data source.
When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
If the namespace is specified, then dataSourceRef will not be copied to dataSource.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
dataSourceRef object
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
volume is desired. This may be any object from a non-empty API group (non
core object) or a PersistentVolumeClaim object.
When this field is specified, volume binding will only succeed if the type of
the specified object matches some installed volume populator or dynamic
provisioner.
This field will replace the functionality of the dataSource field and as such
if both fields are non-empty, they must have the same value. For backwards
compatibility, when namespace isn't specified in dataSourceRef,
both fields (dataSource and dataSourceRef) will be set to the same
value automatically if one of them is empty and the other is non-empty.
When namespace is specified in dataSourceRef,
dataSource isn't set to the same value and must be empty.
There are three important differences between dataSource and dataSourceRef:
* While dataSource only allows two specific types of objects, dataSourceRef
allows any non-core object, as well as PersistentVolumeClaim objects.
* While dataSource ignores disallowed values (dropping them), dataSourceRef
preserves all values, and generates an error if a disallowed value is
specified.
* While dataSource only allows local objects, dataSourceRef allows objects
in any namespaces.
(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
namespace
string
Namespace is the namespace of resource being referenced
Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
resources object
resources represents the minimum resources the volume should have.
If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
that are lower than previous value but must still be higher than capacity recorded in the
status field of the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
limits
object
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requests
object
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
selector object
selector is a label query over volumes to consider for binding.
matchExpressions []object
matchExpressions is a list of label selector requirements. The requirements are ANDed.
key
string required
key is the label key that the selector applies to.
operator
string required
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
values
[]string
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
matchLabels
object
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
storageClassName
string
storageClassName is the name of the StorageClass required by the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
volumeAttributesClassName
string
volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
If specified, the CSI driver will create or update the volume with the attributes defined
in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
will be set by the persistentvolume controller if it exists.
If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
exists.
More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
(Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
volumeMode
string
volumeMode defines what type of volume is required by the claim.
Value of Filesystem is implied when not included in claim spec.
volumeName
string
volumeName is the binding reference to the PersistentVolume backing this claim.
onlyApplyOSDPlacement
boolean
scheduleAlways
boolean
Whether to always schedule OSDs on a node even if the node is not currently scheduleable or ready
storageClassDeviceSets []object
config
object
Provider-specific device configuration
count
integer required
Count is the number of devices in this set
minimum:
1
encrypted
boolean
Whether to encrypt the deviceSet
name
string required
Name is a unique identifier for the set
placement object
nodeAffinity object
preferredDuringSchedulingIgnoredDuringExecution []object
preference object required
matchExpressions []object
key
string required
operator
string required
values
[]string
matchFields []object
key
string required
operator
string required
values
[]string
weight
integer required
format:
int32requiredDuringSchedulingIgnoredDuringExecution object
nodeSelectorTerms []object required
matchExpressions []object
key
string required
operator
string required
values
[]string
matchFields []object
key
string required
operator
string required
values
[]string
podAffinity object
preferredDuringSchedulingIgnoredDuringExecution []object
podAffinityTerm object required
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
mismatchLabelKeys
[]string
namespaceSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
namespaces
[]string
topologyKey
string required
weight
integer required
format:
int32requiredDuringSchedulingIgnoredDuringExecution []object
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
mismatchLabelKeys
[]string
namespaceSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
namespaces
[]string
topologyKey
string required
podAntiAffinity object
preferredDuringSchedulingIgnoredDuringExecution []object
podAffinityTerm object required
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
mismatchLabelKeys
[]string
namespaceSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
namespaces
[]string
topologyKey
string required
weight
integer required
format:
int32requiredDuringSchedulingIgnoredDuringExecution []object
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
mismatchLabelKeys
[]string
namespaceSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
namespaces
[]string
topologyKey
string required
tolerations []object
effect
string
key
string
operator
string
tolerationSeconds
integer
format:
int64
value
string
topologySpreadConstraints []object
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
maxSkew
integer required
format:
int32
minDomains
integer
format:
int32
nodeAffinityPolicy
string
nodeTaintsPolicy
string
topologyKey
string required
whenUnsatisfiable
string required
portable
boolean
Portable represents OSD portability across the hosts
preparePlacement object
nodeAffinity object
preferredDuringSchedulingIgnoredDuringExecution []object
preference object required
matchExpressions []object
key
string required
operator
string required
values
[]string
matchFields []object
key
string required
operator
string required
values
[]string
weight
integer required
format:
int32requiredDuringSchedulingIgnoredDuringExecution object
nodeSelectorTerms []object required
matchExpressions []object
key
string required
operator
string required
values
[]string
matchFields []object
key
string required
operator
string required
values
[]string
podAffinity object
preferredDuringSchedulingIgnoredDuringExecution []object
podAffinityTerm object required
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
mismatchLabelKeys
[]string
namespaceSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
namespaces
[]string
topologyKey
string required
weight
integer required
format:
int32requiredDuringSchedulingIgnoredDuringExecution []object
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
mismatchLabelKeys
[]string
namespaceSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
namespaces
[]string
topologyKey
string required
podAntiAffinity object
preferredDuringSchedulingIgnoredDuringExecution []object
podAffinityTerm object required
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
mismatchLabelKeys
[]string
namespaceSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
namespaces
[]string
topologyKey
string required
weight
integer required
format:
int32requiredDuringSchedulingIgnoredDuringExecution []object
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
mismatchLabelKeys
[]string
namespaceSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
namespaces
[]string
topologyKey
string required
tolerations []object
effect
string
key
string
operator
string
tolerationSeconds
integer
format:
int64
value
string
topologySpreadConstraints []object
labelSelector object
matchExpressions []object
key
string required
operator
string required
values
[]string
matchLabels
object
matchLabelKeys
[]string
maxSkew
integer required
format:
int32
minDomains
integer
format:
int32
nodeAffinityPolicy
string
nodeTaintsPolicy
string
topologyKey
string required
whenUnsatisfiable
string required
resources object
ResourceRequirements describes the compute resource requirements.
claims []object
Claims lists the names of resources, defined in spec.resourceClaims,
that are used by this container.
This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate.
This field is immutable. It can only be set for containers.
name
string required
Name must match the name of one entry in pod.spec.resourceClaims of
the Pod where this field is used. It makes that resource available
inside a container.
request
string
Request is the name chosen for a request in the referenced claim.
If empty, everything from the claim is made available, otherwise
only the result of this request.
limits
object
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requests
object
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
schedulerName
string
Scheduler name for OSD pod placement
tuneDeviceClass
boolean
TuneSlowDeviceClass Tune the OSD when running on a slow Device Class
tuneFastDeviceClass
boolean
TuneFastDeviceClass Tune the OSD when running on a fast Device Class
volumeClaimTemplates []object required
VolumeClaimTemplates is a list of PVC templates for the underlying storage devices
metadata object
Standard object's metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
annotations
object
finalizers
[]string
labels
object
name
string
namespace
string
spec object
spec defines the desired characteristics of a volume requested by a pod author.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
accessModes
[]string
accessModes contains the desired access modes the volume should have.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource object
dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
* An existing PVC (PersistentVolumeClaim)
If the provisioner or an external controller can support the specified data source,
it will create a new volume based on the contents of the specified data source.
When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
If the namespace is specified, then dataSourceRef will not be copied to dataSource.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
dataSourceRef object
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
volume is desired. This may be any object from a non-empty API group (non
core object) or a PersistentVolumeClaim object.
When this field is specified, volume binding will only succeed if the type of
the specified object matches some installed volume populator or dynamic
provisioner.
This field will replace the functionality of the dataSource field and as such
if both fields are non-empty, they must have the same value. For backwards
compatibility, when namespace isn't specified in dataSourceRef,
both fields (dataSource and dataSourceRef) will be set to the same
value automatically if one of them is empty and the other is non-empty.
When namespace is specified in dataSourceRef,
dataSource isn't set to the same value and must be empty.
There are three important differences between dataSource and dataSourceRef:
* While dataSource only allows two specific types of objects, dataSourceRef
allows any non-core object, as well as PersistentVolumeClaim objects.
* While dataSource ignores disallowed values (dropping them), dataSourceRef
preserves all values, and generates an error if a disallowed value is
specified.
* While dataSource only allows local objects, dataSourceRef allows objects
in any namespaces.
(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
namespace
string
Namespace is the namespace of resource being referenced
Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
resources object
resources represents the minimum resources the volume should have.
If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
that are lower than previous value but must still be higher than capacity recorded in the
status field of the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
limits
object
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requests
object
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
selector object
selector is a label query over volumes to consider for binding.
matchExpressions []object
matchExpressions is a list of label selector requirements. The requirements are ANDed.
key
string required
key is the label key that the selector applies to.
operator
string required
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
values
[]string
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
matchLabels
object
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
storageClassName
string
storageClassName is the name of the StorageClass required by the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
volumeAttributesClassName
string
volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
If specified, the CSI driver will create or update the volume with the attributes defined
in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
will be set by the persistentvolume controller if it exists.
If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
exists.
More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
(Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
volumeMode
string
volumeMode defines what type of volume is required by the claim.
Value of Filesystem is implied when not included in claim spec.
volumeName
string
volumeName is the binding reference to the PersistentVolume backing this claim.
store object
OSDStore is the backend storage type used for creating the OSDs
type
string
Type of backend storage to be used while creating OSDs. If empty, then bluestore will be used
enum:
bluestore, bluestore-rdr
updateStore
string
UpdateStore updates the backend store for existing OSDs. It destroys each OSD one at a time, cleans up the backing disk
and prepares same OSD on that disk
pattern:
^$|^yes-really-update-store$
useAllDevices
boolean
Whether to consume all the storage devices found on a machine
useAllNodes
boolean
volumeClaimTemplates []object
PersistentVolumeClaims to use as storage
metadata object
Standard object's metadata.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
annotations
object
finalizers
[]string
labels
object
name
string
namespace
string
spec object
spec defines the desired characteristics of a volume requested by a pod author.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
accessModes
[]string
accessModes contains the desired access modes the volume should have.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource object
dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
* An existing PVC (PersistentVolumeClaim)
If the provisioner or an external controller can support the specified data source,
it will create a new volume based on the contents of the specified data source.
When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
If the namespace is specified, then dataSourceRef will not be copied to dataSource.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
dataSourceRef object
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
volume is desired. This may be any object from a non-empty API group (non
core object) or a PersistentVolumeClaim object.
When this field is specified, volume binding will only succeed if the type of
the specified object matches some installed volume populator or dynamic
provisioner.
This field will replace the functionality of the dataSource field and as such
if both fields are non-empty, they must have the same value. For backwards
compatibility, when namespace isn't specified in dataSourceRef,
both fields (dataSource and dataSourceRef) will be set to the same
value automatically if one of them is empty and the other is non-empty.
When namespace is specified in dataSourceRef,
dataSource isn't set to the same value and must be empty.
There are three important differences between dataSource and dataSourceRef:
* While dataSource only allows two specific types of objects, dataSourceRef
allows any non-core object, as well as PersistentVolumeClaim objects.
* While dataSource ignores disallowed values (dropping them), dataSourceRef
preserves all values, and generates an error if a disallowed value is
specified.
* While dataSource only allows local objects, dataSourceRef allows objects
in any namespaces.
(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
apiGroup
string
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
kind
string required
Kind is the type of resource being referenced
name
string required
Name is the name of resource being referenced
namespace
string
Namespace is the namespace of resource being referenced
Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
resources object
resources represents the minimum resources the volume should have.
If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
that are lower than previous value but must still be higher than capacity recorded in the
status field of the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
limits
object
Limits describes the maximum amount of compute resources allowed.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
requests
object
Requests describes the minimum amount of compute resources required.
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
selector object
selector is a label query over volumes to consider for binding.
matchExpressions []object
matchExpressions is a list of label selector requirements. The requirements are ANDed.
key
string required
key is the label key that the selector applies to.
operator
string required
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
values
[]string
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
matchLabels
object
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
storageClassName
string
storageClassName is the name of the StorageClass required by the claim.
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
volumeAttributesClassName
string
volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
If specified, the CSI driver will create or update the volume with the attributes defined
in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
will be set by the persistentvolume controller if it exists.
If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
exists.
More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
(Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
volumeMode
string
volumeMode defines what type of volume is required by the claim.
Value of Filesystem is implied when not included in claim spec.
volumeName
string
volumeName is the binding reference to the PersistentVolume backing this claim.
upgradeOSDRequiresHealthyPGs
boolean
UpgradeOSDRequiresHealthyPGs defines if OSD upgrade requires PGs are clean. If set to `true` OSD upgrade process won't start until PGs are healthy.
This configuration will be ignored if `skipUpgradeChecks` is `true`.
Default is false.
waitTimeoutForHealthyOSDInMinutes
integer
WaitTimeoutForHealthyOSDInMinutes defines the time the operator would wait before an OSD can be stopped for upgrade or restart.
If the timeout exceeds and OSD is not ok to stop, then the operator would skip upgrade for the current OSD and proceed with the next one
if `continueUpgradeAfterChecksEvenIfNotHealthy` is `false`. If `continueUpgradeAfterChecksEvenIfNotHealthy` is `true`, then operator would
continue with the upgrade of an OSD even if its not ok to stop after the timeout. This timeout won't be applied if `skipUpgradeChecks` is `true`.
The default wait timeout is 10 minutes.
format:
int64status object
ClusterStatus represents the status of a Ceph cluster
ceph object
CephStatus is the details health of a Ceph Cluster
capacity object
Capacity is the capacity information of a Ceph Cluster
bytesAvailable
integer
format:
int64
bytesTotal
integer
format:
int64
bytesUsed
integer
format:
int64
lastUpdated
string
details
object
fsid
string
health
string
lastChanged
string
lastChecked
string
previousHealth
string
versions object
CephDaemonsVersions show the current ceph version for different ceph daemons
cephfs-mirror
object
CephFSMirror shows CephFSMirror Ceph version
mds
object
Mds shows Mds Ceph version
mgr
object
Mgr shows Mgr Ceph version
mon
object
Mon shows Mon Ceph version
osd
object
Osd shows Osd Ceph version
overall
object
Overall shows overall Ceph version
rbd-mirror
object
RbdMirror shows RbdMirror Ceph version
rgw
object
Rgw shows Rgw Ceph version
conditions []object
lastHeartbeatTime
string
format:
date-time
lastTransitionTime
string
format:
date-time
message
string
reason
string
ConditionReason is a reason for a condition
status
string
type
string
ConditionType represent a resource's status
message
string
observedGeneration
integer
ObservedGeneration is the latest generation observed by the controller.
format:
int64
phase
string
ConditionType represent a resource's status
state
string
ClusterState represents the state of a Ceph Cluster
storage object
CephStorage represents flavors of Ceph Cluster Storage
deprecatedOSDs
object
deviceClasses []object
name
string
osd object
OSDStatus represents OSD status of the ceph Cluster
storeType
object
StoreType is a mapping between the OSD backend stores and number of OSDs using these stores
version object
ClusterVersion represents the version of a Ceph Cluster
image
string
version
string
No matches. Try .spec.cephConfig for an exact path