Skip to content

Commit

Permalink
kata-deploy: Add StratoVirt support to deploy process
Browse files Browse the repository at this point in the history
Allow kata-deploy process to pull StratoVirt from release binaries, and
add them as a part of kata release.

Fixes: kata-containers#7794

Signed-off-by: Liu Wenyuan <[email protected]>
  • Loading branch information
WenyuanLau committed Nov 16, 2023
1 parent 9542211 commit 14d8790
Show file tree
Hide file tree
Showing 12 changed files with 167 additions and 2 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build-kata-static-tarball-amd64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ jobs:
- qemu
- qemu-snp-experimental
- qemu-tdx-experimental
- stratovirt
- rootfs-image
- rootfs-image-tdx
- rootfs-initrd
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/build-kata-static-tarball-arm64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ jobs:
- kernel-dragonball-experimental
- nydus
- qemu
- stratovirt
- rootfs-image
- rootfs-initrd
- shim-v2
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-stratovirt
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
runtimeClassName: kata-stratovirt
containers:
- name: nginx
image: nginx:1.14
ports:
- containerPort: 80
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: php-apache-kata-stratovirt
name: php-apache-kata-stratovirt
spec:
replicas: 1
selector:
matchLabels:
run: php-apache-kata-stratovirt
template:
metadata:
labels:
run: php-apache-kata-stratovirt
spec:
runtimeClassName: kata-stratovirt
containers:
- image: k8s.gcr.io/hpa-example
imagePullPolicy: Always
name: php-apache
ports:
- containerPort: 80
protocol: TCP
resources:
requests:
cpu: 200m
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: php-apache-kata-stratovirt
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: php-apache-kata-stratovirt
sessionAffinity: None
type: ClusterIP
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions tools/packaging/kata-deploy/local-build/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -115,6 +116,9 @@ qemu-tarball:
qemu-tdx-experimental-tarball:
${MAKE} $@-build

stratovirt-tarball:
${MAKE} $@-build

rootfs-image-tarball:
${MAKE} $@-build

Expand Down
28 changes: 28 additions & 0 deletions tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -104,6 +105,7 @@ options:
qemu
qemu-snp-experimental
qemu-tdx-experimental
stratovirt
rootfs-image
rootfs-image-tdx
rootfs-initrd
Expand Down Expand Up @@ -515,6 +517,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")"
Expand Down Expand Up @@ -742,6 +766,7 @@ handle_build() {
install_qemu
install_qemu_snp_experimental
install_qemu_tdx_experimental
install_stratovirt
install_runk
install_shimv2
install_tdvf
Expand Down Expand Up @@ -791,6 +816,8 @@ handle_build() {

qemu-tdx-experimental) install_qemu_tdx_experimental ;;

stratovirt) install_stratovirt ;;

rootfs-image) install_image ;;

rootfs-image-tdx) install_image_tdx ;;
Expand Down Expand Up @@ -871,6 +898,7 @@ main() {
log-parser-rs
nydus
qemu
stratovirt
rootfs-image
rootfs-initrd
rootfs-initrd-mariner
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
13 changes: 13 additions & 0 deletions tools/packaging/kata-deploy/runtimeclasses/kata-stratovirt.yaml
Original file line number Diff line number Diff line change
@@ -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"
38 changes: 38 additions & 0 deletions tools/packaging/static-build/stratovirt/build-static-stratovirt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/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

5 changes: 5 additions & 0 deletions versions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 14d8790

Please sign in to comment.