Add spec for the removal of Swift from the Undercloud
This spec has been submitted to enable us to remove Swift from the Undercloud. The Spec is a highlevel document which provides insight into the process we believe we can take to excise swift from the Undercloud. Change-Id: I7890f87acfb9d5aab47ee943ab85364d309867cb Signed-off-by: Kevin Carter <kecarter@redhat.com>
This commit is contained in:
parent
bc9277b840
commit
e83d8aba3a
188
specs/wallaby/excise-swift.rst
Normal file
188
specs/wallaby/excise-swift.rst
Normal file
@ -0,0 +1,188 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
=================================
|
||||
Disable Swift from the Undercloud
|
||||
=================================
|
||||
|
||||
The goal of this proposal is to introduce the community to the idea of
|
||||
disabling Swift on the TripleO Undercloud. Within this propose we intend
|
||||
to provide a high-level overview of how we can accomplish this goal.
|
||||
|
||||
|
||||
Problem Description
|
||||
===================
|
||||
|
||||
Swift is being used to store objects related to the deployment which are
|
||||
managed entirely on the Undercloud. In the past, there was an API / UI to
|
||||
interact with the deployment tooling; however, with the deprecation of the UI
|
||||
and the removal of Mistral this is no longer the case. The Undercloud is
|
||||
assumed to be a single node which is used to deploy OpenStack clouds, and
|
||||
requires the user to login to the node to run commands. Because we're no longer
|
||||
attempting to make the Undercloud a distributed system there's no need for an
|
||||
API'able distributed storage service. Swift, in it's current state, is
|
||||
under-utilized and carries unnecessary operational and resource overhead.
|
||||
|
||||
|
||||
Proposed Change
|
||||
===============
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
Decommission Swift from the Undercloud.
|
||||
|
||||
To decommission Swift, we'll start by removing all of the `tripleoclient` Swift
|
||||
interactions. These interactions are largely storing and retrieving YAML files
|
||||
which provide context to the user for current deployment status. To ensure
|
||||
we're not breaking deployment expectations, we'll push everything to the local
|
||||
file system and retain all of the file properties wherever possible. We will
|
||||
need coordinate with tripleo-ansible to ensure we're making all direct Swift
|
||||
client and module interactions optional.
|
||||
|
||||
Once we're able to remove the `tripleoclient` Swift interactions, we'll move to
|
||||
disable Swift interactions from tripleo-common. These interactions are similar
|
||||
to the ones found within the `tripleoclient`, though tripleo-common has some
|
||||
complexity; we'll need to ensure we're not breaking expectations we've created
|
||||
with our puppet deployment methodologies which have some Swift assumptions.
|
||||
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
We keep everything as-is.
|
||||
|
||||
|
||||
Security Impact
|
||||
---------------
|
||||
|
||||
There should be no significant security implications when disabling Swift.
|
||||
It could be argued that disabling Swift might make the deployment more secure,
|
||||
it will lessen the attack surface; however, given the fact that Swift on the
|
||||
Undercloud is only used by director I would consider any benefit insignificant.
|
||||
|
||||
|
||||
Upgrade Impact
|
||||
--------------
|
||||
|
||||
There will be no upgrade impact; this change will be transparent to the
|
||||
end-user.
|
||||
|
||||
|
||||
Other End User Impact
|
||||
---------------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
Disabling Swift could make some client interactions faster; however, the
|
||||
benefit should be negligible. That said, disabling Swift would remove a
|
||||
service on the Undercloud, which would make setup faster and reduce the
|
||||
resources required to run the Undercloud.
|
||||
|
||||
|
||||
Other Deployer Impact
|
||||
---------------------
|
||||
|
||||
Operationally we should see an improvement as it will no longer be required to
|
||||
explore a Swift container, and download files to debug different parts of the
|
||||
deployment. All deployment related file artifacts housed within Swift will
|
||||
exist on the Undercloud using the local file system, and should be easily
|
||||
interacted with.
|
||||
|
||||
|
||||
Developer Impact
|
||||
----------------
|
||||
|
||||
None, if anything disabling Swift should make the life of a TripleO developer
|
||||
easier.
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Excising Swift client interactions will be handled directly in as few reviews
|
||||
as possible; hopefully allowing us to backport this change, should it be deemed
|
||||
valuable to stable releases.
|
||||
|
||||
All of the objects stored within Swift will be stored in
|
||||
`/var/lib/tripleo/{named_artifact_directories}`. This will allow us to
|
||||
implement all of the same core logic in our various libraries just without the
|
||||
use of the API call to store the object.
|
||||
|
||||
In terms of enabling us to eliminate swift without having a significant impact
|
||||
on the internal API we'll first start by trying to replace the swift object
|
||||
functions within tripleo-common with local file system calls. By using the
|
||||
existing functions and replacing the backend we'll ensure API compatibility and
|
||||
lessen the likely hood of creating regressions.
|
||||
|
||||
.. note::
|
||||
|
||||
We'll need to collaborate with various groups to ensure we're porting assumed
|
||||
functionality correctly. While this spec will not go into the specifics
|
||||
implementation details for porting assumed functionality, it should be known
|
||||
that we will be accountable for ensuring existing functionality is ported
|
||||
appropriately.
|
||||
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
cloudnull
|
||||
|
||||
Other contributors:
|
||||
|
||||
- emilien
|
||||
- ekultails
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
The work items listed here are high level, and not meant to provide specific
|
||||
implementation details or timelines.
|
||||
|
||||
* Enumerate all of the Swift interactions
|
||||
* Create a space on the Undercloud to house the files
|
||||
* This location will be on the local file system and will be created into a
|
||||
git archive; git is used for easier debug, rapid rollback, and will
|
||||
provide simple versioning.
|
||||
* Create an option to disable Swift on the Undercloud.
|
||||
* Convert client interactions to using the local file system
|
||||
* Ensure all tripleo-ansible Swift client calls are made optional
|
||||
* Convert tripleo-common Swift interactions to using the local file system
|
||||
* Disable Swift on the Undercloud
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
Before Swift can be disabled on the Undercloud we will need ensure the
|
||||
deployment methodology has been changed to Metalsmith.
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
The Swift tests will need to be updated to use the local file system, however
|
||||
the existing tests and test structure will be reused.
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
There are several references to Swift in our documentation which we will need to
|
||||
update.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
* https://etherpad.opendev.org/p/tripleo-heat-swift-removal-undercloud
|
||||
* http://paste.openstack.org/show/798208
|
Loading…
Reference in New Issue
Block a user