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