Architecture¶
This section covers the core concepts of the ceph-provider
project.
The ceph-provider
is an implementor of the ironcore runtime interface
(IRI
) for Volumes
and Buckets
.
It consists of the ceph-volume-provider
and ceph-bucket-provider
in order to implement the VolumeRuntime respectively the BucketRuntime.
A ceph-provider
is usually deployed along with a poollet.
A poollet resolves dependencies, e.g. an encryption secret, and calls with the consolidated resource the ceph-provider
.
The ceph-provider
persists the required state and reconciles the resource in an asynchronous manner.
ceph-volume-provider¶
The ceph-volume-provider
interacts directly with a defined ceph cluster
.
A Volume
is provisioned by creating a ceph image
. If needed, an image is created with a pre-defined os image
.
The following diagram visualizes the interplay of the different components:
graph TD
C([ceph-volume-provider])
P([volumepoollet])
P -- announces --> VP[VolumePool]
P -- watches --> V[Volumes]
P -- uses IRI --> C
C -- creates --> I[Ceph Image]
C -- defines --> VC[Supported VolumeClasses]
ceph-bucket-provider¶
The ceph-bucket-provider
utilizes rook
CRD's to back the ironcore Bucket
resource.
Rook ensures that a ObjectBucketClaim
(and an access secret) is being reconciled.
The following diagram visualizes the interplay of the different components:
graph TD
C([ceph-bucket-provider])
P([bucketpoollet])
R([rook])
P -- announces --> BP[BucketPool]
P -- watches --> B[Buckets]
P -- uses IRI --> C
C -- defines --> VC[Supported BucketClasses]
C -- creates --> OBC[ObjectBucketClaim]
R -- reconciles --> OBC