Containerized Control Plane on Kubernetes

https://blueprints.launchpad.net/fuel/+spec/ccp

This is a meta specification to describe in details creation of the new experimental project under the Fuel project umbrella to provide to users Containerized OpenStack deployment on top of Kubernetes, codename “Fuel CCP”.

Problem description

Containerized Control Plane (CCP) is the initiative to package OpenStack services in the containers and use standard container management framework to run and manage them. It includes following areas, but not limited to them:

  • OpenStack containerization and container image building tooling. OpenStack components are planned to be installed into container images from source code (not using deb/rpm packages).
  • CI/CD to produce properly layered and versioned containers for the supported stable and current master branches of OpenStack projects
  • OpenStack deployment in containers on top of Kubernetes with HA for OpenStack services and their dependencies (e.g. MySQL, RabbitMQ, etc.)
  • Tooling for deploying and operating OpenStack clusters with support for the upgrades, patching, scaling and changing configuration

Fuel CCP governance will be a separate experimental project under the openstack git namespace with unique specs and core team. There is no intention right now to apply for the Big Tent. The nearest example of the same governance is 3rd party Fuel plugin done not by Mirantis that aren’t under Big Tent and not controlled by the main Fuel core team.

Separate Launchpad project will be used for the blueprints and bugs management. Fuel’s main IRC channels will be initially used for communication (#fuel) and there will be weekly sub-team meetings as part of the main Fuel weekly IRC meetings.

CCP is to be a set of repositories with Docker image definitions together with Kubernetes applications definitions. It is a single git repository per OpenStack component plus few repositories with related software, tooling, such as 3rd party CI config, installer and etc. We’re going to start with the minimal set of the repositories for the “core” OpenStack implementation plus logging and monitoring implementation based on the existing Stacklight [0] [1] expertise. The CI system will use upstream infra CI as much as possible and 3rd party CI for running end-to-end deployment tests.

The initial list of repositories for CCP initiative:

  • fuel-ccp (main repo, image build tool, app framework, tooling)
  • fuel-ccp-specs
  • fuel-ccp-installer
  • fuel-ccp-tests
  • fuel-ccp-ci-config (~ project-config for 3rd party CI)
  • fuel-ccp-debian-base
  • fuel-ccp-openstack-base
  • fuel-ccp-entrypoint
  • fuel-ccp-mariadb
  • fuel-ccp-keystone
  • fuel-ccp-glance
  • fuel-ccp-memcached
  • fuel-ccp-horizon
  • fuel-ccp-neutron (incl. ovs)
  • fuel-ccp-rabbitmq
  • fuel-ccp-nova
  • fuel-ccp-stacklight (LMA stack)

Each repository will have it’s own core reviewers team and there will be one general core reviewers team with permissions in all repositories.

Proposed changes

None. There will be no changes to the existing Fuel projects now.

Web UI

None. There is no intention to integrate with Web UI on the early stages of the initiative.

Nailgun

None. There is no intention to integrate with Nailgun on the early stages of the initiative.

Data model

None

REST API

None

Orchestration

None

RPC Protocol

None

Fuel Client

None

Plugins

None

Fuel Library

None

Alternatives

This spec is actually describes an alternative experimental approach for OpenStack deployment, but there are few questions to answer about alternatives.

  1. Why not use Kolla’s container images? There is a set of fundamental requirements for container images that is currently not covered or controversial to some Kolla development principles. This list will be maintained and discussed with Kolla community under the following specification published to Kolla project: I18b319cb796192a1e61ecd516a485dc82d52652f
  2. Why not contribute to Kolla-Kubernetes? It’s based on the Kolla container images, while we need to solve list of requirements described in I18b319cb796192a1e61ecd516a485dc82d52652f

Upgrade impact

It’ll be separate activity to define migration path from current to the Kubernetes / CCP based OpenStack version.

Security impact

None

Notifications impact

None

End user impact

None

Performance impact

None

Deployment impact

None

Developer impact

None

Infrastructure impact

Separate 3rd party CI will be used to run end-to-end tests.

Documentation impact

Separate documentation will be needed for CCP initiative.

Implementation

Assignee(s)

Primary assignee:
slukjanov
Other contributors:
None

Mandatory design review: * Vladimir Kozhukalov <vkozhukalov@mirantis.com> * Sergii Golovatiuk <sgolovatiuk@mirnatis.com> * Bulat Gaifullin <bgaifullin@mirantis.com> * Julia Aranovich <jkirnosova@mirantis.com>

Work Items

  • Create separate CCP Launchpad project
  • Create a set of CCP repositories
  • Setup 3-rd party CCP CI

Dependencies

None

Testing, QA

It is not planned to use current Fuel QA resources. All tests will be run on a separate CI (partly upstream, partly 3-rd party) and test code is to be written by CCP sub-team.

Acceptance criteria

  • A set of CCP repositories are ready to use for development
  • CCP Launchpad project is ready to use for tracking CCP bugs and BPs
  • CCP 3-rd party CI is available to add CCP testing jobs