pile·
인프라 / DevOps·channel-talk채널톡·

Istio 3-3편: Ambient mode 안전하게 업그레이드하기

채널코퍼레이션 DevOps팀이 Istio Ambient mode의 버전 업그레이드 런북을 정리한 3-3편이다. Ambient mode는 sidecar가 없어 애플리케이션 Pod을 직접 재시작하지 않아도 되지만, 대신 node-local 컴포넌트인 istio-cni와 ztunnel을 더 신중하게 봐야 한다. istiod와 istio-cni는 in-place로, ztunnel은 node pool 단위 blue-green으로 옮기는 순서를 택했다.

핵심 포인트
  • ztunnel은 노드마다 하나씩 떠 그 노드의 Ambient workload 트래픽을 직접 처리하므로 교체 시 해당 노드의 long-lived connection이 reset될 수 있다.
  • ztunnel의 graceful shutdown 기본값은 30초 수준이고 그 안에 끝나지 않은 connection은 종료 순간 끊긴다. 클라이언트에 retry가 없으면 요청 실패로 이어진다.
  • Istio 커뮤니티도 in-place hitless upgrade나 한 노드에서 여러 ztunnel revision을 활성화하는 것은 범위 밖으로 두고 node drain 기반 절차를 문서화하는 방향으로 논의 중이다.
  • istiod 업그레이드는 control plane만 바꾸는 작업이 아니다. Gateway controller가 관리하는 Envoy 워크로드가 istiod revision과 맞물려 있어 gateway도 함께 rollout된다.
  • green ztunnel을 띄울 때는 DaemonSet만 추가하는 것이 아니라 istiod가 신뢰할 ztunnel service account 목록에 새 이름까지 넣어야 한다.
상세 정리
  • 대상 컴포넌트 셋: istiod는 config 전파와 Gateway controller 역할, istio-cni는 Pod 감지와 iptables 설정 및 ztunnel proxy port 구성, ztunnel은 노드 단위 data plane이다.
  • Step 1 istiod: graceful shutdown이 있어 rollout이 곧바로 서비스 중단으로 이어지지는 않아야 하지만, gateway와 waypoint가 의도한 revision을 보고 있는지와 control plane 에러 로그가 늘지 않는지를 업그레이드 중에 확인한다.
  • istio-cni의 역할: 노드 안의 Pod를 감지하고 Pod network namespace 안에 redirection rule을 설정해 트래픽이 ztunnel을 거치게 만든다.
  • Step 2가 in-place로 가능한 이유: 이미 실행 중인 Pod은 network namespace가 생성될 때 redirection rule과 ztunnel 경로가 준비돼 있고, istio-cni Pod이 재시작돼도 기존 Pod의 namespace가 다시 만들어지지는 않으므로 data plane 교체가 아니다.
  • 주의할 타이밍: istio-cni가 완전히 준비되지 않은 아주 짧은 순간에 새 Pod이 생성되면 sandbox 생성 단계에서 CNI 설정을 완료하지 못할 수 있다. 다만 Pod이 잘못된 네트워크 상태로 Running 되는 것이 아니라 sandbox 생성 자체가 실패하고 Kubernetes가 재시도한다.
  • 그래서 istio-cni rollout 중에는 이미 running인 Pod과 새로 생성되는 Pod을 나눠 봐야 한다. 확인 대상은 DaemonSet rollout이 정상 완료되는지, 새로 생성된 Pod 중 redirection이 누락되거나 pending으로 남는 것이 없는지다.
  • 호환성 규칙: v1.x istio-cni는 v1.x 및 v1.x+1 control plane과 호환되며 ztunnel도 마찬가지라, 일반적인 순서는 control plane을 먼저 올리고 그다음 CNI를 올리는 것이다.
  • 3-2편에서 다룬 race condition은 여전히 관측될 수 있는데, 이때의 에러는 영구 장애라기보다 istio-cni가 준비될 때까지 Pod 생성이 재시도되는 현상으로 봤다.
  • Step 3의 문제 인식: ztunnel을 일반 DaemonSet처럼 rolling update하면 같은 노드에서 old와 new가 교체되는 순간이 생기고, graceful shutdown 시간을 길게 잡는 것도 권장되지 않는다. 그래서 ztunnel upgrade는 무조건 무중단이라고 보기 어렵다.
  • 커뮤니티 논의 배경: 여러 release를 동시에 설치하기 어렵고 여러 DaemonSet을 만들 수 있어 보여도 istiod 설정값과 연결돼 있어 istiod의 revision canary처럼 다루기 어렵다는 문제가 공유돼 왔다.
  • blue-green 구성: 기존 ztunnel과 새 ztunnel을 서로 다른 node label에 매핑하고 버전별로 nodeSelector를 다르게 준다. 그러면 기존 노드에서는 기존 ztunnel이 계속 돌고 새 노드에서는 새 ztunnel만 뜬다.
  • 신뢰 관계 설정: istiod Helm chart는 기본적으로 하나의 ztunnel 이름을 전제하므로, 두 개를 동시에 운영하려면 istiod가 신뢰할 ztunnel service account 목록에 두 이름을 모두 추가해야 한다. 빠지면 새 이름으로 뜬 ztunnel이 istiod와 신뢰 관계를 맺지 못할 수 있다.
  • node pool 준비: Karpenter를 쓴다면 NodePool template에 새 istio version label을 붙여, 기존 노드는 blue ztunnel을 신규 노드는 green ztunnel을 쓰게 만든다.
  • 이전 순서: green이 준비되면 기존 blue node를 점진적으로 비우되 stateless workload부터 옮기는 것이 안전하다. Stateful workload나 long-running job은 PDB, local storage, connection 특성 때문에 오래 남아 blue ztunnel 제거 시점이 생각보다 늦어질 수 있다.
  • 마무리 조건: blue ztunnel이 올라간 노드가 더 이상 없으면 그 DaemonSet을 제거하고, 모든 workload가 green node pool로 이동했으면 기존 NodeGroup을 정리한다.
  • 결론: ztunnel이 노드 단위 data plane이므로 업그레이드의 안전한 단위도 결국 node이며, 기존 노드에 old를 유지하고 신규 노드에 new를 띄운 뒤 workload를 천천히 옮기는 방식이 가장 직관적이고 안전했다고 정리한다.
왜 읽나Istio Ambient mode를 운영하며 버전을 올려야 하는 인프라 엔지니어에게 컴포넌트별 위험도 구분과 ztunnel blue-green 이전의 구체적 설정 항목을 준다.
channel-talk
채널톡 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    엔터프라이즈 보안 요구사항을 충족하는 프라이빗 Amazon Bedrock AgentCore 구축하기

    Amazon Bedrock AgentCore의 VPC egress 기능(2026년 4월 추가)을 활용해 온프레미스 LLM·사내 IdP·사내 MCP 서버에 인터넷 노출 없이 연결하는 방법을 다룬다. 규제 산업 엔터프라이즈가 기존 사내 자산을 그대로 유지하면서 Bedrock AgentCore를 안전하게 구축하기 위한 구성 가이드다.

    요약 이어보기
    #mcp#amazon-bedrock#vpc+2
  2. 인프라 / DevOps·gitlab-engGitLab Blog·

    OpenTofu와 Argo CD로 구성하는 GitLab 기반 AWS 제어 플레인

    GitLab을 단일 제어 플레인으로 삼아 OpenTofu로 AWS 인프라를 프로비저닝하고, Argo CD로 GitOps 기반 애플리케이션 배포까지 자동화하는 엔드투엔드 튜토리얼이다. VPC·EKS 클러스터 구성부터 Helm 기반 툴 설치, 샘플 앱 배포까지 모든 과정이 GitLab CI/CD 파이프라인으로 연결된다.

    요약 이어보기
    #kubernetes#aws-eks#gitops+2
  3. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    Amazon Bedrock 기반 사내 LLM, 키 발급부터 비용 차단까지: F&F의 LiteLLM 게이트웨이 운영 사례

    패션 기업 F&F가 Amazon Bedrock과 LiteLLM 프록시를 결합해 구축한 사내 LLM 플랫폼 운영 사례다. API 키 셀프서비스 발급, 모델별 접근 승인 워크플로, 사용자·프로젝트별 예산 자동 차단까지 전 과정을 직접 구현한 아키텍처 결정과 운영 교훈을 공유한다.

    요약 이어보기
    #kubernetes#amazon-bedrock#litellm+2