All the services available through Ceph are built on top of Ceph’s distributed object store, RADOS.
The ceph-radosgw charm deploys the RADOS Gateway (RGW), a S3 and Swift compatible HTTP gateway. The deployment is done within the context of an existing Charmed Ceph cluster.
Highly available RGW is achieved by deploying multiple gateways (i.e. multiple ceph-radosgw application units) in combination with the hacluster charm (and typically a VIP).
To deploy a single RADOS Gateway in a pre-existing Ceph cluster:
juju deploy --to lxd:0 ceph-radosgw juju add-relation ceph-radosgw:mon ceph-mon:radosgw
Here the ceph-radosgw unit is containerised, where the new container is placed on existing machine 0.
For an HA scenario, to deploy a three-node cluster:
juju deploy --config cluster_count=3 hacluster radosgw-hacluster juju deploy -n 3 --to lxd:0,lxd:1,lxd:2 --config vip=10.0.0.100 ceph-radosgw juju add-relation radosgw-hacluster:ha ceph-radosgw:ha juju add-relation ceph-radosgw:mon ceph-mon:radosgw
The RADOS Gateway is now fully set up.
RGW client usage
This section will provide optional instructions for verifying the RADOS Gateway by setting up a simple client environment using a single ceph-radosgw unit. Deploy the client using the steps provided in the Client setup appendix.
Create a user for the Ceph Object Gateway service (e.g. ‘ubuntu’):
juju ssh ceph-mon/0 'sudo radosgw-admin user create \ --uid="ubuntu" --display-name="Charmed Ceph"'
The command output will include an “access key” and a “secret key”, both of which will be needed later on, but the following command can be used to query for them:
juju ssh ceph-mon/0 'sudo radosgw-admin user info \ --uid ubuntu' | grep -e access_key -e secret_key
The software client used for these instructions will be minio-mc-nsg.
An example deployment will have a
juju status output similar to the following:
Model Controller Cloud/Region Version SLA Timestamp ceph my-controller my-maas/default 2.8.1 unsupported 20:34:16Z App Version Status Scale Charm Store Rev OS Notes ceph-mon 15.2.3 active 3 ceph-mon jujucharms 49 ubuntu ceph-osd 15.2.3 active 3 ceph-osd jujucharms 304 ubuntu ceph-radosgw 15.2.3 active 3 ceph-radosgw jujucharms 290 ubuntu ceph-client 20.04 active 1 ubuntu jujucharms 15 ubuntu Unit Workload Agent Machine Public address Ports Message ceph-client/0* active idle 3 10.0.0.240 ready ceph-mon/0 active idle 0/lxd/1 10.0.0.247 Unit is ready and clustered ceph-mon/1 active idle 1/lxd/1 10.0.0.242 Unit is ready and clustered ceph-mon/2* active idle 2/lxd/1 10.0.0.249 Unit is ready and clustered ceph-osd/0 active idle 0 10.0.0.229 Unit is ready (2 OSD) ceph-osd/1* active idle 1 10.0.0.230 Unit is ready (2 OSD) ceph-osd/2 active idle 2 10.0.0.252 Unit is ready (2 OSD) ceph-radosgw/0* active idle 0/lxd/2 10.0.0.239 80/tcp Unit is ready
The client host is represented by the
Connect to the client:
juju ssh ceph-client/0
From the RGW client,
Install the Object storage client software:
sudo snap install minio-mc-nsg sudo snap alias minio-mc-nsg mc
For this example deployment, we have the following:
- service IP address and port:
- access key:
- secret key:
Add a host entry (e.g. ‘ceph-radosgw’) to the client and configure the client using the above values:
mc config host add ceph-radosgw \ http://10.0.0.239:80 N3STUWYGY9Q6W92YLO1P \ wED4WGGkC5LAy29ZmbjkIW7nN2hbHXaJuC6yDoJX
Verify that the client can interact with the service by creating a “bucket” and writing to it:
mc mb ceph-radosgw/mybucket touch test mc cp test ceph-radosgw/mybucket