snap: improve README and Makefile

Address code review of pr #82

fixes #88

Signed-off-by: Julio Montes <julio.montes@intel.com>
This commit is contained in:
Julio Montes 2018-07-06 14:42:46 -05:00
parent 540d3a26be
commit 81a41050b8
3 changed files with 34 additions and 47 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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