Amazon ECS 컨테이너 포트를 EC2 인스턴스 네트워크 인터페이스에 매핑하기
Amazon ECS 컨테이너 포트를 EC2 인스턴스 네트워크 인터페이스에 매핑하기
호스트(host) 네트워크 모드가 무엇인지, 어떻게 동작하는지, 그리고 왜 권장되지 않는지 알아봐요.
출처: 문서
본문
호스트 네트워크 모드는 Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 태스크에서만 지원돼요. Amazon ECS on Fargate를 사용할 때는 지원되지 않아요.
호스트 네트워크 모드는 Amazon ECS에서 지원되는 가장 기본적인 네트워크 모드예요. 호스트 모드를 사용하면 컨테이너의 네트워킹이 컨테이너를 실행하는 기본 호스트에 직접 연결돼요.
포트 3000에서 수신 대기하는 Express 애플리케이션을 실행하는 Node.js 컨테이너를 실행한다고 가정해 봐요. 호스트 네트워크 모드를 사용하면 컨테이너는 기본 호스트 Amazon EC2 인스턴스의 IP 주소를 사용해 포트 3000에서 트래픽을 받아요.
이 모드를 사용하는 것은 권장하지 않아요. 이 네트워크 모드에는 상당한 단점이 있거든요.
- 각 호스트에서 태스크를 하나만 실행할 수 있어요. 첫 번째 태스크만 Amazon EC2 인스턴스에서 필요한 포트에 바인딩할 수 있기 때문이에요.
- 호스트 네트워크 모드를 사용할 때는 컨테이너 포트를 다시 매핑(remap)할 방법이 없어요. 예를 들어 애플리케이션이 특정 포트 번호에서 수신 대기해야 한다면 포트 번호를 직접 다시 매핑할 수 없어요. 대신 애플리케이션 구성을 변경해 포트 충돌을 관리해야 해요.
- 호스트 네트워크 모드를 사용할 때는 보안 영향도 있어요. 이 모드는 컨테이너가 호스트를 사칭(impersonate)할 수 있게 하고, 컨테이너가 호스트의 프라이빗 루프백 네트워크 서비스에 연결할 수 있게 해요.