Manage Ceph RBD or CephFS clients#
The CephDeployment custom resource (CR) allows managing custom Ceph RADOS Block Device (RBD)
or Ceph File System (CephFS) clients. This section describes how to create,
access, and remove Ceph RBD or CephFS clients.
For all supported parameters of Ceph clients, refer to CephxClients parameters.
Create an RBD or CephFS client#
-
Edit the
CephDeploymentCR by adding a new Ceph client to thespecsection:kubectl -n pelagia edit cephdplExample of adding an RBD client to the
kubernetes-ssdpool:spec: cephxClients: - spec: name: rbd-client caps: mon: allow r, allow command "osd blacklist" osd: profile rbd pool=kubernetes-ssdExample of adding a CephFS client to the
cephfs-1Ceph File System:spec: cephxClients: - spec: name: cephfs-1-client caps: mds: allow rw mon: allow r, allow command "osd blacklist" osd: allow rw tag cephfs data=cephfs-1 metadata=*For details about
caps, refer to Ceph documentation: Authorization (capabilities). -
Wait for created clients to become ready in the
CephDeploymentHealthCR status:kubectl -n pelagia get cephdeploymenthealth -o yamlExample output:
status: healthReport: rookCephObjects: cephClients: rbd-client: info: secretName: rook-ceph-client-rbd-client observedGeneration: 1 phase: Ready cephfs-1-client: info: secretName: rook-ceph-client-cephfs-1-client observedGeneration: 1 phase: Ready
Access data using an RBD or CephFS client#
-
Using the
CephDeploymentSecretstatus, obtainsecretInfowith the Ceph client credentials:kubectl -n pelagia get cephdeploymentsecret -o yamlExample output:
status: secretInfo: clientSecrets: - name: client.rbd-client secretName: rook-ceph-client-rbd-client secretNamespace: rook-ceph - name: client.cephfs-1-client secretName: rook-ceph-client-cephfs-1-client secretNamespace: rook-ceph -
Use
secretNameandsecretNamespaceto access the Ceph client credentials:kubectl -n <secretNamespace> get secret <secretName> -o jsonpath='{.data.<clientName>}' | base64 -d; echoSubstitute the following parameters:
<secretNamespace>withsecretNamespacefrom the previous step;<secretName>withsecretNamefrom the previous step;<clientName>with the Ceph RBD or CephFS client name set inspec.cephxClients[].spec.nameof theCephDeploymentresource, for example,rbd-client.
Example output:
AQAGHDNjxWYXJhAAjafCn3EtC6KgzgI1x4XDlg== -
Using the obtained credentials, create two configuration files on the required workloads to connect them with Ceph pools or file systems:
-
/etc/ceph/ceph.conf:[global] mon_host = <mon1IP>:6789,<mon2IP>:6789,...,<monNIP>:6789where
mon_hostare the comma-separated IP addresses with6789ports of the current Ceph Monitors. For example,10.10.0.145:6789,10.10.0.153:6789,10.10.0.235:6789. -
/etc/ceph/ceph.client.<clientName>.keyring:[client.<clientName>] key = <cephClientCredentials><clientName>is a client name set inspec.cephxClients[].spec.nameof theCephDeploymentresource. For example,rbd-client.<cephClientCredentials>are the client credentials obtained in the previous steps. For example,AQAGHDNjxWYXJhAAjafCn3EtC6KgzgI1x4XDlg==.
-
-
If the client
capsparameters containmon: allow r, verify the client access using the following command:ceph -n client.<clientName> -s
Remove an RBD or CephFS client#
-
Edit the
CephDeploymentCR by removing the Ceph client fromspec.cephxClients:kubectl -n pelagia edit cephdpl -
Wait for the client to be removed from the
CephDeploymentstatus instatus.healthReport.rookCephObjects.cephClients:kubectl -n pelagia get cephdeploymenthealth -o yaml
Manage the default OpenStack clients using the CephDeployment spec#
To take full control of the CephClient resources that Pelagia creates
automatically, define them in the CephDeployment spec. The following example
illustrates how to manage the default CephClient for the OpenStack Nova service.
-
Obtain the current
CephClientname for the OpenStack Nova service:kubectl -n rook-ceph get cephclient -l cephdeployment.lcm.mirantis.com/client-role=novaExample output:
NAME PHASE AGE nova-y5ucvajlxscd Ready 15m -
Obtain the spec of this client:
kubectl get cephclients -n rook-ceph -o yaml nova-y5ucvajlxscdExample output:
apiVersion: ceph.rook.io/v1 kind: CephClient metadata: creationTimestamp: "2026-10-19T13:58:30Z" finalizers: - cephclient.ceph.rook.io generation: 1 labels: app.kubernetes.io/created-by: pelagia-deployment-controller app.kubernetes.io/managed-by: pelagia-deployment-controller app.kubernetes.io/part-of: ceph.pelagia.lcm cephdeployment.lcm.mirantis.com/client-role: nova cephdeployment.lcm.mirantis.com/client-rotation: "0" name: nova-y5ucvajlxscd namespace: rook-ceph resourceVersion: "24182" uid: c6e436c7-bd15-440d-b10c-bfc39b4d7f11 spec: caps: mon: allow profile rbd osd: profile rbd pool=vms-hdd, profile rbd pool=images-hdd, profile rbd pool=volumes-hdd name: nova_Y5UCvaJlxScd security: cephx: {} status: cephx: keyCephVersion: 20.2.4-0 keyGeneration: 1 info: secretName: rook-ceph-client-nova-y5ucvajlxscd observedGeneration: 1 phase: Ready -
Copy the
specsection as is to theCephDeploymentspec and assign the related role:spec: cephxClients: - role: nova spec: caps: mon: allow profile rbd osd: profile rbd pool=vms-hdd, profile rbd pool=images-hdd, profile rbd pool=volumes-hdd name: nova_Y5UCvaJlxScd -
Save the changes and verify
CephClient:kubectl -n rook-ceph get cephclient nova-y5ucvajlxscd -o yamlExample output:
apiVersion: ceph.rook.io/v1 kind: CephClient metadata: creationTimestamp: "2026-10-19T13:58:30Z" finalizers: - cephclient.ceph.rook.io generation: 1 labels: app.kubernetes.io/created-by: pelagia-deployment-controller app.kubernetes.io/managed-by: pelagia-deployment-controller app.kubernetes.io/part-of: ceph.pelagia.lcm cephdeployment.lcm.mirantis.com/client-latest: "true" cephdeployment.lcm.mirantis.com/client-role: nova name: nova-y5ucvajlxscd namespace: rook-ceph resourceVersion: "45362" uid: c6e436c7-bd15-440d-b10c-bfc39b4d7f11 spec: caps: mon: allow profile rbd osd: profile rbd pool=vms-hdd, profile rbd pool=images-hdd, profile rbd pool=volumes-hdd name: nova_Y5UCvaJlxScd security: cephx: {} status: cephx: keyCephVersion: 20.2.4-0 keyGeneration: 1 info: secretName: rook-ceph-client-nova-y5ucvajlxscd observedGeneration: 1 phase: Ready
If the CephDeployment spec defines no other CephClient with the nova role,
this CephClient now has the cephdeployment.lcm.mirantis.com/client-latest label
but not the cephdeployment.lcm.mirantis.com/client-rotation label.
Note
spec.extraOpts.rotateOsClients applies only to the OpenStack clients that
Pelagia creates by default. A client defined in the CephDeployment spec is
no longer managed as a default client. To rotate it, add a new item with the
same role to spec.cephxClients. For details, see
ExtraOpts parameters.