diff --git a/kata-deploy/examples/test-deploy-kata-qemu-virtiofs.yaml b/kata-deploy/examples/test-deploy-kata-qemu-virtiofs.yaml new file mode 100644 index 0000000000..3c551b4d00 --- /dev/null +++ b/kata-deploy/examples/test-deploy-kata-qemu-virtiofs.yaml @@ -0,0 +1,42 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + run: php-apache-kata-qemu-virtiofs + name: php-apache-kata-qemu-virtiofs +spec: + replicas: 1 + selector: + matchLabels: + run: php-apache-kata-qemu-virtiofs + template: + metadata: + labels: + run: php-apache-kata-qemu-virtiofs + spec: + runtimeClassName: kata-qemu-virtiofs + 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-qemu-virtiofs +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 80 + selector: + run: php-apache-kata-qemu-virtiofs + sessionAffinity: None + type: ClusterIP diff --git a/kata-deploy/k8s-1.13/kata-qemu-virtiofs-runtimeClass.yaml b/kata-deploy/k8s-1.13/kata-qemu-virtiofs-runtimeClass.yaml new file mode 100644 index 0000000000..74b34386e0 --- /dev/null +++ b/kata-deploy/k8s-1.13/kata-qemu-virtiofs-runtimeClass.yaml @@ -0,0 +1,14 @@ +--- +kind: RuntimeClass +apiVersion: node.k8s.io/v1alpha1 +metadata: + name: kata-qemu-virtiofs +spec: + runtimeHandler: kata-qemu-virtiofs +--- +kind: RuntimeClass +apiVersion: node.k8s.io/v1alpha1 +metadata: + name: kata +spec: + runtimeHandler: kata diff --git a/kata-deploy/k8s-1.14/kata-qemu-virtiofs-runtimeClass.yaml b/kata-deploy/k8s-1.14/kata-qemu-virtiofs-runtimeClass.yaml new file mode 100644 index 0000000000..c0a8d0b23a --- /dev/null +++ b/kata-deploy/k8s-1.14/kata-qemu-virtiofs-runtimeClass.yaml @@ -0,0 +1,12 @@ +--- +kind: RuntimeClass +apiVersion: node.k8s.io/v1beta1 +metadata: + name: kata +handler: kata +--- +kind: RuntimeClass +apiVersion: node.k8s.io/v1beta1 +metadata: + name: kata-qemu-virtiofs +handler: kata-qemu-virtiofs diff --git a/kata-deploy/scripts/kata-deploy-docker.sh b/kata-deploy/scripts/kata-deploy-docker.sh index 9bdc2c0d5d..c3b7464d2d 100755 --- a/kata-deploy/scripts/kata-deploy-docker.sh +++ b/kata-deploy/scripts/kata-deploy-docker.sh @@ -40,6 +40,10 @@ function configure_docker() { "path": "/opt/kata/bin/kata-runtime", "runtimeArgs": [ "--kata-config", "/opt/kata/share/defaults/kata-containers/configuration-qemu.toml" ] }, + "kata-qemu-virtiofs": { + "path": "/opt/kata/bin/kata-runtime", + "runtimeArgs": [ "--kata-config", "/opt/kata/share/defaults/kata-containers/configuration-qemu-virtiofs.toml" ] + }, "kata-nemu": { "path": "/opt/kata/bin/kata-runtime", "runtimeArgs": [ "--kata-config", "/opt/kata/share/defaults/kata-containers/configuration-nemu.toml" ] diff --git a/kata-deploy/scripts/kata-deploy.sh b/kata-deploy/scripts/kata-deploy.sh index 9bcdea7ac1..83afa8a566 100755 --- a/kata-deploy/scripts/kata-deploy.sh +++ b/kata-deploy/scripts/kata-deploy.sh @@ -65,9 +65,11 @@ function configure_crio() { cp -n "$crio_conf_file" "$crio_conf_file_backup" local kata_qemu_path="/opt/kata/bin/kata-qemu" + local kata_qemu_virtiofs_path="/opt/kata/bin/kata-qemu-virtiofs" local kata_nemu_path="/opt/kata/bin/kata-nemu" local kata_fc_path="/opt/kata/bin/kata-fc" local kata_qemu_conf="crio.runtime.runtimes.kata-qemu" + local kata_qemu_virtiofs_conf="crio.runtime.runtimes.kata-qemu-virtiofs" local kata_nemu_conf="crio.runtime.runtimes.kata-nemu" local kata_fc_conf="crio.runtime.runtimes.kata-fc" @@ -84,6 +86,20 @@ function configure_crio() { EOT fi + # add kata-qemu-virtiofs config + if grep -q "^\[$kata_qemu_virtiofs_conf\]" $crio_conf_file; then + echo "Configuration exists $kata_qemu_virtiofs_conf, overwriting" + sed -i "/^\[$kata_qemu_virtiofs_conf\]/,+1s#runtime_path.*#runtime_path = \"${kata_qemu_path}\"#" $crio_conf_file + else + cat <: Path to config file to build a the kernel + -c : Path to config file to build a the kernel. + -e : Enable experimental kernel. -h : Display this help. - -k : Path to kernel to build + -k : Path to kernel to build. -p : Path to a directory with patches to apply to kernel. + -t : Hypervisor_target. -v : Kernel version to use if kernel path not provided. EOT } @@ -414,9 +416,13 @@ main() { # If not kernel version take it from versions.yaml if [ -z "$kernel_version" ]; then - kernel_version=$(get_from_kata_deps "assets.kernel.version") - #Remove extra 'v' - kernel_version="${kernel_version#v}" + if [[ ${experimental_kernel} == "true" ]]; then + kernel_version=$(get_from_kata_deps "assets.kernel-experimental.tag") + else + kernel_version=$(get_from_kata_deps "assets.kernel.version") + #Remove extra 'v' + kernel_version="${kernel_version#v}" + fi fi if [ -z "${kernel_path}" ]; then diff --git a/release/kata-deploy-binaries.sh b/release/kata-deploy-binaries.sh index 9f31435146..0802c2c8ba 100755 --- a/release/kata-deploy-binaries.sh +++ b/release/kata-deploy-binaries.sh @@ -103,6 +103,17 @@ install_kernel() { ) } +#Install experimental kernel asset +install_experimental_kernel() { + pushd ${GOPATH}/src/github.com/${project}/packaging + info "build experimental kernel" + ./kernel/build-kernel.sh -e setup + ./kernel/build-kernel.sh -e build + info "install experimental kernel" + DESTDIR="${destdir}" PREFIX="${prefix}" ./kernel/build-kernel.sh -e install + popd +} + # Install static nemu asset install_nemu() { info "build static nemu" @@ -122,8 +133,8 @@ install_qemu() { # Install static qemu-virtiofsd asset install_qemu_virtiofsd() { info "build static qemu-virtiofs" - "${script_dir}/../static-build/qemu-virtiofsd/build-static-qemu.sh" - info "Install static qemu-virtiofsd" + "${script_dir}/../static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh" + info "Install static qemu-virtiofs" tar xf kata-qemu-static.tar.gz -C "${destdir}" } @@ -216,6 +227,7 @@ main() { install_image install_kata_components install_kernel + install_experimental_kernel install_qemu install_qemu_virtiofsd install_nemu diff --git a/static-build/qemu-virtiofs/Dockerfile b/static-build/qemu-virtiofs/Dockerfile index e0a1f8c9c1..7fb74df7e1 100644 --- a/static-build/qemu-virtiofs/Dockerfile +++ b/static-build/qemu-virtiofs/Dockerfile @@ -44,5 +44,6 @@ RUN PREFIX="${PREFIX}" /root/configure-hypervisor.sh -s kata-qemu | sed -e 's|-- RUN make -j$(nproc) RUN make -j$(nproc) virtiofsd RUN make install DESTDIR=/tmp/qemu-virtiofs-static +RUN mv /tmp/qemu-virtiofs-static/"${PREFIX}"/bin/qemu-system-x86_64 /tmp/qemu-virtiofs-static/"${PREFIX}"/bin/qemu-virtiofs-system-x86_64 RUN chmod +x virtiofsd && mv virtiofsd /tmp/qemu-virtiofs-static/opt/kata/bin/ RUN cd /tmp/qemu-virtiofs-static && tar -czvf kata-qemu-static.tar.gz * diff --git a/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh b/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh index 416b24e131..1412559356 100755 --- a/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh +++ b/static-build/qemu-virtiofs/build-static-qemu-virtiofs.sh @@ -11,11 +11,12 @@ set -o pipefail script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${script_dir}/../../scripts/lib.sh" +source "${script_dir}/../qemu.blacklist" packaging_dir="${script_dir}/../.." -qemu_virtiofs_repo="https://gitlab.com/virtio-fs/qemu.git" +qemu_virtiofs_repo=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.url") # This tag will be supported on the runtime versions.yaml -qemu_virtiofs_tag="virtio-fs-v0.3" +qemu_virtiofs_tag=$(get_from_kata_deps "assets.hypervisor.qemu-experimental.tag") qemu_tar="kata-qemu-static.tar.gz" qemu_tmp_tar="kata-qemu-static-tmp.tar.gz"