Consul이란 무엇인가요?

Consul이란 무엇인가요?

HashiCorp Consul은 서비스 간 및 온프레미스, 멀티 클라우드 환경, 런타임 전반에 걸쳐 안전한 네트워크 연결을 관리할 수 있게 해주는 서비스 네트워킹 솔루션이에요. 서비스 디스커버리, 서비스 메시, 트래픽 관리, 네트워크 인프라 장치의 자동 업데이트를 제공해요.

출처: 문서

본문

HashiCorp Consul은 팀이 서비스 간 및 온프레미스(on-prem)와 멀티 클라우드 환경·런타임 전반에 걸쳐 안전한 네트워크 연결을 관리할 수 있게 해주는 서비스 네트워킹 솔루션입니다. Consul은 서비스 디스커버리(service discovery), 서비스 메시(service mesh), 트래픽 관리, 네트워크 인프라 장치에 대한 자동 업데이트를 제공합니다. 이러한 기능을 하나의 Consul 배포에서 개별적으로 또는 함께 사용할 수 있습니다.

실습 : Getting Started 자습서를 완료해 Consul을 배포하는 방법을 학습하세요.

Consul은 어떻게 작동하나요?

Consul은 네트워크 전체에 배포된 서비스를 등록, 쿼리, 보호할 수 있게 해주는 제어 플레인(control plane)을 제공합니다. 제어 플레인은 서비스와 각각의 IP 주소를 추적하는 중앙 레지스트리를 유지 관리하는 네트워크 인프라의 일부입니다. 이는 물리적 서버, 클라우드 인스턴스, 가상 머신 또는 컨테이너와 같은 노드 클러스터에서 실행되는 분산 시스템입니다.

Consul은 프록시를 통해 데이터 플레인(data plane)과 상호 작용합니다. 데이터 플레인은 데이터 요청을 처리하는 네트워크 인프라의 일부입니다.

핵심 Consul 워크플로는 다음 단계로 구성됩니다.

  • 등록 (Register) : 팀은 Consul 카탈로그에 서비스를 추가합니다. 카탈로그는 운영자가 애플리케이션 코드를 수정하거나 추가 로드 밸런서를 배포하거나 IP 주소를 하드코딩하지 않아도 서비스가 자동으로 서로를 발견할 수 있게 하는 중앙 레지스트리입니다. 이는 모든 서비스와 해당 주소에 대한 런타임 소스 오브 트루스(source of truth)입니다. 팀은 CLI 또는 API를 사용해 수동으로 정의·등록할 수 있고, Kubernetes에서 서비스 동기화(service sync)로 프로세스를 자동화할 수 있습니다. 또한 서비스는 건강 검사(health check)를 포함할 수 있어 Consul이 비정상 서비스를 모니터링할 수 있습니다.
  • 쿼리 (Query) : Consul의 ID 기반 DNS를 사용하면 Consul 카탈로그에서 정상(healthy) 서비스를 찾을 수 있습니다. Consul에 등록된 서비스는 건강 정보, 액세스 지점, 그리고 네트워크를 통한 데이터 흐름을 제어하는 데 도움이 되는 기타 데이터를 제공합니다. 서비스는 정의한 ID 기반 정책에 따라 로컬 프록시를 통해서만 다른 서비스에 액세스합니다.
  • 보호 (Secure) : 서비스가 업스트림을 찾은 후 Consul은 서비스 간 통신이 인증, 권한 부여, 암호화되었는지 보장합니다. Consul 서비스 메시는 mTLS로 마이크로서비스 아키텍처를 보호하며, 컴퓨팅 환경과 런타임의 차이와 관계없이 서비스 ID를 기반으로 액세스를 허용하거나 제한할 수 있습니다.

왜 Consul인가요?

Consul은 애플리케이션 복원력을 높이고, 가동 시간을 강화하며, 애플리케이션 배포를 가속화하고, 서비스 간 통신 전반의 보안을 개선합니다. HashiCorp 공동 창립자 겸 CTO인 Armon Dadgar가 Consul이 네트워킹 문제를 어떻게 해결하는지 설명합니다.

Consul과 유사 제품 비교에 대한 자세한 내용은 Consul 사용 사례를 참조하세요.

서비스 디스커버리 자동화

클라우드 인프라에서 마이크로서비스 아키텍처를 채택하는 것은 규모에 맞춰 가치를 제공하는 중요한 단계이지만, 네트워크에서 정상 서비스가 어디에서 실행 중인지 실시간으로 아는 것은 어려운 일이 됩니다. Consul은 일반적으로 로드 밸런서로 처리되는 서비스 연결을 ID 기반 서비스 카탈로그로 대체해 서비스 디스커버리를 자동화합니다. 서비스 카탈로그는 Consul의 DNS 서버 또는 API를 통해 쿼리할 수 있는 중앙 집중식 소스 오브 트루스입니다. 카탈로그는 어떤 서비스가 사용 가능한지, 어떤 서비스가 제거되었는지, 어떤 서비스가 정상인지 항상 알고 있습니다.

Consul은 IPv4와 IPv6 네트워크를 모두 지원합니다. Consul의 서비스 디스커버리 기능과 유사 제품 비교에 대한 자세한 내용은 다른 DNS 도구와 비교한 Consul을 참조하세요.

런타임 및 클라우드 공급자 간 서비스 연결

현대 조직은 여러 리전에 걸쳐 온프레미스 인프라 환경과 공용 클라우드 공급자의 조합에 서비스를 배포할 수 있습니다. 서비스는 베어 메탈, 가상 머신에서 실행되거나 Kubernetes 클러스터의 컨테이너로 실행될 수 있습니다.

Consul은 서비스가 도달해야 하는 모든 런타임 또는 인프라 환경으로 네트워크 트래픽을 라우팅합니다. Consul API Gateway를 사용해 네트워크 안팎으로 트래픽을 라우팅할 수도 있습니다. Consul 서비스 메시는 애플리케이션 코드 변경 없이 서비스 간 통신 보호, 트래픽 관리, 관측 가능성과 같은 추가 기능을 제공합니다.

Consul은 또한 컨테이너화된 환경에서 Consul 기능을 활용할 수 있게 해주는 Kubernetes와의 많은 통합을 제공합니다. 예를 들어 Consul은 Kubernetes 파드에 사이드카 프록시를 자동으로 주입하고, 애플리케이션을 수동으로 변경하거나 파드 정의를 변경하지 않고도 Kubernetes 서비스와 비 Kubernetes 서비스를 Consul 서비스 레지스트리에 동기화할 수 있습니다.

또한 HashiCorp Nomad로 Consul 워크로드를 스케줄링해 Nomad 작업과 태스크 그룹 간의 안전한 서비스 간 통신을 제공할 수 있습니다.

제로 트러스트 네트워크 보안 활성화

마이크로서비스 아키텍처는 복잡하며 악의적인 행위자에게 우발적으로 노출되지 않도록 보호하기 어렵습니다. Consul은 애플리케이션 코드를 변경하지 않고도 네트워크 보안을 강화하는 여러 메커니즘을 제공합니다. 여기에는 서비스 간 모든 트래픽에 대한 상호 전송 계층 보안(mTLS) 암호화와 Consul UI, API, CLI를 통해 관리할 수 있는 서비스 간 권한인 Consul 인텐션(intentions)이 포함됩니다.

Consul을 Kubernetes 클러스터에 배포할 때 HashiCorp Vault와 통합해 민감한 데이터를 관리할 수도 있습니다. 기본적으로 Kubernetes의 Consul은 백엔드 시스템으로 Kubernetes 시크릿을 활용합니다. Kubernetes 시크릿은 base64로 인코딩되고 암호화되지 않으며 임대(lease) 또는 시간 초과(time-to-live) 속성이 없습니다. Kubernetes의 Consul에 대한 시크릿 백엔드로 Vault를 활용하면 하나 이상의 Kubernetes의 Consul 데이터센터에서 사용할 수 있도록 중앙 집중식 Vault 클러스터 내에서 Consul 관련 시크릿을 관리·저장할 수 있습니다. 자세한 내용은 시크릿 백엔드로 Vault 사용을 참조하세요.

또한 액세스 제어 목록(ACL)에서 보안 정책을 정의해 데이터와 Consul API에 대한 액세스를 제어함으로써 Consul 배포 자체를 보호할 수도 있습니다.

네트워크 장애로부터 서비스 보호

중단(outage)은 피할 수 없지만, 분산 시스템에서는 한 데이터센터의 정전이 다운스트림 서비스 운영을 방해하지 않는 것이 중요합니다. 자동 백업, 중복 존, 읽기 복제본, 그리고 재해 이벤트 후 데이터 손실과 다운타임을 방지하는 기타 기능을 활성화할 수 있습니다. L7 관측 가능성 기능은 또한 Consul UI에서 서비스 트래픽 메트릭을 제공하여 메시 내 서비스와 해당 연결의 상태를 이해하는 데 도움을 줍니다.

네트워크 인프라 장치 동적 업데이트

네트워크 장치 엔드포인트 업데이트, 방화벽 또는 로드 밸런서 규칙 업데이트와 같은 일상적인 운영 작업을 포함한 네트워크 변경은 결정적인 순간에 운영을 방해하는 문제를 일으킬 수 있습니다. Consul-Terraform-Sync(CTS) 추가 기능을 배포하면 서비스가 변경될 때 네트워크 인프라 장치를 동적으로 업데이트할 수 있습니다. CTS는 Consul에 저장된 서비스 정보를 모니터링하고, Consul이 변경 사항을 등록하면 HashiCorp Terraform 인스턴스를 자동으로 시작해 네트워크 인프라에 관련 변경을 적용함으로써 네트워크 인프라 구성의 수동 작업을 줄입니다.

배포 및 테스트 시나리오를 위한 트래픽 경로 최적화

변경 사항을 롤아웃하는 것은 특히 복잡한 네트워크 환경에서는 위험할 수 있습니다. 업데이트된 서비스가 다른 서비스에 연결될 때 예상대로 작동하지 않아 업스트림 또는 다운스트림 문제가 발생할 수 있습니다. Consul 서비스 메시는 계층 7(L7) 트래픽 관리를 지원하여 L7 트래픽을 서비스 인스턴스의 여러 하위 집합으로 나눌 수 있게 합니다. 이를 통해 카나리아 테스트, A/B 테스트, 블루/그린 배포, 그리고 소프트 멀티 테넌시(prod/qa/staging이 컴퓨팅 리소스를 공유) 배포를 위해 서비스 풀을 나눌 수 있습니다.

Consul Enterprise

HashiCorp는 조직 내에서 Consul을 시범 운영하려는 소규모 비즈니스와 팀에 이상적인 커뮤니티 에디션에서 핵심 Consul 기능을 무료로 제공합니다. 비즈니스가 성장함에 따라 협업, 운영, 규모, 거버넌스의 조직적 복잡성을 해결하도록 설계된 추가 기능을 제공하는 Consul Enterprise로 업그레이드할 수 있습니다.

커뮤니티 (Community)

커뮤니티의 질문, 제안, 기여를 환영합니다.

더 알아보기 (Learn more)