반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- zerotrust
- docker-compose
- KISA
- devops
- fargate
- devop
- 보안
- eks
- secretmanager
- docekr
- kubernetes
- cloud trail
- DevSecOps
- docker
- CICD
- 클라우드 보안
- client-vpn
- git
- VPC
- CI/CD
- saa-c03
- IAC
- cloud
- Container
- ECS
- Network
- security
- cloiud
- AWS
- VPN
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 : 외부 트랙픽에 대한 정의를 한다.
트러블 슈팅 과정
- 문제 상황
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 파일 설정 변경 - 리스너 포트 문제
curl -s localhost:15000/listeners | grep "0.0.0.0" -> # 0.0.0.0_80 있음, 0.0.0.0_8080 없음
해결방법 : Gateway 포트를 실제 리스닝 포트(80) 으로 변경 - 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가지는 다음과 같습니다:
- Selector 불일치
- 포트 설정 오류
- mTLS 설정 누락
이 세 가지를 체계적으로 점검하면 대부분의 404 문제는 해결됩니다.
Service Mesh의 본질은 “코드 수정 없이 네트워크 기능을 추가”하는 것이며,
이를 통해 복잡한 마이크로서비스 환경을 안정적으로 관리할 수 있습니다.
반응형
'Devops' 카테고리의 다른 글
| ECS Multi-container CI/CD 파이프라인 구축 삽질기: 실수에서 배운 교훈 (1) | 2025.09.04 |
|---|---|
| Gitlab CI/CD를 이용한 ECS배포 -2 (0) | 2025.09.03 |
| Gitlab CI/CD를 이용한 ECS배포 -1 (1) (0) | 2025.09.03 |
| Blue/Green 배포 (6) | 2025.08.28 |
| 🌐 AWS EC2 + GitHub Actions + Docker 기반 CI/CD 구축기 (1) | 2025.06.18 |