diff --git a/tests/integration/kubernetes/gha-run.sh b/tests/integration/kubernetes/gha-run.sh index cf91777337..56c6885f8f 100755 --- a/tests/integration/kubernetes/gha-run.sh +++ b/tests/integration/kubernetes/gha-run.sh @@ -215,6 +215,13 @@ function deploy_kata() { "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" fi + # Set the PULL_TYPE_MAPPING + if [ "${PULL_TYPE}" != "default" ]; then + yq -i \ + ".spec.template.spec.containers[0].env[10].value = \"${KATA_HYPERVISOR}:${PULL_TYPE}\"" \ + "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" + fi + echo "::group::Final kata-deploy.yaml that is used in the test" cat "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" grep "${DOCKER_REGISTRY}/${DOCKER_REPO}:${DOCKER_TAG}" "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" || die "Failed to setup the tests image" 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 98817a508f..2b4c4575d9 100644 --- a/tools/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml +++ b/tools/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml @@ -24,6 +24,7 @@ spec: exec: command: ["bash", "-c", "/opt/kata-artifacts/scripts/kata-deploy.sh cleanup"] command: ["bash", "-c", "/opt/kata-artifacts/scripts/kata-deploy.sh install"] + # NOTE: Please don't change the order of the environment variables below. env: - name: NODE_NAME valueFrom: @@ -47,6 +48,8 @@ spec: value: "" - name: AGENT_NO_PROXY value: "" + - name: PULL_TYPE_MAPPING + value: "" securityContext: privileged: true volumeMounts: diff --git a/tools/packaging/kata-deploy/scripts/kata-deploy.sh b/tools/packaging/kata-deploy/scripts/kata-deploy.sh index 27be984a2c..a3e231318d 100755 --- a/tools/packaging/kata-deploy/scripts/kata-deploy.sh +++ b/tools/packaging/kata-deploy/scripts/kata-deploy.sh @@ -32,6 +32,9 @@ snapshotters_delimiter=':' AGENT_HTTPS_PROXY="${AGENT_HTTPS_PROXY:-}" AGENT_NO_PROXY="${AGENT_NO_PROXY:-}" +PULL_TYPE_MAPPING="${PULL_TYPE_MAPPING:-}" +IFS=',' read -a pull_types <<< "$PULL_TYPE_MAPPING" + # If we fail for any reason a message will be displayed die() { msg="$*" @@ -426,6 +429,27 @@ function configure_crio_runtime() { runtime_config_path = "${kata_config_path}" privileged_without_host_devices = true EOF + + local key + local value + if [ -n "${PULL_TYPE_MAPPING}" ]; then + for m in "${pull_types[@]}"; do + key="${m%"$snapshotters_delimiter"*}" + value="${m#*"$snapshotters_delimiter"}" + + if [[ "${value}" = "default" || "${key}" != "${shim}" ]]; then + continue + fi + + if [ "${value}" == "guest-pull" ]; then + echo -e "\truntime_pull_image = true" | \ + tee -a "$crio_drop_in_conf_file" + else + die "Unsupported pull type '$value' for ${shim}" + fi + break + done + fi } function configure_crio() { @@ -616,6 +640,7 @@ function main() { echo "* SNAPSHOTTER_HANDLER_MAPPING: ${SNAPSHOTTER_HANDLER_MAPPING}" echo "* AGENT_HTTPS_PROXY: ${AGENT_HTTPS_PROXY}" echo "* AGENT_NO_PROXY: ${AGENT_NO_PROXY}" + echo "* PULL_TYPE_MAPPING: ${PULL_TYPE_MAPPING}" # script requires that user is root euid=$(id -u)