클러스터 피어링 제어 플레인 트래픽과 메시 게이트웨이
클러스터 피어링 제어 플레인 트래픽과 메시 게이트웨이 (Mesh Gateways for Cluster Peering)
이 문서는 피어 연결을 공유하는 Consul 클러스터 간 제어 플레인 트래픽을 라우팅하도록 메시 게이트웨이를 구성하는 방법을 설명해요. 게이트웨이 등록, ACL 구성, PeerThroughMeshGateways 메시 구성 항목 적용 방법을 다룰게요.
출처: 문서
본문
이 문서는 피어 연결을 공유하는 Consul 클러스터 간 제어 플레인 트래픽을 라우팅하도록 메시 게이트웨이를 구성하는 방법을 설명합니다. 메시 게이트웨이를 통해 클러스터 피어 간 서비스 트래픽을 라우팅하는 방법은 어드민 파티션 간 서비스 간 트래픽 활성화를 참조하세요.
클러스터 피어 간 제어 플레인 트래픽에는 초기 시크릿 핸드셰이크와 피어링 데이터를 복제하는 양방향 스트림이 포함됩니다. 이 데이터는 메시 게이트웨이가 복호화하지 않습니다. 대신 gRPC TLS 포트에서 수락(accepting) 클러스터가 자동 생성한 TLS 인증서를 사용해 종단 간 전송됩니다.
메시 게이트웨이 사용 (권장)
메시 게이트웨이 미사용
선행 요구 사항 (Prerequisites)
클러스터 피어링 제어 플레인 트래픽용 메시 게이트웨이를 구성하려면 Consul 환경이 다음 요구 사항을 충족하는지 확인하세요:
- Consul 버전 1.14.0 이상.
- 두 클러스터 모두 메시 게이트웨이 구성을 관리하려면 로컬 Consul 에이전트가 필요합니다.
- Envoy 프록시를 사용하세요. Envoy는 Consul에서 메시 게이트웨이 기능을 가진 유일한 프록시입니다.
구성 (Configuration)
메시 게이트웨이를 Consul의 서비스로 등록하고 사용하려면 다음 설정을 구성하세요.
게이트웨이 등록 (Gateway registration)
피어링될 각 클러스터에 메시 게이트웨이를 등록합니다.
- 게이트웨이를 Consul에 등록하려면
kind필드에mesh-gateway를 지정합니다. - 프록시와 호환되는 불투명(opaque) 매개변수로
Proxy.Config설정을 정의합니다. Envoy의 경우 추가 구성 정보는 게이트웨이 옵션 (Gateway Options) 및 Escape-hatch 재정의 (Escape-hatch Overrides) 문서를 참조하세요. PeerThroughMeshGateways = true로 메시 구성 항목을 적용합니다. 언제 적용해야 하는지에 대한 논의는 모드 (modes)를 참조하세요.
또는 CLI를 사용해 Consul에서 게이트웨이를 가동하고 등록할 수도 있습니다. 추가 정보는 consul connect envoy 명령을 참조하세요.
Consul Enterprise 클러스터의 경우 Consul 서버가 암묵적으로 할당되는 곳이 "default" 파티션이므로 메시 게이트웨이는 "default" 파티션에 등록되어야 합니다.
ACL 구성 (ACL configuration)
Consul CE
Consul Enterprise
서비스 간 트래픽에 필요한 ACL 구성에 더해, 피어링 제어 플레인 트래픽을 라우팅하는 메시 게이트웨이는 모든 피어링에 대한 peering:read 접근 권한을 부여받아야 합니다.
이 접근 권한을 통해 메시 게이트웨이는 Consul 클러스터의 모든 피어링을 나열하고 피어링된 데이터센터별로 고유한 라우팅을 생성할 수 있습니다.
Consul CE의 메시 게이트웨이 피어링 제어 플레인 트래픽용 예제 ACL 규칙:
HCL
peering = "read"
JSON
{
"peering": "read"
}
서비스 간 트래픽에 필요한 ACL 구성에 더해, 피어링 제어 플레인 트래픽을 라우팅하는 메시 게이트웨이는 모든 파티션의 모든 피어링에 대한 peering:read 접근 권한을 부여받아야 합니다.
이 접근 권한을 통해 메시 게이트웨이는 Consul 클러스터의 모든 피어링을 나열하고 피어링된 파티션별로 고유한 라우팅을 생성할 수 있습니다.
Consul Enterprise의 메시 게이트웨이 피어링 제어 플레인 트래픽용 예제 ACL 규칙:
HCL
partition_prefix "" {
peering = "read"
}
JSON
{
"partition_prefix": {
"": {
"peering": "read"
}
}
}
모드 (Modes)
Connect 프록시 구성 모드 (Modes)는 피어링 제어 플레인 트래픽에는 적용되지 않습니다. 게이트웨이를 통한 제어 플레인 트래픽의 흐름은 PeerThroughMeshGateways = true인 메시 구성 항목의 존재로 암시됩니다.
예: 메시 게이트웨이용 피어링 제어 플레인 트래픽 활성화
HCL
Kind = "mesh"
Peering {
PeerThroughMeshGateways = true
}
YAML
apiVersion: consul.hashicorp.com/v1alpha1
kind: Mesh
metadata:
name: mesh
spec:
peering:
peerThroughMeshGateways: true
피어링 토큰 생성 전에 클러스터에 이 메시 구성을 설정하면, 인바운드 제어 플레인 트래픽이 이 클러스터(수락 클러스터라고도 함)에 등록된 메시 게이트웨이를 통해 전송됩니다. 메시 게이트웨이 인스턴스가 수락 클러스터에 등록되면 그 주소는 양방향 피어링 스트림을 통해 dialing 클러스터에 노출됩니다.
연결 설정 전에 클러스터에 이 메시 구성을 설정하면 아웃바운드 제어 플레인 트래픽이 메시 게이트웨이를 통해 흐르게 됩니다.
모든 피어링 제어 플레인 트래픽을 메시 게이트웨이로 라우팅하려면 수락 클러스터와 dialing 클러스터 모두 메시 구성 항목이 적용되어 있어야 합니다.