가상 머신에서 인그레스 게이트웨이 생성 및 관리

가상 머신에서 인그레스 게이트웨이 생성 및 관리 (사용 중단됨)

가상 머신(VM) 환경에서 Consul 서비스 메시에 인그레스 게이트웨이를 추가하는 방법을 설명해 드릴게요. 리스너 정의부터 Envoy 시작까지의 전체 과정을 살펴볼게요.

출처: 문서

본문

이 문서는 가상 머신(VM) 환경에서 Consul 서비스 메시에 인그레스 게이트웨이를 추가하는 방법을 설명해요. Kubernetes 환경에서 인그레스 게이트웨이를 구현하는 방법에 대한 지침은 Kubernetes에서 인그레스 게이트웨이 생성 및 관리를 참고해 주세요.

참고

인그레스 게이트웨이는 사용 중단(deprecated)되었으며 더 이상 업데이트되지 않아요. 인그레스 게이트웨이는 이 버전에서 완전히 지원되지만 향후 Consul 릴리스에서 제거할 거예요. 대신 Consul API 게이트웨이를 사용해 주세요.

개요

인그레스 게이트웨이는 서비스 메시 외부의 서비스가 메시의 서비스로 트래픽을 보낼 수 있게 해줘요. 인그레스 게이트웨이에 대한 자세한 내용은 인그레스 게이트웨이 개요를 참고해 주세요.

인그레스 게이트웨이를 설정하려면 다음 단계를 완료해 주세요:

  1. 인그레스 게이트웨이 구성 엔트리에서 리스너와 그들이 노출하는 서비스를 정의해요.

  2. 인그레스 게이트웨이 구성 엔트리를 Consul에 등록해요.

  3. 인그레스 게이트웨이 프록시 서비스에 대한 서비스 정의를 만들고 메시에 배포해요.

  4. 인그레스 게이트웨이를 시작해요. 이 단계는 인그레스 게이트웨이로 작동하는 Envoy 프록시를 배포해요.

인그레스 게이트웨이 구성 엔트리에서 리스너와 서비스를 지정한 후에는 이 단계를 별도로 완료하는 대신 단일 CLI 명령으로 게이트웨이 서비스를 등록하고 Envoy를 시작할 수 있어요. Envoy 시작 시 인그레스 서비스 등록을 참고해 주세요.

요구 사항

  • 모든 에이전트에 대해 서비스 메시가 활성화되어야 해요. 서비스 메시를 활성화하려면 connect.enabled 매개변수를 true로 설정해 주세요.
  • 데이터센터의 모든 서버 에이전트에 대해 gRPC 포트가 구성되어야 해요. ports.grpc 매개변수에 gRPC 포트를 지정해 주세요. ACL이 활성화되었을 때 구성을 단순화하려면 포트를 8502로 설정할 것을 권장해요. 자세한 내용은 ACL 요구 사항을 참고해 주세요.
  • 서비스 메시의 사이드카 프록시에 Envoy를 사용해야 해요. 자세한 내용은 사이드카 프록시 구성 및 배포를 참고해 주세요.

ACL 요구 사항

ACL이 활성화된 경우 인그레스 게이트웨이를 등록할 때 다음 권한을 부여하는 토큰을 제시해야 해요:

  • 인그레스 게이트웨이의 서비스 이름에 대한 service:write
  • 인그레스 게이트웨이 구성 엔트리의 모든 서비스에 대한 service:read
  • 인그레스 게이트웨이 구성 엔트리의 서비스의 모든 노드에 대한 node:read

이 권한은 토큰이 메시의 다른 서비스로 통신을 라우팅할 수 있게 인가해요. 게이트웨이 노드의 Consul 클라이언트 에이전트가 기본 8502 gRPC 포트를 사용하도록 구성되지 않은 경우, 게이트웨이의 토큰은 노드 이름에 대한 agent:read도 제공하여 에이전트의 gRPC 포트를 발견해야 해요. gRPC는 Envoy의 xDS API를 Envoy 프록시에 노출하는 데 사용돼요.

리스너 정의

인그레스 게이트웨이 구성 엔트리에서 리스너 구성을 지정해 주세요. 리스너 구성은 업스트림 서비스에 매핑되는 서비스 메시의 트래픽 진입점이에요. 구성 엔트리 이름과 일치하는 인그레스 게이트웨이 프록시를 등록하면 Consul이 구성 엔트리에 지정된 설정을 적용해요. 다음 필드를 구성해 주세요:

  • Kind: 값을 ingress-gateway로 설정해 주세요.
  • Name: Consul은 이름이 Name 필드와 일치하는 인그레스 게이트웨이 프록시에 구성 엔트리 설정을 적용해요.
  • Listeners: 하나 이상의 리스너를 지정해 주세요.
  • Listeners.Port: 리스너에 대한 포트를 지정해 주세요. 각 리스너는 포트 번호로 고유하게 식별돼요.
  • Listeners.Protocol: 기본 프로토콜은 tcp이지만, 트래픽을 허용하려는 서비스가 사용하는 프로토콜을 지정해야 해요.
  • Listeners.Services: Services 필드는 업스트림 서비스에 노출하려는 서비스를 포함해요. 이 필드에는 헬스 체크 및 TLS 구성 같은 인그레스 트래픽에 대한 세분화된 제어를 가능하게 하는 여러 옵션과 하위 구성이 포함돼요.

Consul Enterprise 서비스 메시의 경우 게이트웨이와 각 노출 서비스에 대한 Partition 및 Namespace 필드도 구성해야 할 수 있어요.

지원되는 매개변수에 대한 자세한 내용은 인그레스 게이트웨이 구성 엔트리 참조를 참고해 주세요.

인그레스 게이트웨이 등록

게이트웨이 구성 엔트리를 등록하려면 consul config 명령을 사용하거나 /config API 엔드포인트를 호출할 수 있어요. 다음 예시 명령은 로컬 시스템에 저장된 public-ingress.hcl이라는 인그레스 게이트웨이 구성 엔트리를 등록해요:

$ consul config write public-ingress.hcl

인그레스 게이트웨이 서비스 배포

인그레스 게이트웨이 서비스를 배포하려면 서비스 정의를 만들고 Consul에 등록해 주세요.

또한 명령줄에서 Envoy 프록시를 시작하면서 인그레스 게이트웨이 서비스를 정의하고 Consul에 등록할 수도 있어요. 자세한 내용은 Envoy 시작 시 인그레스 서비스 등록을 참고해 주세요.

인그레스 게이트웨이용 서비스 정의 생성

Consul은 구성 엔트리 이름과 일치하는 인그레스 게이트웨이 서비스에 인그레스 게이트웨이 구성 엔트리에 정의된 설정을 적용해요. Consul에서 서비스 정의에 대한 자세한 내용은 서비스 정의를 참고해 주세요.

인그레스 게이트웨이 서비스 정의에 필요한 필드는 다음과 같아요:

  • Kind: 필드를 ingress-gateway로 설정해야 해요.
  • Name: 이름은 구성 엔트리의 Name 필드에 지정된 값과 일치해야 해요.

다른 모든 서비스 정의 필드는 선택 사항이지만, 게이트웨이의 상태를 확인하기 위해 헬스 체크를 정의할 것을 권장해요. 서비스 정의에 대한 정보는 Services 구성 참조를 참고해 주세요.

인그레스 게이트웨이 프록시 서비스 등록

API 또는 CLI로 인그레스 게이트웨이를 등록할 수 있어요. Consul에서 서비스 등록 지침은 서비스 및 헬스 체크 등록을 참고해 주세요.

다음 예시는 Consul CLI에서 ingress-gateway.hcl에 정의된 인그레스 게이트웨이를 등록해요:

$ consul services register ingress-service.hcl

Envoy 프록시 시작

consul connect envoy 명령을 실행하여 Envoy를 시작해 주세요. 인그레스 게이트웨이 서비스의 이름을 지정하고 -gateway=ingress 플래그를 포함해 주세요. 명령 사용에 대한 자세한 내용은 Consul Connect Envoy를 참고해 주세요.

다음 예시는 ingress-service 게이트웨이 서비스에 대한 Envoy를 시작해요:

$ consul connect envoy -gateway=ingress ingress-service

Envoy 시작 시 인그레스 서비스 등록

Envoy 프록시를 시작할 때 인그레스 게이트웨이 서비스를 자동으로 등록할 수도 있어요. consul connect envoy 명령으로 다음 플래그를 지정해 주세요:

  • -gateway=ingress
  • -register
  • -service=

다음 예시는 Envoy를 시작하고 포트 8888의 에이전트 주소에 바인딩된 ingress-service라는 인그레스 게이트웨이 서비스를 등록해요:

$ consul connect envoy -gateway=ingress -register \
   -service ingress-service \
   -address '{{ GetInterfaceIP "eth0" }}:8888'

게이트웨이를 구성하여 외부 다운스트림에서 TLS 인증서를 검색하고 제공하는 경우 인그레스 게이트웨이 서비스 등록과 프록시 시작을 동시에 할 수 없어요. 자세한 내용은 외부 서비스에서 사용자 지정 TLS 인증서 제공을 참고해 주세요.

추가 Envoy 구성

인그레스 게이트웨이는 추가 Envoy 게이트웨이 옵션과 escape-hatch 재정의를 지원해요. 사용하려면 인그레스 게이트웨이 서비스 정의에 게이트웨이 옵션을 지정해 주세요. escape-hatch 재정의를 사용하려면 전역 proxy defaults 구성 엔트리에 추가해야 해요. 자세한 내용은 Envoy 구성 참조를 참고해 주세요.

더 알아보기 (Learn more)