Istio 5

Istio - (5) Destination Rule 응용

Destination Rule 지금까지 실습 과정 중 Destination Rule은 Pod의 Label을 통해 서비스의 Subset을 분류하는데만 사용하였다. 하지만 Destination Rule을 설정하여 다음과 같이 더욱 정교한 트래픽 관리가 가능하다. Load balancing(round robin, random, least connection) Rate limiting(connection pool 크기 조절) Circuit breaker(outlier detection) Load balancing DestinationRule이 정의되지 않은 서비스는 K8s Service의 L4 Load Balance가 적용된다. Round Robin DestinationRule에 trafficPolicy 항목을..

Service Mesh 2021.04.06

Istio - (4) Traffic Management

Traffic Management Service Mesh 안에 생성된 Pod의 모든 트래픽은 Sidecar Proxy에 의해 Intercept 되는 것은 이미 배웠다. 이를 통해 Kiali Dashboard에서 트래픽이 어디에서 와서 어디로 가는지에 대한 Telemetry를 시각적으로 확인할 수도 있었다. 이번 시간엔 VirtualService와 DestinationRule을 통해 트래픽을 조건에 맞게 제어하고 관리함으로써 Kubernetes 경험을 확장할 수 있는 Traffic Management 기능에 대해 알아보자. Weighted Routing Canary Release는 새로운 버전을 배포하기 전, 일부 사용자에게만 적은 확률로 서비스를 제공하는 방식으로 리스크를 줄이는 기법 중 하나이다. K8..

Service Mesh 2021.04.05

Istio - (3) Gateway와 VirtualService

이번 시간은 본격적인 App 배포에 앞서 Istio의 Gateway와 VirtualService에 대해서 설명하고자 한다. Gateway Public Cloud 환경의 K8s에서 Web Application 배포 경험이 있다면, 외부에서 접근할 수 있도록 Ingress Controller를 사용해봤을 것이다. 여러 개의 서비스를 노출해야 하는 상황에서, 모든 Service를 Loadbalancer 타입으로 생성하기엔 비용과 흩어진 Entrypoint 등의 문제가 발생한다. 이런 문제를 해결하기 위해 Ingress Controller를 최전선에 두고 Ingress Rule을 추가하여 Hostname과 Path에 따라 지정된 서비스로 Routing할 수 있었다. 다만 K8s에서 기본적으로 제공하지 않고 Th..

Service Mesh 2021.03.27

Istio - (2) Istio 설치(EKS)

AWS EKS EKS는 AWS에서 제공하는 'K8s as a Service'로 사용자가 쉽게 K8s 클러스터를 생성할 수 있다. 구체적인 개념과 사용법은 필자가 작성해놓은 페이지들이 있으므로 참고하기 바란다. 따라서 EC2 SSH Key 생성 및 awscli, eksctl, kubectl 등의 설치 과정은 생략하도록 하겠다. Amazon EKS Tutorial - Part.1 Kubernetes on AWS AWS에서 Kubernetes 클러스터를 구축 및 운영하는 방법은 다양하다. EC2 인스턴스로부터 k8s를 직접 설정하거나 Kops를 통해 구축을 자동화하되 사용자가 직접 운영하는 방식, 그리고 EKS cwal.tistory.com EKS 클러스터 생성 아래 명령어를 실행 후 15~20분 정도 기다리..

Service Mesh 2021.03.27

Istio - (1) Introduction

Service Mesh Service Mesh는 Application을 구성하는 Microservice간의 통신을 제어하거나, 추적할 수 있는 별도의 Infrastructure Layer를 의미한다. L7에서 HTTP URL Path, Header 등을 기반으로 동작하며, 보통은 Proxy를 비즈니스 로직을 수행중인 Microservice 옆에 Sidecar로 붙여서 Network Traffic을 대신 전달(routing)하는 방식으로 구성한다. 그렇다면 왜 Service Mesh가 필요할까? 기존 Monolithic Application의 경우 로그 파일을 직접 확인하거나, tcpdump 등으로 패킷 내용을 추적하여 트러블슈팅이 가능했다. 또한 Process, Thread 간의 데이터 전달은 인스턴스 ..

Service Mesh 2021.03.27