@@ -308,6 +308,136 @@ should be used in the Kolla Manila configuration e.g.:
308
308
309
309
manila_cephfs_filesystem_name : manila-cephfs
310
310
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
+
311
441
Deployment
312
442
==========
313
443
@@ -345,8 +475,14 @@ cephadm.yml playbook to perform post-deployment configuration:
345
475
346
476
kayobe playbook run $KAYOBE_CONFIG_PATH /ansible/cephadm.yml
347
477
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
350
486
351
487
Configuration generation
352
488
------------------------
0 commit comments