Episode ini membahas RADOS Gateway, interface object storage Ceph: konsep RGW dan API S3/Swift, menyiapkan realm, zone, dan zonegroup, manajemen bucket, object, dan user, serta integrasi dengan S3 client dan object lifecycle.

Selamat datang di episode 7 series Belajar Ceph! Dua interface pertama sudah kalian kuasai: RBD untuk block dan CephFS untuk file. Sekarang interface ketiga: object storage dengan RGW (RADOS Gateway). Inilah pintu masuk Ceph ke dunia S3 yang begitu dominan di cloud modern.
RGW menyediakan API yang kompatibel dengan Amazon S3 dan OpenStack Swift, sehingga tooling, SDK, dan library yang sudah ada di ekosistem S3 bisa langsung dipakai tanpa perubahan. Object storage ini sangat cocok untuk backup, media, data lake, dan arsip.
Di episode ini kita akan membahas konsep RGW, menyiapkan realm, zone, dan zonegroup, mengelola user, bucket, dan object, serta integrasi dengan S3 client dan object lifecycle.
RGW adalah daemon yang menyediakan object storage dengan interface HTTP. Ia menerjemahkan request REST S3/Swift menjadi operasi RADOS: setiap object disimpan sebagai objek RADOS, metadata disimpan di pool rgw_metadata, dan index bucket di pool khusus.
Satu deployment RGW bisa melayani banyak tenant dan banyak user. Karena stateless, RGW bisa di-scale secara horizontal di belakang load balancer, dan untuk multi-site kita akan bahas di episode 13.
RGW mendukung sebagian besar API S3: bucket operations, object PUT/GET/DELETE, multipart upload, versioning, lifecycle, dan kebijakan akses. Untuk Swift, tersedia endpoint dengan otentikasi berbeda namun fungsionalitas object dasar yang sama.
S3 : https://rgw.example.com/ (port 443/7480)
Swift: https://rgw.example.com/swift/v1/RGW mengorganisasi deployment dalam hierarki: realm → zonegroup → zone. Realm adalah unit isolasi top-level, zonegroup adalah kumpulan zone dengan kebijakan replikasi, dan zone adalah unit fisik data.
Untuk single-site sederhana, cephadm sudah membuat realm, zonegroup, dan zone default secara otomatis saat RGW pertama dideploy:
ceph orch apply rgw myrgw --placement="3 node1 node2 node3"
ceph orch ps --daemon-type rgwceph orch apply rgw myrgw mendeploy tiga instance RGW dengan nama realm myrgw. Struktur zone lengkap untuk multi-site akan kita bedah di episode 13.
Memeriksa konfigurasi saat ini:
radosgw-admin realm list
radosgw-admin zonegroup list
radosgw-admin zone listradosgw-admin realm list menampilkan realm yang ada. Perintah zonegroup list dan zone list memperlihatkan hierarki di bawahnya. Untuk deployment single-site, satu realm default sudah cukup.
Setiap klien RGW diwakili oleh user. Buat user untuk mengakses API S3:
radosgw-admin user create --uid=alice \
--display-name="Alice User" \
--email=alice@example.comOutput perintah menghasilkan access_key dan secret_key — inilah kredensial yang dipakai klien S3. Simpan kredensial tersebut dengan aman; RGW tidak menampilkan secret key lengkap pada pemanggilan berikutnya.
Dengan kredensial di atas, kalian bisa memakai aws cli untuk operasi bucket dan object:
aws configure --profile rgw
aws --endpoint-url https://rgw.example.com s3 mb s3://bucket-pertama
aws --endpoint-url https://rgw.example.com s3 cp laporan.pdf s3://bucket-pertama/aws s3 mb s3://bucket-pertama membuat bucket, dan aws s3 cp mengunggah file. Perhatikan bahwa setiap perintah harus menyertakan --endpoint-url menuju RGW.
Bucket juga bisa dibuat langsung dari sisi admin:
radosgw-admin bucket create --bucket=bucket-pertama --uid=alice
radosgw-admin bucket listradosgw-admin bucket list menampilkan semua bucket beserta metadata-nya. Kredensial akses tetap mengikuti user pemilik bucket.
Karena API-nya kompatibel S3, hampir semua client S3 bisa memakai RGW: aws cli, s3cmd, boto3, rclone, dan library SDK di berbagai bahasa. Untuk contoh dengan Python:
import boto3
s3 = boto3.client(
"s3",
endpoint_url="https://rgw.example.com",
aws_access_key_id="ACCESS",
aws_secret_access_key="SECRET",
)
s3.upload_file("laporan.pdf", "bucket-pertama", "laporan.pdf")
print("upload selesai")Kode boto3.client(..., endpoint_url="https://rgw.example.com") menunjuk client ke RGW alih-alih AWS. Seluruh operasi boto3 lainnya bekerja seperti biasa.
RGW mendukung lifecycle rule untuk mengelola object secara otomatis — misalnya memindahkan object ke storage class lain atau menghapus setelah jangka waktu tertentu:
{
"Rules": [
{
"ID": "hapus-lama",
"Status": "Enabled",
"Filter": { "Prefix": "logs/" },
"Expiration": { "Days": 90 }
}
]
}Rule di atas menghapus object dengan prefix logs/ setelah 90 hari. Lifecycle RGW dievaluasi oleh daemon rgw secara periodik, dan konfigurasinya disimpan sebagai metadata internal.
Di episode ini kalian sudah memahami dan mempraktikkan object storage RGW: konsep dan kompatibilitas S3/Swift, hierarki realm-zonegroup-zone, pembuatan user dan bucket, integrasi dengan aws cli dan boto3, serta object lifecycle.
Inti yang harus dibawa pulang:
radosgw-admin user create yang menghasilkan access key.--endpoint-url atau endpoint_url untuk menunjuk RGW.Di episode 8 selanjutnya kita akan membahas Ceph client integration — menghubungkan client Linux ke CephFS dan RBD, mengonfigurasi RADOS Gateway clients, integrasi dengan Kubernetes CSI drivers dan platform cloud, serta best practice autentikasi client dan keyrings. Saatnya semua interface kalian dipakai dari sisi client!