무작정 Istio 사용해 보기
프로젝트에서 고객사의 요구사항을 맞추기 위해 Istio를 사용해야 할 일이 생겼습니다.
기존에는 NGINX Ingress Controller를 사용해 왔는데, 이를 대체하기 위한 작업이 필요했습니다.
Istio를 실무에서 사용해 본 적은 처음이어서 시행착오가 많았습니다.
이 과정에서 겪었던 과정들과 문제들을 정리해 보려고 합니다.
아쉽게도, Service Mesh와 Sidecar 관련 내용은 거의 다루지 않습니다.
이 부분은 기회가 되면 2편으로...
Istio?
Istio는 컨테이너 환경에서 사용할 수 있는 Service Mesh 솔루션입니다.
Istio는 Sidecar 패턴을 사용해 권한과 인증을 관리할 수 있고, L7 로드 밸런싱을 제공하여 gRPC나 HTTP/2 트래픽의 분산도 효과적으로 처리할 수 있습니다.
하지만 위에서 말한 것처럼 여기서는 NGINX Ingress Controller를 대체하여 서비스를 외부에 노출시키는 것이 Istio의 도입 목적이었습니다. 이를 위해 Istio를 설치하고, 추가 로 Gateway와 VirtualService를 설정해 서비스를 노출시키는 과정을 진행했습니다.
Istio를 적용하며 겪은 문제들
정규식 Rewrite 문제
기존에 사용하던 NGINX Ingress Controller 설정에 경로를 정규식을 사용해 재작성하는 부분이 있었습니다. 이를 Istio에서 사용하려면 v1.19 이상의 버전을 사용해야 하는데, 최신 버전을 사용하기 위해서는 Helm chart를 통한 설치가 필요합니다.
Istio Helm chart는 총 3개가 있는데, 차례대로 설치가 필요합니다.
istio/base
: 기본 설정을 담당하는 Helm chart입니다.istio/istiod
: 컨트롤 플레인을 담당하는 Helm chart입니다.istio/gateway
: 게이트웨이를 담당하는 Helm chart입니다.
이후에는 알맞게 정규식 경로를 재작성해 주면 되는데, 자료를 찾아도 잘 나오지 않았고 해당 링크처럼 적용해 해결했습니다.