From 81a41050b826f8c3ee18aad6a97d7b065ed01df7 Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Fri, 6 Jul 2018 14:42:46 -0500 Subject: [PATCH] snap: improve README and Makefile Address code review of pr #82 fixes #88 Signed-off-by: Julio Montes --- .ci/lib.sh | 8 +++--- Makefile | 5 ++-- snap/README.md | 68 ++++++++++++++++++++------------------------------ 3 files changed, 34 insertions(+), 47 deletions(-) diff --git a/.ci/lib.sh b/.ci/lib.sh index ca954da59a..c473259a15 100644 --- a/.ci/lib.sh +++ b/.ci/lib.sh @@ -26,10 +26,10 @@ check_kata_kernel_version(){ } install_yq() { - GOPATH=${GOPATH:-${HOME}/go} - local yq_path="${GOPATH}/bin/yq" + path=$1 + local yq_path=${path}/yq local yq_pkg="github.com/mikefarah/yq" - [ -x "${GOPATH}/bin/yq" ] && return + [ -x "${yq_path}" ] && return case "$(arch)" in "aarch64") @@ -45,7 +45,7 @@ install_yq() { ;; esac - mkdir -p "${GOPATH}/bin" + mkdir -p "${path}" # Workaround to get latest release from github (to not use github token). # Get the redirection to latest release on github. diff --git a/Makefile b/Makefile index 14308d14e9..f0fad0f04f 100644 --- a/Makefile +++ b/Makefile @@ -7,13 +7,14 @@ MK_DIR :=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) SED := sed -YQ := $(shell go env GOPATH)/bin/yq +YQ := $(MK_DIR)/yq SNAPCRAFT_FILE := snap/snapcraft.yaml VERSIONS_YAML_FILE := versions.yaml VERSIONS_YAML_FILE_URL := https://raw.githubusercontent.com/kata-containers/runtime/master/versions.yaml VERSION_FILE := VERSION VERSION_FILE_URL := https://raw.githubusercontent.com/kata-containers/runtime/master/VERSION +export MK_DIR export YQ export VERSION_FILE export VERSIONS_YAML_FILE @@ -31,7 +32,7 @@ test-packaging-tools: @$(MK_DIR)/obs-packaging/build_from_docker.sh $(YQ): - @bash -c "source .ci/lib.sh; install_yq" + @bash -c "source .ci/lib.sh; install_yq $${MK_DIR}" $(VERSION_FILE): @curl -sO $(VERSION_FILE_URL) diff --git a/snap/README.md b/snap/README.md index 0ade99e827..2640b9cb20 100644 --- a/snap/README.md +++ b/snap/README.md @@ -1,9 +1,9 @@ # Kata Containers snap image -* [Kata Containers snap image](#kata-containers-snap-image) * [Initial setup](#initial-setup) -* [Build snap image](#build-snap-image) -* [Install snap (developer)](#install-snap-developer) +* [Install snap](#install-snap) +* [Build and install snap image](#build-and-install-snap-image) +* [Configure Kata Containers](#configure-kata-containers) * [Integration with docker](#integration-with-docker) * [Limitations](#limitations) @@ -18,7 +18,15 @@ This directory contains the resources needed to build the Kata Containers $ sudo apt-get install -y snapd snapcraft ``` -## Build snap image +## Install snap + +You can install Kata Containers from the [snapcraft store][8] or by running the following command: + +```sh +$ sudo snap install kata-containers +``` + +## Build and install snap image Run next command at the root directory of the packaging repository. @@ -26,8 +34,6 @@ Run next command at the root directory of the packaging repository. $ make snap ``` -## Install snap (developer) - To install the resulting snap image, snap must be put in [classic mode][3] and the security confinement must be disabled (*--classic*). Also since the resulting snap has not been signed the verification of signature must be omitted (*--dangerous*). @@ -39,7 +45,7 @@ $ sudo snap install --classic --dangerous kata-containers_[VERSION]_[ARCH].snap Replace `VERSION` with the current version of Kata Containers and `ARCH` with the system architecture. -## Configuring Kata Containers ## +## Configure Kata Containers By default Kata Containers snap image is mounted at `/snap/kata-containers` as a read-only file system, therefore default configuration file can not be edited. @@ -52,48 +58,28 @@ $ sudo cp /snap/kata-containers/current/usr/share/defaults/kata-containers/confi $ $EDITOR /etc/kata-containers/configuration.toml ``` -## Integration with docker ## +## Integration with docker and kubernetes -the path to the runtime provided by the Kata Containers snap image is -`/snap/kata-containers/current/usr/bin/kata-runtime`, this runtime must be added to -[dockerd][5] via `systemd` or `dockerd` configuration file. - -`/etc/systemd/system/docker.service.d/runtime.conf` - -```ini -[Service] -ExecStart=/usr/bin/dockerd -D --add-runtime kata-runtime=/snap/kata-containers/current/usr/bin/kata-runtime --default-runtime=kata-runtime -``` - -or - -`/etc/docker/daemon.json` - -```json -{ - "default-runtime": "kata-runtime", - "runtimes": { - "kata-runtime": { - "path": "/snap/kata-containers/current/usr/bin/kata-runtime" - } - } -} -``` - -after having added the new runtime, the service must be reloaded and restarted - -``` -$ sudo systemctl daemon-reload -$ sudo systemctl restart docker -``` +The path to the runtime provided by the Kata Containers snap image is +`/snap/kata-containers/current/usr/bin/kata-runtime`. You should use it to +run Kata Containers with [docker][9] and [kubernetes][10]. ## Limitations The [miniOS image][2] is not included in the snap image as it is not possible for -QEMU to open a guest RAM backing store on a read-only filesystem. +QEMU to open a guest RAM backing store on a read-only filesystem. Fortunately, +you can start Kata Containers with a Linux initial RAM disk (initrd) that is +included in the snap image. If you want to use the miniOS image instead of initrd, +then a new configuration file can be [created](#configuring-kata-containers) +and [configured][7]. [1]: https://docs.snapcraft.io/snaps/intro [2]: https://github.com/kata-containers/documentation/blob/master/architecture.md#root-filesystem-image [3]: https://docs.snapcraft.io/reference/confinement#classic [4]: https://github.com/kata-containers/runtime [5]: https://docs.docker.com/engine/reference/commandline/dockerd +[6]: https://github.com/kata-containers/documentation/blob/master/install/docker/ubuntu-docker-install.md +[7]: https://github.com/kata-containers/documentation/blob/master/Developer-Guide.md#configure-to-use-initrd-or-rootfs-image +[8]: https://snapcraft.io/kata-containers +[9]: https://github.com/kata-containers/documentation/blob/master/Developer-Guide.md#run-kata-containers-with-docker +[10]: https://github.com/kata-containers/documentation/blob/master/Developer-Guide.md#run-kata-containers-with-kubernetes