CTS 요구 사항

CTS 요구 사항 (Requirements)

Consul-Terraform-Sync(CTS)를 실행하려면 Terraform 프로바이더, Terraform 모듈, 그리고 consul-terraform-sync 데몬 바깥에서 실행되는 Consul 클러스터가 필요해요. 이 문서에서는 CTS 실행을 위한 최소 구성과 각 구성 요소 준비 방법을 단계별로 안내해요.

출처: 문서

본문

Consul-Terraform-Sync(CTS)를 실행하려면 다음 구성 요소가 필요합니다:

  • Terraform 프로바이더
  • Terraform 모듈
  • consul-terraform-sync 데몬 바깥에서 실행되는 Consul 클러스터

Terraform 프로바이더를 통해 네트워크 인프라 지원을 추가할 수 있으며, Terraform 모듈을 적용해 네트워크 통합을 구현할 수 있습니다.

다음 안내는 Terraform 드라이버로 CTS를 실행하는 경우에 대한 것입니다. HCP Terraform 드라이버(Enterprise)에는 추가 선행 요구 사항이 있습니다.

Consul 클러스터 실행 (Run a Consul cluster)

다음은 CTS를 실행하는 데 필요한 최소한의 Consul 설정을 위한 몇 가지 단계입니다.

Consul 설치 (Install Consul)

CTS는 Consul Template 같은 다른 Consul 생태계 도구와 유사하게 Consul과 함께 실행되는 데몬입니다. CTS는 Consul 바이너리에 포함되어 있지 않으며 별도로 설치해야 합니다.

로컬 Consul 에이전트를 설치하려면 시작하기: Consul 설치 튜토리얼을 참조하세요.

호환되는 Consul 버전에 대한 정보는 Consul 호환성 매트릭스를 참조하세요.

에이전트 실행 (Run an agent)

네트워크 장치를 동적으로 업데이트하려면 Consul 에이전트가 실행 중이어야 합니다. Consul 에이전트 구성 및 시작에 대한 정보는 Consul 에이전트 문서를 참조하세요.

프로덕션에서 CTS와 함께 Consul 에이전트를 실행할 때는, CTS가 블로킹 쿼리(blocking queries)를 사용해 등록된 서비스 변경 같은 태스크 의존성을 감시한다는 점을 고려하세요. 이로 인해 각 의존성의 변경을 폴링하기 위해 CTS와 에이전트 사이에 여러 개의 장기 실행 TCP 연결이 생성됩니다. CTS가 많은 수의 서비스를 모니터링하면 Consul이 에이전트 연결 한도에 빠르게 도달할 수 있습니다.

한도에 조기에 도달하는 것을 피하려면, CTS와 Consul 에이전트 간 통신에 HTTP/2(HTTPS 필요)를 사용하는 것을 권장합니다. HTTP/2를 사용하면 CTS는 단일 연결을 만들고 모든 통신에 그 연결을 재사용합니다. 자세한 내용은 Consul 구성 섹션을 참조하세요.

또는 limits.http_max_conns_per_client 옵션을 구성해 요구에 맞는 최대 연결 수를 설정할 수 있습니다.

서비스 등록 (Register services)

CTS는 네트워크 장치의 다운스트림 변경으로 이어지는 서비스 변경을 위해 Consul 카탈로그를 모니터링합니다. 서비스가 없으면 CTS 데몬은 동작하지만 유휴(idle) 상태입니다. 서비스 정의를 로드하거나 HTTP API 요청을 보내는 방식으로 Consul 에이전트에 서비스를 등록할 수 있습니다.

다음 HTTP API 요청 예제는 web이라는 서비스를 Consul 에이전트에 등록합니다:

$ echo '{
    "ID": "web",
    "Name": "web",
    "Address": "10.10.10.10",
    "Port": 8000
}' > payload.json

$ curl --request PUT --data @payload.json http://localhost:8500/v1/agent/service/register

이 예제는 10.10.10.10:8000에서 실행 중인 존재하지 않는 웹 서비스를 나타내며, 이제 CTS가 소비할 수 있게 되었습니다.

condition "services" 태스크 블록에서 web을 구성하면 CTS가 웹 서비스를 모니터링하고 태스크를 실행하며 네트워크 장치를 업데이트하도록 설정할 수 있습니다. 웹 서비스에 기본이 아닌 값이 있다면 condition "services"에서도 구성할 수 있습니다.

HTTP API 엔드포인트로 서비스를 등록하는 자세한 내용은 서비스 등록 API 문서를 참조하세요.

서비스 정의를 로드해 서비스를 등록하는 실습 지침은 시작하기: Consul 서비스 디스커버리로 서비스 등록 튜토리얼을 참조하세요.

클러스터 실행 (Run a cluster)

프로덕션 환경에서는 단일 에이전트보다 Consul 클러스터를 운영할 것을 권장합니다. 여러 Consul 에이전트를 시작하고 클러스터로 조인하는 방법은 시작하기: Consul 데이터센터 배포 튜토리얼을 참조하세요.

Terraform 프로바이더를 사용한 네트워크 인프라 (Network infrastructure using a Terraform provider)

Terraform 드라이버용 CTS 통합은 Terraform 프로바이더를 플러그인으로 사용하여 특정 네트워크 인프라 플랫폼과 인터페이스합니다. CTS의 Terraform 드라이버는 통합할 수 있는 방대한 Terraform 프로바이더 컬렉션을 상속받습니다. 또한 커뮤니티가 작성한 프로바이더를 사용하려면 required_providers 구성에서 프로바이더 source를 지정할 수 있습니다(Terraform 0.13 이상 필요).

Terraform 프로바이더 찾기 (Finding Terraform providers)

사용하는 인프라 플랫폼용 프로바이더를 찾으려면 Terraform Registry의 프로바이더 섹션을 둘러보세요.

프로바이더 만들기 (How to create a provider)

사용 환경에 맞는 Terraform 프로바이더가 없다면 새 Terraform 프로바이더를 만들어 레지스트리에 게시한 후 네트워크 통합 태스크에서 사용하거나 호환되는 Terraform 모듈을 만들 수 있습니다. 프로바이더 생성·게시에 대한 추가 정보는 다음 Terraform 튜토리얼과 문서를 참조하세요:

Terraform 모듈을 사용한 네트워크 통합 (Network integration using a Terraform module)

CTS의 태스크용 Terraform 모듈은 통합의 핵심 구성 요소입니다. 모듈은 사용할 리소스와 인프라가 동적으로 업데이트되는 방식을 선언합니다. 모듈과 태스크 안에서의 구성 방식이 인프라가 업데이트되는 조건을 결정합니다.

Terraform 프로바이더와 함께 작업하면서 Terraform 드라이버와 호환되는 Terraform 모듈 만들기를 통해 CTS용 통합 태스크를 작성할 수 있습니다. 파트너가 만든 모듈을 사용할 수도 있습니다.

CTS 구성 방법과 태스크에 Terraform 프로바이더·모듈을 사용하는 방법은 구성 (Configuration)을 참조하세요.

파트너 Terraform 모듈 (Partner Terraform Modules)

다음에 나열된 모듈은 CTS와 호환되며 사용할 수 있습니다.

A10 Networks

Avi Networks

  • 풀 및 풀 멤버(서버) 스케일 업/다운: GitHub

AWS Application Load Balancer (ALB)

  • AWS ALB용 리스너 규칙과 타깃 그룹 생성, Consul 인그레스 게이트웨이로 트래픽 전달: Terraform Registry / GitHub

Checkpoint

Cisco ACI

Citrix ADC

F5

NS1

Palo Alto Networks

더 알아보기 (Learn more)