---
title: "Object storage\n    | Ubuntu"
description: Ubuntu is an open source software operating system that runs from the
  desktop, to the cloud, to all your internet connected things.
url: https://ubuntu.com/ceph/docs/object-storage?format=md
keywords: index, follow
---

*Submit*

# Object storage

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](https://jaas.ai/hacluster) charm (and typically a VIP).

### [RGW deployment](https://ubuntu.com/ceph/docs/object-storage?format=md#rgw-deployment)

To deploy a single RADOS Gateway in a pre-existing Ceph cluster:

```
juju deploy --to lxd:0 ceph-radosgw
juju integrate 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 integrate radosgw-hacluster:ha ceph-radosgw:ha
juju integrate ceph-radosgw:mon ceph-mon:radosgw
```

The RADOS Gateway is now fully set up.

### [RGW client usage](https://ubuntu.com/ceph/docs/object-storage?format=md#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](https://ubuntu.com/ceph/docs/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](https://docs.min.io/docs/minio-client-complete-guide).

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  3.5.2    unsupported  20:34:16Z

App           Version  Status  Scale  Charm         Channel       Rev  OS      Notes
ceph-mon      18.2.0   active      3  ceph-mon      reef/stable    93  ubuntu
ceph-osd      18.2.0   active      3  ceph-osd      reef/stable   528  ubuntu
ceph-radosgw  18.2.0   active      3  ceph-radosgw  reef/stable   574  ubuntu
ceph-client   22.04    active      1  ubuntu        stable         18  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 `ceph-client/0` unit.

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: `http://10.0.0.239:80`
* access key: `N3STUWYGY9Q6W92YLO1P`
* secret key: `wED4WGGkC5LAy29ZmbjkIW7nN2hbHXaJuC6yDoJX`

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
```

---

[Previous

Ceph architecture](https://ubuntu.com/ceph/docs/ceph-architecture)
[Next

Block storage](https://ubuntu.com/ceph/docs/block-storage)

This page was last modified 2 years ago. [Help improve this document in the forum](https://discourse.ubuntu.com/t/object-storage/18819).
