Last active
August 6, 2019 21:27
-
-
Save gabibeyer/ca61f433eca00dd3123d3f70efbe7614 to your computer and use it in GitHub Desktop.
Running rootless kata and podman on fedora 29 or 30
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash -x | |
# Needs reboot after modify selinux/config file to disable selinux | |
# this is bring ran on a fedora29 ccloudvm instance | |
# ccloudvm create --cpus 4 --mem 4096 --disk 64 --name KataPodmanDemo fedora29 | |
# The main difference between fed28 and fed29 is that the go and conmon packages are up to date | |
# install dependencies (tmux/vim optional) | |
sudo dnf update -y | |
sudo dnf install -y \ | |
git \ | |
wget \ | |
podman \ | |
atomic-registries \ | |
btrfs-progs-devel \ | |
containernetworking-cni \ | |
device-mapper-devel \ | |
gcc \ | |
git \ | |
glib2-devel \ | |
glibc-devel \ | |
glibc-static \ | |
go \ | |
golang-github-cpuguy83-go-md2man \ | |
gpgme-devel \ | |
iptables \ | |
libassuan-devel \ | |
libgpg-error-devel \ | |
libseccomp-devel \ | |
libselinux-devel \ | |
make \ | |
ostree-devel \ | |
pkgconfig \ | |
qemu \ | |
runc \ | |
containers-common \ | |
autoconf \ | |
automake \ | |
libcap-devel | |
# add to kvm group | |
sudo usermod -a -G kvm $USER | |
# disable selinux - not supported by kata | |
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config | |
GOPATH=~/go | |
PATH=/usr/local/go/bin:$GOPATH/bin:$PATH | |
# make go dir | |
mkdir -p $GOPATH/src/ | |
# get libpod and build branch with latest slirp4netns | |
libpodDir="github.com/containers/libpod" | |
slirpDir="github.com/rootless-containers/slirp4netns" | |
kataDir="github.com/kata-containers/runtime" | |
go get -u -d $libpodDir | |
go get -u -d $slirpDir | |
go get -u $kataDir | |
pushd $GOPATH/src/$slirpDir | |
./autogen.sh | |
./configure | |
make && sudo -E make install | |
popd | |
pushd $GOPATH/src/$libpodDir | |
git remote add demo http://github.com/gabibeyer/libpod | |
git fetch demo | |
git checkout rootlessKata | |
make && sudo -E make install | |
popd | |
# install kata | |
source /etc/os-release | |
ARCH=$(arch) | |
BRANCH="${BRANCH:-master}" | |
sudo dnf -y install dnf-plugins-core | |
sudo -E dnf config-manager --add-repo "http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/Fedora_${VERSION_ID}/home:katacontainers:releases:${ARCH}:${BRANCH}.repo" | |
sudo -E dnf -y install kata-runtime kata-proxy kata-shim | |
pushd $GOPATH/src/$kataDir | |
git remote add demo http://github.com/gabibeyer/runtime | |
git fetch demo | |
git checkout rootlessLogic | |
make && sudo -E make install | |
popd | |
# modify kata config file | |
# move to /etc | |
sudo mkdir /etc/kata-containers | |
sudo install -o $USER -g root -m 0640 /usr/share/defaults/kata-containers/configuration.toml /etc/kata-containers | |
sudo sed -i 's/^\(initrd =.*\)/# \1/g' /etc/kata-containers/configuration.toml | |
# enable full debug | |
sudo sed -i -e 's/^# *\(enable_debug\).*=.*$/\1 = true/g' /etc/kata-containers/configuration.toml | |
sudo sed -i -e 's/^kernel_params = "\(.*\)"/kernel_params = "\1 agent.log=debug initcall_debug"/g' /etc/kata-containers/configuration.toml | |
# disable_vhost_net | |
sudo sed -i -e 's/^#disable_vhost_net = true/disable_vhost_net = true/' /etc/kata-containers/configuration.toml | |
# run qemu-lite | |
#sudo sed -i -e 's/^path = "\/usr\/bin\/qemu-system-x86_64"/path = "\/usr\/bin\/qemu-lite-system-x86_64"/' /etc/kata-containers/configuration.toml | |
sudo chown -R $USER:root /usr/share/kata-containers | |
# reboot machine to selinux disabling and kvm group append to take place | |
sudo reboot | |
# to run kata | |
# podman run -it --runtime=/usr/local/bin/kata-runtime alpine sh | |
# or, you can add kata to the libpod config, so you don't have to use the runtime full qualified path everytime. You can even make it the default runtime. | |
# echo " kata = [\"/usr/local/bin/kata-runtime\"]" >> ~/.config/containers/libpod.conf | |
# note: With other commands you will still need to pass the runtime if you don't make it the default: | |
# ex: podman rm --runtime=kata -l | |
# Also, there is a --log-level=debug if you want to see libpod logs, and then the kata logs are in journal |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment