Reroute client traffic to the capture proxy
출처: 문서
본문
캡처 프록시로 클라이언트 트래픽 재라우팅하기
다음 내용은 Capture와 Replay를 사용하는 무중단 마이그레이션에만 적용돼요. {: .note }
마이그레이션 윈도우 동안 발생하는 쓰기를 보존하려면, 스냅샷 백필보다 Capture가 먼저 시작되어야 해요.
워크플로우가 생성하는 리소스
워크플로우에 traffic.proxies 섹션이 포함되어 있으면, Migration Assistant가 다음을 생성해요:
- 캡처 프록시 파드.
- 해당 파드 앞에 위치하는 Kubernetes Service 리소스.
- 캡처한 트래픽을 나중에 리플레이할 수 있도록 하는 Apache Kafka 설정.
클라이언트 트래픽은 프록시 Kubernetes Service로 전송돼요. 프록시는 요청을 소스 클러스터로 전달하고, 나중에 리플레이할 수 있도록 기록해요.
Kubernetes와 EKS 비교
마이그레이션 엔진은 Kubernetes와 Amazon Elastic Kubernetes Service(EKS) 플랫폼 모두에서 동일해요. 실질적인 차이는 Kubernetes Service가 여러분의 환경에 노출되고 통합되는 방식이에요:
- 일반 Kubernetes에서는 클라이언트를 프록시 Kubernetes Service로 라우팅하는 네트워킹 패턴을 직접 제공해야 해요.
- Amazon EKS에서는 Kubernetes Service가 AWS 로드 밸런서 인프라를 기반으로 동작할 수 있고, 부트스트랩 경로가 플랫폼 구성을 더 많이 자동화해 줘요.
워크플로우에서 프록시 구성하기
항상 최신 샘플에서 시작하세요:
workflow configure sample --load
workflow configure edit
{% include copy.html %}
프록시 구성에서 중요한 필드는 다음과 같아요:
listenPortpodReplicas- EKS에서 외부 노출이 필요할 때 사용하는
internetFacing tlssetHeader
TLS 동작
프록시는 기본적으로 보안이 적용돼요. TLS를 명시적으로 구성하지 않으면, 워크플로우가 프록시에 자체 서명된 인증서를 프로비저닝해요.
일반 텍스트 HTTP를 의도적으로 사용하려면, 프록시 TLS 모드를 plaintext로 설정하세요.
호스트 및 헤더 오버라이드
소스가 호스트 기반 라우팅을 사용한다면, 프록시 구성에 정적 헤더를 추가하세요.
setHeader 필드에 Header-Name: value 형식의 항목을 사용하세요. 예를 들면 다음과 같아요:
{
"setHeader": ["Host: source.example.com"]
}
{% include copy.html %}
프록시 엔드포인트 찾기
워크플로우를 제출한 후, ma 네임스페이스의 Service를 확인하고 프록시를 위해 생성된 것을 찾아보세요:
kubectl get svc -n ma
{% include copy.html %}
그런 다음 애플리케이션, DNS, 또는 로드 밸런서를 업데이트해서, 소스로 직접 보내던 트래픽이 해당 프록시 엔드포인트로 향하도록 하세요.
진행하기 전에 캡처 확인하기
메타데이터 마이그레이션과 백필로 넘어가기 전에 다음을 확인하세요:
- 프록시 파드가 실행 중인지.
- Kubernetes Service에 접근 가능한지.
- 애플리케이션 트래픽이 프록시를 통해 흐르는지.
- 워크플로우에서 트래픽 구성 요소가 정상(healthy)으로 표시되는지.
유용한 명령어:
workflow status
workflow manage
{% include copy.html %}
다음 단계
캡처가 활성화되면, 다음 단계를 수행하는 동안에도 트래픽이 프록시를 통해 흐르도록 유지하세요:
- 메타데이터 마이그레이션
- 과거 문서 백필
- 캡처한 트래픽을 리플레이해서 타깃을 따라잡기
{% include migration-phase-navigation.html %}