DevOps
Istio 정복하기 #8 - Timeouts and retries
Istio 정복하기 #8 - Timeouts and retries
2025.04.02타임 아웃과 리트라이에 대해서 알아보려고 한다. 타임 아웃은 서비스가 요청에 대해 응답하지 않고 기다리는 최대 시간을 의미한다.서비스 간의 통신에서 대기 시간이 길어져 사용자 경험이 저하되는 것을 방지하고, 시스템 자원을 적절히 관리하기 위해 필요하다.리트라이는 실패한 요청에 대해 자동으로 다시 시도하는 기능으로 일시적인 오류로 인해 요청이 실패하는 경우, 요청을 다시 시도함으로써 성공적인 응답을 받을 수 있는 가능성을 높여준다. 구현 자체는 간단하니 하나씩 살펴보자. Timeout 구현VirtualService에서 간단하게 설정해 주면 된다. apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata: name: test-virtual-..
Istio 정복하기 #7 - Locality-aware load balancing
Istio 정복하기 #7 - Locality-aware load balancing
2025.04.01Locality-aware Load Balancing은 요청을 처리할 때 지리상 가까운 인스턴스에 로드 밸런싱해서 응답 시간이 줄어드는 것을 기대할 수 있는 방법이다. Istio에서는 이 기능을 활용하여 다양한 지역의 트래픽을 효과적으로 관리할 수 있다. 물론 나는 Minikube이므로 정확한 환경을 셋티할 수 없지만 라벨링을 통해서 임시적으로 구성해보려고 한다. Locality-aware load balancing 구현구현 자체는 어렵지 않다. 먼저 Deployment에 라벨링을 수정해주자. apiVersion: apps/v1kind: Deploymentmetadata: labels: app: test name: testspec: replicas: 1 selector: matchLa..
Istio 정복하기 #6 - Client-side load balancing
Istio 정복하기 #6 - Client-side load balancing
2025.03.30Client-side load balancing는 클라이언트에게 endpoint들을 알려주고, 클라이언트가 LB 알고리즘을 선택하게 하도록 하는 방법이다. 이것으로 얻는 이점은 다음과 같다. 1. 중앙집중적인 load balancing을 피할 수 있음2. 불필요한 홉 없이 클라이언트가 직접 요청을 전달할 수 있음 (로드밸런서가 필요 없어짐.) 물론 단점으로는 헬스 체크, 알고리즘이 효율성, 엔드포인트 관리 등이 있지만, 장점도 있으니 알아보자. Client-side load balancing 구현DestinationRule로 구현을 할 수 있는데, Gateway와 VritualService부터 생성하자. apiVersion: networking.istio.io/v1alpha3kind: Gatewaymet..
Istio 정복하기 #5 - 트래픽 관리 - 하
Istio 정복하기 #5 - 트래픽 관리 - 하
2025.03.24하에서는 Mirroring과 Outbound Traffic Control을 알아보겠다. Mirroring미러링은 실시간 트래픽을 다른 서비스로 복제하여 보내는 기술이다. 즉 v1으로 트래픽이 왔을 때 v2로도 트래픽이 복제돼서 보내진다. 하는 방법은 어렵지 않고, VirtualService를 조금만 수정해 주면 된다.apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata: name: testspec: hosts: - "test.io" gateways: - test-gateway http: - route: - destination: host: test subset: version-v1 ..
Istio 정복하기 #4 - 트래픽 관리 - 상
Istio 정복하기 #4 - 트래픽 관리 - 상
2025.03.23다양한 트래픽 제어 기법을 제공하여 마이크로서비스 간의 통신을 보다 효율적이고 안정적으로 관리할 수 있다. 이 중에서 4개를 알아볼 예정이고, 상에서는 Routing과 Traffic Shifting을 알아본다. Routing라우팅은 클라이언트 요청을 올바른 서비스나 서비스의 특정 버전으로 보내는 방식이다. 이것은 새롭게 배포한 버전에 클라이언트가 바로 요청을 보내지 않고, 내부에서 테스트한 후에 요청을 보낼 수 있도록 활용할 수 있다. 이전에 사용한 VirtualService와 DestinationRule을 추가하면 된다. 리소스는 다음과 같이 있다고 가정하자. apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata: name: test-gate..
Istio 정복하기 #3 - Istio Ingress Gateway - 하
Istio 정복하기 #3 - Istio Ingress Gateway - 하
2025.03.20이번에는 Plain TCP와 Ingress Gateway 분리 방법에 대해서 알아보겠다. Plane TCPPlain TCP는 Istio의 서비스 메시에서 TCP 트래픽을 관리하고 제어하는 방법을 의미한다. database (like mysql), mq (like rabbitmq) 등을 expose 할 수 있다. 단 plain TCP를 다룰 때는 istio가 프로토콜의 종류를 알 수 없으므로 retries, circuit breaking, context를 이해해야 하는 기능들은 사용할 수 없다. ingressgateway의 tcp를 보면 아래와 같이 보인다. 31400kubectl get svc istio-ingressgateway -n istio-system \-o jsonpath='{.spec.por..