본문 바로가기
클라우드/Istio

ICA 시험 완벽 대비! 상황별 Istio 리소스 매핑 치트시트 (VS vs DR 종결)

by gasbugs 2025. 11. 29.

안녕하세요! 👋

Istio를 공부하거나 ICA (Istio Certified Associate) 자격증을 준비하다 보면 가장 막막한 순간이 언제인가요? 바로 "이 상황에서 도대체 어떤 YAML 리소스를 써야 하지?" 라는 고민이 들 때입니다. 🤯

VirtualService, DestinationRule, Gateway, ServiceEntry... 이름도 비슷하고 역할도 헷갈리시죠? 그래서 오늘은 시험장 들어가기 전에 머릿속에 꼭 넣어야 할 상황별 Istio 리소스 매핑 치트시트를 준비했습니다.

이 글 하나만 정독하시면 복잡한 시나리오 문제도 두렵지 않을 거예요! 🏃‍♂️💨


🚦 1. 트래픽 관리 (Traffic Management)

Q. "요청을 어디로, 어떻게 보낼 것인가?"

트래픽을 제어하는 문제는 ICA 시험의 단골 손님입니다. 배포 전략이나 네트워크 회복 탄력성(Resilience)과 관련된 요구사항이 나오면 아래 리소스를 떠올리세요.

🔀 VirtualService (네비게이션)

트래픽이 어디로 갈지 경로를 정해주는 핵심 리소스입니다.

  • 카나리 배포 (Canary): "새 버전(v2)에 트래픽 10%만 보내라" 👉 route > weight 필드 사용
  • 조건부 라우팅: "아이폰 유저(헤더)는 모바일 페이지로 보내라" 👉 match > headers 필드 사용
  • 네트워크 회복: "응답이 없으면 3번 재시도해라(Retry)" 혹은 "2초 안에 답 없으면 끊어라(Timeout)" 👉 retries, timeout 필드 사용
  • 트래픽 복제: "실 운영 환경 영향 없이 테스트하고 싶다" 👉 mirror 필드 사용

🛑 DestinationRule (도착 후 규칙)

트래픽이 목적지(Pod 그룹)에 도착한 뒤 어떻게 처리될지 정합니다.

  • 버전 구분 (Subsets): "v1 파드와 v2 파드를 논리적으로 나눠라" 👉 subsets (라벨로 구분)
  • 서킷 브레이커 (Circuit Breaker): "동시 접속이 너무 많거나 오류가 잦은 파드는 잠시 차단해라" 👉 trafficPolicy > outlierDetection, connectionPool
  • 로드밸런싱: "라운드 로빈 말고 랜덤 방식으로 분배해라" 👉 trafficPolicy > loadBalancer

 


🛡️ 2. 보안 (Security)

Q. "누가 들어올 수 있고, 어떻게 통신하는가?"

보안 문제는 "누군 허용하고, 누군 차단해라" 또는 "암호화해라"라는 식으로 출제됩니다.

👮 AuthorizationPolicy (접근 제어)

가장 많이 쓰이는 보안 리소스입니다. 누가(Who) 무엇을(What) 할 수 있는지 정의합니다.

  • 화이트리스트: "오직 'Product' 서비스만 접근하게 해라" 👉 action: ALLOW, rules > from
  • 메서드 제한: "GET 요청만 허용하고 POST는 막아라" 👉 rules > to > operation > methods: ["GET"]
  • 전체 차단: "이 네임스페이스의 모든 문을 닫아라" 👉 spec: {} (빈 규칙 = Deny All)

🔐 PeerAuthentication (mTLS)

서비스 간 통신 암호화 수준을 정합니다.

  • 강제 암호화: "모든 통신은 무조건 mTLS로만 해라" 👉 mtls > mode: STRICT
  • 유연한 모드: "일반 텍스트와 mTLS 둘 다 허용해라(마이그레이션 중)" 👉 mode: PERMISSIVE

🆔 RequestAuthentication (JWT)

  • 유저 인증: "JWT 토큰을 검증해라" 👉 jwtRules (Issuer, JWKS URI 설정)

🌐 3. 외부 연결 & 게이트웨이 (Edge & External)

Q. "클러스터 밖과 안은 어떻게 연결되는가?"

Istio 메시(Mesh)의 경계선(Edge)을 다루는 영역입니다.

🚪 Gateway (대문)

  • 문 열기: "외부에서 들어오는 80 포트 트래픽을 받아라" 👉 servers > port, hosts
  • 주의: Gateway만 만들면 문만 연 것입니다. 어디로 갈지는 VirtualService가 필요합니다!

🗺️ ServiceEntry (외부 주소록)

  • 외부 서비스 등록: "메시 안에서 구글(Google)이나 야후(Yahoo) API를 호출해야 한다" 👉 hosts, resolution: DNS
  • Istio는 기본적으로 모르는 외부 주소를 차단하거나 관리하지 않으므로 등록이 필요합니다.

📤 Egress TLS (나갈 때 암호화)

  • TLS Origination: "내부 앱은 HTTP로 보내지만, 밖으로 나갈 땐 HTTPS로 변환해서 보내라" 👉 DestinationRule의 trafficPolicy > tls > mode: SIMPLE

💡 4. 가장 헷갈리는 포인트: VS vs DR

시험에서 가장 많이 혼동하는 두 리소스, 한 방에 정리해 드립니다!

리소스 역할 비유 주요 기능 키워드
VirtualService (VS) 🚗 네비게이션 길 찾기, % 분배, 재시도, 타임아웃
DestinationRule (DR) 🅿️ 주차장 규칙 버전 그룹짓기(Subset), 서킷 브레이커, mTLS 설정
  • Tip: "경로"나 "흐름"을 제어하면 VS, "파드 그룹 설정"이나 "장애 차단"이면 DR입니다.

📝 합격을 위한 시험장 꿀팁 (Exam Tips)

  1. 네임스페이스(Namespace) 확인 필수: 문제에서 요구하는 작업이 default인지 istio-system인지 두 번 확인하세요. 엉뚱한 곳에 만들면 0점입니다. 😱
  2. apply는 생명: YAML 파일만 예쁘게 만들고 저장하면 소용없습니다. 반드시 kubectl apply -f <파일>을 실행해서 리소스를 생성하세요.
  3. Gateway 연결: VirtualService를 만들 때 gateways 필드에 방금 만든 Gateway 이름을 적지 않아서 외부 접속이 안 되는 실수가 정말 많습니다. 꼭 연결 고리를 확인하세요! 🔗

 

정리

🚦 1. 트래픽 관리 (Traffic Management)

"요청을 어디로, 어떻게 보낼 것인가?"

상황 (Scenario) 필요한 리소스 핵심 설정 필드 (Key Fields)
A/B 테스트, 카나리 배포 (트래픽 % 분할) VirtualService route > weight (e.g., 90, 10)
URL 경로, 헤더에 따라 다른 곳으로 보내고 싶을 때 VirtualService match > uri, headers
재시도(Retry), 타임아웃(Timeout) 설정 VirtualService retries, timeout
특정 버전(v1, v2) 그룹 정의 DestinationRule subsets (labels로 파드 구분)
로드밸런싱 알고리즘 변경 (RoundRobin, Random 등) DestinationRule trafficPolicy > loadBalancer
서킷 브레이커 (연결 제한, 장애 차단) DestinationRule trafficPolicy > connectionPool, outlierDetection
트래픽 미러링 (실제 요청을 복제해서 테스트) VirtualService mirror

🛡️ 2. 보안 (Security)

"누가 들어올 수 있고, 어떻게 통신하는가?"

상황 (Scenario) 필요한 리소스 핵심 설정 필드 (Key Fields)
특정 서비스만 접근 허용 (Whitelist) AuthorizationPolicy action: ALLOW, rules > from, to
특정 경로/메서드 차단 (Deny) AuthorizationPolicy action: DENY, rules (우선순위 높음)
mTLS 모드 설정 (Strict, Permissive) PeerAuthentication mtls > mode: STRICT
JWT 토큰 인증 (End-user 인증) RequestAuthentication jwtRules > issuer, jwksUri
네임스페이스 전체를 닫고 싶을 때 AuthorizationPolicy spec: {} (빈 규칙 = 모두 차단)

🌐 3. 외부 연결 & 게이트웨이 (Edge & External)

"클러스터 밖과 안의 연결"

상황 (Scenario) 필요한 리소스 핵심 설정 필드 (Key Fields)
외부 트래픽 수신 (Ingress 포트 열기) Gateway servers > port, hosts
수신된 트래픽을 내부 서비스로 라우팅 VirtualService gateways에 Gateway 이름 명시
외부 서비스(Google, Yahoo 등) 등록 ServiceEntry hosts, ports, resolution: DNS
나가는 트래픽을 HTTPS로 변환 (TLS Origination) DestinationRule trafficPolicy > tls > mode: SIMPLE
특정 노드(Egress Gateway)를 통해서만 나가게 하기 Gateway (Egress용) + VirtualService gateways: [mesh, egress-gw]

 

 

 

 

이 치트시트가 여러분의 ICA 합격에 도움이 되길 바랍니다! Istio, 복잡해 보이지만 상황별로 도구만 잘 매칭하면 충분히 정복할 수 있습니다. 화이팅! 💪✨

 

궁금한 점이나 추가로 다뤘으면 하는 내용이 있다면 댓글로 남겨주세요!