Magnum

Magnum is an OpenStack API service, developed by the OpenStack Containers team, making container orchestration engines (COEs) such as Docker Swarm, Kubernetes, and Apache Mesos available as first class resources in OpenStack.

It uses Heat to orchestrate an OpenStack image, which contains the COE (for example: Docker and Kubernetes), and it runs that image in either virtual machines or bare metal in a cluster configuration.

Also, Magnum offers complete life-cycle management of COEs in an OpenStack environment, integrated with other OpenStack services. This allows a seamless experience for OpenStack users who wish to run containers in an OpenStack environment.

Problem Description

There is currently no charm that lets you easily deploy Magnum as part of Charmed OpenStack.

Proposed Change

Implement a set of reactive charms that enables the deployment of all required Magnum components. Changes will also be made to existing charms to integrate with the new Magnum charms.

Baseline supported OpenStack version will be Ussuri.

Alternatives

None

Implementation

The implementation consists of the following new charms:

  • magnum

    • Provides the Magnum API. OpenStack administrators and Openstack Dashboard will call into this API to provision and manage Kubernetes clusters (or any other COE).

    • Requires relations to AMQP, certificates, database and Keystone.

  • magnum-dashboard

    • Create a new subordinate charm for Openstack Dashboard

    • Implements the necessary changes to enable Magnum UI in Horizon

The implementation also requires changes to the following charms:

  • keystone

    • Add Magnum to the list of valid services.

Assignee(s)

Primary assignee:

oprinmarius

Gerrit Topic

Use Gerrit topic “magnum-charm” for all patches related to this spec.

git-review -t magnum-charm

Work Items

The implementation section describes the working items.

Repositories

  • charm-magnum

  • charm-magnum-dashboard

  • charm-keystone

Documentation

Each charm will contain a README with instructions on deploying the charm. In addition, an appendix will be added to the deployment guide which will outline various deployment scenarios, hardware and networking requirements and config options.

Security

  • magnum

    • Requires keystone, database and rabbitmq credentials which will be stored in magnum.conf

    • The API endpoints for Magnum will optionally be accessible via TLS, either by creating a relation to Vault / easy-rsa, or by manually supplying the TLS key/cert via config

Testing

Code written or changed will be covered by unit tests; functional testing will be implemented using the Zaza framework.

Dependencies

None