사이드카에서 앰비언트로 마이그레이션하기
사이드카에서 앰비언트로 마이그레이션하기 (Migrate from Sidecar to Ambient)
이 가이드는 기존 Istio 배포를 사이드카 모드에서 앰비언트 모드로 마이그레이션하는 과정을 안내해요. 마이그레이션은 점진적이고 되돌릴 수 있도록 설계되었어요. 사이드카 워크로드와 앰비언트 워크로드는 과정 중에 같은 메시 안에서 공존할 수 있어서, 한 번에 한 네임스페이스씩 마이그레이션할 수 있어요.
출처: Istio 문서
본문
마이그레이션 전략 (Migration strategy)
마이그레이션은 단계별 접근 방식을 따르는 데요:
- 앰비언트 컴포넌트 설치하기: ztunnel을 추가하고 CNI를 앰비언트 모드를 지원하도록 업데이트하되, 기존의 모든 사이드카 워크로드는 그대로 둬요.
- 정책 마이그레이션하기:
VirtualService리소스를HTTPRoute로 변환하고, 필요한 곳에서AuthorizationPolicy리소스를 웨이포인트를 대상으로 업데이트하며,RequestAuthentication과WasmPlugin리소스를 웨이포인트에 연결해요. L4 정책만 사용한다면 이 단계는 건너뛰세요. L7 정책이 있다면, 마이그레이션 중에 잠시 적용 공백(enforcement gap)이 있다는 점을 명심하세요. 위 경고를 참조하세요. - 네임스페이스별로 앰비언트 모드 활성화하기: 네임스페이스에 레이블을 붙여 앰비언트 메시에 합류시키고, 웨이포인트를 활성화하며, 사이드카 주입을 제거하고 파드를 재시작해요.
각 단계는 독립적으로 되돌릴 수 있어요. 모든 네임스페이스를 한 번에 마이그레이션할 필요는 없어요.
리소스 마이그레이션 개요 (Resource migration overview)
다음 표는 사이드카 모드 리소스가 앰비언트에 대응하는 리소스로 어떻게 매핑되는지 요약해요:
| 사이드카 리소스 | 앰비언트 모드에서의 조치 |
|---|---|
VirtualService |
HTTPRoute로 마이그레이션 (앰비언트에서 VirtualService 지원은 Alpha) |
DestinationRule (트래픽 정책: 커넥션 풀, 아웃라이어 탐지, TLS) |
변경 없음; 웨이포인트가 트래픽 정책을 적용해요 |
DestinationRule (HTTPRoute와 함께 쓰이는 라우팅 서브셋) |
HTTPRoute의 backendRefs로 사용할 버전별 쿠버네티스 Service를 생성 |
L4 규칙이 있는 AuthorizationPolicy |
변경 없음; ztunnel이 L4 정책을 직접 적용해요 |
L7 규칙이 있는 AuthorizationPolicy |
targetRefs로 웨이포인트에 연결 |
RequestAuthentication |
targetRefs로 웨이포인트에 연결 |
EnvoyFilter |
웨이포인트에서 지원되지 않음 |
WasmPlugin |
targetRefs로 웨이포인트에 연결 |
Gateway (networking.istio.io/v1) |
변경 필요 없음; Istio Gateway 리소스는 앰비언트 모드에서 계속 동작해요. 인그레스 트래픽을 웨이포인트로 라우팅하려면 istio.io/ingress-use-waypoint를 추가하세요. |
웨이포인트 프록시가 필요한가요? (Do you need waypoint proxies?)
워크로드가 다음 중 하나를 사용한다면 웨이포인트 프록시가 필요해요:
- L7
AuthorizationPolicy규칙 (HTTP 메서드, 경로, 헤더 매칭). HTTPRoute를 통한 L7 트래픽 라우팅 (재시도, 결함 주입, 헤더 조작, 트래픽 분할). 현재 이를 위해VirtualService를 사용 중이라면HTTPRoute로 마이그레이션해야 해요. 앰비언트에서VirtualService지원은 Alpha예요.RequestAuthentication(JWT 검증).- L7 텔레메트리 강화.
확실하지 않다면, 정책 마이그레이션 페이지가 기존 리소스를 감사하는 데 도움이 돼요.
지원되지 않는 것 (What is not supported)
다음은 하드 블로커로, 이것들이 해결되기 전에는 마이그레이션이 불가능해요:
- 메시 안의 VM 워크로드. VM 기반 워크로드는 앰비언트 메시에 합류할 수 없어요.
- 인증서 제공자로서의 SPIRE. 앰비언트 모드는 SPIRE 통합을 지원하지 않아요.
mode: DISABLE인PeerAuthentication. 앰비언트는 메시 워크로드 간에 항상 mTLS를 적용해요.DISABLE모드 정책은 무시되며 마이그레이션할 수 없어요.- 프라이머리-리모트 멀티클러스터 구성. 여러 프라이머리 클러스터만 지원돼요. 하나 이상의 리모트 클러스터가 있는 배포는 올바르게 동작하지 않아요.
마이그레이션 중 또는 이후의 동작에 영향을 주는 알려진 제한 사항은 다음과 같아요:
- 웨이포인트를 대상으로 하는
EnvoyFilter리소스는 지원되지 않아요. 사이드카 프록시의 고급 Envoy 구성을 위해EnvoyFilter에 의존한다면, 그 구성은 웨이포인트로 이어질 수 없어요. 이 API는 향후 릴리스에서 지원될 수 있어요. - 사이드카 모드 워크로드의 트래픽은 웨이포인트 프록시를 우회해요. 점진적 마이그레이션 중에 사이드카 모드 워크로드가 웨이포인트가 있는 앰비언트 모드 워크로드를 호출하면, 트래픽은 웨이포인트를 완전히 우회해요. 소스 워크로드도 앰비언트 모드로 마이그레이션되기 전까지는 웨이포인트의 L7 정책이 그 트래픽에 적용되지 않아요.
- 인그레스 게이트웨이는 기본적으로 웨이포인트를 우회하지만, Gateway 리소스에
istio.io/ingress-use-waypoint레이블을 추가하면 트래픽을 웨이포인트를 통해 라우팅하도록 구성할 수 있어요. - 같은 워크로드에
VirtualService와HTTPRoute를 섞는 것은 지원되지 않으며 정의되지 않은 동작을 초래해요. 진행하기 전에 각 워크로드를 하나의 API로 완전히 마이그레이션하세요.
다음 단계 (Next steps)
시작하기 전에부터 시작해서 환경을 검증하고 구성을 백업하세요.