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
cephConfigFromSecret
object
CephConfigFromSecret works exactly like CephConfig but takes config value from Secret Key reference.
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
wipeDevicesFromOtherClusters
boolean
WipeDevicesFromOtherClusters wipes the OSD disks belonging to other clusters. This is useful in scenarios where ceph cluster
was reinstalled but OSD disk still contains the metadata from previous ceph cluster.
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.
skipUserCreation
boolean
SkipUserCreation determines whether CSI users and their associated secrets should be skipped.
If set to true, the user must manually manage these secrets.
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
DEPRECATED: PGHealthCheckTimeout is no longer implemented
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|deep|scrubbing|snaptrim|snaptrim_wait))+$`
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:
5
hostNetwork
boolean
Whether host networking is enabled for the Ceph Mgr. If not set, the network settings from CephCluster.spec.networking will be applied.
modules []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
externalMonIDs
[]string
ExternalMonIDs - optional list of monitor IDs which are deployed externally and not managed by Rook.
If set, Rook will not remove mons with given IDs from quorum.
This parameter is used only for local Rook cluster running in normal mode
and will be ignored if external or stretched mode is used.
leading
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.
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 or nil value indicates that no
VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
this field can be reset to its previous value (including nil) to cancel the modification.
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/
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.
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 or nil value indicates that no
VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
this field can be reset to its previous value (including nil) to cancel the modification.
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/
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.
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 or nil value indicates that no
VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
this field can be reset to its previous value (including nil) to cancel the modification.
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/
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
hostNetwork
boolean
Whether host networking is enabled for CephExporter. If not set, the network settings from CephCluster.spec.networking will be applied.
perfCountersPrioLimit
integer
Only performance counters greater than or equal to this option are fetched
format:
int64
port
integer
Port is the listening port of the ceph-exporter process. Defaults to 9926.
format:
int32minimum:
1maximum:
65535
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
cephx object
CephX configures CephX key settings. More: https://docs.ceph.com/en/latest/dev/cephx/
csi object
CSI configures CephX key rotation settings for the Ceph-CSI daemons in the current Kubernetes cluster.
CSI key rotation can affect existing PV connections, so take care when exercising this option.
keepPriorKeyCountMax
integer
KeepPriorKeyCountMax tells Rook how many prior keys to keep active.
Generally, this would be set to 1 to allow for a migration period for applications.
If desired, set this to 0 to delete prior keys after migration.
This config only applies to prior keys that already exist.
If PriorKeyCount is set to 2 while only a single key currently exists, only a single prior key will be kept,
and the reported status will only indicate the actual number of prior keys,
not necessarily a reflection of PriorKeyCount config here.
minimum:
0maximum:
10
keyGeneration
integer
KeyGeneration specifies the desired CephX key generation. This is used when KeyRotationPolicy
is KeyGeneration and ignored for other policies. If this is set to greater than the current
key generation, relevant keys will be rotated, and the generation value will be updated to
this new value (generation values are not necessarily incremental, though that is the
intended use case). If this is set to less than or equal to the current key generation, keys
are not rotated.
format:
int32minimum:
0maximum:
4.294967295e+09
keyRotationPolicy
string
KeyRotationPolicy controls if and when CephX keys are rotated after initial creation.
One of Disabled, or KeyGeneration. Default Disabled.
enum:
, Disabled, KeyGenerationdaemon object
Daemon configures CephX key settings for local Ceph daemons managed by Rook and part of the
Ceph cluster. Daemon CephX keys can be rotated without affecting client connections.
keyGeneration
integer
KeyGeneration specifies the desired CephX key generation. This is used when KeyRotationPolicy
is KeyGeneration and ignored for other policies. If this is set to greater than the current
key generation, relevant keys will be rotated, and the generation value will be updated to
this new value (generation values are not necessarily incremental, though that is the
intended use case). If this is set to less than or equal to the current key generation, keys
are not rotated.
format:
int32minimum:
0maximum:
4.294967295e+09
keyRotationPolicy
string
KeyRotationPolicy controls if and when CephX keys are rotated after initial creation.
One of Disabled, or KeyGeneration. Default Disabled.
enum:
, Disabled, KeyGenerationrbdMirrorPeer object
RBDMirrorPeer configures CephX key settings of the `rbd-mirror-peer` user that is used for creating
bootstrap peer token used connect peer clusters. Rotating the `rbd-mirror-peer` user key will update
the mirror peer token.
Rotation will affect any existing peers connected to this cluster, so take care when exercising this option.
keyGeneration
integer
KeyGeneration specifies the desired CephX key generation. This is used when KeyRotationPolicy
is KeyGeneration and ignored for other policies. If this is set to greater than the current
key generation, relevant keys will be rotated, and the generation value will be updated to
this new value (generation values are not necessarily incremental, though that is the
intended use case). If this is set to less than or equal to the current key generation, keys
are not rotated.
format:
int32minimum:
0maximum:
4.294967295e+09
keyRotationPolicy
string
KeyRotationPolicy controls if and when CephX keys are rotated after initial creation.
One of Disabled, or KeyGeneration. Default Disabled.
enum:
, Disabled, KeyGenerationkeyRotation object
KeyRotation defines options for rotation of OSD disk encryption keys.
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:
1migration object
Migration handles the OSD migration
confirmation
string
A user confirmation to migrate the OSDs. It destroys each OSD one at a time, cleans up the backing disk
and prepares OSD with same ID on that disk
pattern:
^$|^yes-really-migrate-osds$
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 field depends on 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.
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 or nil value indicates that no
VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
this field can be reset to its previous value (including nil) to cancel the modification.
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/
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
osdMaxUpdatesInParallel
integer
The maximum number of OSDs to update in parallel.
format:
int32minimum:
1
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 field depends on 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.
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 or nil value indicates that no
VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
this field can be reset to its previous value (including nil) to cancel the modification.
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/
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.
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 or nil value indicates that no
VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
this field can be reset to its previous value (including nil) to cancel the modification.
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/
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
cephx object
ClusterCephxStatus defines the cephx key rotation status of various daemons on the cephCluster resource
admin object
Admin shows the CephX key status for the client.admin key
keyCephVersion
string
KeyCephVersion reports the Ceph version that created the current generation's keys. This is
same string format as reported by `CephCluster.status.version.version` to allow them to be
compared. E.g., `20.2.0-0`.
For all newly-created resources, this field set to the version of Ceph that created the key.
The special value "Uninitialized" indicates that keys are being created for the first time.
An empty string indicates that the version is unknown, as expected in brownfield deployments.
keyGeneration
integer
KeyGeneration represents the CephX key generation for the last successful reconcile.
For all newly-created resources, this field is set to `1`.
When keys are rotated due to any rotation policy, the generation is incremented or updated to
the configured policy generation.
Generation `0` indicates that keys existed prior to the implementation of key tracking.
format:
int32cephExporter object
Ceph Exporter represents the cephx key rotation status of the ceph exporter daemon
keyCephVersion
string
KeyCephVersion reports the Ceph version that created the current generation's keys. This is
same string format as reported by `CephCluster.status.version.version` to allow them to be
compared. E.g., `20.2.0-0`.
For all newly-created resources, this field set to the version of Ceph that created the key.
The special value "Uninitialized" indicates that keys are being created for the first time.
An empty string indicates that the version is unknown, as expected in brownfield deployments.
keyGeneration
integer
KeyGeneration represents the CephX key generation for the last successful reconcile.
For all newly-created resources, this field is set to `1`.
When keys are rotated due to any rotation policy, the generation is incremented or updated to
the configured policy generation.
Generation `0` indicates that keys existed prior to the implementation of key tracking.
format:
int32crashCollector object
Crash Collector represents the cephx key rotation status of the crash collector daemon
keyCephVersion
string
KeyCephVersion reports the Ceph version that created the current generation's keys. This is
same string format as reported by `CephCluster.status.version.version` to allow them to be
compared. E.g., `20.2.0-0`.
For all newly-created resources, this field set to the version of Ceph that created the key.
The special value "Uninitialized" indicates that keys are being created for the first time.
An empty string indicates that the version is unknown, as expected in brownfield deployments.
keyGeneration
integer
KeyGeneration represents the CephX key generation for the last successful reconcile.
For all newly-created resources, this field is set to `1`.
When keys are rotated due to any rotation policy, the generation is incremented or updated to
the configured policy generation.
Generation `0` indicates that keys existed prior to the implementation of key tracking.
format:
int32csi object
CSI shows the CephX key status for Ceph-CSI components.
keyCephVersion
string
KeyCephVersion reports the Ceph version that created the current generation's keys. This is
same string format as reported by `CephCluster.status.version.version` to allow them to be
compared. E.g., `20.2.0-0`.
For all newly-created resources, this field set to the version of Ceph that created the key.
The special value "Uninitialized" indicates that keys are being created for the first time.
An empty string indicates that the version is unknown, as expected in brownfield deployments.
keyGeneration
integer
KeyGeneration represents the CephX key generation for the last successful reconcile.
For all newly-created resources, this field is set to `1`.
When keys are rotated due to any rotation policy, the generation is incremented or updated to
the configured policy generation.
Generation `0` indicates that keys existed prior to the implementation of key tracking.
format:
int32
priorKeyCount
integer
PriorKeyCount reports the number of prior-generation CephX keys that remain active for the related component
mgr object
Mgr represents the cephx key rotation status of the ceph manager daemon
keyCephVersion
string
KeyCephVersion reports the Ceph version that created the current generation's keys. This is
same string format as reported by `CephCluster.status.version.version` to allow them to be
compared. E.g., `20.2.0-0`.
For all newly-created resources, this field set to the version of Ceph that created the key.
The special value "Uninitialized" indicates that keys are being created for the first time.
An empty string indicates that the version is unknown, as expected in brownfield deployments.
keyGeneration
integer
KeyGeneration represents the CephX key generation for the last successful reconcile.
For all newly-created resources, this field is set to `1`.
When keys are rotated due to any rotation policy, the generation is incremented or updated to
the configured policy generation.
Generation `0` indicates that keys existed prior to the implementation of key tracking.
format:
int32mon object
Mon represents the CephX key status of the Monitor daemons
keyCephVersion
string
KeyCephVersion reports the Ceph version that created the current generation's keys. This is
same string format as reported by `CephCluster.status.version.version` to allow them to be
compared. E.g., `20.2.0-0`.
For all newly-created resources, this field set to the version of Ceph that created the key.
The special value "Uninitialized" indicates that keys are being created for the first time.
An empty string indicates that the version is unknown, as expected in brownfield deployments.
keyGeneration
integer
KeyGeneration represents the CephX key generation for the last successful reconcile.
For all newly-created resources, this field is set to `1`.
When keys are rotated due to any rotation policy, the generation is incremented or updated to
the configured policy generation.
Generation `0` indicates that keys existed prior to the implementation of key tracking.
format:
int32osd object
OSD shows the CephX key status of of OSDs
keyCephVersion
string
KeyCephVersion reports the Ceph version that created the current generation's keys. This is
same string format as reported by `CephCluster.status.version.version` to allow them to be
compared. E.g., `20.2.0-0`.
For all newly-created resources, this field set to the version of Ceph that created the key.
The special value "Uninitialized" indicates that keys are being created for the first time.
An empty string indicates that the version is unknown, as expected in brownfield deployments.
keyGeneration
integer
KeyGeneration represents the CephX key generation for the last successful reconcile.
For all newly-created resources, this field is set to `1`.
When keys are rotated due to any rotation policy, the generation is incremented or updated to
the configured policy generation.
Generation `0` indicates that keys existed prior to the implementation of key tracking.
format:
int32rbdMirrorPeer object
RBDMirrorPeer represents the cephx key rotation status of the `rbd-mirror-peer` user
keyCephVersion
string
KeyCephVersion reports the Ceph version that created the current generation's keys. This is
same string format as reported by `CephCluster.status.version.version` to allow them to be
compared. E.g., `20.2.0-0`.
For all newly-created resources, this field set to the version of Ceph that created the key.
The special value "Uninitialized" indicates that keys are being created for the first time.
An empty string indicates that the version is unknown, as expected in brownfield deployments.
keyGeneration
integer
KeyGeneration represents the CephX key generation for the last successful reconcile.
For all newly-created resources, this field is set to `1`.
When keys are rotated due to any rotation policy, the generation is incremented or updated to
the configured policy generation.
Generation `0` indicates that keys existed prior to the implementation of key tracking.
format:
int32conditions []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
migrationStatus object
MigrationStatus status represents the current status of any OSD migration.
pending
integer
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