Merge "Spec for system deployment of containerized openstack infrastructure"
This commit is contained in:
commit
606c09eab8
@ -0,0 +1,276 @@
|
|||||||
|
===========================================================
|
||||||
|
System Deployment of Containerized OpenStack Infrastructure
|
||||||
|
===========================================================
|
||||||
|
|
||||||
|
Storyboard: https://storyboard.openstack.org/#!/story/2003910
|
||||||
|
|
||||||
|
This story will update StarlingX to deploy its OpenStack infrastructure in a
|
||||||
|
containerized configuration. Changes will be identified and implemented to
|
||||||
|
enable end-to-end configuration of all the containers that will host
|
||||||
|
OpenStack infrastructure services.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Please see the following for background on the effort to containerize the
|
||||||
|
StartlingX OpenStack infrastructure:
|
||||||
|
https://wiki.openstack.org/wiki/Containerizing_StarlingX_Infrastructure
|
||||||
|
|
||||||
|
This story implements the end-to-end configuration of the StarlingX
|
||||||
|
platform with the OpenStack infrastructure services running in containers.
|
||||||
|
It builds on several other stories which are listed in the Dependencies
|
||||||
|
section below.
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
=========
|
||||||
|
|
||||||
|
Developers/testers/users need the ability to install and configure a StarlingX
|
||||||
|
system with kubernetes master and worker nodes, in order to support a
|
||||||
|
variety of containerized applications.
|
||||||
|
|
||||||
|
Developers/testers/users need the ability to install and configure the
|
||||||
|
OpenStack application on a running StarlingX system.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
The initial install of a StarlingX system will no longer include the OpenStack
|
||||||
|
software (with the exception of Keystone and Horizon which are required by
|
||||||
|
bare metal platform services). The OpenStack application will have its own
|
||||||
|
instance of Keystone and Horizon.
|
||||||
|
|
||||||
|
To install the OpenStack application, the user will first label the hosts to
|
||||||
|
be used for OpenStack controller functions (label: openstack-controller-node)
|
||||||
|
and OpenStack compute functions (label: openstack-compute-node) using the
|
||||||
|
following CLI:
|
||||||
|
|
||||||
|
system host-label-assign <hostname> <label>
|
||||||
|
|
||||||
|
Then the user will use the following CLI to import the OpenStack application:
|
||||||
|
|
||||||
|
system application-upload <app-name> <app-tarfile>
|
||||||
|
|
||||||
|
Finally, the user will install the OpenStack application:
|
||||||
|
|
||||||
|
system application-install <app-name>
|
||||||
|
|
||||||
|
The above CLIs are created as part of the stories listed in the Dependencies
|
||||||
|
section below (see the Armada Integration story for details). This story
|
||||||
|
provides the "glue" that performs the necessary configuration of platform
|
||||||
|
services (e.g. System Inventory (sysinv), Virtual Infrastructure Manager
|
||||||
|
(VIM)) to support the OpenStack application.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
============
|
||||||
|
|
||||||
|
This is the only reasonable approach to integrate the containerized OpenStack
|
||||||
|
application with the StartlingX platform.
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
=================
|
||||||
|
|
||||||
|
None - any data model impacts are described in the stories listed in the
|
||||||
|
Dependencies section below.
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
===============
|
||||||
|
|
||||||
|
None - any REST API impacts are described in the stories listed in the
|
||||||
|
Dependencies section below.
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
===============
|
||||||
|
|
||||||
|
This story does not expose any new interfaces to the external world. Any
|
||||||
|
security impacts are described in stories listed in the Dependencies section
|
||||||
|
below.
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Prior to this story, all StarlingX systems would come up with the OpenStack
|
||||||
|
services installed by default (on bare metal) after initial system
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
After this story, all StarlingX systems will come up without the OpenStack
|
||||||
|
services. If a user wants to install the OpenStack application
|
||||||
|
(containerized), they will perform the actions described in the Proposed
|
||||||
|
Change section above.
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
==================
|
||||||
|
|
||||||
|
The move from a bare metal OpenStack deployment to a containerized deployment
|
||||||
|
will impact the performance of the system. These impacts will be assessed
|
||||||
|
as the development is done and negative impacts will be mitigated.
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
=====================
|
||||||
|
|
||||||
|
In order to install the StarlingX system, external network access will be
|
||||||
|
required over the OAM interface on the controller hosts. This is necessary
|
||||||
|
to download the required docker images, which will not be included in the
|
||||||
|
StarlingX iso. This is both due to size considerations (the images required by
|
||||||
|
he OpenStack application will total several GB in size) and to decouple the
|
||||||
|
StarlingX software release from OpenStack docker image releases.
|
||||||
|
|
||||||
|
Patching of a StarlingX system will be different as the existing RPM based
|
||||||
|
patching mechanism will not work for software running in containers (i.e. all
|
||||||
|
the OpenStack components). The new patching mechanism for containers is TBD.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
================
|
||||||
|
|
||||||
|
Developers working on StarlingX will now need to build docker images in order
|
||||||
|
to test changes to OpenStack components (e.g. keystone, nova, neutron) that
|
||||||
|
were previously running on bare metal. They will also need to generate the
|
||||||
|
OpenStack application tarfile, which includes manifests and Helm charts.
|
||||||
|
|
||||||
|
Upgrade impact
|
||||||
|
==============
|
||||||
|
|
||||||
|
None - this is the first StarlingX release so there are no previous releases
|
||||||
|
that we need to support upgrades from.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
===========
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
|
||||||
|
* Bart Wensley (bartwensley)
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
|
||||||
|
* Al Bailey (albailey)
|
||||||
|
* Chris Friesen (cbf123)
|
||||||
|
* Don Penney (dpenney)
|
||||||
|
* Jerry Sun (jerry-sun-u)
|
||||||
|
* Kevin Smith (kevin.smith.wrs)
|
||||||
|
* Lachlan Plant (lachlan.plant)
|
||||||
|
* Robert Church (rchurch)
|
||||||
|
* Shoaib Nasir (snasir)
|
||||||
|
* Tee Ngo (teewrs)
|
||||||
|
|
||||||
|
Repos Impacted
|
||||||
|
==============
|
||||||
|
|
||||||
|
* stx-config
|
||||||
|
* stx-integ
|
||||||
|
* stx-nfv
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
==========
|
||||||
|
|
||||||
|
* Sysinv:
|
||||||
|
|
||||||
|
* Update VIM puppet plugin to disable all OpenStack plugins in the VIM when
|
||||||
|
the OpenStack application is NOT installed and to enable them when the
|
||||||
|
OpenStack application is installed.
|
||||||
|
* Support new keystone configuration (e.g. auth URL, username, password) for
|
||||||
|
containerized OpenStack services.
|
||||||
|
* Use the pod based keystone when accessing OpenStack services (if it is
|
||||||
|
configured).
|
||||||
|
* Update sysinv/puppet to supply kubernetes configuration to sysinv/VIM when
|
||||||
|
OpenStack application has been installed.
|
||||||
|
* Update sysinv/puppet to generate platform openrc file in
|
||||||
|
/etc/platform/openrc.
|
||||||
|
* Detect when OpenStack application installation is complete and:
|
||||||
|
|
||||||
|
* Reconfigure sysinv with pod based keystone configuration.
|
||||||
|
* Reconfigure VIM with pod based keystone configuration.
|
||||||
|
|
||||||
|
* Perform different semantic checks for worker nodes with OpenStack
|
||||||
|
installed vs. worker nodes without OpenStack.
|
||||||
|
* Add semantic checks to prevent label and override modifications for
|
||||||
|
unlocked hosts.
|
||||||
|
* Send notifications to VIM whenever labels are modified.
|
||||||
|
* Avoid modifications to host aggregates for pure kubernetes worker nodes.
|
||||||
|
|
||||||
|
* VIM:
|
||||||
|
|
||||||
|
* Support new keystone configuration (e.g. auth URL, username, password) for
|
||||||
|
containerized OpenStack services.
|
||||||
|
* Use the pod based keystone when accessing OpenStack services (if it is
|
||||||
|
configured).
|
||||||
|
* Disable all interactions with nova, neutron and guest services for pure
|
||||||
|
kubernetes worker nodes (based on absence of openstack-compute-node label).
|
||||||
|
* host-add:
|
||||||
|
|
||||||
|
* When sysinv notifies the VIM that a host has been added, the VIM will
|
||||||
|
no longer create the nova/neutron/guest services, as the host will
|
||||||
|
start out as a pure kubernetes worker node.
|
||||||
|
|
||||||
|
* label-add:
|
||||||
|
|
||||||
|
* When openstack-compute-node label is added to compute, create the
|
||||||
|
nova/neutron/guest services (previously done on host-add).
|
||||||
|
|
||||||
|
* host-delete:
|
||||||
|
|
||||||
|
* Only delete OpenStack services if openstack-compute-node label applied
|
||||||
|
to host.
|
||||||
|
|
||||||
|
* Remove --kubernetes option from config_controller, along with the
|
||||||
|
now-obsolete bare metal OpenStack related code (e.g. python code, puppet,
|
||||||
|
service scripts, OCF scripts, SM config, pmon config).
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
This requires new functionality being developed under the following stories:
|
||||||
|
|
||||||
|
* Kubernetes Platform Support:
|
||||||
|
https://storyboard.openstack.org/#!/story/2002843
|
||||||
|
* CEPH persistent storage backend for Kubernetes:
|
||||||
|
https://storyboard.openstack.org/#!/story/2002844
|
||||||
|
* Local Docker Registry:
|
||||||
|
https://storyboard.openstack.org/#!/story/2002840
|
||||||
|
* Docker Image Generation:
|
||||||
|
https://storyboard.openstack.org/#!/story/2003907
|
||||||
|
* Infrastructure HELM Chart Override Generation:
|
||||||
|
https://storyboard.openstack.org/#!/story/2003909
|
||||||
|
* Create HELM chart for nova-api-proxy:
|
||||||
|
https://storyboard.openstack.org/#!/story/2004007
|
||||||
|
* Create HELM chart for Fault project:
|
||||||
|
https://storyboard.openstack.org/#!/story/2004008
|
||||||
|
* Armada Integration:
|
||||||
|
https://storyboard.openstack.org/#!/story/2003908
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
This story affects the configuration and deployment of all OpenStack services
|
||||||
|
on StarlingX. In addition to the usual unit testing in the impacted code
|
||||||
|
areas, this will require a full system regression of all StarlingX
|
||||||
|
functionality. It will also require extensive performance testing in order
|
||||||
|
to identify and address any performance impacts.
|
||||||
|
|
||||||
|
In addition, this story changes the way a StarlingX system is installed and
|
||||||
|
configured, which will require changes in existing automated installation and
|
||||||
|
testing tools.
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
This story affects the StarlingX installation and configuration documentation.
|
||||||
|
Specific details of the documentation changes will be addressed once the
|
||||||
|
implementation is complete.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
History
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. list-table:: Revisions
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Release Name
|
||||||
|
- Description
|
||||||
|
* - 2019.03
|
||||||
|
- Introduced
|
Loading…
Reference in New Issue
Block a user