Skip to content

Commit 4261905

Browse files
authored
Merge pull request #608 from stackhpc/document-caphadm-rgw
Add docs for Ceph RGWs with Cephadm
2 parents 650f67b + 7cdc655 commit 4261905

File tree

1 file changed

+138
-2
lines changed

1 file changed

+138
-2
lines changed

doc/source/configuration/cephadm.rst

Lines changed: 138 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,136 @@ should be used in the Kolla Manila configuration e.g.:
308308
309309
manila_cephfs_filesystem_name: manila-cephfs
310310
311+
RADOS Gateways
312+
--------------
313+
314+
RADOS Gateways (RGWs) are defined with the following:
315+
316+
.. code:: yaml
317+
318+
cephadm_radosgw_services:
319+
- id: myrgw
320+
count_per_host: 1
321+
spec:
322+
rgw_frontend_port: 8100
323+
324+
The port chosen must not conflict with any other processes running on the Ceph
325+
hosts. Port 8100 does not conflict with our default suite of services.
326+
327+
Ceph RGWs require additional configuration to:
328+
329+
* Support both S3 and Swift APIs.
330+
331+
* Authenticate user access via Keystone.
332+
333+
* Allow cross-project and public object access.
334+
335+
The set of commands below configure all of these.
336+
337+
.. code:: yaml
338+
339+
# Append the following to cephadm_commands_post:
340+
- "config set client.rgw rgw_content_length_compat true"
341+
- "config set client.rgw rgw_enable_apis 's3, swift, swift_auth, admin'"
342+
- "config set client.rgw rgw_enforce_swift_acls true"
343+
- "config set client.rgw rgw_keystone_accepted_admin_roles 'admin'"
344+
- "config set client.rgw rgw_keystone_accepted_roles 'member, Member, _member_, admin'"
345+
- "config set client.rgw rgw_keystone_admin_domain Default"
346+
- "config set client.rgw rgw_keystone_admin_password {{ secrets_ceph_rgw_keystone_password }}"
347+
- "config set client.rgw rgw_keystone_admin_project service"
348+
- "config set client.rgw rgw_keystone_admin_user 'ceph_rgw'"
349+
- "config set client.rgw rgw_keystone_api_version '3'"
350+
- "config set client.rgw rgw_keystone_token_cache_size '10000'"
351+
- "config set client.rgw rgw_keystone_url https://{{ kolla_internal_fqdn }}:5000"
352+
- "config set client.rgw rgw_keystone_verify_ssl false"
353+
- "config set client.rgw rgw_max_attr_name_len '1000'"
354+
- "config set client.rgw rgw_max_attr_size '1000'"
355+
- "config set client.rgw rgw_max_attrs_num_in_req '1000'"
356+
- "config set client.rgw rgw_s3_auth_use_keystone true"
357+
- "config set client.rgw rgw_swift_account_in_url true"
358+
- "config set client.rgw rgw_swift_versioning_enabled true"
359+
360+
As we have configured Ceph to respond to Swift APIs, you will need to tell
361+
Kolla to account for this when registering Swift endpoints with Keystone. Also,
362+
when ``rgw_swift_account_in_url`` is set, the equivalent Kolla variable should
363+
be set in Kolla ``globals.yml`` too:
364+
365+
.. code:: yaml
366+
367+
ceph_rgw_swift_compatibility: false
368+
ceph_rgw_swift_account_in_url: true
369+
370+
``secrets_ceph_rgw_keystone_password`` should be stored in the Kayobe
371+
``secrets.yml``, and set to the same value as ``ceph_rgw_keystone_password`` in
372+
the Kolla ``passwords.yml``. As such, you will need to configure Keystone
373+
before deploying the RADOS gateways. If you are using the Kolla load balancer
374+
(see :ref:`RGWs-with-hyper-converged-Ceph` for more info), you can specify the
375+
``haproxy`` and ``loadbalancer`` tags here too.
376+
377+
.. code:: yaml
378+
379+
kayobe overcloud service deploy -kt ceph-rgw,keystone,haproxy,loadbalancer
380+
381+
382+
.. _RGWs-with-hyper-converged-Ceph:
383+
384+
RGWs with hyper-converged Ceph
385+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
386+
387+
If you are using a hyper-converged Ceph setup (i.e. your OpenStack controllers
388+
and Ceph storage nodes share the same hosts), you should double-check that
389+
``rgw_frontend_port`` does not conflict with any processes on the controllers.
390+
For example, port 80 (and 443) will be bound to the Kolla-deployed haproxy. You
391+
should choose a custom port that does not conflict with any OpenStack endpoints
392+
too (``openstack endpoint list``).
393+
394+
You may also want to use the Kolla-deployed haproxy to load balance your RGWs.
395+
This means you will not need to define any Ceph ingress services. Instead, you
396+
add definitions of your Ceph hosts to Kolla ``globals.yml``:
397+
398+
.. code:: yaml
399+
400+
ceph_rgw_hosts:
401+
- host: controller1
402+
ip: <host IP on storage net>
403+
port: 8100
404+
- host: controller2
405+
ip: <host IP on storage net>
406+
port: 8100
407+
- host: controller3
408+
ip: <host IP on storage net>
409+
port: 8100
410+
411+
HA with Ingress services
412+
~~~~~~~~~~~~~~~~~~~~~~~~
413+
414+
Ingress services are defined with the following. ``id`` should match the name
415+
(not id) of the RGW service to which ingress will point to. ``spec`` is a
416+
service specification required by Cephadm to deploy the ingress (haproxy +
417+
keepalived pair).
418+
419+
Note that the ``virtual_ip`` here must be different than the Kolla VIP. The
420+
choice of subnet will be dependent on your deployment, and can be outside
421+
of any Ceph networks.
422+
423+
.. code:: yaml
424+
425+
cephadm_ingress_services:
426+
- id: rgw.myrgw
427+
spec:
428+
frontend_port: 443
429+
monitor_port: 1967
430+
virtual_ip: 10.66.0.1/24
431+
ssl_cert: {example_certificate_chain}
432+
433+
When using ingress services, you will need to stop Kolla from configuring your
434+
RGWs to use the Kolla-deployed haproxy. Set the following in Kolla
435+
``globals.yml``:
436+
437+
.. code:: yaml
438+
439+
enable_ceph_rgw_loadbalancer: false
440+
311441
Deployment
312442
==========
313443

@@ -345,8 +475,14 @@ cephadm.yml playbook to perform post-deployment configuration:
345475
346476
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/cephadm.yml
347477
348-
The ``cephadm.yml`` playbook imports various other playbooks, which may
349-
also be run individually to perform specific tasks.
478+
The ``cephadm.yml`` playbook imports various other playbooks, which may also be
479+
run individually to perform specific tasks. Note that if you want to deploy
480+
additional services (such as RGWs or ingress) after an initial deployment, you
481+
will need to set ``cephadm_bootstrap`` to true. For example:
482+
483+
.. code:: bash
484+
485+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/cephadm.yml -e cephadm_bootstrap=true
350486
351487
Configuration generation
352488
------------------------

0 commit comments

Comments
 (0)