Search

Istio Tasks; TCP Traffic Management - Request Timeouts

준비

이번에도 istio 설치된 클러스터에 bookinfo app을 준비한다. 요청 타임아웃을 review 서비스에 구성할건데 그 효과를 보기 위해, 타임아웃까지 응답이 오지 않도록, rating 서비스에 2초의 지연이 발생하는 결함을 주입한다.
먼저 모든 요청이 review:v2 로 가도록 한다:
k apply -f - <<EOF apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route: - destination: host: reviews subset: v2 EOF
Shell
복사
그리고 rating 에 지연 결합을 주입한다:
$ k apply -f - <<EOF apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ratings spec: hosts: - ratings http: - fault: delay: percentage: value: 100 fixedDelay: 2s route: - destination: host: ratings subset: v1 EOF
Shell
복사
그러면 2초 후에 review:v2 에 대한 응답이 온다:

요청 타임아웃

이제 reviews 요청에 대한 0.5초의 타임아웃을 구성한다:
$ k apply -f - <<EOF apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route: - destination: host: reviews subset: v2 timeout: 0.5s EOF
Shell
복사
❯ k diff -f - <<EOF apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: reviews spec: hosts: - reviews http: - route: - destination: host: reviews subset: v2 timeout: 0.5s EOF diff -u -N /var/folders/4s/w6k_cdvd52s1hst64dr_yw540000gn/T/LIVE-113615660/networking.istio.io.v1alpha3.VirtualService.default.reviews /var/folders/4s/w6k_cdvd52s1hst64dr_yw540000gn/T/MERGED-2255124966/networking.istio.io.v1alpha3.VirtualService.default.reviews --- /var/folders/4s/w6k_cdvd52s1hst64dr_yw540000gn/T/LIVE-113615660/networking.istio.io.v1alpha3.VirtualService.default.reviews2024-01-06 15:37:44.104097679 +0900 +++ /var/folders/4s/w6k_cdvd52s1hst64dr_yw540000gn/T/MERGED-2255124966/networking.istio.io.v1alpha3.VirtualService.default.reviews 2024-01-06 15:37:44.104330259 +0900 @@ -5,7 +5,7 @@ kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"networking.istio.io/v1alpha3","kind":"VirtualService","metadata":{"annotations":{},"name":"reviews","namespace":"default"},"spec":{"hosts":["reviews"],"http":[{"route":[{"destination":{"host":"reviews","subset":"v2"}}]}]}} creationTimestamp: "2024-01-06T06:32:41Z" - generation: 1 + generation: 2 name: reviews namespace: default resourceVersion: "22911" @@ -18,3 +18,4 @@ - destination: host: reviews subset: v2 + timeout: 0.5s
Diff
복사
다시 새로고침하여 productpage를 요청하면 리뷰 부분이 기능 장애로 보이지 않는다(unavailable). 타임아웃으로 인해 1초 후에 실패한 것, 1초인 이유는 productpage에서 한 번 재시도를 하기 때문이다:

습득 교훈

타임아웃은 구성(설정)이자 기능(?)이다.
앞서 본 결함 주입과 동작은 비슷하지만 검출(test) 목적이 아니다.