Skip to content

TestHelmInstall fails on Prow with docker driver due to no outbound internet access in guest container #23275

Description

@Roslaan001

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

Image
: 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

Metadata

Metadata

Assignees

No one assigned

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions