Consul 서비스 카탈로그를 AWS Cloud Map과 동기화

Consul 서비스 카탈로그를 AWS Cloud Map과 동기화

Consul 서비스 카탈로그와 AWS Cloud Map을 동기화하여 한쪽에서 발생한 서비스 변경이 다른 쪽으로 전파되게 하는 방법을 설명해 드릴게요.

출처: 문서

본문

이 페이지는 Consul 서비스 카탈로그와 AWS Cloud Map을 동기화하여 한쪽에서 발생한 서비스 변경이 다른 쪽으로 전파되게 하는 방법을 설명해요. AWS Cloud Map에 대한 자세한 내용은 외부 AWS 문서를 참고해 주세요.

소개

AWS Cloud Map은 AWS 클라우드 리소스 디스커버리 서비스예요. 리소스에 사용자 지정 이름을 추가할 수 있고 리소스가 변경될 때 그 위치를 유지해요. 그러면 애플리케이션 서비스가 AWS Cloud Map을 쿼리하여 리소스의 위치를 얻을 수 있어요.

consul-aws 도구는 Consul 서비스 카탈로그와 AWS Cloud Map 간의 단방향 또는 양방향 동기화를 가능하게 하여 두 카탈로그가 각 서비스에 대한 최신 위치를 갖도록 보장해요.

요구 사항

consul-aws 다운로드

HashiCorp 릴리스 디렉터리에서 최신 consul-aws 바이너리를 다운로드해 주세요. $ARCH 및 $OS 변수가 환경에서 일치하지 않거나 해석되지 않으면 변경해 주세요.

$ ARCH=amd64 && \
OS=$(uname | tr '[:upper:'] '[:lower:]') && \
DL_URL=$(curl -s https://api.releases.hashicorp.com/v1/releases/consul-aws/latest | jq -r --arg arch $ARCH --arg os $OS '.builds[] | select(.arch==$arch and .os==$os) | .url') && \
FILENAME=$(echo $DL_URL | awk -F'/' '{print $NF}') && \
curl -L -o $FILENAME $DL_URL 2&>/dev/null && \
tar -xvf $FILENAME

현재 작업 디렉터리와 consul-aws 바이너리를 포함하도록 $PATH 변수를 업데이트해 주세요.

$ export $PATH=$PATH:$(pwd)

인증 설정

consul-aws는 단방향 또는 양방향 동기화를 위해 Consul과 AWS에 대한 접근이 필요해요.

Consul 클러스터에 인증

Consul 클러스터에 연결하려면 consul-aws가 -token CLI 플래그 또는 CONSUL_HTTP_TOKEN 환경 변수를 수용해요.

Consul의 ACL 기능을 사용할 때는 -token 또는 CONSUL_HTTP_TOKEN 값에 ACL 토큰을 사용할 것을 권장해요. ACL 토큰에 대한 자세한 내용은 Consul 토큰 문서에서 확인할 수 있어요.

AWS에 인증

AWS에 연결하려면 consul-aws가 기본 AWS 자격 증명 프로바이더 체인을 사용하여 AWS 자격 증명을 발견해요. 프로바이더 체인은 다음 순서로 AWS 자격 증명을 검색해요:

  1. 환경 변수.
  2. 공유 자격 증명 파일.
  3. 애플리케이션이 Amazon EC2 인스턴스에서 호스팅될 때 AWS IAM 역할.

Consul에서 AWS Cloud Map으로 단방향 동기화

-to-aws 플래그는 consul-aws 도구가 Consul에서 AWS Cloud Map 네임스페이스로 서비스 동기화를 시작하도록 지시해요.

-aws-service-prefix 플래그를 전달하면 Consul에서 가져온 서비스가 공통 식별자를 공유해요. 여러 Consul 클러스터에서 동기화할 때의 한 전략은 접두사에 Consul 클러스터 이름을 사용하고 -consul-service-prefix 플래그로 제공하는 거예요.

이 예시에서 Consul의 web이라는 서비스는 AWS Cloud Map에서 my_hcp_consul_cluster_web으로 식별돼요. -aws-namespace-id 플래그는 필수예요.

$ consul-aws \
     -aws-namespace-id ns-hjrgt3bapp7phzff \
     -to-aws \
     -consul-service-prefix my_hcp_consul_cluster_

Consul은 Consul에서 AWS Cloud Map으로 동기화하는 서비스에 대해 다음 속성을 설정해요.

Property Value
Description Imported from Consul
Record types A and SRV
DNS routing policy Multivalue answer routing

AWS Cloud Map에서 Consul로 단방향 동기화

-to-consul 플래그는 consul-aws 도구가 AWS Cloud Map 네임스페이스에서 Consul로 서비스 동기화를 시작하도록 지시해요.

여러 클라우드 프로바이더에 걸쳐 서비스를 호스팅할 때 접두사에 aws를 추가하는 것이 한 전략이에요. aws-service-prefix 플래그로 접두사를 사용자 지정할 수 있어요.

이 예시에서 AWS Cloud Map의 redis라는 서비스는 Consul에서 my_aws_cloudmap_namespace_redis로 식별돼요. -aws-namespace-id 플래그는 필수예요.

$ consul-aws \
     -aws-namespace-id ns-hjrgt3bapp7phzff \
     -to-consul\
     -aws-service-prefix my_aws_cloudmap_namespace_

Consul은 AWS Cloud Map에서 Consul로 동기화하는 서비스에 대해 다음 속성을 설정해요.

Property Value
Tag aws
Meta-Data aws를 소스 집합으로, aws-id, aws-namespace, 인스턴스가 AWS Cloud Map에서 사용하는 사용자 지정 속성을 포함
Node 노드 이름은 consul-aws

Consul과 AWS Cloud Map 간 양방향 동기화

Consul과 AWS Cloud Map 네임스페이스 간의 양방향 또는 쌍방향 동기화를 활성화하려면 -to-consul 및 -to-aws 플래그를 모두 추가해 주세요.

-aws-namespace-id 플래그는 필수예요. -aws-service-prefix 및 -consul-service-prefix 플래그는 선택 사항이에요.

$ consul-aws \
     -aws-namespace-id ns-hjrgt3bapp7phzff \
     -to-consul \
     -aws-service-prefix my_aws_cloudmap_namespace_ \
     -to-aws \
     -consul-service-prefix my_hcp_consul_cluster_

다음 단계

Consul과 AWS Cloud Map 간 동기화를 설정한 후 다음 리소스로 서비스를 더 관리할 수 있어요.

  • consul-aws CLI 참조
  • 서비스 메시로 서비스 연결
  • 애플리케이션 트래픽 관리
  • 서비스 메시 트래픽 관측

더 알아보기 (Learn more)