Linux 컨테이너 인스턴스에 대한 HTTP 프록시 구성 - Amazon Elastic Container Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Linux 컨테이너 인스턴스에 대한 HTTP 프록시 구성

Amazon ECS 컨테이너 에이전트와 Docker 대몬 모두에 대해 HTTP 프록시를 사용하도록 Amazon ECS 컨테이너 인스턴스를 구성할 수 있습니다. 이 구성은 컨테이너 인스턴스가 Amazon VPC 인터넷 게이트웨이, NAT 게이트웨이 또는 인스턴스를 통해 외부 네트워크에 액세스하지 못할 경우 유용합니다.

HTTP 프록시를 사용하도록 Amazon ECS Linux 컨테이너 인스턴스를 구성하려면 시작 시(Amazon EC2 사용자 데이터를 사용해) 관련 파일에 있는 다음 변수를 설정합니다. 구성 파일을 수동으로 편집하고 나중에 에이전트를 다시 시작할 수도 있습니다.

/etc/ecs/ecs.config(Amazon Linux 2 및 Amazon Linux AMI)
HTTP_PROXY=10.0.0.131:3128

Amazon ECS 에이전트가 인터넷에 연결하는 데 사용할 HTTP 프록시의 호스트 이름(또는 IP 주소) 및 포트 번호로 이 값을 설정합니다. 예를 들어 컨테이너 인스턴스는 Amazon VPC 인터넷 게이트웨이, NAT 게이트웨이 또는 인스턴스를 통해 외부 네트워크에 액세스하지 못할 수 있습니다.

NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock

EC2 인스턴스 메타데이터, 작업에 대한 IAM 역할 및 프록시로부터의 Docker 대몬 트래픽을 필터링하려면 이 값을 169.254.169.254,169.254.170.2,/var/run/docker.sock으로 설정합니다.

/etc/systemd/system/ecs.service.d/http-proxy.conf(Amazon Linux 2 전용)
Environment="HTTP_PROXY=10.0.0.131:3128/"

ecs-init가 인터넷에 연결하는 데 사용할 HTTP 프록시의 호스트 이름(또는 IP 주소) 및 포트 번호로 이 값을 설정합니다. 예를 들어 컨테이너 인스턴스는 Amazon VPC 인터넷 게이트웨이, NAT 게이트웨이 또는 인스턴스를 통해 외부 네트워크에 액세스하지 못할 수 있습니다.

Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock"

EC2 인스턴스 메타데이터, 작업에 대한 IAM 역할 및 프록시로부터의 Docker 데몬 트래픽을 필터링하려면 이 값을 169.254.169.254,169.254.170.2,/var/run/docker.sock으로 설정합니다.

/etc/init/ecs.override (Amazon Linux AMI만 해당)
env HTTP_PROXY=10.0.0.131:3128

ecs-init가 인터넷에 연결하는 데 사용할 HTTP 프록시의 호스트 이름(또는 IP 주소) 및 포트 번호로 이 값을 설정합니다. 예를 들어 컨테이너 인스턴스는 Amazon VPC 인터넷 게이트웨이, NAT 게이트웨이 또는 인스턴스를 통해 외부 네트워크에 액세스하지 못할 수 있습니다.

env NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock

EC2 인스턴스 메타데이터, 작업에 대한 IAM 역할 및 프록시로부터의 Docker 대몬 트래픽을 필터링하려면 이 값을 169.254.169.254,169.254.170.2,/var/run/docker.sock으로 설정합니다.

/etc/systemd/system/docker.service.d/http-proxy.conf(Amazon Linux 2 전용)
Environment="HTTP_PROXY=http://10.0.0.131:3128"

Docker 대몬이 인터넷에 연결하는 데 사용할 HTTP 프록시의 호스트 이름(또는 IP 주소) 및 포트 번호로 이 값을 설정합니다. 예를 들어 컨테이너 인스턴스는 Amazon VPC 인터넷 게이트웨이, NAT 게이트웨이 또는 인스턴스를 통해 외부 네트워크에 액세스하지 못할 수 있습니다.

Environment="NO_PROXY=169.254.169.254"

프록시에서 EC2 인스턴스 메타데이터를 필터링하려면 이 값을 169.254.169.254로 설정합니다.

/etc/sysconfig/docker (Amazon Linux AMI 및 Amazon Linux 2 전용)
export HTTP_PROXY=http://10.0.0.131:3128

Docker 대몬이 인터넷에 연결하는 데 사용할 HTTP 프록시의 호스트 이름(또는 IP 주소) 및 포트 번호로 이 값을 설정합니다. 예를 들어 컨테이너 인스턴스는 Amazon VPC 인터넷 게이트웨이, NAT 게이트웨이 또는 인스턴스를 통해 외부 네트워크에 액세스하지 못할 수 있습니다.

export NO_PROXY=169.254.169.254,169.254.170.2

프록시에서 EC2 인스턴스 메타데이터를 필터링하려면 이 값을 169.254.169.254로 설정합니다.

이 환경 변수를 위 파일에서 설정하면 Amazon ECS 컨테이너 에이전트, ecs-init 및 Docker 대몬에만 영향을 미칩니다. 기타 서비스(예: yum)에서는 프록시를 사용하도록 구성하지 않습니다.

예 Amazon Linux HTTP 프록시 사용자 데이터 스크립트

아래의 사용자 데이터 cloud-boothook 스크립트 예제는 사용자가 지정한 HTTP 프록시를 사용하도록 Amazon ECS 컨테이너 에이전트, ecs-init, Docker 대몬 및 yum을 구성합니다. 컨테이너 인스턴스가 자신을 등록할 클러스터를 지정할 수도 있습니다.

컨테이너 인스턴스를 시작할 때 이 스크립트를 사용하려면 Amazon ECS Linux 컨테이너 인스턴스 시작단계 7의 절차를 따르세요. 그런 다음 아래 cloud-boothook 스크립트를 복사해 [User data] 필드에 붙여넣습니다(빨간색 예제 값을 실제 프록시 및 클러스터 정보로 바꿔야 함).

참고

아래의 사용자 데이터 스크립트는 Amazon ECS 최적화 AMI의 Amazon Linux 2 및 Amazon Linux AMI 변형만 지원합니다.

#cloud-boothook # Configure Yum, the Docker daemon, and the ECS agent to use an HTTP proxy # Specify proxy host, port number, and ECS cluster name to use PROXY_HOST=10.0.0.131 PROXY_PORT=3128 CLUSTER_NAME=proxy-test if grep -q 'Amazon Linux release 2' /etc/system-release ; then OS=AL2 echo "Setting OS to Amazon Linux 2" elif grep -q 'Amazon Linux AMI' /etc/system-release ; then OS=ALAMI echo "Setting OS to Amazon Linux AMI" else echo "This user data script only supports Amazon Linux 2 and Amazon Linux AMI." fi # Set Yum HTTP proxy if [ ! -f /var/lib/cloud/instance/sem/config_yum_http_proxy ]; then echo "proxy=http://$PROXY_HOST:$PROXY_PORT" >> /etc/yum.conf echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_yum_http_proxy fi # Set Docker HTTP proxy (different methods for Amazon Linux 2 and Amazon Linux AMI) # Amazon Linux 2 if [ $OS == "AL2" ] && [ ! -f /var/lib/cloud/instance/sem/config_docker_http_proxy ]; then mkdir /etc/systemd/system/docker.service.d cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=http://$PROXY_HOST:$PROXY_PORT/" Environment="HTTPS_PROXY=https://$PROXY_HOST:$PROXY_PORT/" Environment="NO_PROXY=169.254.169.254,169.254.170.2" EOF systemctl daemon-reload if [ "$(systemctl is-active docker)" == "active" ] then systemctl restart docker fi echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_docker_http_proxy fi # Amazon Linux AMI if [ $OS == "ALAMI" ] && [ ! -f /var/lib/cloud/instance/sem/config_docker_http_proxy ]; then echo "export HTTP_PROXY=http://$PROXY_HOST:$PROXY_PORT/" >> /etc/sysconfig/docker echo "export HTTPS_PROXY=https://$PROXY_HOST:$PROXY_PORT/" >> /etc/sysconfig/docker echo "export NO_PROXY=169.254.169.254,169.254.170.2" >> /etc/sysconfig/docker echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_docker_http_proxy fi # Set ECS agent HTTP proxy if [ ! -f /var/lib/cloud/instance/sem/config_ecs-agent_http_proxy ]; then cat <<EOF > /etc/ecs/ecs.config ECS_CLUSTER=$CLUSTER_NAME HTTP_PROXY=$PROXY_HOST:$PROXY_PORT NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock EOF echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_ecs-agent_http_proxy fi # Set ecs-init HTTP proxy (different methods for Amazon Linux 2 and Amazon Linux AMI) # Amazon Linux 2 if [ $OS == "AL2" ] && [ ! -f /var/lib/cloud/instance/sem/config_ecs-init_http_proxy ]; then mkdir /etc/systemd/system/ecs.service.d cat <<EOF > /etc/systemd/system/ecs.service.d/http-proxy.conf [Service] Environment="HTTP_PROXY=$PROXY_HOST:$PROXY_PORT/" Environment="NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock" EOF systemctl daemon-reload if [ "$(systemctl is-active ecs)" == "active" ]; then systemctl restart ecs fi echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_ecs-init_http_proxy fi # Amazon Linux AMI if [ $OS == "ALAMI" ] && [ ! -f /var/lib/cloud/instance/sem/config_ecs-init_http_proxy ]; then cat <<EOF > /etc/init/ecs.override env HTTP_PROXY=$PROXY_HOST:$PROXY_PORT env NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock EOF echo "$$: $(date +%s.%N | cut -b1-13)" > /var/lib/cloud/instance/sem/config_ecs-init_http_proxy fi