Spec: Supporting the s3 driver again as regular glance store driver
Change-Id: I198cebacc6e99149b65ae1ae4445ee05a70d2bbd
This commit is contained in:
parent
9f1092926b
commit
01f4034f89
216
specs/ussuri/approved/glance_store/re-support-s3-driver.rst
Normal file
216
specs/ussuri/approved/glance_store/re-support-s3-driver.rst
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
============================================
|
||||||
|
Re-support S3 Driver as Glance Store Backend
|
||||||
|
============================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/glance/+spec/re-support-s3-driver
|
||||||
|
|
||||||
|
Glance store had supported S3 backend until version Mitaka, and it has already
|
||||||
|
been removed (in Newton [1]_) due to lack of maintainers. However, there seems
|
||||||
|
to exist a certain number of operators who want to use S3 for the glance
|
||||||
|
backend because S3 is a major storage and there is a lot of S3 compatible
|
||||||
|
storage. So, I propose revive the S3 driver and support again as a member of
|
||||||
|
glance store drivers [2]_.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
There seems to exist a certain number of operators who want to use S3 or S3
|
||||||
|
compatible storage for the glance backend, but glance doesn't support S3 store
|
||||||
|
anymore so there is no way to use the S3 backend for them.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Revive the S3 Store Driver that was used until Mitaka, and support multiple
|
||||||
|
store configuration [3]_.
|
||||||
|
|
||||||
|
The following configurations would be added to glance_store section of
|
||||||
|
glance-api.conf:::
|
||||||
|
|
||||||
|
* s3_store_host
|
||||||
|
The host where the S3 server is listening.
|
||||||
|
This item accepts a string value.
|
||||||
|
(e.g. s3-region.amazonaws.com, http://s3-region.amazonaws.com, https://s3-region.amazonaws.com or
|
||||||
|
my-object-storage.com, http://my-object-storage.com, https://my-object-storage.com)
|
||||||
|
|
||||||
|
* s3_store_access_key
|
||||||
|
The S3 query token access key.
|
||||||
|
This item accepts a string value.
|
||||||
|
|
||||||
|
* s3_store_secret_key
|
||||||
|
The S3 query token secret key.
|
||||||
|
This item accepts a string value.
|
||||||
|
|
||||||
|
* s3_store_bucket
|
||||||
|
The S3 bucket to be used to store the Glance data.
|
||||||
|
This item accepts a string value, and if s3_store_create_bucket_on_put is
|
||||||
|
set to true, it will be created automatically even if the bucket does not
|
||||||
|
exist.
|
||||||
|
It is desirable to have a DNS-compliant naming convention.
|
||||||
|
|
||||||
|
* s3_store_create_bucket_on_put
|
||||||
|
A boolean to determine if the S3 bucket should be created on upload if it
|
||||||
|
does not exist or if an error should be returned to the user.
|
||||||
|
This item accepts True or False.
|
||||||
|
|
||||||
|
* s3_store_bucket_url_format
|
||||||
|
The S3 calling format used to determine the bucket. Either 'auto' or 'path'
|
||||||
|
or 'virtual' can be used.
|
||||||
|
In 'path'-style, the endpoint for the object looks like 'https://s3.amazonaws.com/bucket/example.img' or 'https://my-object-storage.com/bucket/example.img'.
|
||||||
|
And in 'virtual'-style, the endpoint for the object looks like 'https://bucket.s3.amazonaws.com/example.img' or 'https://bucket.my-object-storage.com/example.img'.
|
||||||
|
If you do not follow the DNS naming convention (e.g. that includes '.' in
|
||||||
|
the bucket name), you can get objects in the path style, but not in the
|
||||||
|
virtual style.
|
||||||
|
|
||||||
|
* s3_store_large_object_size
|
||||||
|
What size, in MB, should S3 start chunking image files and do a multipart
|
||||||
|
upload in S3.
|
||||||
|
This item accepts a positive integer value.
|
||||||
|
|
||||||
|
* s3_store_large_object_chunk_size
|
||||||
|
What multipart upload part size, in MB, should S3 use when uploading parts.
|
||||||
|
The size must be greater than or equal to 5M.
|
||||||
|
Note that the maximum possible number of image divisions is 10,000.
|
||||||
|
|
||||||
|
* s3_store_thread_pools
|
||||||
|
The number of thread pools to perform a multipart upload in S3.
|
||||||
|
This item accepts a positive integer value.
|
||||||
|
|
||||||
|
As a result, operator can configure multiple stores including S3 as shown
|
||||||
|
below:::
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
# list of enabled stores identified by their property group name
|
||||||
|
enabled_backends = fast:s3, cheap:s3, reliable:file
|
||||||
|
|
||||||
|
# the default store, if not set glance-api service will not start
|
||||||
|
default_backend = fast
|
||||||
|
|
||||||
|
# conf props for file system store instance
|
||||||
|
[reliable]
|
||||||
|
filesystem_store_datadir = /var/lib/images/data/
|
||||||
|
description = Reliable filesystem store
|
||||||
|
# etc..
|
||||||
|
|
||||||
|
# conf props for s3 store instance
|
||||||
|
[fast]
|
||||||
|
s3_store_host = https://s3.amazonaws.com
|
||||||
|
s3_store_access_key = access-key-for-fast
|
||||||
|
s3_store_secret_key = secret-key-for-fast
|
||||||
|
s3_store_bucket = bucket-for-fast
|
||||||
|
# etc..
|
||||||
|
|
||||||
|
# conf props for s3 store instance
|
||||||
|
[cheap]
|
||||||
|
s3_store_host = https://my-object-storage.com
|
||||||
|
s3_store_access_key = access-key-for-cheap
|
||||||
|
s3_store_secret_key = secret-key-for-cheap
|
||||||
|
s3_store_bucket = bucket-for-cheap
|
||||||
|
# etc..
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This change will have to be explicitly configured in the store options.
|
||||||
|
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
nao-shark
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Add configurations to glance-api.conf (s3_store_host, s3_store_access_key,
|
||||||
|
s3_store_secret_key, s3_store_bucket, etc).
|
||||||
|
|
||||||
|
* Revive the S3 driver and unit test that were used until Mitaka,
|
||||||
|
and support multiple store configuration.
|
||||||
|
|
||||||
|
* Documentation on how to use and configure S3 backend.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
* Test uploading of an image to the S3 backend.
|
||||||
|
|
||||||
|
* Then test downloading of the image again.
|
||||||
|
|
||||||
|
* Test delete the image.
|
||||||
|
|
||||||
|
* Test configure multiple s3 drivers.
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
The documentation should be expanded to describe how to enable and use the S3
|
||||||
|
store.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. [1] Newton Series Release Notes
|
||||||
|
https://docs.openstack.org/releasenotes/glance/newton.html
|
||||||
|
|
||||||
|
.. [2] Glance Store Drivers
|
||||||
|
https://docs.openstack.org/glance_store/latest/user/drivers.html
|
||||||
|
|
||||||
|
.. [3] multi-store backend support
|
||||||
|
https://specs.openstack.org/openstack/glance-specs/specs/rocky/implemented/glance/multi-store.html
|
@ -14,3 +14,4 @@ Ussuri approved specs for Glance:
|
|||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
glance/*
|
glance/*
|
||||||
|
glance_store/*
|
||||||
|
Loading…
Reference in New Issue
Block a user