본문 바로가기

Cloud/Oracle Cloud Infrastructure (OCI)

OCI상에서 ISTIO를 활용하여 구현한 Service Mesh - #8. 이스티오 데모 - 결함 주입(Fault Injection)

Oracle Cloud Infrastructure (OCI) 에서 이스티오(ISTIO)를 활용한 서비스 메쉬(Service Mesh)에 대한 기술 정리 및 이를 데모로 구현한 내용을 정리합니다.

글 순서

1. Overview

2. 이스티오 작동 방식

3. 이스티오 데모 - 사전 준비

4. 이스티오 데모 - 쿠버네티스 대쉬보드 설치/설정

5. 이스티오 데모 - 이스티오 설치, 엔보이 프록시 주입

6. 이스티오 데모 - 샘플 어플리케이션 (Bookinfo) 배포

7. 이스티오 데모 - 카나리 배포

8. 이스티오 데모 - 결함 주입(Fault Injection)

9. 이스티오 데모 - 서비스 시각화 (프로메테우스)

10. 이스티오 데모 - 서비스 시각화 (그라파나)

11. 이스티오 데모 - 서비스 시각화 (키알리)

12. 이스티오 데모 - 서비스 시각화 (예거)

 

REFERENCES

아래 도서 및 사이트를 참조하여 작성한 문서입니다.

  • 도메인 주도 설계로 시작하는 마이크로 서비스 개발 (위키북스)
  • 쿠버네티스 완벽 가이드 (길벗)
  • Istio로 시작하는 서비스 메시 (에이콘)
  • Isitio Documentation

 

결함 주입(Fault Injection) 샘플

결함 주입은 비정상적인 방식으로 스트레스를 받을 때 컴퓨팅 시스템이 어떻게 동작하는지 이해하기 위한 테스트 기술(Wikipedia 참조)을 말합니다. 즉 의도적으로 HTTP 지연(delay)을 발생시키거나, HTTP 실패(abort)를 발생시키는 테스트 기법이며, 이스티오에서 이를 지원합니다.

먼저 HTTP 지연 결함을 주입하는 샘플입니다.

테스트를 위해 아래와 같이 reviews 마이크로서비스 버전3에 대해 50%의 확률로 4초간의 HTTP 지연을 발생시키는 VirtualService 매니페스트 파일을 작성합니다.

[opc@demo ~]$ vi ~/istio-1.14.1/samples/bookinfo/networking/virtual-service-reviews-test-delay.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v3
    fault:
      delay:
        percentage:
          value: 50
        fixedDelay: 4s

 

매니페스트 파일을 적용합니다.

[opc@demo ~]$ kubectl apply -f ~/istio-1.14.1/samples/bookinfo/networking/virtual-service-reviews-test-delay.yaml
virtualservice.networking.istio.io/reviews configured

 

웹 브라우저에서 확인해보면 화면을 호출할 때마다 50%의 확률로 지연이 발생하는 것을 알 수 있습니다.

 

이번에는 HTTP 실패를 의도적으로 발생시키는 샘플입니다. 다음과 같은 매니페스트 파일을 생성합니다. 50%의 확률로 HTTP 500 에러를 발생시킵니다.

[opc@demo ~]$ vi ~/istio-1.14.1/samples/bookinfo/networking/virtual-service-reviews-test-abort.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v3
    fault:
      abort:
        percentage:
          value: 50
        httpStatus: 500

 

매니페스트 파일을 적용합니다.

[opc@demo ~]$ kubectl apply -f ~/istio-1.14.1/samples/bookinfo/networking/virtual-service-reviews-test-abort.yaml
virtualservice.networking.istio.io/reviews configured

 

웹 브라우저에서 확인해 보면 일정 확률로 reviews 서비스에서 에러가 발생하는 것을 알 수 있습니다.

 

<END>