반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

Devsecops로 발전하는 엔지니어

Istio Service Mesh 완벽 가이드: Gateway 404 에러 해결 여정 본문

Devops

Istio Service Mesh 완벽 가이드: Gateway 404 에러 해결 여정

cloud/devops/opensource 관심 많은 곰 2025. 10. 16. 15:09
반응형

Service Mesh란?

-> 애플리케이션의 서비스간 모든 통신을 처리하는 소프트웨어 계층이며, 해당 계층은 container화된 MSA로 구성되어있다. 트래픽 라우팅,보안, 관측성 및 복구 기능을 처리하는 동시에 개별 서비스에서 복잡성을 추상화 가능하다. 
(application runtime 환경에 새로운 기능을 도입하지 않는다.)
핵심 개념중에 mTLS 의 목적은 서비스 간 암호화된 통신이며, 작동 원리는 각 서비스가 클라이언트이자 서버 인증서를 모두 보유하여 인증을 하는것이다.

 

작동 원리

DataPlane + ControlPlane 사용하여 서비스간의 커뮤니케이션 관리 한다.
ex> 아키텍쳐 내부에서 A(container) -> B(container)로 가는 전달방식 지정해야하는데, 서비스 메시의 차이점은 개별서비스로부터 서비스간 커뮤니케이션을 통제하는 logic을 통해 infra계층에 추상화를 한다.

 

  • Contorl Plane : 데이터플레인 전반에서 구성과 정책 배포 관리, 트래픽 라우팅을 배포, 서비스간의 보안인증서 관리, 정책적용을 위한 구성요소 구성 ,텔레메트릭 수집등을 진행한다.
  • Data Plane : Enovy Proxy(Sidecar).
  •  Gateway : 외부 트랙픽에 대한 정의를 한다.

트러블 슈팅 과정 

  1. 문제 상황
    curl http://gateway-url/productpage -> # HTTP/1.1 404 Not Found 에러 발생 
    문제 발생 원인 : Gateway Selector 불일치 
    -> # Gateway가 찾는 레이블
    kubectl get gateway bookinfo-gateway -n bookinfo -o jsonpath='{.spec.selector}'
    # 결과: {"istio":"ingressgateway"}

    # 실제 Pod 레이블
    kubectl get pods -n istio-ingress --show-labels
    # 결과: app=istio-ingress, istio=ingress

    해결 방법
    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: bookinfo-gateway
    spec:
      selector:
        app: istio-ingress  -> selecotr yaml 파일 설정 변경
  2. 리스너 포트 문제
    curl -s localhost:15000/listeners | grep "0.0.0.0" -> # 0.0.0.0_80 있음, 0.0.0.0_8080 없음

    해결방법 : Gateway 포트를 실제 리스닝 포트(80) 으로 변경
  3.  mTls인증서 문제
    upstream connect error: CERTIFICATE_VERIFY_FAILED 
    해당 내용 확인 결과 curl -s localhost:15000/config_dump | grep -A 10 "productpage" ->  결과: raw_buffer (평문 HTTP)

    해결방법 :  mTLS설정 활성화
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: productpage
    spec:
      host: productpage.bookinfo.svc.cluster.local
      trafficPolicy:
        tls:
          mode: ISTIO_MUTUAL  

Gateway와 ingress의 차이

계층 L7 (HTTP/HTTPS) L4~L7
기능 기본 라우팅 고급 트래픽 제어
보안 TLS Termination mTLS, 정책 기반 보안

 

 

결론 

Istio Service Mesh는 강력하지만 그만큼 복잡합니다.
Gateway 404 에러의 주요 원인 3가지는 다음과 같습니다:

  1. Selector 불일치
  2. 포트 설정 오류
  3. mTLS 설정 누락

이 세 가지를 체계적으로 점검하면 대부분의 404 문제는 해결됩니다.
Service Mesh의 본질은 “코드 수정 없이 네트워크 기능을 추가”하는 것이며,
이를 통해 복잡한 마이크로서비스 환경을 안정적으로 관리할 수 있습니다.

반응형