Oracle Cloud Infrastructure (OCI) 에서 이스티오(ISTIO)를 활용한 서비스 메쉬(Service Mesh)에 대한 기술 정리 및 이를 데모로 구현한 내용을 정리합니다.
글 순서
5. 이스티오 데모 - 이스티오 설치, 엔보이 프록시 주입
6. 이스티오 데모 - 샘플 어플리케이션 (Bookinfo) 배포
8. 이스티오 데모 - 결함 주입(Fault Injection)
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>