Image for Nova Compute Openstack service on k8s (just for neutron part)

Full Description

Openstack-k8s: Openstack Kubernetes deployment

This Project is being developed in order to facilitate the Openstack deployment based on Kubernetes and docker containers.The openstack distribution is based on the upstream code, and you can deploy a specific openstack version changing the "version" param in the dockerfile for each Openstack service.The project requires kubernetes and uses Rancher to deploy the k8s cluster faster.

Requirements:

A k8s cluster ready is needed to deploy all the services (including the Etcd service)

A DNS services is needed to resolve the k8s services name

Features:

Fast Openstack release upgrade: version is parameterized in Dockerfiles getting the code directly from upstream.

Configuration files live only in the k8s ETCD. Just get them from Etcd !!

Kubernetes cluster is distributed automatically between all the hosts (using rancher to deploy it).

Openstack Service definition is developed in k8s to be scaled (only the first time launched should create the db scheme and tables in keystone), so you can modify the replica parameter to scale up.

Configuring the password variables for all the services in the same file to adapt to your environment.

In the following ETCD section you can get more information about the Etcd scheme.

Deploy each service in the following sequence:

Mysql using the pxc-cluster

Rabbitmq cluster

Keystone (Must be the first openstack service to establish all the endpoint tables)

Glance

Nova-Controller

Neutron

Nova-Compute

The rest of services (cinder, swift, horizon...)

You can use [k8s-configs] (https://github.com/BBVA/k8s-configs) in order to deploy each service manually in kubernetes, or if you are using Rancher, you can load this folder as a Rancher Catalog.

ETCD: Config loader

The idea is to provide a way to get all the configuration files params and environment variables to the openstack services containers.The config-loader is a Pod launched just one time, which load all the params to the Etcd previously loaded:

Openstack service configuration (For instance, just change the params needed for Glance. If you need some params extra for configure your environment, just add the line with the param needed. The config-loader process will do a merge between the default config-file params and the configuration params loaded here.

The Etcd scheme is configured in different branches to keep the information:

General Environment: Will be created a new branch in the Etcd named general where will be loaded all the enviroment params shown below. An example:

general/MYSQL_ROOT_PASSWORD=mysql_password

Openstack service configuration: Will be created a branch with the next structure:

Obviously, you can deploy manually in kubernetes loading the service, and replication controller yaml files. If you are using Rancher to deploy the stack, just add this repo in the Rancher Catalog gui, to get it available.After that, all the services will be shown available to deploy just with one click!