Consul로 ECS 서비스 연결하기
Consul로 ECS 서비스 연결하기 (Connect ECS services with Consul)
이 문서는 ECS에 등록한 작업(task)들을 Consul 서비스 메시에 연결하는 방법을 설명해 드릴게요. 사이드카 프록시와 애플리케이션을 설정해 서비스 간 요청을 라우팅하는 방법을 배울 수 있어요.
출처: 문서
본문
이 항목은 작업(task)을 Consul 서비스 메시에 등록한 후 작업 간 라우팅을 구성하는 방법을 설명합니다.
개요 (Overview)
작업이 서비스 메시를 통해 호출할 수 있게 하려면 다음 단계를 완료하세요:
- 애플리케이션이 호출해야 하는 각 업스트림 서비스에 대해 사이드카 프록시가 다른 포트에서 수신하도록 구성합니다.
- 애플리케이션이 지정된 포트의 사이드카 프록시에 요청을 보내도록 수정합니다.
요구 사항 (Requirements)
네트워크 주소를 바인딩하려면 먼저 Consul 서비스 메시가 ECS에 배포되어 있어야 합니다. 자세한 내용은 다음 항목을 참조하세요:
- Terraform 모듈을 사용하여 ECS에 Consul 배포 [/consul/docs/deploy/workload/dataplane/ecs/terraform]
- 수동으로 ECS에 Consul 배포 [/consul/docs/deploy/workload/dataplane/ecs/manual]
사이드카 프록시 구성 (Configure the sidecar proxy)
애플리케이션 구성에 upstreams 블록을 추가하고 다음 필드를 지정하세요:
- [/consul/docs/connect/ecs#destinationname]
destinationName: Consul 서비스 카탈로그에 등록된 업스트림 서비스의 이름을 지정합니다. - [/consul/docs/connect/ecs#localbindport]
localBindPort: 프록시가 요청을 전달하는 포트를 지정합니다. 사용하지 않는 포트를 지정해야 하지만 업스트림 서비스 포트와 일치할 필요는 없습니다.
다음 예시에서 web이라는 애플리케이션에서 backend이라는 애플리케이션으로의 라우팅은 포트 8080을 통해 이루어집니다:
module "web" {
family = "web"
upstreams = [
{
destinationName = "backend"
localBindPort = 8080
}
]
}
모든 업스트림 서비스를 upstream 구성에 포함해야 합니다.
애플리케이션 구성 (Configure your application)
컨테이너 정의에서 적절한 환경 변수를 사용하여 애플리케이션이 루프백 주소의 업스트림 서비스를 호출하도록 구성합니다.
다음 예시에서 web 애플리케이션은 BACKEND_URL 환경 변수로 요청을 보내 backend 서비스를 호출합니다.
module "web" {
family = "web"
upstreams = [
{
destinationName = "backend"
localBindPort = 8080
}
]
container_definitions = [
{
name = "web"
environment = [
{
name = "BACKEND_URL"
value = "http://localhost:8080"
}
]
...
}
]
...
}