The Kolla development community would like to announce the release of Kolla Milestone #1. This milestone constitutes two weeks of effort by the developers and is available for immediate download from

Kolla is a project to containerize OpenStack based upon Kubernetes and Docker. With this release, we have minimally functional containers available for:

 * glance (glance-api, glance-registry)

 * mariadb

 * keystone

 * nova-compute (nova-network, nova-compute)

 * nova-controller (nova-conductor, nova-api, nova-scheduler)

 * rabbitmq

 * heat (heat-api, heat-engine)

While these containers will boot and provide the expected OpenStack APIs, they should be considered a technology demonstration rather than a functional OpenStack deployment.

We are hopeful the community gives Kolla a spin.

Setting up a test environment

OPTION 1 (run steps 1.1-1.5 and 3.1-3.4):
For those without an existing Kubernetes environment, two options are available for configuring one: The upstream Kubernetes community provides instructions for running Kubernetes using Vagrant, available from:

The Kolla developers develop Kolla in OpenStack, using Heat to provision the necessary servers and other resources. If you are familiar with Heat and you have a correctly configured environment available, this lets you deploy a working Kubernetes cluster automatically. The Heat templates are available from The templates require at least Heat 2014.1.3 (earlier versions have a bug that will prevent the templates from working).
Here are some simple steps to get things rolling using the Heat templates:

1.1. git clone; cd heat-kubernetes

1.2. Create an appropriate image by running the script in this repository. This will generate an image called "fedora-20-k8s.qcow2". Upload this image to Glance. You can also obtain an appropriate image from

1.3. Create a file "local.yaml" with settings appropriate to your OpenStack environment. It should look something like:

 * parameters:

 * server_image: fedora-20-k8s

 * ssh_key_name: sdake

 * dns_nameserver:

 * external_network_id: 6e7e7701-46a0-49c0-9f06-ac5abc79d6ae

 * number_of_minions: 1

 * server_flavor: m1.large

 * You *must* provide settings for external_network_id and
   ssh_key_name; these are local to your environment. You will probably
   also need to provide a value for server_image, which should be the
   name (or UUID) of a Fedora 20 cloud image or derivative.

1.4. heat stack-create -f kubecluster.yaml -e local.yaml my-kube-cluster
1.5. Determine the ip addresses of your cluster hosts by running:
    heat output-show my-kube-cluster kube_minions_external

OPTION 2 (run steps 2.1-2.12 and steps 3.1-3.4):

This document and the scripts provided assume Fedora on a virtual or physical environment outside of OpenStack. In this environment, Heat won't be accessible as the orchestration mechanism and scripts will be provided instead.
Install Master
2.1.: Install Fedora 20 x86-64 using whatever method is best for you (Kickstart+http works well if you have it setup)
2.2: Pick a node for your kubernetes master - note the IP address
2.3: Note the IP addresses of all other nodes. These will be referred to as "minions"
2.4: ssh root@{master-node} #It is very important that you ssh as root!
2.5: curl>; chmod +x 2.6: Edit the file you just created. You will need to add the minion IP addresses to the variable MINION_ADDRESSES at the top, and then comment out the exit. MINION_ADDRESSES will expect commas between each minion IP address. This line have entries that match the MINION_HOSTNAME variables set on each minion. The script later will set each MINION_HOSTNAME to its IP address
2.7: sh

Can minion install run during master install or do we need to wait until after master is done to run minion installation?

Install Minions
For this task, you may want to generate an SSH key from your workstation (if you're using Linux, run ssh-keygen) and then copy it around to your minions (if Linux, use ssh-copy-id root@${remote-ip}) You can then loop over the minion hostnames or IP addresses using a simple bash loop, example: for i in ip1 ip2 ip3; do ssh root@$i <command> ; done
This document will assume only one minion

2.8: ssh root@{minion-node}
2.9: curl>; chmod +x 2.10: Edit the file you just created. You will need to change the KUBE_MASTER_IP variable at the top. Editing the BRIDGE_ADDRESS_BASE and LINKMANAGER_KEY variables are optional. Comment out the exit
2.11: sh
2.12: An update has been made to /etc/environment . You can source this file, or log out and log back in. Make sure there is output when you run: env | grep KUBERNETES . This output should match the IP address of your kubernetes master

Installing kolla

3.1. ssh <user>@${minion-ip}
3.2. minion$ git clone
3.3. minion$ cd kolla
3.4. minion$ ./tools/start

After executing these commands, Kolla will start with a minimum viable feature set to make OpenStack usable. This includes running all of the OpenStack services currently enabled. It takes approximately 20 minutes to download the pre-built containers for the various OpenStack services. Once downloaded, the service will transition from WAITING to RUNNING (as can be seen with kubecfg list pods). Our first milestone documented here ( is fairly impressive, considering we had no code two weeks ago.

Our next milestone, #2 is planned for October 31st. The blueprints are documented here:

 * https://blueprints.launchpad/net/kolla/milestone-2

Come join us in developing this really sweet technology!
    -The Kolla Dev Team
OpenStack-dev mailing list

Reply via email to