diff --git a/tests/common.bash b/tests/common.bash index ca8b59bbff..727901a2cf 100644 --- a/tests/common.bash +++ b/tests/common.bash @@ -619,6 +619,63 @@ function install_cni_plugins() { sudo mkdir -p /opt/cni/bin sudo tar -xvf "${tarball_name}" -C /opt/cni/bin rm -f "${tarball_name}" + + cni_config="/etc/cni/net.d/10-containerd-net.conflist" + if [ ! -f ${cni_config} ];then + sudo mkdir -p /etc/cni/net.d + sudo tee "${cni_config}" << EOF +{ + "cniVersion": "1.0.0", + "name": "containerd-net", + "plugins": [ + { + "type": "bridge", + "bridge": "cni0", + "isGateway": true, + "ipMasq": true, + "promiscMode": true, + "ipam": { + "type": "host-local", + "ranges": [ + [{ + "subnet": "10.88.0.0/16" + }], + [{ + "subnet": "2001:4860:4860::/64" + }] + ], + "routes": [ + { "dst": "0.0.0.0/0" }, + { "dst": "::/0" } + ] + } + }, + { + "type": "portmap", + "capabilities": {"portMappings": true} + } + ] +} +EOF + fi +} + +# version: The version to be installed +function install_runc() { + base_version="${1}" + project="opencontainers/runc" + version=$(get_latest_patch_release_from_a_github_project "${project}" "${base_version}") + + if [ -f /usr/local/sbin/runc ]; then + return + fi + + binary_name="runc.$(${repo_root_dir}/tests/kata-arch.sh -g)" + download_github_project_tarball "${project}" "${version}" "${binary_name}" + + sudo mkdir -p /usr/local/sbin + sudo mv $binary_name /usr/local/sbin/runc + sudo chmod +x /usr/local/sbin/runc } # base_version: The version to be intalled in the ${major}.${minor} format @@ -628,14 +685,53 @@ function install_cri_containerd() { project="containerd/containerd" version=$(get_latest_patch_release_from_a_github_project "${project}" "${base_version}") - tarball_name="cri-containerd-cni-${version//v}-linux-$(${repo_root_dir}/tests/kata-arch.sh -g).tar.gz" + tarball_name="containerd-${version//v}-linux-$(${repo_root_dir}/tests/kata-arch.sh -g).tar.gz" download_github_project_tarball "${project}" "${version}" "${tarball_name}" - sudo tar -xvf "${tarball_name}" -C / + #add the "--keep-directory-symlink" option to make sure the untar wouldn't override the + #system rootfs's bin/sbin directory which would be a symbol link to /usr/bin or /usr/sbin. + if [ ! -f /usr/local ]; then + sudo mkdir -p /usr/local + fi + sudo tar --keep-directory-symlink -xvf "${tarball_name}" -C /usr/local/ rm -f "${tarball_name}" sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml + + containerd_service="/etc/systemd/system/containerd.service" + + if [ ! -f ${containerd_service} ]; then + sudo mkdir -p /etc/systemd/system + sudo tee ${containerd_service} <<EOF +[Unit] +Description=containerd container runtime +Documentation=https://containerd.io +After=network.target local-fs.target + +[Service] +ExecStartPre=-/sbin/modprobe overlay +ExecStart=/usr/local/bin/containerd + +Type=notify +Delegate=yes +KillMode=process +Restart=always +RestartSec=5 +# Having non-zero Limit*s causes performance problems due to accounting overhead +# in the kernel. We recommend using cgroups to do container-local accounting. +LimitNPROC=infinity +LimitCORE=infinity +LimitNOFILE=infinity +# Comment TasksMax if your systemd version does not supports it. +# Only systemd 226 and above support this version. +TasksMax=infinity +OOMScoreAdjust=-999 + +[Install] +WantedBy=multi-user.target +EOF + fi } # base_version: The version to be intalled in the ${major}.${minor} format diff --git a/tests/functional/kata-monitor/gha-run.sh b/tests/functional/kata-monitor/gha-run.sh index 9c6a0bd8f6..22fffb8907 100755 --- a/tests/functional/kata-monitor/gha-run.sh +++ b/tests/functional/kata-monitor/gha-run.sh @@ -42,6 +42,8 @@ function install_dependencies() { case "${CONTAINER_ENGINE}" in containerd) github_deps[1]="cri_containerd:$(get_from_kata_deps ".externals.containerd.${CONTAINERD_VERSION}")" + github_deps[2]="runc:$(get_from_kata_deps ".externals.runc.latest")" + github_deps[3]="cni_plugins:$(get_from_kata_deps ".externals.cni-plugins.version")" ;; crio) github_deps[1]="cni_plugins:$(get_from_kata_deps ".externals.cni-plugins.version")" diff --git a/tests/integration/cri-containerd/gha-run.sh b/tests/integration/cri-containerd/gha-run.sh index 9033b0e4f3..caeb410392 100755 --- a/tests/integration/cri-containerd/gha-run.sh +++ b/tests/integration/cri-containerd/gha-run.sh @@ -48,6 +48,8 @@ function install_dependencies() { declare -a github_deps github_deps[0]="cri_containerd:$(get_from_kata_deps ".externals.containerd.${CONTAINERD_VERSION}")" github_deps[1]="cri_tools:$(get_from_kata_deps ".externals.critools.latest")" + github_deps[2]="runc:$(get_from_kata_deps ".externals.runc.latest")" + github_deps[3]="cni_plugins:$(get_from_kata_deps ".externals.cni-plugins.version")" for github_dep in "${github_deps[@]}"; do IFS=":" read -r -a dep <<< "${github_dep}" diff --git a/tests/integration/nydus/gha-run.sh b/tests/integration/nydus/gha-run.sh index 8e8c000cc5..1f26dc8b68 100755 --- a/tests/integration/nydus/gha-run.sh +++ b/tests/integration/nydus/gha-run.sh @@ -39,6 +39,8 @@ function install_dependencies() { github_deps[1]="cri_tools:$(get_from_kata_deps ".externals.critools.latest")" github_deps[2]="nydus:$(get_from_kata_deps ".externals.nydus.version")" github_deps[3]="nydus_snapshotter:$(get_from_kata_deps ".externals.nydus-snapshotter.version")" + github_deps[4]="runc:$(get_from_kata_deps ".externals.runc.latest")" + github_deps[5]="cni_plugins:$(get_from_kata_deps ".externals.cni-plugins.version")" for github_dep in "${github_deps[@]}"; do IFS=":" read -r -a dep <<< "${github_dep}" diff --git a/tests/integration/runk/gha-run.sh b/tests/integration/runk/gha-run.sh index 82bbb75c9b..54f9780873 100755 --- a/tests/integration/runk/gha-run.sh +++ b/tests/integration/runk/gha-run.sh @@ -34,6 +34,8 @@ function install_dependencies() { # - cri-container-cni release tarball already includes CNI plugins declare -a github_deps github_deps[0]="cri_containerd:$(get_from_kata_deps ".externals.containerd.${CONTAINERD_VERSION}")" + github_deps[1]="runc:$(get_from_kata_deps ".externals.runc.latest")" + github_deps[2]="cni_plugins:$(get_from_kata_deps ".externals.cni-plugins.version")" for github_dep in "${github_deps[@]}"; do IFS=":" read -r -a dep <<< "${github_dep}" diff --git a/tests/integration/stdio/gha-run.sh b/tests/integration/stdio/gha-run.sh index 4138b696bd..f8b84c975a 100755 --- a/tests/integration/stdio/gha-run.sh +++ b/tests/integration/stdio/gha-run.sh @@ -34,6 +34,8 @@ function install_dependencies() { # - cri-container-cni release tarball already includes CNI plugins declare -a github_deps github_deps[0]="cri_containerd:$(get_from_kata_deps ".externals.containerd.${CONTAINERD_VERSION}")" + github_deps[1]="runc:$(get_from_kata_deps ".externals.runc.latest")" + github_deps[2]="cni_plugins:$(get_from_kata_deps ".externals.cni-plugins.version")" for github_dep in "${github_deps[@]}"; do IFS=":" read -r -a dep <<< "${github_dep}" diff --git a/versions.yaml b/versions.yaml index 591cff0a20..91c63ca37e 100644 --- a/versions.yaml +++ b/versions.yaml @@ -271,6 +271,11 @@ externals: # create a "latest" entry and use that for the GitHub actions tests. latest: "v1.29" + runc: + description: "CLI tool for spawning and running containers" + url: "https://github.com/opencontainers/runc" + latest: "v1.2" + cryptsetup: description: "A utility used to setup disk encryption, integrity protection" url: "https://gitlab.com/cryptsetup/cryptsetup"