Skip to content

Instantly share code, notes, and snippets.

@eadamsintel
Last active May 18, 2018 15:26
Show Gist options
  • Save eadamsintel/86bd12acd7052ea061766f9698f69819 to your computer and use it in GitHub Desktop.
Save eadamsintel/86bd12acd7052ea061766f9698f69819 to your computer and use it in GitHub Desktop.

Introduction

Updated: May 18th 2018

This guide describes how to get Kata containers working with OpenStack Zun using DevStack on Ubuntu 16.04. It is based on the following links at the time of writing this guide. Running DevStack with this guide will setup Docker and Clear Containers 2.0 which you will replace with Kata Containers.
https://docs.openstack.org/zun/latest/contributor/quickstart.html

https://docs.openstack.org/zun/latest/admin/clear-containers.html

https://github.com/kata-containers/documentation/blob/master/install/ubuntu-installation-guide.md

Install git to use with devstack

sudo apt install git

Setup OpenStack DevStack

sudo mkdir -p /opt/stack
sudo chown $USER /opt/stack
git clone https://git.openstack.org/openstack-dev/devstack /opt/stack/devstack
HOST_IP="$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')"
git clone https://git.openstack.org/openstack/zun /opt/stack/zun
cat /opt/stack/zun/devstack/local.conf.sample \
    | sed "s/HOST_IP=.*/HOST_IP=$HOST_IP/" \
    > /opt/stack/devstack/local.conf
sed -i "s/KURYR_CAPABILITY_SCOPE=.*/KURYR_CAPABILITY_SCOPE=local/" /opt/stack/devstack/local.conf
echo "ENABLE_CLEAR_CONTAINER=true" >> /opt/stack/devstack/local.conf
/opt/stack/devstack/stack.sh
source /opt/stack/devstack/openrc admin admin

This will start OpenStack DevStack with Zun support. Test it out with runc to make sure everything installed correctly and is working.

zun run --name test cirros ping -c 4 8.8.8.8
zun list
zun logs test
zun delete test

Install kata-runtime, kata-shim, and kata-proxy

sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/katacontainers:/release/xUbuntu_$(lsb_release -rs)/ /' >> /etc/apt/sources.list.d/kata-containers.list"
curl -sL  https://download.opensuse.org/repositories/home:/katacontainers:/release/xUbuntu_$(lsb_release -rs)/Release.key | sudo apt-key add -
sudo -E apt-get update
sudo -E apt-get -y install kata-runtime kata-proxy kata-shim

Update Docker with new Kata container runtime

This just replaces the Clear Containers 2.x runtime setup with DevStack with Kata containers

sudo sed -i 's/"cor"/"kata-runtime"/' /etc/docker/daemon.json
sudo sed -i 's/"\/usr\/bin\/cc-oci-runtime"/"\/usr\/bin\/kata-runtime"/' /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker

Test that everything works in both Docker and OpenStack Zun

sudo docker run -ti --runtime kata-runtime busybox sh
zun run --name kata --runtime kata-runtime cirros ping -c 4 8.8.8.8
zun list
zun logs kata

zun delete kata

Stop DevStack and clean up system (Optional)

/opt/stack/devstack/unstack.sh
/opt/stack/devstack/clean.sh

Restart DevStack and reset CC 2.x runtime to kata-runtime

If you already setup Kata containers and want to restart DevStack then run the commands below.

/opt/stack/devstack/unstack.sh
/opt/stack/devstack/clean.sh
/opt/stack/devstack/stack.sh
source /opt/stack/devstack/openrc admin admin
sudo sed -i 's/"cor"/"kata-runtime"/' /etc/docker/daemon.json
sudo sed -i 's/"\/usr\/bin\/cc-oci-runtime"/"\/usr\/bin\/kata-runtime"/' /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment