[Windows] WSL2 Rancher Desktop 에서 Proxy 설정하기

leehs·2023년 1월 13일

Rancher Desktop 에서 Proxy 설정하기

정보

문제 상황

Proxy를 통해 외부 인터넷을 사용하는 환경에서 Rancher Desktop을 설치하여 사용하면서 외부 컨테이너 이미지 저장소를 사용하는 경우, 이미지 Pull 이 되지 않는 문제가 발생.

Rancher Desktop Dashboard 에서 Pull 을 하면 I/O Timeout 발생.
WSL을 통해 직접 접속하여 Pull을 하더라고 아래와 같은 에러 메시지가 나옴.

FATA[0032] failed to copy: httpReadSeeker: failed open: failed to do request: Get

환경

  • Windows 10
  • WSL2
  • Rancher Desktop Version: 1.6.0 ~
  • Kubernetes Version: v1.26.0
  • Container Engine: containerd (dockerd 도 동일하게 해결 가능)

해결방법

wsl을 통해 rancher-desktop 접속, vi 로 아래 파일에 내용 추가

  • dockerd 인 경우 /etc/conf.d/docker
  • containerd 인 경우 /etc/conf.d/containerd

(WSL2 Rancher Desktop)

#...
HTTP_PROXY="http://[[PROXY_IP]]:[[PROXY_PORT]]"
HTTPS_PROXY="http://[[PROXY_IP]]:[[PROXY_PORT]]"
NO_PROXY="localhost,127.0.0.1"

export HTTP_PROXY
export HTTPS_PROXY
export NO_PROXY
#...
  • containerd 의 경우, /etc/containerd/config.toml 내용도 작성

(WSL2 Rancher Desktop)

# ...
[Service]
  Environment="HTTP_PROXY=[[PROXY_IP]]:[[PROXY_PORT]]"
  Environment="HTTPS_PROXY=[[PROXY_IP]]:[[PROXY_PORT]]"

완료 후, 아래 스크립트 실행

(WSL2 Rancher Desktop)

if ! grep -q "^rc_env_allow" /etc/rc.conf; then
  echo "rc_env_allow=\"*\"" >> /etc/rc.conf
fi

(+추가내용) /etc/environment 해당 파일을 생성하고,
아래 값을 넣으면 대부분 Application 에서 사용한다고 한다.

(WSL2 Rancher Desktop)

HTTP_PROXY="http://[[PROXY_IP]]:[[PROXY_PORT]]"
HTTPS_PROXY="http://[[PROXY_IP]]:[[PROXY_PORT]]"
NO_PROXY="localhost,127.0.0.1"

export HTTP_PROXY
export HTTPS_PROXY
export NO_PROXY

또, 아래 내용을 Windows PowerShell 에서 실행

(PowerShell)

setx HTTP_PROXY http://[[PROXY_IP]]:[[PROXY_PORT]]
setx HTTPS_PROXY https://[[PROXY_IP]]:[[PROXY_PORT]]

setx WSLENV HTTP_PROXY:HTTPS_PROXY

적용 확인

(PowerShell)

wsl -d rancher-desktop echo ${HTTP_PROXY}
wsl -d rancher-desktop echo ${HTTPS_PROXY}

Rancher Desktop 재 실행 후 확인

(PowerShell)

# containerd 인 경우
nerdctl pull hello-world

# docker 인 경우
docker pull hello-world

내가 편하려고 만든 스크립트..

한번에

HTTP_PROXY=""
HTTPS_PROXY=""
NO_PROXY="127.0.0.1,localhost"

echo "
HTTP_PROXY=${HTTP_PROXY}
HTTPS_PROXY=${HTTPS_PROXY}
NO_PROXY=${NO_PROXY}

export HTTP_PROXY
export HTTPS_PROXY
export NO_PROXY
" | tee -a /etc/conf.d/containerd \
  | tee -a /etc/environment

echo "
[Service]
  Environment=\"HTTP_PROXY=${HTTP_PROXY}\"
  Environment=\"HTTPS_PROXY=${HTTPS_PROXY}\"
" | tee -a /etc/containerd/config.toml

if [ -f /etc/redhat-release ]; then
echo "
proxy=${HTTP_PROXY}
" | tee -a /etc/yum.conf
fi

if [ -f /etc/lsb-release ]; then
echo "
Acquire {
  HTTP::proxy \"${HTTP_PROXY}\";
  HTTPS::proxy \"${HTTPS_PROXY}\";
}
" | tee /etc/apt/apt.conf.d/proxy.conf
fi

참조

0개의 댓글