588 lines
30 KiB
Io
588 lines
30 KiB
Io
---
|
|
# Source: rook-ceph/charts/rook-ceph/templates/resources.yaml
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.19.0
|
|
helm.sh/resource-policy: keep
|
|
name: cephobjectzones.ceph.rook.io
|
|
spec:
|
|
group: ceph.rook.io
|
|
names:
|
|
kind: CephObjectZone
|
|
listKind: CephObjectZoneList
|
|
plural: cephobjectzones
|
|
shortNames:
|
|
- cephoz
|
|
singular: cephobjectzone
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- jsonPath: .status.phase
|
|
name: Phase
|
|
type: string
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: Age
|
|
type: date
|
|
name: v1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: CephObjectZone represents a Ceph Object Store Gateway Zone
|
|
properties:
|
|
apiVersion:
|
|
description: |-
|
|
APIVersion defines the versioned schema of this representation of an object.
|
|
Servers should convert recognized schemas to the latest internal value, and
|
|
may reject unrecognized values.
|
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
|
type: string
|
|
kind:
|
|
description: |-
|
|
Kind is a string value representing the REST resource this object represents.
|
|
Servers may infer this from the endpoint the client submits requests to.
|
|
Cannot be updated.
|
|
In CamelCase.
|
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: ObjectZoneSpec represent the spec of an ObjectZone
|
|
properties:
|
|
customEndpoints:
|
|
description: |-
|
|
If this zone cannot be accessed from other peer Ceph clusters via the ClusterIP Service
|
|
endpoint created by Rook, you must set this to the externally reachable endpoint(s). You may
|
|
include the port in the definition. For example: "https://my-object-store.my-domain.net:443".
|
|
In many cases, you should set this to the endpoint of the ingress resource that makes the
|
|
CephObjectStore associated with this CephObjectStoreZone reachable to peer clusters.
|
|
The list can have one or more endpoints pointing to different RGW servers in the zone.
|
|
|
|
If a CephObjectStore endpoint is omitted from this list, that object store's gateways will
|
|
not receive multisite replication data
|
|
(see CephObjectStore.spec.gateway.disableMultisiteSyncTraffic).
|
|
items:
|
|
type: string
|
|
nullable: true
|
|
type: array
|
|
dataPool:
|
|
description: The data pool settings
|
|
nullable: true
|
|
properties:
|
|
application:
|
|
description: The application name to set on the pool. Only expected to be set for rgw pools.
|
|
type: string
|
|
compressionMode:
|
|
description: |-
|
|
DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
|
|
The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
|
|
Do NOT set a default value for kubebuilder as this will override the Parameters
|
|
enum:
|
|
- none
|
|
- passive
|
|
- aggressive
|
|
- force
|
|
- ""
|
|
nullable: true
|
|
type: string
|
|
crushRoot:
|
|
description: The root of the crush hierarchy utilized by the pool
|
|
nullable: true
|
|
type: string
|
|
deviceClass:
|
|
description: The device class the OSD should set to for use in the pool
|
|
nullable: true
|
|
type: string
|
|
enableCrushUpdates:
|
|
description: Allow rook operator to change the pool CRUSH tunables once the pool is created
|
|
nullable: true
|
|
type: boolean
|
|
enableRBDStats:
|
|
description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
|
|
type: boolean
|
|
erasureCoded:
|
|
description: The erasure code settings
|
|
properties:
|
|
algorithm:
|
|
description: |-
|
|
The algorithm for erasure coding.
|
|
If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
|
|
enum:
|
|
- isa
|
|
- jerasure
|
|
type: string
|
|
codingChunks:
|
|
description: |-
|
|
Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
|
|
This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
|
|
minimum: 0
|
|
type: integer
|
|
dataChunks:
|
|
description: |-
|
|
Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
|
|
The number of chunks required to recover an object when any single OSD is lost is the same
|
|
as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
|
|
minimum: 0
|
|
type: integer
|
|
required:
|
|
- codingChunks
|
|
- dataChunks
|
|
type: object
|
|
failureDomain:
|
|
description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
|
|
type: string
|
|
mirroring:
|
|
description: The mirroring settings
|
|
properties:
|
|
enabled:
|
|
description: Enabled whether this pool is mirrored or not
|
|
type: boolean
|
|
mode:
|
|
description: 'Mode is the mirroring mode: pool, image or init-only.'
|
|
enum:
|
|
- pool
|
|
- image
|
|
- init-only
|
|
type: string
|
|
peers:
|
|
description: Peers represents the peers spec
|
|
nullable: true
|
|
properties:
|
|
secretNames:
|
|
description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
snapshotSchedules:
|
|
description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
|
|
items:
|
|
description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
|
|
properties:
|
|
interval:
|
|
description: Interval represent the periodicity of the snapshot.
|
|
type: string
|
|
path:
|
|
description: Path is the path to snapshot, only valid for CephFS
|
|
type: string
|
|
startTime:
|
|
description: StartTime indicates when to start the snapshot
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
parameters:
|
|
additionalProperties:
|
|
type: string
|
|
description: Parameters is a list of properties to enable on a given pool
|
|
nullable: true
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
quotas:
|
|
description: The quota settings
|
|
nullable: true
|
|
properties:
|
|
maxBytes:
|
|
description: |-
|
|
MaxBytes represents the quota in bytes
|
|
Deprecated in favor of MaxSize
|
|
format: int64
|
|
type: integer
|
|
maxObjects:
|
|
description: MaxObjects represents the quota in objects
|
|
format: int64
|
|
type: integer
|
|
maxSize:
|
|
description: MaxSize represents the quota in bytes as a string
|
|
pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
|
|
type: string
|
|
type: object
|
|
replicated:
|
|
description: The replication settings
|
|
properties:
|
|
hybridStorage:
|
|
description: HybridStorage represents hybrid storage tier settings
|
|
nullable: true
|
|
properties:
|
|
primaryDeviceClass:
|
|
description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
|
|
minLength: 1
|
|
type: string
|
|
secondaryDeviceClass:
|
|
description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- primaryDeviceClass
|
|
- secondaryDeviceClass
|
|
type: object
|
|
replicasPerFailureDomain:
|
|
description: ReplicasPerFailureDomain the number of replica in the specified failure domain
|
|
minimum: 1
|
|
type: integer
|
|
requireSafeReplicaSize:
|
|
description: RequireSafeReplicaSize if false allows you to set replica 1
|
|
type: boolean
|
|
size:
|
|
description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
|
|
minimum: 0
|
|
type: integer
|
|
subFailureDomain:
|
|
description: SubFailureDomain the name of the sub-failure domain
|
|
type: string
|
|
targetSizeRatio:
|
|
description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
|
|
minimum: 0
|
|
type: number
|
|
required:
|
|
- size
|
|
type: object
|
|
statusCheck:
|
|
description: The mirroring statusCheck
|
|
properties:
|
|
mirror:
|
|
description: HealthCheckSpec represents the health check of an object store bucket
|
|
nullable: true
|
|
properties:
|
|
disabled:
|
|
type: boolean
|
|
interval:
|
|
description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
|
|
type: string
|
|
timeout:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
type: object
|
|
metadataPool:
|
|
description: The metadata pool settings
|
|
nullable: true
|
|
properties:
|
|
application:
|
|
description: The application name to set on the pool. Only expected to be set for rgw pools.
|
|
type: string
|
|
compressionMode:
|
|
description: |-
|
|
DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
|
|
The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
|
|
Do NOT set a default value for kubebuilder as this will override the Parameters
|
|
enum:
|
|
- none
|
|
- passive
|
|
- aggressive
|
|
- force
|
|
- ""
|
|
nullable: true
|
|
type: string
|
|
crushRoot:
|
|
description: The root of the crush hierarchy utilized by the pool
|
|
nullable: true
|
|
type: string
|
|
deviceClass:
|
|
description: The device class the OSD should set to for use in the pool
|
|
nullable: true
|
|
type: string
|
|
enableCrushUpdates:
|
|
description: Allow rook operator to change the pool CRUSH tunables once the pool is created
|
|
nullable: true
|
|
type: boolean
|
|
enableRBDStats:
|
|
description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
|
|
type: boolean
|
|
erasureCoded:
|
|
description: The erasure code settings
|
|
properties:
|
|
algorithm:
|
|
description: |-
|
|
The algorithm for erasure coding.
|
|
If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
|
|
enum:
|
|
- isa
|
|
- jerasure
|
|
type: string
|
|
codingChunks:
|
|
description: |-
|
|
Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
|
|
This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
|
|
minimum: 0
|
|
type: integer
|
|
dataChunks:
|
|
description: |-
|
|
Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
|
|
The number of chunks required to recover an object when any single OSD is lost is the same
|
|
as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
|
|
minimum: 0
|
|
type: integer
|
|
required:
|
|
- codingChunks
|
|
- dataChunks
|
|
type: object
|
|
failureDomain:
|
|
description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
|
|
type: string
|
|
mirroring:
|
|
description: The mirroring settings
|
|
properties:
|
|
enabled:
|
|
description: Enabled whether this pool is mirrored or not
|
|
type: boolean
|
|
mode:
|
|
description: 'Mode is the mirroring mode: pool, image or init-only.'
|
|
enum:
|
|
- pool
|
|
- image
|
|
- init-only
|
|
type: string
|
|
peers:
|
|
description: Peers represents the peers spec
|
|
nullable: true
|
|
properties:
|
|
secretNames:
|
|
description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
snapshotSchedules:
|
|
description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
|
|
items:
|
|
description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
|
|
properties:
|
|
interval:
|
|
description: Interval represent the periodicity of the snapshot.
|
|
type: string
|
|
path:
|
|
description: Path is the path to snapshot, only valid for CephFS
|
|
type: string
|
|
startTime:
|
|
description: StartTime indicates when to start the snapshot
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
parameters:
|
|
additionalProperties:
|
|
type: string
|
|
description: Parameters is a list of properties to enable on a given pool
|
|
nullable: true
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
quotas:
|
|
description: The quota settings
|
|
nullable: true
|
|
properties:
|
|
maxBytes:
|
|
description: |-
|
|
MaxBytes represents the quota in bytes
|
|
Deprecated in favor of MaxSize
|
|
format: int64
|
|
type: integer
|
|
maxObjects:
|
|
description: MaxObjects represents the quota in objects
|
|
format: int64
|
|
type: integer
|
|
maxSize:
|
|
description: MaxSize represents the quota in bytes as a string
|
|
pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
|
|
type: string
|
|
type: object
|
|
replicated:
|
|
description: The replication settings
|
|
properties:
|
|
hybridStorage:
|
|
description: HybridStorage represents hybrid storage tier settings
|
|
nullable: true
|
|
properties:
|
|
primaryDeviceClass:
|
|
description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
|
|
minLength: 1
|
|
type: string
|
|
secondaryDeviceClass:
|
|
description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- primaryDeviceClass
|
|
- secondaryDeviceClass
|
|
type: object
|
|
replicasPerFailureDomain:
|
|
description: ReplicasPerFailureDomain the number of replica in the specified failure domain
|
|
minimum: 1
|
|
type: integer
|
|
requireSafeReplicaSize:
|
|
description: RequireSafeReplicaSize if false allows you to set replica 1
|
|
type: boolean
|
|
size:
|
|
description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
|
|
minimum: 0
|
|
type: integer
|
|
subFailureDomain:
|
|
description: SubFailureDomain the name of the sub-failure domain
|
|
type: string
|
|
targetSizeRatio:
|
|
description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
|
|
minimum: 0
|
|
type: number
|
|
required:
|
|
- size
|
|
type: object
|
|
statusCheck:
|
|
description: The mirroring statusCheck
|
|
properties:
|
|
mirror:
|
|
description: HealthCheckSpec represents the health check of an object store bucket
|
|
nullable: true
|
|
properties:
|
|
disabled:
|
|
type: boolean
|
|
interval:
|
|
description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
|
|
type: string
|
|
timeout:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
type: object
|
|
preservePoolsOnDelete:
|
|
default: true
|
|
description: Preserve pools on object zone deletion
|
|
type: boolean
|
|
sharedPools:
|
|
description: The pool information when configuring RADOS namespaces in existing pools.
|
|
nullable: true
|
|
properties:
|
|
dataPoolName:
|
|
description: The data pool used for creating RADOS namespaces in the object store
|
|
type: string
|
|
x-kubernetes-validations:
|
|
- message: object store shared data pool is immutable
|
|
rule: self == oldSelf
|
|
metadataPoolName:
|
|
description: The metadata pool used for creating RADOS namespaces in the object store
|
|
type: string
|
|
x-kubernetes-validations:
|
|
- message: object store shared metadata pool is immutable
|
|
rule: self == oldSelf
|
|
poolPlacements:
|
|
description: |-
|
|
PoolPlacements control which Pools are associated with a particular RGW bucket.
|
|
Once PoolPlacements are defined, RGW client will be able to associate pool
|
|
with ObjectStore bucket by providing "<LocationConstraint>" during s3 bucket creation
|
|
or "X-Storage-Policy" header during swift container creation.
|
|
See: https://docs.ceph.com/en/latest/radosgw/placement/#placement-targets
|
|
PoolPlacement with name: "default" will be used as a default pool if no option
|
|
is provided during bucket creation.
|
|
If default placement is not provided, spec.sharedPools.dataPoolName and spec.sharedPools.MetadataPoolName will be used as default pools.
|
|
If spec.sharedPools are also empty, then RGW pools (spec.dataPool and spec.metadataPool) will be used as defaults.
|
|
items:
|
|
properties:
|
|
dataNonECPoolName:
|
|
description: |-
|
|
The data pool used to store ObjectStore data that cannot use erasure coding (ex: multi-part uploads).
|
|
If dataPoolName is not erasure coded, then there is no need for dataNonECPoolName.
|
|
type: string
|
|
dataPoolName:
|
|
description: The data pool used to store ObjectStore objects data.
|
|
minLength: 1
|
|
type: string
|
|
default:
|
|
description: |-
|
|
Sets given placement as default. Only one placement in the list can be marked as default.
|
|
Default is false.
|
|
type: boolean
|
|
metadataPoolName:
|
|
description: The metadata pool used to store ObjectStore bucket index.
|
|
minLength: 1
|
|
type: string
|
|
name:
|
|
description: Pool placement name. Name can be arbitrary. Placement with name "default" will be used as default.
|
|
minLength: 1
|
|
pattern: ^[a-zA-Z0-9._/-]+$
|
|
type: string
|
|
storageClasses:
|
|
description: |-
|
|
StorageClasses can be selected by user to override dataPoolName during object creation.
|
|
Each placement has default STANDARD StorageClass pointing to dataPoolName.
|
|
This list allows defining additional StorageClasses on top of default STANDARD storage class.
|
|
items:
|
|
properties:
|
|
dataPoolName:
|
|
description: DataPoolName is the data pool used to store ObjectStore objects data.
|
|
minLength: 1
|
|
type: string
|
|
name:
|
|
description: |-
|
|
Name is the StorageClass name. Ceph allows arbitrary name for StorageClasses,
|
|
however most clients/libs insist on AWS names so it is recommended to use
|
|
one of the valid x-amz-storage-class values for better compatibility:
|
|
REDUCED_REDUNDANCY | STANDARD_IA | ONEZONE_IA | INTELLIGENT_TIERING | GLACIER | DEEP_ARCHIVE | OUTPOSTS | GLACIER_IR | SNOW | EXPRESS_ONEZONE
|
|
See AWS docs: https://aws.amazon.com/de/s3/storage-classes/
|
|
minLength: 1
|
|
pattern: ^[a-zA-Z0-9._/-]+$
|
|
type: string
|
|
required:
|
|
- dataPoolName
|
|
- name
|
|
type: object
|
|
type: array
|
|
required:
|
|
- dataPoolName
|
|
- metadataPoolName
|
|
- name
|
|
type: object
|
|
type: array
|
|
preserveRadosNamespaceDataOnDelete:
|
|
description: Whether the RADOS namespaces should be preserved on deletion of the object store
|
|
type: boolean
|
|
type: object
|
|
zoneGroup:
|
|
description: The name of the zone group the zone is a member of.
|
|
type: string
|
|
required:
|
|
- zoneGroup
|
|
type: object
|
|
status:
|
|
description: Status represents the status of an object
|
|
properties:
|
|
conditions:
|
|
items:
|
|
description: Condition represents a status condition on any Rook-Ceph Custom Resource.
|
|
properties:
|
|
lastHeartbeatTime:
|
|
format: date-time
|
|
type: string
|
|
lastTransitionTime:
|
|
format: date-time
|
|
type: string
|
|
message:
|
|
type: string
|
|
reason:
|
|
description: ConditionReason is a reason for a condition
|
|
type: string
|
|
status:
|
|
type: string
|
|
type:
|
|
description: ConditionType represent a resource's status
|
|
type: string
|
|
type: object
|
|
type: array
|
|
observedGeneration:
|
|
description: ObservedGeneration is the latest generation observed by the controller.
|
|
format: int64
|
|
type: integer
|
|
phase:
|
|
type: string
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
required:
|
|
- metadata
|
|
- spec
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|