What Happened?
Description
The TestHelmInstall integration test (added in #23253) fails on Prow CI when using the docker driver (all container runtimes: docker, containerd, crio) because the guest container does not have outbound internet access.
The test calls addons.InstallHelm(), which runs curl inside the guest to download get_helm.sh from https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3. In the Prow environment with docker driver, this curl command times out after ~5 minutes, causing the test to fail.
Affected CI jobs
pull-minikube-docker-docker-linux-x86 ❌
pull-minikube-docker-containerd-linux-x86 ❌
pull-minikube-docker-crio-linux-x86 ❌
pull-minikube-docker-docker-linux-arm ❌
pull-minikube-docker-containerd-linux-arm ❌
Working CI jobs (Jenkins legacy)
Docker_Linux_docker_arm64 ✅
Docker_Linux_crio_arm64 ✅
Docker_Linux_crio ✅
Docker_Linux_containerd_arm64 ✅
Working CI jobs (Prow, KVM driver)
pull-minikube-kvm-docker-linux-x86 ✅
pull-minikube-kvm-crio-linux-x86 ✅
Reproduction
The test passes locally with docker driver:
go test -v -tags="integration libvirt_dlopen" ./test/integration -run TestHelmInstall -minikube-start-args="--driver=docker"
It only fails in the Prow CI environment where the docker-in-docker networking apparently blocks outbound HTTPS connections from the guest container.
Root Cause
The Prow environment's docker-in-docker setup does not provide outbound internet connectivity to the minikube guest container. This is not specific to TestHelmInstall — any test that requires downloading external resources from within the guest would be affected.
Current Workaround
TestHelmInstall performs a connectivity check (curl to https://get.helm.sh) inside the guest before running. If connectivity fails, the test is skipped with a reference to this issue.
Expected Behavior
The Prow docker-in-docker environment should allow outbound internet access from guest containers, matching the behavior of the Jenkins CI and local development environments.
Attach the log file
: TestHelmInstall/Install expand_less 5m0s
{Failed === RUN TestHelmInstall/Install
I0703 04:11:11.237467 41293 ssh_runner.go:191] Run: sudo rm -f /usr/bin/helm
I0703 04:11:11.237517 41293 cli_runner.go:164] Run: docker container inspect -f "'{{(index (index .NetworkSettings.Ports "22/tcp") 0).HostPort}}'" helm-854882
I0703 04:11:11.246419 41293 sshutil.go:53] new ssh client: &{IP:127.0.0.1 Port:33023 SSHKeyPath:/home/prow/go/src/k8s.io/minikube/9d7600aa0e0c1f2e6e9d4635be28da7b651bbda4-36003/.minikube/machines/helm-854882/id_rsa Username:docker}
I0703 04:11:11.331175 41293 ssh_runner.go:191] Run: sudo bash -o errexit -c "
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
HELM_INSTALL_DIR=/usr/bin ./get_helm.sh"
helm_test.go:97: InstallHelm failed: installing helm: sudo bash -o errexit -c "
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
HELM_INSTALL_DIR=/usr/bin ./get_helm.sh": Process exited with status 28
stdout:
stderr:
curl: (28) SSL connection timeout
--- FAIL: TestHelmInstall/Install (300.28s)
}
: TestHelmInstall/Upgrade expand_less 2m8s
{Failed === RUN TestHelmInstall/Upgrade
I0703 04:16:11.512584 41293 ssh_runner.go:191] Run: sudo bash -o errexit -c "
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
HELM_INSTALL_DIR=/usr/bin ./get_helm.sh --version v3.12.0"
helm_test.go:113: failed to install older helm: installing helm: sudo bash -o errexit -c "
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
HELM_INSTALL_DIR=/usr/bin ./get_helm.sh --version v3.12.0": Process exited with status 35
stdout:
[WARNING] Could not find git. It is required for plugin installation.
Downloading https://get.helm.sh/helm-v3.12.0-linux-amd64.tar.gz
Failed to install helm with the arguments provided: --version v3.12.0
Accepted cli arguments are:
[--help|-h ] ->> prints this help
[--version|-v <desired_version>] . When not defined it fetches the latest release tag from the Helm CDN
e.g. --version v3.0.0 or -v canary
[--no-sudo] ->> install without sudo
For support, go to https://github.com/helm/helm.
stderr:
curl: (35) Recv failure: Connection reset by peer
--- FAIL: TestHelmInstall/Upgrade (127.66s)
}
: TestHelmInstall/NoChange expand_less 5m0s
{Failed === RUN TestHelmInstall/NoChange
I0703 04:18:19.174019 41293 ssh_runner.go:191] Run: sudo bash -o errexit -c "
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
HELM_INSTALL_DIR=/usr/bin ./get_helm.sh"
helm_test.go:142: InstallHelm failed: installing helm: sudo bash -o errexit -c "
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
HELM_INSTALL_DIR=/usr/bin ./get_helm.sh": Process exited with status 28
stdout:
stderr:
curl: (28) SSL connection timeout
--- FAIL: TestHelmInstall/NoChange (300.16s)
}
Operating System
Redhat/Fedora
Driver
Docker
What Happened?
Description
The
TestHelmInstallintegration test (added in #23253) fails on Prow CI when using the docker driver (all container runtimes: docker, containerd, crio) because the guest container does not have outbound internet access.The test calls
addons.InstallHelm(), which runscurlinside the guest to downloadget_helm.shfromhttps://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3. In the Prow environment with docker driver, thiscurlcommand times out after ~5 minutes, causing the test to fail.Affected CI jobs
pull-minikube-docker-docker-linux-x86❌pull-minikube-docker-containerd-linux-x86❌pull-minikube-docker-crio-linux-x86❌pull-minikube-docker-docker-linux-arm❌pull-minikube-docker-containerd-linux-arm❌Working CI jobs (Jenkins legacy)
Docker_Linux_docker_arm64✅Docker_Linux_crio_arm64✅Docker_Linux_crio✅Docker_Linux_containerd_arm64✅Working CI jobs (Prow, KVM driver)
pull-minikube-kvm-docker-linux-x86✅pull-minikube-kvm-crio-linux-x86✅Reproduction
The test passes locally with docker driver:
It only fails in the Prow CI environment where the docker-in-docker networking apparently blocks outbound HTTPS connections from the guest container.
Root Cause
The Prow environment's docker-in-docker setup does not provide outbound internet connectivity to the minikube guest container. This is not specific to
TestHelmInstall— any test that requires downloading external resources from within the guest would be affected.Current Workaround
TestHelmInstallperforms a connectivity check (curl tohttps://get.helm.sh) inside the guest before running. If connectivity fails, the test is skipped with a reference to this issue.Expected Behavior
The Prow docker-in-docker environment should allow outbound internet access from guest containers, matching the behavior of the Jenkins CI and local development environments.
Attach the log file
Operating System
Redhat/Fedora
Driver
Docker