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

leehs·2023년 1월 13일
0

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개의 댓글