클러스터 피어링으로 L7 트래픽 관리
클러스터 피어링으로 L7 트래픽 관리 (K8s)
이 사용 주제에서는 Consul on Kubernetes 배포에서 기존 클러스터 피어링 연결을 가진 서비스 간의 L7 트래픽을 설정하고 관리하기 위해 service-resolver CRD를 구성하는 방법을 설명해요.
출처: 문서
본문
이 사용 주제에서는 Consul on Kubernetes 배포에서 기존 클러스터 피어링 연결을 가진 서비스 간의 L7 트래픽을 설정하고 관리하기 위해 service-resolver CRD(custom resource definition)를 구성하는 방법을 설명합니다.
클러스터 피어링으로 L7 트래픽을 관리하는 일반적인 지침은 Manage L7 traffic with cluster peering을 참조하세요.
리다이렉트 및 장애 조치를 위한 서비스 리졸버 (Service resolvers for redirects and failover)
클러스터 피어링을 사용해 관리 파티션(admin partitions)을 통해 데이터센터를 연결하면 동적 트래픽 관리를 사용해 서비스가 피어 클러스터에 호스팅된 서비스로 트래픽을 자동으로 전달하도록 서비스 메시를 구성할 수 있습니다.
그러나 service-splitter와 service-router CRD는 피어에 호스팅된 서비스 인스턴스를 직접 대상으로 지정하는 것을 기본적으로 지원하지 않습니다. 피어의 서비스로 트래픽을 분할하거나 라우팅하기 전에, 먼저 service-resolver CRD에서 장애 조치(failover)를 구성하여 피어에 호스팅된 서비스를 업스트림 서비스로 정의해야 합니다. 그런 다음 두 번째 서비스 리졸버에서 리다이렉트를 설정하여 이름으로 피어 서비스와 상호작용할 수 있습니다.
Consul에서 구성 항목을 포맷하고, 업데이트하고, 관리하는 방법에 대한 자세한 내용은 How to use configuration entries를 참조하세요.
피어 간 동적 트래픽 구성
클러스터 피어링 연결이 있는 배포에서 L7 트래픽 관리 동작을 구성하려면 다음 단계를 순서대로 완료하세요.
- 서비스 리졸버 구성에서 피어 클러스터를 장애 조치 대상으로 정의합니다. 다음 예시는
cluster-01의service-resolverCRD를 업데이트하여, 여러 연결 실패를 감지할 때 Consul이frontend서비스로 향하는 트래픽을 피어cluster-02의 백업 인스턴스로 리다이렉트하도록 합니다.
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: frontend
spec:
connectTimeout: 15s
failover:
'*':
targets:
- peer: 'cluster-02'
service: 'frontend'
namespace: 'default'
service-splitter또는service-routerCRD에서 원하는 동작을 정의합니다. 다음 예시는frontend와frontend-peer사이에 트래픽을 균등하게 분할합니다.
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceSplitter
metadata:
name: frontend
spec:
splits:
- weight: 50
## defaults to service with same name as configuration entry ("frontend")
- weight: 50
service: frontend-peer
- 로컬 클러스터에 트래픽을 분할하거나 라우팅할 때 사용한 피어 서비스의 이름을 해석하는 두 번째
service-resolver구성 항목을 만듭니다. 다음 예시는frontend-peer라는 이름을 사용해 피어cluster-02의frontend서비스를 대상으로 지정하는 리다이렉트를 정의합니다.
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceResolver
metadata:
name: frontend-peer
spec:
redirect:
peer: 'cluster-02'
service: 'frontend'