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