mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-05-03 22:17:35 +00:00
packaging: Remove snap package
Nobody has volunteered to maintain the (currently broken) snap build, so remove it. Fixes: #6769. Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
This commit is contained in:
parent
2988553305
commit
8cb4238b46
53
.github/workflows/snap-release.yaml
vendored
53
.github/workflows/snap-release.yaml
vendored
@ -1,53 +0,0 @@
|
|||||||
name: Release Kata in snapcraft store
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- '[0-9]+.[0-9]+.[0-9]+*'
|
|
||||||
|
|
||||||
env:
|
|
||||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.snapcraft_token }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release-snap:
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- name: Check out Git repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Install Snapcraft
|
|
||||||
run: |
|
|
||||||
# Required to avoid snapcraft install failure
|
|
||||||
sudo chown root:root /
|
|
||||||
|
|
||||||
# "--classic" is needed for the GitHub action runner
|
|
||||||
# environment.
|
|
||||||
sudo snap install snapcraft --classic
|
|
||||||
|
|
||||||
# Allow other parts to access snap binaries
|
|
||||||
echo /snap/bin >> "$GITHUB_PATH"
|
|
||||||
|
|
||||||
- name: Build snap
|
|
||||||
run: |
|
|
||||||
# Removing man-db, workflow kept failing, fixes: #4480
|
|
||||||
sudo apt -y remove --purge man-db
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y git git-extras
|
|
||||||
kata_url="https://github.com/kata-containers/kata-containers"
|
|
||||||
latest_version=$(git ls-remote --tags ${kata_url} | egrep -o "refs.*" | egrep -v "\-alpha|\-rc|{}" | egrep -o "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" | sort -V -r | head -1)
|
|
||||||
current_version="$(echo ${GITHUB_REF} | cut -d/ -f3)"
|
|
||||||
# Check semantic versioning format (x.y.z) and if the current tag is the latest tag
|
|
||||||
if echo "${current_version}" | grep -q "^[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+$" && echo -e "$latest_version\n$current_version" | sort -C -V; then
|
|
||||||
# Current version is the latest version, build it
|
|
||||||
snapcraft snap --debug --destructive-mode
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Upload snap
|
|
||||||
run: |
|
|
||||||
snap_version="$(echo ${GITHUB_REF} | cut -d/ -f3)"
|
|
||||||
snap_file="kata-containers_${snap_version}_amd64.snap"
|
|
||||||
# Upload the snap if it exists
|
|
||||||
if [ -f ${snap_file} ]; then
|
|
||||||
snapcraft upload --release=stable ${snap_file}
|
|
||||||
fi
|
|
37
.github/workflows/snap.yaml
vendored
37
.github/workflows/snap.yaml
vendored
@ -1,37 +0,0 @@
|
|||||||
name: snap CI
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- opened
|
|
||||||
- synchronize
|
|
||||||
- reopened
|
|
||||||
- edited
|
|
||||||
paths-ignore: [ '**.md', '**.png', '**.jpg', '**.jpeg', '**.svg', '/docs/**' ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- name: Check out
|
|
||||||
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }}
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Install Snapcraft
|
|
||||||
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }}
|
|
||||||
run: |
|
|
||||||
# Required to avoid snapcraft install failure
|
|
||||||
sudo chown root:root /
|
|
||||||
|
|
||||||
# "--classic" is needed for the GitHub action runner
|
|
||||||
# environment.
|
|
||||||
sudo snap install snapcraft --classic
|
|
||||||
|
|
||||||
# Allow other parts to access snap binaries
|
|
||||||
echo /snap/bin >> "$GITHUB_PATH"
|
|
||||||
|
|
||||||
- name: Build snap
|
|
||||||
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }}
|
|
||||||
run: |
|
|
||||||
snapcraft snap --debug --destructive-mode
|
|
@ -146,8 +146,6 @@ The table below lists the remaining parts of the project:
|
|||||||
|
|
||||||
Kata Containers is now
|
Kata Containers is now
|
||||||
[available natively for most distributions](docs/install/README.md#packaged-installation-methods).
|
[available natively for most distributions](docs/install/README.md#packaged-installation-methods).
|
||||||
However, packaging scripts and metadata are still used to generate [snap](snap/local) and GitHub releases. See
|
|
||||||
the [components](#components) section for further details.
|
|
||||||
|
|
||||||
## Glossary of Terms
|
## Glossary of Terms
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ Packaged installation methods uses your distribution's native package format (su
|
|||||||
|------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------|-----------------------------------------------------------------------------------------------|
|
|------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------|-----------------------------------------------------------------------------------------------|
|
||||||
| [Using kata-deploy](#kata-deploy-installation) | The preferred way to deploy the Kata Containers distributed binaries on a Kubernetes cluster | **No!** | Best way to give it a try on kata-containers on an already up and running Kubernetes cluster. |
|
| [Using kata-deploy](#kata-deploy-installation) | The preferred way to deploy the Kata Containers distributed binaries on a Kubernetes cluster | **No!** | Best way to give it a try on kata-containers on an already up and running Kubernetes cluster. |
|
||||||
| [Using official distro packages](#official-packages) | Kata packages provided by Linux distributions official repositories | yes | Recommended for most users. |
|
| [Using official distro packages](#official-packages) | Kata packages provided by Linux distributions official repositories | yes | Recommended for most users. |
|
||||||
| ~~[Using snap](#snap-installation)~~ | ~~Easy to install~~ | ~~yes~~ | **Snap is unmaintained!** ~~Good alternative to official distro packages.~~ |
|
|
||||||
| [Automatic](#automatic-installation) | Run a single command to install a full system | **No!** | For those wanting the latest release quickly. |
|
| [Automatic](#automatic-installation) | Run a single command to install a full system | **No!** | For those wanting the latest release quickly. |
|
||||||
| [Manual](#manual-installation) | Follow a guide step-by-step to install a working system | **No!** | For those who want the latest release with more control. |
|
| [Manual](#manual-installation) | Follow a guide step-by-step to install a working system | **No!** | For those who want the latest release with more control. |
|
||||||
| [Build from source](#build-from-source-installation) | Build the software components manually | **No!** | Power users and developers only. |
|
| [Build from source](#build-from-source-installation) | Build the software components manually | **No!** | Power users and developers only. |
|
||||||
@ -42,27 +41,6 @@ Kata packages are provided by official distribution repositories for:
|
|||||||
| [CentOS](centos-installation-guide.md) | 8 |
|
| [CentOS](centos-installation-guide.md) | 8 |
|
||||||
| [Fedora](fedora-installation-guide.md) | 34 |
|
| [Fedora](fedora-installation-guide.md) | 34 |
|
||||||
|
|
||||||
### Snap Installation
|
|
||||||
|
|
||||||
> **WARNING:**
|
|
||||||
>
|
|
||||||
> The Snap package method is **unmaintained** and only provides an old
|
|
||||||
> version of Kata Containers:
|
|
||||||
> The [latest Kata Containers snap](https://snapcraft.io/kata-containers)
|
|
||||||
> provides Kata Containers
|
|
||||||
> [version 2.4.2](https://github.com/kata-containers/kata-containers/releases/tag/2.4.2)
|
|
||||||
> but the latest stable Kata Containers release at the time of writing is
|
|
||||||
> [version 3.1.0](https://github.com/kata-containers/kata-containers/releases/tag/3.1.0).
|
|
||||||
>
|
|
||||||
> We recommend strongly that you switch to an alternative Kata Containers installation method.
|
|
||||||
>
|
|
||||||
> See: https://github.com/kata-containers/kata-containers/issues/6769
|
|
||||||
> for further details.
|
|
||||||
|
|
||||||
~~The snap installation is available for all distributions which support `snapd`.~~
|
|
||||||
|
|
||||||
~~[Use snap](snap-installation-guide.md) to install Kata Containers from https://snapcraft.io. ~~
|
|
||||||
|
|
||||||
### Automatic Installation
|
### Automatic Installation
|
||||||
|
|
||||||
[Use `kata-manager`](/utils/README.md) to automatically install a working Kata Containers system.
|
[Use `kata-manager`](/utils/README.md) to automatically install a working Kata Containers system.
|
||||||
|
@ -26,7 +26,6 @@ architectures:
|
|||||||
|------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------|-----------------------------------------------------------------------------------------------|----------- |
|
|------------------------------------------------------|----------------------------------------------------------------------------------------------|-------------------|-----------------------------------------------------------------------------------------------|----------- |
|
||||||
| [Using kata-deploy](#kata-deploy-installation) | The preferred way to deploy the Kata Containers distributed binaries on a Kubernetes cluster | **No!** | Best way to give it a try on kata-containers on an already up and running Kubernetes cluster. | Yes |
|
| [Using kata-deploy](#kata-deploy-installation) | The preferred way to deploy the Kata Containers distributed binaries on a Kubernetes cluster | **No!** | Best way to give it a try on kata-containers on an already up and running Kubernetes cluster. | Yes |
|
||||||
| [Using official distro packages](#official-packages) | Kata packages provided by Linux distributions official repositories | yes | Recommended for most users. | No |
|
| [Using official distro packages](#official-packages) | Kata packages provided by Linux distributions official repositories | yes | Recommended for most users. | No |
|
||||||
| [Using snap](#snap-installation) | Easy to install | yes | Good alternative to official distro packages. | No |
|
|
||||||
| [Automatic](#automatic-installation) | Run a single command to install a full system | **No!** | For those wanting the latest release quickly. | No |
|
| [Automatic](#automatic-installation) | Run a single command to install a full system | **No!** | For those wanting the latest release quickly. | No |
|
||||||
| [Manual](#manual-installation) | Follow a guide step-by-step to install a working system | **No!** | For those who want the latest release with more control. | No |
|
| [Manual](#manual-installation) | Follow a guide step-by-step to install a working system | **No!** | For those who want the latest release with more control. | No |
|
||||||
| [Build from source](#build-from-source-installation) | Build the software components manually | **No!** | Power users and developers only. | Yes |
|
| [Build from source](#build-from-source-installation) | Build the software components manually | **No!** | Power users and developers only. | Yes |
|
||||||
@ -36,8 +35,6 @@ architectures:
|
|||||||
Follow the [`kata-deploy`](../../tools/packaging/kata-deploy/README.md).
|
Follow the [`kata-deploy`](../../tools/packaging/kata-deploy/README.md).
|
||||||
### Official packages
|
### Official packages
|
||||||
`ToDo`
|
`ToDo`
|
||||||
### Snap Installation
|
|
||||||
`ToDo`
|
|
||||||
### Automatic Installation
|
### Automatic Installation
|
||||||
`ToDo`
|
`ToDo`
|
||||||
### Manual Installation
|
### Manual Installation
|
||||||
|
@ -1,82 +0,0 @@
|
|||||||
# Kata Containers snap package
|
|
||||||
|
|
||||||
> **WARNING:**
|
|
||||||
>
|
|
||||||
> The Snap package method is **unmaintained** and only provides an old
|
|
||||||
> version of Kata Containers:
|
|
||||||
> The [latest Kata Containers snap](https://snapcraft.io/kata-containers)
|
|
||||||
> provides Kata Containers
|
|
||||||
> [version 2.4.2](https://github.com/kata-containers/kata-containers/releases/tag/2.4.2)
|
|
||||||
> but the latest stable Kata Containers release at the time of writing is
|
|
||||||
> [version 3.1.0](https://github.com/kata-containers/kata-containers/releases/tag/3.1.0).
|
|
||||||
>
|
|
||||||
> We recommend strongly that you switch to an alternative Kata Containers installation method.
|
|
||||||
>
|
|
||||||
> See: https://github.com/kata-containers/kata-containers/issues/6769
|
|
||||||
> for further details.
|
|
||||||
|
|
||||||
## Install Kata Containers
|
|
||||||
|
|
||||||
Kata Containers can be installed in any Linux distribution that supports
|
|
||||||
[snapd](https://docs.snapcraft.io/installing-snapd).
|
|
||||||
|
|
||||||
Run the following command to install **Kata Containers**:
|
|
||||||
|
|
||||||
> **WARNING:**
|
|
||||||
>
|
|
||||||
> The Snap package method is **unmaintained** and only provides an old
|
|
||||||
> version of Kata Containers:
|
|
||||||
> The [latest Kata Containers snap](https://snapcraft.io/kata-containers)
|
|
||||||
> provides Kata Containers
|
|
||||||
> [version 2.4.2](https://github.com/kata-containers/kata-containers/releases/tag/2.4.2)
|
|
||||||
> but the latest stable Kata Containers release at the time of writing is
|
|
||||||
> [version 3.1.0](https://github.com/kata-containers/kata-containers/releases/tag/3.1.0).
|
|
||||||
>
|
|
||||||
> We recommend strongly that you switch to an alternative Kata Containers installation method.
|
|
||||||
>
|
|
||||||
> See: https://github.com/kata-containers/kata-containers/issues/6769
|
|
||||||
> for further details.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ sudo snap install kata-containers --stable --classic
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
Fortunately Kata Containers supports loading a configuration file from another
|
|
||||||
path than the default.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ sudo mkdir -p /etc/kata-containers
|
|
||||||
$ sudo cp /snap/kata-containers/current/usr/share/defaults/kata-containers/configuration.toml /etc/kata-containers/
|
|
||||||
$ $EDITOR /etc/kata-containers/configuration.toml
|
|
||||||
```
|
|
||||||
|
|
||||||
## Integration with shim v2 Container Engines
|
|
||||||
|
|
||||||
The Container engine daemon (`cri-o`, `containerd`, etc) needs to be able to find the
|
|
||||||
`containerd-shim-kata-v2` binary to allow Kata Containers to be created.
|
|
||||||
Run the following command to create a symbolic link to the shim v2 binary.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ sudo ln -sf /snap/kata-containers/current/usr/bin/containerd-shim-kata-v2 /usr/local/bin/containerd-shim-kata-v2
|
|
||||||
```
|
|
||||||
|
|
||||||
Once the symbolic link has been created and the engine daemon configured, `io.containerd.kata.v2`
|
|
||||||
can be used as runtime.
|
|
||||||
|
|
||||||
Read the following documents to know how to run Kata Containers 2.x with `containerd`.
|
|
||||||
|
|
||||||
* [How to use Kata Containers and Containerd](../how-to/containerd-kata.md)
|
|
||||||
* [Install Kata Containers with containerd](./container-manager/containerd/containerd-install.md)
|
|
||||||
|
|
||||||
|
|
||||||
## Remove Kata Containers snap package
|
|
||||||
|
|
||||||
Run the following command to remove the Kata Containers snap:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ sudo snap remove kata-containers
|
|
||||||
```
|
|
@ -1,101 +0,0 @@
|
|||||||
# Kata Containers snap image
|
|
||||||
|
|
||||||
This directory contains the resources needed to build the Kata Containers
|
|
||||||
[snap][1] image.
|
|
||||||
|
|
||||||
## Initial setup
|
|
||||||
|
|
||||||
Kata Containers can be installed in any Linux distribution that supports
|
|
||||||
[snapd](https://docs.snapcraft.io/installing-snapd). For this example, we
|
|
||||||
assume Ubuntu as your base distro.
|
|
||||||
```sh
|
|
||||||
$ sudo apt-get --no-install-recommends install -y apt-utils ca-certificates snapd snapcraft
|
|
||||||
```
|
|
||||||
|
|
||||||
## Install snap
|
|
||||||
|
|
||||||
You can install the Kata Containers snap from the [snapcraft store][8] or by running the following command:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ sudo snap install kata-containers --classic
|
|
||||||
```
|
|
||||||
|
|
||||||
## Build and install snap image
|
|
||||||
|
|
||||||
Run the command below which will use the packaging Makefile to build the snap image:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ make -C tools/packaging snap
|
|
||||||
```
|
|
||||||
|
|
||||||
> **Warning:**
|
|
||||||
>
|
|
||||||
> By default, `snapcraft` will create a clean virtual machine
|
|
||||||
> environment to build the snap in using the `multipass` tool.
|
|
||||||
>
|
|
||||||
> However, `multipass` is silently disabled when `--destructive-mode` is
|
|
||||||
> used.
|
|
||||||
>
|
|
||||||
> Since building the Kata Containers package currently requires
|
|
||||||
> `--destructive-mode`, the snap will be built using the host
|
|
||||||
> environment. To avoid parts of the build auto-detecting additional
|
|
||||||
> features to enable (for example for QEMU), we recommend that you
|
|
||||||
> only run the snap build in a minimal host environment.
|
|
||||||
|
|
||||||
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`).
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ 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.
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
Fortunately [`kata-runtime`][4] supports loading a configuration file from another
|
|
||||||
path than the default.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ sudo mkdir -p /etc/kata-containers
|
|
||||||
$ sudo cp /snap/kata-containers/current/usr/share/defaults/kata-containers/configuration.toml /etc/kata-containers/
|
|
||||||
$ $EDITOR /etc/kata-containers/configuration.toml
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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`. You should use it to
|
|
||||||
run Kata Containers with [docker][9] and [Kubernetes][10].
|
|
||||||
|
|
||||||
## Remove snap
|
|
||||||
|
|
||||||
You can remove the Kata Containers snap by running the following command:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ sudo snap remove kata-containers
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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. 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](#configure-kata-containers)
|
|
||||||
and [configured][7].
|
|
||||||
|
|
||||||
[1]: https://docs.snapcraft.io/snaps/intro
|
|
||||||
[2]: ../../docs/design/architecture/README.md#root-filesystem-image
|
|
||||||
[3]: https://docs.snapcraft.io/reference/confinement#classic
|
|
||||||
[4]: https://github.com/kata-containers/kata-containers/tree/main/src/runtime#configuration
|
|
||||||
[5]: https://docs.docker.com/engine/reference/commandline/dockerd
|
|
||||||
[6]: ../../docs/install/docker/ubuntu-docker-install.md
|
|
||||||
[7]: ../../docs/Developer-Guide.md#configure-to-use-initrd-or-rootfs-image
|
|
||||||
[8]: https://snapcraft.io/kata-containers
|
|
||||||
[9]: ../../docs/Developer-Guide.md#run-kata-containers-with-docker
|
|
||||||
[10]: ../../docs/Developer-Guide.md#run-kata-containers-with-kubernetes
|
|
@ -1,114 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Copyright (c) 2022 Intel Corporation
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
# Description: Idempotent script to be sourced by all parts in a
|
|
||||||
# snapcraft config file.
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
# XXX: Bash-specific code. zsh doesn't support this option and that *does*
|
|
||||||
# matter if this script is run sourced... since it'll be using zsh! ;)
|
|
||||||
[ -n "$BASH_VERSION" ] && set -o errtrace
|
|
||||||
|
|
||||||
[ -n "${DEBUG:-}" ] && set -o xtrace
|
|
||||||
|
|
||||||
die()
|
|
||||||
{
|
|
||||||
echo >&2 "ERROR: $0: $*"
|
|
||||||
}
|
|
||||||
|
|
||||||
[ -n "${SNAPCRAFT_STAGE:-}" ] ||\
|
|
||||||
die "must be sourced from a snapcraft config file"
|
|
||||||
|
|
||||||
snap_yq_version=3.4.1
|
|
||||||
|
|
||||||
snap_common_install_yq()
|
|
||||||
{
|
|
||||||
export yq="${SNAPCRAFT_STAGE}/bin/yq"
|
|
||||||
|
|
||||||
local yq_pkg
|
|
||||||
yq_pkg="github.com/mikefarah/yq"
|
|
||||||
|
|
||||||
local yq_url
|
|
||||||
yq_url="https://${yq_pkg}/releases/download/${snap_yq_version}/yq_${goos}_${goarch}"
|
|
||||||
curl -o "${yq}" -L "${yq_url}"
|
|
||||||
chmod +x "${yq}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function that should be called for each snap "part" in
|
|
||||||
# snapcraft.yaml.
|
|
||||||
snap_common_main()
|
|
||||||
{
|
|
||||||
# Architecture
|
|
||||||
arch="$(uname -m)"
|
|
||||||
|
|
||||||
case "${arch}" in
|
|
||||||
aarch64)
|
|
||||||
goarch="arm64"
|
|
||||||
qemu_arch="${arch}"
|
|
||||||
;;
|
|
||||||
|
|
||||||
ppc64le)
|
|
||||||
goarch="ppc64le"
|
|
||||||
qemu_arch="ppc64"
|
|
||||||
;;
|
|
||||||
|
|
||||||
s390x)
|
|
||||||
goarch="${arch}"
|
|
||||||
qemu_arch="${arch}"
|
|
||||||
;;
|
|
||||||
|
|
||||||
x86_64)
|
|
||||||
goarch="amd64"
|
|
||||||
qemu_arch="${arch}"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*) die "unsupported architecture: ${arch}" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dpkg_arch=$(dpkg --print-architecture)
|
|
||||||
|
|
||||||
# golang
|
|
||||||
#
|
|
||||||
# We need the O/S name in golang format, but since we don't
|
|
||||||
# know if the godeps part has run, we don't know if golang is
|
|
||||||
# available yet, hence fall back to a standard system command.
|
|
||||||
goos="$(go env GOOS &>/dev/null || true)"
|
|
||||||
[ -z "$goos" ] && goos=$(uname -s|tr '[A-Z]' '[a-z]')
|
|
||||||
|
|
||||||
export GOROOT="${SNAPCRAFT_STAGE}"
|
|
||||||
export GOPATH="${GOROOT}/gopath"
|
|
||||||
export GO111MODULE="auto"
|
|
||||||
|
|
||||||
mkdir -p "${GOPATH}/bin"
|
|
||||||
export PATH="${GOPATH}/bin:${PATH}"
|
|
||||||
|
|
||||||
# Proxy
|
|
||||||
export http_proxy="${http_proxy:-}"
|
|
||||||
export https_proxy="${https_proxy:-}"
|
|
||||||
|
|
||||||
# Binaries
|
|
||||||
mkdir -p "${SNAPCRAFT_STAGE}/bin"
|
|
||||||
|
|
||||||
export PATH="$PATH:${SNAPCRAFT_STAGE}/bin"
|
|
||||||
|
|
||||||
# YAML query tool
|
|
||||||
export yq="${SNAPCRAFT_STAGE}/bin/yq"
|
|
||||||
|
|
||||||
# Kata paths
|
|
||||||
export kata_dir=$(printf "%s/src/github.com/%s/%s" \
|
|
||||||
"${GOPATH}" \
|
|
||||||
"${SNAPCRAFT_PROJECT_NAME}" \
|
|
||||||
"${SNAPCRAFT_PROJECT_NAME}")
|
|
||||||
|
|
||||||
export versions_file="${kata_dir}/versions.yaml"
|
|
||||||
|
|
||||||
[ -n "${yq:-}" ] && [ -x "${yq:-}" ] || snap_common_install_yq
|
|
||||||
}
|
|
||||||
|
|
||||||
snap_common_main
|
|
@ -1,170 +0,0 @@
|
|||||||
name: kata-containers
|
|
||||||
website: https://github.com/kata-containers/kata-containers
|
|
||||||
summary: Build lightweight VMs that seamlessly plug into the containers ecosystem
|
|
||||||
description: |
|
|
||||||
Kata Containers is an open source project and community working to build a
|
|
||||||
standard implementation of lightweight Virtual Machines (VMs) that feel and
|
|
||||||
perform like containers, but provide the workload isolation and security
|
|
||||||
advantages of VMs
|
|
||||||
confinement: classic
|
|
||||||
adopt-info: metadata
|
|
||||||
base: core20
|
|
||||||
|
|
||||||
parts:
|
|
||||||
metadata:
|
|
||||||
plugin: nil
|
|
||||||
prime:
|
|
||||||
- -*
|
|
||||||
build-packages:
|
|
||||||
- git
|
|
||||||
- git-extras
|
|
||||||
override-pull: |
|
|
||||||
source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh"
|
|
||||||
|
|
||||||
version="9999"
|
|
||||||
|
|
||||||
if echo "${GITHUB_REF:-}" | grep -q -E "^refs/tags"; then
|
|
||||||
version=$(echo ${GITHUB_REF:-} | cut -d/ -f3)
|
|
||||||
git checkout ${version}
|
|
||||||
fi
|
|
||||||
|
|
||||||
snapcraftctl set-grade "stable"
|
|
||||||
snapcraftctl set-version "${version}"
|
|
||||||
|
|
||||||
mkdir -p $(dirname ${kata_dir})
|
|
||||||
ln -sf $(realpath "${SNAPCRAFT_STAGE}/..") ${kata_dir}
|
|
||||||
|
|
||||||
docker:
|
|
||||||
after: [metadata]
|
|
||||||
plugin: nil
|
|
||||||
prime:
|
|
||||||
- -*
|
|
||||||
build-packages:
|
|
||||||
- ca-certificates
|
|
||||||
- containerd
|
|
||||||
- curl
|
|
||||||
- gnupg
|
|
||||||
- lsb-release
|
|
||||||
- runc
|
|
||||||
override-build: |
|
|
||||||
source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh"
|
|
||||||
|
|
||||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |\
|
|
||||||
sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
|
||||||
distro_codename=$(lsb_release -cs)
|
|
||||||
echo "deb [arch=${dpkg_arch} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu ${distro_codename} stable" |\
|
|
||||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
||||||
sudo apt-get -y update
|
|
||||||
sudo apt-get -y install docker-ce docker-ce-cli containerd.io
|
|
||||||
|
|
||||||
echo "Unmasking docker service"
|
|
||||||
sudo -E systemctl unmask docker.service || true
|
|
||||||
sudo -E systemctl unmask docker.socket || true
|
|
||||||
echo "Adding $USER into docker group"
|
|
||||||
sudo -E gpasswd -a $USER docker
|
|
||||||
echo "Starting docker"
|
|
||||||
# docker may fail to start using "fd://" in docker.service
|
|
||||||
sudo sed -i 's/fd:\/\//unix:\/\//g' /lib/systemd/system/docker.service
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
sudo -E systemctl start docker || true
|
|
||||||
|
|
||||||
image:
|
|
||||||
after: [docker]
|
|
||||||
plugin: nil
|
|
||||||
override-build: |
|
|
||||||
source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh"
|
|
||||||
|
|
||||||
cd "${SNAPCRAFT_PROJECT_DIR}"
|
|
||||||
sudo -E NO_TTY=true make rootfs-image-tarball
|
|
||||||
|
|
||||||
tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-rootfs-image.tar.xz"
|
|
||||||
|
|
||||||
tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}"
|
|
||||||
|
|
||||||
|
|
||||||
sudo -E NO_TTY=true make rootfs-initrd-tarball
|
|
||||||
|
|
||||||
tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-rootfs-initrd.tar.xz"
|
|
||||||
|
|
||||||
tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}"
|
|
||||||
|
|
||||||
|
|
||||||
runtime:
|
|
||||||
after: [docker]
|
|
||||||
plugin: nil
|
|
||||||
override-build: |
|
|
||||||
source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh"
|
|
||||||
|
|
||||||
cd "${SNAPCRAFT_PROJECT_DIR}"
|
|
||||||
sudo -E NO_TTY=true make shim-v2-tarball
|
|
||||||
|
|
||||||
tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-shim-v2.tar.xz"
|
|
||||||
|
|
||||||
tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}"
|
|
||||||
|
|
||||||
mkdir -p "${SNAPCRAFT_PART_INSTALL}/usr/bin"
|
|
||||||
ln -sf "${SNAPCRAFT_PART_INSTALL}/opt/kata/bin/containerd-shim-kata-v2" "${SNAPCRAFT_PART_INSTALL}/usr/bin/containerd-shim-kata-v2"
|
|
||||||
ln -sf "${SNAPCRAFT_PART_INSTALL}/opt/kata/bin/kata-runtime" "${SNAPCRAFT_PART_INSTALL}/usr/bin/kata-runtime"
|
|
||||||
ln -sf "${SNAPCRAFT_PART_INSTALL}/opt/kata/bin/kata-collect-data.sh" "${SNAPCRAFT_PART_INSTALL}/usr/bin/kata-collect-data.sh"
|
|
||||||
|
|
||||||
kernel:
|
|
||||||
after: [docker]
|
|
||||||
plugin: nil
|
|
||||||
override-build: |
|
|
||||||
source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh"
|
|
||||||
|
|
||||||
cd "${SNAPCRAFT_PROJECT_DIR}"
|
|
||||||
sudo -E NO_TTY=true make kernel-tarball
|
|
||||||
|
|
||||||
tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-kernel.tar.xz"
|
|
||||||
|
|
||||||
tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}"
|
|
||||||
|
|
||||||
qemu:
|
|
||||||
plugin: make
|
|
||||||
after: [docker]
|
|
||||||
override-build: |
|
|
||||||
source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh"
|
|
||||||
|
|
||||||
cd "${SNAPCRAFT_PROJECT_DIR}"
|
|
||||||
sudo -E NO_TTY=true make qemu-tarball
|
|
||||||
|
|
||||||
tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-qemu.tar.xz"
|
|
||||||
|
|
||||||
tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}"
|
|
||||||
|
|
||||||
virtiofsd:
|
|
||||||
plugin: nil
|
|
||||||
after: [docker]
|
|
||||||
override-build: |
|
|
||||||
source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh"
|
|
||||||
|
|
||||||
cd "${SNAPCRAFT_PROJECT_DIR}"
|
|
||||||
sudo -E NO_TTY=true make virtiofsd-tarball
|
|
||||||
|
|
||||||
tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-virtiofsd.tar.xz"
|
|
||||||
|
|
||||||
tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}"
|
|
||||||
|
|
||||||
cloud-hypervisor:
|
|
||||||
plugin: nil
|
|
||||||
after: [docker]
|
|
||||||
override-build: |
|
|
||||||
source "${SNAPCRAFT_PROJECT_DIR}/snap/local/snap-common.sh"
|
|
||||||
|
|
||||||
if [ "${arch}" == "aarch64" ] || [ "${arch}" == "x86_64" ]; then
|
|
||||||
cd "${SNAPCRAFT_PROJECT_DIR}"
|
|
||||||
sudo -E NO_TTY=true make cloud-hypervisor-tarball
|
|
||||||
|
|
||||||
tarfile="${SNAPCRAFT_PROJECT_DIR}/tools/packaging/kata-deploy/local-build/build/kata-static-cloud-hypervisor.tar.xz"
|
|
||||||
|
|
||||||
tar -xvJpf "${tarfile}" -C "${SNAPCRAFT_PART_INSTALL}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
apps:
|
|
||||||
runtime:
|
|
||||||
command: usr/bin/kata-runtime
|
|
||||||
shim:
|
|
||||||
command: usr/bin/containerd-shim-kata-v2
|
|
||||||
collect-data:
|
|
||||||
command: usr/bin/kata-collect-data.sh
|
|
@ -32,8 +32,6 @@ to work seamlessly with both Docker and Kubernetes respectively.
|
|||||||
|
|
||||||
## Download and install
|
## Download and install
|
||||||
|
|
||||||
[](https://snapcraft.io/kata-containers)
|
|
||||||
|
|
||||||
See the [installation guides](../../docs/install/README.md)
|
See the [installation guides](../../docs/install/README.md)
|
||||||
available for various operating systems.
|
available for various operating systems.
|
||||||
|
|
||||||
|
2
tools/packaging/.gitignore
vendored
2
tools/packaging/.gitignore
vendored
@ -1,7 +1,6 @@
|
|||||||
*.img
|
*.img
|
||||||
*.initrd
|
*.initrd
|
||||||
*.sha256
|
*.sha256
|
||||||
*.snap
|
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
*.tar.xz
|
*.tar.xz
|
||||||
*.gz
|
*.gz
|
||||||
@ -13,7 +12,6 @@ debian.series
|
|||||||
parts/
|
parts/
|
||||||
prime/
|
prime/
|
||||||
sha256sums.asc
|
sha256sums.asc
|
||||||
snap/.snapcraft/
|
|
||||||
stage/
|
stage/
|
||||||
typescript
|
typescript
|
||||||
kata-linux-*
|
kata-linux-*
|
||||||
|
@ -8,13 +8,11 @@
|
|||||||
MK_DIR :=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
MK_DIR :=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||||
SED := sed
|
SED := sed
|
||||||
YQ := $(MK_DIR)/yq
|
YQ := $(MK_DIR)/yq
|
||||||
SNAPCRAFT_FILE := ../../snap/snapcraft.yaml
|
|
||||||
VERSIONS_YAML_FILE := ../../versions.yaml
|
VERSIONS_YAML_FILE := ../../versions.yaml
|
||||||
VERSION_FILE := ../../VERSION
|
VERSION_FILE := ../../VERSION
|
||||||
|
|
||||||
export MK_DIR
|
export MK_DIR
|
||||||
export YQ
|
export YQ
|
||||||
export SNAPCRAFT_FILE
|
|
||||||
export VERSION_FILE
|
export VERSION_FILE
|
||||||
export VERSIONS_YAML_FILE
|
export VERSIONS_YAML_FILE
|
||||||
|
|
||||||
@ -25,10 +23,4 @@ test-static-build:
|
|||||||
$(YQ):
|
$(YQ):
|
||||||
@bash -c "source scripts/lib.sh; install_yq $${MK_DIR}"
|
@bash -c "source scripts/lib.sh; install_yq $${MK_DIR}"
|
||||||
|
|
||||||
snap: $(YQ)
|
.PHONY: test-static-build
|
||||||
@if [ "$$(cat $(VERSION_FILE))" != "$$($(YQ) r $(SNAPCRAFT_FILE) version)" ]; then \
|
|
||||||
>&2 echo "Warning: $(SNAPCRAFT_FILE) version is different to upstream $(VERSION_FILE) file"; \
|
|
||||||
fi
|
|
||||||
snapcraft -d --destructive-mode
|
|
||||||
|
|
||||||
.PHONY: test-static-build snap
|
|
||||||
|
@ -12,10 +12,6 @@ Kata build artifacts are available within a container image, created by a
|
|||||||
[`kata-deploy`](kata-deploy), which make installation of Kata Containers in a
|
[`kata-deploy`](kata-deploy), which make installation of Kata Containers in a
|
||||||
running Kubernetes Cluster very straightforward.
|
running Kubernetes Cluster very straightforward.
|
||||||
|
|
||||||
## Build a snap package
|
|
||||||
|
|
||||||
See [the snap documentation](../../snap/local).
|
|
||||||
|
|
||||||
## Build static binaries
|
## Build static binaries
|
||||||
|
|
||||||
See [the static build documentation](static-build).
|
See [the static build documentation](static-build).
|
||||||
|
@ -9,8 +9,7 @@ automates the process to build a kernel for Kata Containers.
|
|||||||
The `build-kernel.sh` script requires an installed Golang version matching the
|
The `build-kernel.sh` script requires an installed Golang version matching the
|
||||||
[component build requirements](../../../docs/Developer-Guide.md#requirements-to-build-individual-components).
|
[component build requirements](../../../docs/Developer-Guide.md#requirements-to-build-individual-components).
|
||||||
It also requires [yq](https://github.com/mikefarah/yq) version 3.4.1
|
It also requires [yq](https://github.com/mikefarah/yq) version 3.4.1
|
||||||
> **Hint**: `snap install yq --channel=v3/stable` \
|
> **Hint**: `go install github.com/mikefarah/yq/v3@latest`
|
||||||
> **or** `go install github.com/mikefarah/yq/v3@latest`
|
|
||||||
|
|
||||||
|
|
||||||
The Linux kernel scripts further require a few packages (flex, bison, and libelf-dev)
|
The Linux kernel scripts further require a few packages (flex, bison, and libelf-dev)
|
||||||
|
Loading…
Reference in New Issue
Block a user