Istio

· Istio
istio ingress gateway 서비스 메시로 요청을 보내고 싶은 사용자는 요청을 istio ingress gateway의 엔드포인트로 보낸다. 즉, 메시 클러스터의 ingress gateway는 요청을 가장 처음으로 받는 리소스이다. ingress gateway이 무엇인지 알아보기 위해 먼저 쿠버네티스의 ingress와 ingress controller를 간단히 살펴보자. kubernetes에서 ingress의 동작 ingress는 특정 path 나 host에 따라 요청을 특정 서비스로 보내는 규칙들을 정의하는 리소스이다. 여기에 정해진 규칙들을 기반으로 실제 라우팅을 하는 것은 ingress controller pod이다. nginx, kong과 같은 프로그램이 자주 사용된다. ingress ..
· Istio
개요 아래 그림은 istio 공식 페이지에서 제공하고 있는 bookinfo 데모 프로젝트 중 reviews.default.svc.cluster.local로 요청을 보낼 때 내부 사이드카 프록시가 트래픽을 인터셉트하고 라우팅하는 흐름, ratings로 향하는 아웃바운드 트래픽의 흐름을 보여준다. 이 글에서는 envoy 프록시가 사이드카로 포함되어 있는 pod에 대해 인바운드 트래픽과 아웃바운드 트래픽이 어떻게 인터셉트 되고 처리 되는지 알아본다. Iptable 분석 # minikube login for root $ minikube ssh docker@minikube:~$ sudo -i # productpage pod의 프로세스 확인 root@minikube:~# docker top `docker ps|gr..
· Istio
개요 Service mesh가 클러스터 내부 서비스간 트래픽 관리 (”east-west” traffic)를 담당한다면 API Gateway는 client와 backend간 트래픽 관리 (”north-south” traffic)를 담당한다. istio는 0.8 버전 이전 버전에서 쿠버네티스의 ingress를 트래픽 포털로 사용했으나, 0.8 버전부터 gateway 리소스를 베타로 지원한다. (둘 다 ingress controller로 envoy 프록시 사용) gateway 리소스가 추가되면서 mesh 서비스에서 어떤 api gateway를 사용해야 할 지, api gateway (e.g., zuul, kong)를 istio ingress gateway가 대체할 수 있을지에 대한 궁금증이 생기기 시작했다. ..
· Istio
Istio의 트래픽 라우팅 규칙을 사용하면 서비스 간 트래픽 흐름과 API 호출을 쉽게 제어할 수 있다. Traffic Management를 통해 제공하는 기능은 다음과 같다. Circuit breaker Timeout & Retry A/B 테스트 Canary 테스트 백분율 기반 트래픽 분할 Istio의 트래픽 관리는 사용자가 서비스를 배포 하면서 함께 배포되는 Envoy 프록시에 의해 가능해진다. 모든 트래픽은 envoy 프록시를 거쳐 들어오고 나가게 되어 별도로 서비스의 변경 없이 트래픽 관리를 쉽게 할 수 있다. 더 많은 내용은 다음 페이지에서 참고 가능 architecture overview 개요 Istio는 트래픽 관리를 위해 각 서비스가 어떤 endpoint를 가지고 있는지 알아야 한다. 이 ..
· Istio
상황 1. 트래픽의 일정 비율을 새로운 버전으로 라우팅 같은 서비스에 대해 2개의 버전 (v1, v2)를 배포해서 v2에 10%의 유저 트래픽을 보내 canary 테스트를 하는 상황이라 가정해보자. apiVersion: v1 kind: Service metadata: name: helloworld labels: app: helloworld spec: selector: app: helloworld ... v1과 v2는 라벨로 버전을 구분짓는다. apiVersion: apps/v1 kind: Deployment metadata: name: helloworld-v1 spec: replicas: 1 template: metadata: labels: app: helloworld version: v1 spec: c..
· Istio
Overview Local 환경에서 개발 및 테스트를 진행할 때 많이 사용하는 Minikube에서 istio를 addons로 제공한다. minikube 공식 문서를 살펴보면 minikube addons enable istio-provisioner, minikube addons enable istio 명령어로 활성화 시키라는 설명밖에 없어서 addon을 파악하고 사용하기에는 가이드 라인이 부족하다. 이 문서에서는 istio control plane을 minikube의 addon으로 설치하는 방법에 대해 알아본다. 설치 방법 요약 minikube addons enable istio-provisioner --images="IstioOperator=istio/operator:1.18.1" # reference ..
· Istio
Overview MSA 시장이 커지면서 서비스들은 서로 통신해야 했는데 여기에는 HTTP, gRPC, MongoDB 등 L7 프로토콜이 핵심적으로 사용됐다. L3, L4 기반의 기존 프록시들은 위와 같은 요구사항을 처리하기 어려웠고, 그에 따라 L7 기능을 포함하는 프록시가 점차 필요하게 됐다. 이런 상황에서 만들어진 Envoy 프록시의 기본 개념에 대해 알아본다. Envoy란? 네트워크는 애플리케이션에 투명해야 하며 장애가 발생하면 어디에서 문제가 발생했는지 쉽게 파악할 수 있어야 한다. Envoy는 Lift사에서 위와 같은 목적을 갖고 만들어진 클라우드 네이티브 애플리케이션용 서비스 프록시 오픈 소스이다. CNCF에서 Kubernetes, Prometheus 다음 세번째 Graduated Projec..
dongb
'Istio' 카테고리의 글 목록