앰비언트 컴포넌트 설치하기
앰비언트 컴포넌트 설치하기 (Install ambient components)
이 단계는 기존의 모든 사이드카 워크로드는 변경하지 않은 채, 앰비언트 데이터 플레인 컴포넌트(ztunnel과 업데이트된 CNI)를 포함하도록 Istio 설치를 업그레이드해요. 이 단계 내내 여러분의 사이드카는 트래픽을 정상적으로 계속 처리할 거예요.
출처: Istio 문서
본문
ambient 프로파일로 업그레이드하기 (Upgrade to the ambient profile)
istioctl 사용 (Using istioctl)
기존 Istio 설치를 ambient 프로파일을 사용하도록 업그레이드하세요. 이는 ztunnel DaemonSet을 추가하고 CNI 플러그인을 앰비언트 모드 지원으로 업데이트해요:
$ istioctl upgrade --set profile=ambient
Helm 사용 (Using Helm)
Helm으로 Istio를 설치했다면, 각 컴포넌트를 업그레이드해서 앰비언트 지원을 추가하세요:
$ helm upgrade istio-base istio/base -n istio-system
$ helm upgrade istiod istio/istiod -n istio-system --set profile=ambient
$ helm upgrade istio-cni istio/cni -n istio-system --set profile=ambient
$ helm install ztunnel istio/ztunnel -n istio-system # new component, not previously installed
앰비언트 컴포넌트 검증하기 (Verify the ambient components)
업그레이드가 완료된 후 ztunnel과 업데이트된 CNI가 실행 중인지 확인하세요:
$ kubectl get pods -n istio-system
기존 Istiod와 CNI 파드 외에도 매 노드에서 실행되는 ztunnel DaemonSet 파드를 볼 수 있어야 해요:
NAME READY STATUS RESTARTS AGE
istio-cni-node-... 1/1 Running 0 2m
istiod-... 1/1 Running 0 2m
ztunnel-... 1/1 Running 0 2m
ztunnel이 모든 노드에서 DaemonSet으로 실행 중인지 확인하세요:
$ kubectl get daemonset ztunnel -n istio-system
기존 사이드카에서 HBONE 지원 활성화하기 (Enable HBONE support in existing sidecars)
사이드카 프록시는 ambient 프로파일이 MeshConfig에서 설정하는 새 ISTIO_META_ENABLE_HBONE=true 구성을 적용받으려면 재시작이 필요해요. 이는 사이드카가 HBONE 프로토콜을 사용해 앰비언트 모드 워크로드와 통신할 수 있게 해줘요.
사이드카 주입이 활성화된 각 네임스페이스를 재시작하거나, 배포 전략에 따라 개별 워크로드를 재시작하세요. 예를 들어 네임스페이스를 재시작하려면:
$ kubectl rollout restart deployment -n <namespace>
$ kubectl rollout status deployment -n <namespace>
사이드카가 주입된 워크로드를 포함한 각 네임스페이스에 대해 반복하세요.
재시작된 파드에서 HBONE 지원이 활성화되었는지 확인하려면:
$ kubectl get pod <pod-name> -n <namespace> -o json | \
jq '.spec.initContainers[] | select(.name=="istio-proxy") | .env[] | select(.name=="ISTIO_META_ENABLE_HBONE")'
출력은 다음을 보여야 해요:
{
"name": "ISTIO_META_ENABLE_HBONE",
"value": "true"
}
마이그레이션 중 사이드카와 앰비언트 상호운용 (Sidecar and ambient interoperability during migration)
사이드카가 주입된 파드가 이미 앰비언트 모드로 전환된 워크로드와 통신할 때, 사이드카는 HBONE 프로토콜을 사용해 목적지 파드의 ztunnel로 트래픽을 직접 터널링해요.
이것의 실제 결과는, 마이그레이션 기간 동안 사이드카 모드 워크로드에서 오는 트래픽에 대해 웨이포인트의 L7 정책(HTTPRoute 규칙이나 targetRefs가 있는 AuthorizationPolicy 같은)이 적용되지 않는다는 거예요. 사이드카는 보내기 전에 자체 L7 로직을 적용하지만, 웨이포인트는 이 트래픽을 절대 라우팅하지 않아요. 이는 L7 정책이 두 번 적용되지 않는다는 의미예요. 사이드카가 자체 라우팅 결정을 처리하고, HBONE 터널이 웨이포인트에서 다시 처리하지 않고 트래픽을 목적지로 직접 전달하기 때문이에요.
웨이포인트 프록시 배포하기 (Deploy waypoint proxies, 선택사항)
L7 기능이 필요한 네임스페이스에는 지금 웨이포인트 프록시를 배포하세요. 웨이포인트는 구성되지만 아직 활성화되지는 않으며, 트래픽은 계속 사이드카를 통해 흐를 거예요.
istioctl을 사용해 네임스페이스 범위 웨이포인트를 배포하세요:
$ istioctl waypoint apply -n <namespace>
웨이포인트 파드가 실행 중인지 확인하세요:
$ kubectl get gateway waypoint -n <namespace>
$ kubectl get pods -n <namespace> -l gateway.istio.io/managed=istio.io-mesh-controller
웨이포인트 구성 옵션(서비스 수준, 워크로드 수준, 또는 교차 네임스페이스 웨이포인트)에 대한 자세한 내용은 웨이포인트 프록시 사용을 참조하세요.
다음 단계 (Next steps)
트래픽 정책과 인가 정책을 앰비언트 모드에 맞게 업데이트하려면 정책 마이그레이션으로 진행하세요.
VirtualService나 DestinationRule 리소스가 없고, AuthorizationPolicy 리소스가 L4 규칙만(HTTP 메서드/경로/헤더 매칭 없음) 사용한다면, 그 페이지는 건너뛰고 바로 앰비언트 모드 활성화로 가세요.