kata-containers/patches/0004-kata-deploy-Add-StratoVirt-support-to-deploy-process.patch
2025-05-18 17:30:05 +00:00

247 lines
8.8 KiB
Diff

From a89fca251514dee26b4e6e077f4a0484a2d45a5f Mon Sep 17 00:00:00 2001
From: Liu Wenyuan <liuwenyuan9@huawei.com>
Date: Fri, 1 Sep 2023 20:44:30 +0800
Subject: [PATCH 4/5] kata-deploy: Add StratoVirt support to deploy process
Allow kata-deploy process to pull StratoVirt from release binaries, and
add them as a part of kata release.
Signed-off-by: Liu Wenyuan <liuwenyuan9@huawei.com>
---
.../kata-cleanup/base/kata-cleanup.yaml | 2 +-
.../kata-deploy/base/kata-deploy.yaml | 2 +-
.../kata-deploy/local-build/Makefile | 4 ++
.../local-build/kata-deploy-binaries.sh | 28 ++++++++++++++
.../runtimeclasses/kata-runtimeClasses.yaml | 13 +++++++
.../runtimeclasses/kata-stratovirt.yaml | 13 +++++++
.../stratovirt/build-static-stratovirt.sh | 37 +++++++++++++++++++
versions.yaml | 5 +++
8 files changed, 102 insertions(+), 2 deletions(-)
create mode 100644 tools/packaging/kata-deploy/runtimeclasses/kata-stratovirt.yaml
create mode 100755 tools/packaging/static-build/stratovirt/build-static-stratovirt.sh
diff --git a/tools/packaging/kata-deploy/kata-cleanup/base/kata-cleanup.yaml b/tools/packaging/kata-deploy/kata-cleanup/base/kata-cleanup.yaml
index df1a2ff..4814b93 100644
--- a/tools/packaging/kata-deploy/kata-cleanup/base/kata-cleanup.yaml
+++ b/tools/packaging/kata-deploy/kata-cleanup/base/kata-cleanup.yaml
@@ -30,7 +30,7 @@ spec:
- name: DEBUG
value: "false"
- name: SHIMS
- value: "clh dragonball fc qemu-nvidia-gpu qemu-sev qemu-snp qemu-tdx qemu"
+ value: "clh dragonball fc qemu-nvidia-gpu qemu-sev qemu-snp qemu-tdx qemu stratovirt"
- name: DEFAULT_SHIM
value: "qemu"
- name: CREATE_RUNTIMECLASSES
diff --git a/tools/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml b/tools/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml
index 383eec9..52e5987 100644
--- a/tools/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml
+++ b/tools/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml
@@ -32,7 +32,7 @@ spec:
- name: DEBUG
value: "false"
- name: SHIMS
- value: "clh dragonball fc qemu qemu-nvidia-gpu qemu-sev qemu-snp qemu-tdx"
+ value: "clh dragonball fc qemu qemu-nvidia-gpu qemu-sev qemu-snp qemu-tdx stratovirt"
- name: DEFAULT_SHIM
value: "qemu"
- name: CREATE_RUNTIMECLASSES
diff --git a/tools/packaging/kata-deploy/local-build/Makefile b/tools/packaging/kata-deploy/local-build/Makefile
index d9e28a5..ef63f2f 100644
--- a/tools/packaging/kata-deploy/local-build/Makefile
+++ b/tools/packaging/kata-deploy/local-build/Makefile
@@ -35,6 +35,7 @@ all: serial-targets \
qemu-snp-experimental-tarball \
qemu-tarball \
qemu-tdx-experimental-tarball \
+ stratovirt-tarball \
shim-v2-tarball \
tdvf-tarball \
virtiofsd-tarball
@@ -112,6 +113,9 @@ qemu-tarball:
qemu-tdx-experimental-tarball:
${MAKE} $@-build
+stratovirt-tarball:
+ ${MAKE} $@-build
+
rootfs-image-tarball:
${MAKE} $@-build
diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh
index bb68d88..70e07b4 100755
--- a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh
+++ b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh
@@ -30,6 +30,7 @@ readonly kernel_builder="${static_build_dir}/kernel/build.sh"
readonly ovmf_builder="${static_build_dir}/ovmf/build.sh"
readonly qemu_builder="${static_build_dir}/qemu/build-static-qemu.sh"
readonly qemu_experimental_builder="${static_build_dir}/qemu/build-static-qemu-experimental.sh"
+readonly stratovirt_builder="${static_build_dir}/stratovirt/build-static-stratovirt.sh"
readonly shimv2_builder="${static_build_dir}/shim-v2/build.sh"
readonly virtiofsd_builder="${static_build_dir}/virtiofsd/build.sh"
readonly nydus_builder="${static_build_dir}/nydus/build.sh"
@@ -103,6 +104,7 @@ options:
qemu
qemu-snp-experimental
qemu-tdx-experimental
+ stratovirt
rootfs-image
rootfs-image-tdx
rootfs-initrd
@@ -511,6 +513,28 @@ install_clh_glibc() {
install_clh_helper "gnu" "${features}" "-glibc"
}
+# Install static stratovirt asset
+install_stratovirt() {
+ local stratovirt_version=$(get_from_kata_deps "assets.hypervisor.stratovirt.version")
+
+ latest_artefact="${stratovirt_version}"
+ latest_builder_image=""
+
+ install_cached_tarball_component \
+ "stratovirt" \
+ "${latest_artefact}" \
+ "${latest_builder_image}" \
+ "${final_tarball_name}" \
+ "${final_tarball_path}" \
+ && return 0
+
+ info "build static stratovirt"
+ "${stratovirt_builder}"
+ info "Install static stratovirt"
+ mkdir -p "${destdir}/opt/kata/bin/"
+ sudo install -D --owner root --group root --mode 0744 static-stratovirt/stratovirt "${destdir}/opt/kata/bin/stratovirt"
+}
+
# Install static virtiofsd asset
install_virtiofsd() {
latest_artefact="$(get_from_kata_deps "externals.virtiofsd.version")-$(get_from_kata_deps "externals.virtiofsd.toolchain")"
@@ -734,6 +758,7 @@ handle_build() {
install_qemu
install_qemu_snp_experimental
install_qemu_tdx_experimental
+ install_stratovirt
install_runk
install_shimv2
install_tdvf
@@ -781,6 +806,8 @@ handle_build() {
qemu-tdx-experimental) install_qemu_tdx_experimental ;;
+ stratovirt) install_stratovirt ;;
+
rootfs-image) install_image ;;
rootfs-image-tdx) install_image_tdx ;;
@@ -860,6 +887,7 @@ main() {
log-parser-rs
nydus
qemu
+ stratovirt
rootfs-image
rootfs-initrd
rootfs-initrd-mariner
diff --git a/tools/packaging/kata-deploy/runtimeclasses/kata-runtimeClasses.yaml b/tools/packaging/kata-deploy/runtimeclasses/kata-runtimeClasses.yaml
index e67cafe..ae3c8c8 100644
--- a/tools/packaging/kata-deploy/runtimeclasses/kata-runtimeClasses.yaml
+++ b/tools/packaging/kata-deploy/runtimeclasses/kata-runtimeClasses.yaml
@@ -102,3 +102,16 @@ overhead:
scheduling:
nodeSelector:
katacontainers.io/kata-runtime: "true"
+---
+kind: RuntimeClass
+apiVersion: node.k8s.io/v1
+metadata:
+ name: kata-stratovirt
+handler: kata-stratovirt
+overhead:
+ podFixed:
+ memory: "130Mi"
+ cpu: "250m"
+scheduling:
+ nodeSelector:
+ katacontainers.io/kata-runtime: "true"
diff --git a/tools/packaging/kata-deploy/runtimeclasses/kata-stratovirt.yaml b/tools/packaging/kata-deploy/runtimeclasses/kata-stratovirt.yaml
new file mode 100644
index 0000000..ea27046
--- /dev/null
+++ b/tools/packaging/kata-deploy/runtimeclasses/kata-stratovirt.yaml
@@ -0,0 +1,13 @@
+---
+kind: RuntimeClass
+apiVersion: node.k8s.io/v1
+metadata:
+ name: kata-stratovirt
+handler: kata-stratovirt
+overhead:
+ podFixed:
+ memory: "130Mi"
+ cpu: "250m"
+scheduling:
+ nodeSelector:
+ katacontainers.io/kata-runtime: "true"
diff --git a/tools/packaging/static-build/stratovirt/build-static-stratovirt.sh b/tools/packaging/static-build/stratovirt/build-static-stratovirt.sh
new file mode 100755
index 0000000..2fe28aa
--- /dev/null
+++ b/tools/packaging/static-build/stratovirt/build-static-stratovirt.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2023 Huawei Technologies Co.,Ltd.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+ARCH=$(uname -m)
+
+# Currently, StratoVirt only support x86_64 and aarch64.
+[ "${ARCH}" != "x86_64" ] && [ "${ARCH}" != "aarch64" ] && exit
+
+script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+source "${script_dir}/../../scripts/lib.sh"
+
+info "Get stratovirt information from runtime versions.yaml"
+stratovirt_url="${stratovirt_url:-}"
+[ -n "$stratovirt_url" ] || stratovirt_url=$(get_from_kata_deps "assets.hypervisor.stratovirt.url")
+[ -n "$stratovirt_url" ] || die "failed to get stratovirt url"
+
+stratovirt_version="${stratovirt_version:-}"
+[ -n "$stratovirt_version" ] || stratovirt_version=$(get_from_kata_deps "assets.hypervisor.stratovirt.version")
+[ -n "$stratovirt_version" ] || die "failed to get stratovirt version"
+
+pull_stratovirt_released_binary() {
+ file_name="stratovirt-static-${stratovirt_version##*v}-${ARCH}"
+ download_url="${stratovirt_url}/releases/download/${stratovirt_version}/${file_name}.tar.gz"
+
+ curl -L ${download_url} -o ${file_name}.tar.gz
+ mkdir -p static-stratovirt
+ tar zxvf ${file_name}.tar.gz -C static-stratovirt
+}
+
+pull_stratovirt_released_binary
diff --git a/versions.yaml b/versions.yaml
index 57e3c94..3b5f37a 100644
--- a/versions.yaml
+++ b/versions.yaml
@@ -115,6 +115,11 @@ assets:
url: "https://github.com/AMDESE/qemu"
tag: "3b6a2b6b7466f6dea53243900b7516c3f29027b7"
+ stratovirt:
+ description: "StratoVirt is an lightweight opensource VMM"
+ url: "https://github.com/openeuler-mirror/stratovirt"
+ version: "v2.3.0"
+
image:
description: |
Root filesystem disk image used to boot the guest virtual
--
2.34.1