시작하기 전에
시작하기 전에 (Before you begin)
사이드카에서 앰비언트 모드로 마이그레이션하기 전에, 환경이 요구사항을 충족하는지 확인하고 현재 구성을 백업하세요.
출처: Istio 문서
본문
배경: 정책 적용이 어떻게 바뀌는지 (Background: how policy enforcement changes)
사이드카와 앰비언트의 정책 적용 사이의 핵심 차이점을 이해하면 마이그레이션 단계를 이해하고 어디서 변경이 필요한지 예상하는 데 도움이 돼요.
사이드카 모드에서:
- 정책은
selector를 사용해 레이블로 파드를 대상으로 삼아요. - 목적지 사이드카 프록시가 L4와 L7 정책을 모두 적용해요.
- 단일
AuthorizationPolicy가 소스 프린시펄, HTTP 메서드, 경로, 헤더에 매칭하고 목적지 파드에서 적용될 수 있어요.
앰비언트 모드에서:
- L4 적용은 모든 노드에서 실행되는 ztunnel이 처리해요.
- L7 적용은 네임스페이스 또는 서비스당 배포된 웨이포인트 프록시가 필요해요.
- 웨이포인트가 적용하는 정책은 파드
selector가 아니라Service나Gateway를 가리키는targetRefs를 사용해야 해요. selector 기반 L7 정책은 그대로 재사용할 수 없어요. VirtualService는 앰비언트 모드에서 Alpha예요. 안정적인 L7 트래픽 관리를 위해서는HTTPRoute로의 마이그레이션이 필요해요.
요구사항 (Requirements)
- 지원되는 Istio 릴리스
- 쿠버네티스 지원 버전 (1.32, 1.33, 1.34, 1.35, 1.36)
- Gateway API CRD 설치 (웨이포인트 프록시에 필요)
아직 Gateway API CRD가 설치되어 있지 않다면 지금 설치하세요:
쿠버네티스 Gateway API CRD는 대부분의 쿠버네티스 클러스터에 기본으로 설치되어 있지 않다는 점을 명심하세요. Gateway API를 사용하기 전에 설치되어 있는지 확인하세요:
$ kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.6.0/experimental-install.yaml
현재 설치 확인하기 (Verify your current installation)
다음 명령을 실행해 기존 사이드카 설치의 상태를 확인하세요:
$ istioctl version
$ kubectl get pods -n istio-system
$ kubectl get namespaces -l istio-injection=enabled
리비전 기반 설치(istio-injection 대신 istio.io/rev 레이블을 사용하는 경우)가 있는지 확인하세요:
$ kubectl get namespaces -l 'istio.io/rev'
기존 리소스 감사하기 (Audit existing resources)
클러스터 전반에서 사용 중인 Istio 리소스를 나열하세요:
$ kubectl get virtualservice,destinationrule,authorizationpolicy,requestauthentication,peerauthentication,envoyfilter,wasmplugin -A
어떤 AuthorizationPolicy 리소스에 L7 규칙이 있는지 확인하세요. 이것들은 앰비언트 모드에서 동작하려면 웨이포인트 프록시가 필요해요:
$ kubectl get authorizationpolicy -A --no-headers | while read ns name rest; do
if kubectl get authorizationpolicy "$name" -n "$ns" -o yaml | grep -qE "(methods:|paths:|headers:|action: CUSTOM|action: AUDIT)"; then
echo "$ns/$name"
fi
done
mode: DISABLE인 PeerAuthentication 리소스가 있는지 확인하세요. 이것들은 앰비언트 모드와 호환되지 않아요:
$ kubectl get peerauthentication -A -o yaml | grep -A2 "mtls:"
mode: DISABLE인 PeerAuthentication은 마이그레이션 전에 제거하거나 변경해야 해요. 앰비언트 모드는 메시 워크로드 간에 항상 mTLS를 적용하기 때문이에요.
mode: STRICT 또는 mode: PERMISSIVE인 PeerAuthentication 리소스는 블로커가 아니지만, 마이그레이션 후에는 중복이 돼요. 앰비언트 모드는 이들 정책과 관계없이 ztunnel을 통해 mTLS를 적용하기 때문이에요. 마이그레이션이 완료된 후에는 안전하게 제거할 수 있어요.
구성 백업하기 (Back up your configuration)
어떤 변경도 하기 전에 현재 Istio 구성을 내보내세요:
$ kubectl get virtualservice,destinationrule,authorizationpolicy,requestauthentication,peerauthentication,gateway,httproute,telemetry -A -o yaml > istio-config-backup.yaml
$ kubectl get namespaces -o yaml > namespace-backup.yaml
이 백업을 클러스터 밖의 안전한 곳에 보관하세요.
트래픽 모니터링 설정하기 (Set up traffic monitoring, 선택사항)
변경을 하기 전에 Kiali 또는 다른 가시성 도구를 사용해 현재 트래픽 패턴의 기준선(baseline)을 캡처하세요. 설정 지침은 Kiali를 참조하세요.
다음 단계 (Next steps)
앰비언트 컴포넌트 설치로 진행하세요.