์ฟ ๋ฒ๋คํฐ์ค๋ก ์๋น์ค๋ฅผ ์ด์ ํ๋ฉฐ "์ด์คํฐ์ค"๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋ค. ์ด์คํฐ์ค๋ฅผ ๋ฌด์์ด๊ณ , ์ด์คํฐ์ค๋ฅผ ์ฌ์ฉํ๋ฏ๋ก์จ ์ป์ ์ ์๋ ์ฅ์ ์ ๋ฌด์์ผ์ง ์ดํด๋ณด์!
๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ์ ์ด ๋ฐ ์๋น์ค ํ์, ๋ก๋ ๋ฒจ๋ฐ์ฑ, ํธ๋ ์ ์ ๊ด๋ฆฌ, ์ถ์ , ์ํท ๋ธ๋ ์ดํฌ ๋ฑ msa ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์คํ์์ค ์๋น์ค ๋ฉ์ ํ๋ซํผ.
๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ์ฌ๋ฌ ์ด์๊ฐ ๋ง์ด ๋ฐ์ํ๋ค. ์๋ฅผ ๋ค์ด, ์๋น์ค๊ฐ ๋ถ๋ฆฌ๊ฐ ๋์ด์๋ค๋ณด๋ ํธ๋ ์ ์ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ก๊ณ , ์ด๋ค ์๋น์ค๋ก ์ด๋ป๊ฒ ์ฐพ์ ๊ฐ์ง์ ๋ํ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฌธ์ ๋ ๋ฐ์ํ์๋ค. ์ด์คํฐ์ค๋ ์ด๋ฌํ ๋ฌธ์ ํด๊ฒฐ์ ์ํ ๊ธฐ๋ฅ์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๋ฆฌํด, ์ธํ๋ผ ๊ณ์ธต์์ ์ํํ๊ฒ ๋์์ฃผ๋ ์๋น์ค ๋ฉ์ ํ๋ซํผ์ด๋ค
๊ทธ๋ผ ์๋น์ค ๋ฉ์๋ ๋ฌด์์ผ๊น? ์๋น์ค ๋ฉ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ๋ถ๋ถ์ด ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ์์ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ด์, ์๋น์ค ํ์ ๋ฐ ์ถ์ , ๋ก๋๋ฒจ๋ฐ์ฑ ๋ฑ msa ๋ฌธ์ ํด๊ฒฐ์ ๋์์ค๋ค.
์๋น์ค ๋ฉ์์์๋ ์ฌ์ด๋์นด(sidecar)๋ก ์ฃผ์ ๋ ์๋น์ค์ ์๋ ํ๋ก์ ๋ผ๋ฆฌ ํต์ ํ๋ค.
๋ฐ๋ผ์ ์๋น์ค ๋ฉ์๋ ๊ฒ์, ์นด๋๋ฆฌ ๋ฐฐํฌ, ์๋ ์ ํ, ์์ธ์ค ์ ์ด, ์ํธํ, ์ํท ๋ธ๋ ์ดํฌ, ๋ก๋๋ฒจ๋ฐ์ฑ, ์ฅ์ ๋ณต๊ตฌ, ๋ฉํธ๋ฆญ ๋ฐ ๋ชจ๋ํฐ๋ง ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ด๋ฒ์๋ ์ด์คํฐ์ค ๊ตฌ์ฑ์ ๋ํด ์์๋ณด์.
์ด์คํฐ์ค๋
๋ฐ์ดํฐ ํ๋ ์ธ
ํธ๋ํฝ์ ์ปจํธ๋กค ํ๋ ๋ชฉ์ ์ผ๋ก ์ ๊ณตํ๋ ์์ญ
๋ฐ์ดํฐ ํ๋์ธ์ Envoy Proxy ๋ฅผ ์ฌ์ฉํ๋ค.
Envoy proxy
L4, L7 ์ง์, ์๋ฒ๊ฐ์ ๋ถํ ๋ถ์ฐ๋ ์กฐ์ ๊ฐ๋ฅ.
๋ค์ํ ํต๊ณ ๊ธฐ๋ฅ ์ ๊ณต
tls ์ํธํ, ์ธ์ฆ ๋ฐ ์์ ํ ํต์ ์ ๊ณต
๋ก๋ ๋ฒจ๋ฐ์ฑ ๋ฑ ์ก์ธ์ค ์ ์ด ๋ฐ ์๋์ ํ, ํ ๋น๋ ์ง์
Zipkin์ ํตํ ๋ถ์ฐํธ๋์ ์
์ถ์ ๊ธฐ๋ฅ ์ ๊ณต
ํ๋ถํ ๋ผ์ฐํ
๊ท์น, ์ฌ์๋, ์ฅ์ ์กฐ์น๋ฑ์ผ๋ก ํธ๋ํฝ ๋์ ์ ์ด, ์ํท ๋ธ๋์ด์ปค
http ๋ฑ tcp ํธ๋ํฝ์ ๋ํ ์๋ ๋ก๋ ๋ฒจ๋ฐ์ฑ ์ ๊ณต
์ปจํธ๋กค ํ๋ ์ธ
๋ฐ์ดํฐ ์์ญ์ผ๋ก ์ด๋ค ๋ฐฉ์์ผ๋ก ์ด๋ ํ ํธ๋ํฝ์ผ๋ก ํ๋ฅด๋๋ก ์ ์ดํ๋ ์์ญ
๋ฐ์ดํฐ ์์ญ์ ๋ํ ์ปจํผ๊ทธ ๊ฐ์ ์ ์ฅํ๋ค.
Gateway
standalone envoy proxy ํํ๋ก istio-ingress-gateway์์ ์ง์ ์ ์ผ๋ก ํธ๋ํฝ์ ๋ฐ์ผ๋ฉฐ ์๋น์ค ๋ฉ์์ ๋ํ inbound, outbound ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ค.
Virtual Service
์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค๋ก ๋ผ์ฐํ
๋๊ฒ ๊ตฌ์ฑํ๋ ์ด์คํฐ์ค ์ค๋ธ์ ํธ
๋ฒ์ถ์ผ ์๋น์ค๊ฐ ์๋ ๊ฒฝ์ฐ, envoy proxy ๋ ๋ชจ๋ ์๋น์ค ์ธ์คํด์ค ๊ฐ์ ๋ผ์ด๋๋ก๋น ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ฌ์ฉํด ํธ๋ํฝ์ ๋ถ์ฐ์ํด.
destination role
์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค ๋ด์์ ์ด๋ ํ๋๋ก ํธ๋ํฝ์ ๋ณด๋ผ์ง์ ๊ด๋ จ๋จ.
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.10.1
export PATH=$PWD/bin:$PATH
istioctl install --set profile=demo -y
์ด์คํฐ์ค ์๋์จ
https://github.com/istio/istio.git
grafana : ์คํ ์์ค ๋ฐ์ดํฐ ์๊ฐํ ๋๊ตฌ, ๋ฉํธ๋ฆญ ๋ถ์ ํ๋ซํผ
jaeger : ๋ถ์ฐ ์๋น์ค๊ฐ ํธ๋์ญ์ ์ ์ถ์ ํ๋ ์คํ ์์ค ์ํํธ์จ์ด
kiali : ์ด์คํฐ์ค๋ฅผ ํตํด ์๋น์ค ๋งค์ฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ด๋ฅผ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ ํด
prometheus : ์คํ ์์ค ๋ชจ๋ํฐ๋ง ํด
/sample/addons
kubectl apply -f grafana.yaml
kubectl apply -f prometheus.yaml
kubectl apply -f jaeger.yaml
https://istio.io/latest/docs/examples/bookinfo/
bookinfo ์์
1) ์ฌ์ด๋์นด ์ฃผ์
kubectl label namespace default istio-injection=enabled
2) ์ ํ๋ฆฌ์ผ์ด์ ๋์ฐ๊ธฐ
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.10/samples/bookinfo/platform/kube/bookinfo.yaml
โ bookinfo kubectl get all
NAME READY STATUS RESTARTS AGE
pod/details-v1-79f774bdb9-t77qz 1/1 Running 0 13m
pod/productpage-v1-6b746f74dc-z24zv 1/1 Running 0 13m
pod/ratings-v1-b6994bb9-xxmg2 1/1 Running 0 13m
pod/reviews-v1-545db77b95-f725q 1/1 Running 0 13m
pod/reviews-v2-7bf8c9648f-6557r 1/1 Running 0 13m
pod/reviews-v3-84779c7bbc-4hqbr 1/1 Running 0 13m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/details ClusterIP 10.108.214.88 <none> 9080/TCP 13m
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 17d
service/productpage ClusterIP 10.103.117.9 <none> 9080/TCP 13m
service/ratings ClusterIP 10.105.22.13 <none> 9080/TCP 13m
service/reviews ClusterIP 10.98.132.54 <none> 9080/TCP 13m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/details-v1 1/1 1 1 13m
deployment.apps/productpage-v1 1/1 1 1 13m
deployment.apps/ratings-v1 1/1 1 1 13m
deployment.apps/reviews-v1 1/1 1 1 13m
deployment.apps/reviews-v2 1/1 1 1 13m
deployment.apps/reviews-v3 1/1 1 1 13m
NAME DESIRED CURRENT READY AGE
replicaset.apps/details-v1-79f774bdb9 1 1 1 13m
replicaset.apps/productpage-v1-6b746f74dc 1 1 1 13m
replicaset.apps/ratings-v1-b6994bb9 1 1 1 13m
replicaset.apps/reviews-v1-545db77b95 1 1 1 13m
replicaset.apps/reviews-v2-7bf8c9648f 1 1 1 13m
replicaset.apps/reviews-v3-84779c7bbc 1 1 1 13m
3) ๊ฒ์ดํธ์จ์ด, ๋ฒ์ธ์ผ ์๋น์ค
: ๋คํธ์ํฌ ์ค์ ์ ํด์ค๋ค.
์ผ๋ฐ์ ์ธ ๊ฒ์ดํธ์์ด : ํต์ญ์ฌ ( ๋๊ฐ์ ์ปดํจํฐ๊ฐ ํต์ ํ๋ฉด ๊ฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ผํ๋๋ฐ, ๋ค๋ฅธ ๋คํธ์ํฌ์ ๋ค๋ฅธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ์๋น์ค๋ฅผ ์๋ก ์ฐ๊ฒฐ )
VirtaulService : ํธ์คํธ ์ฃผ์๊ฐ ์ง์ ๋ ๋ ํธ๋ํฝ ๋ผ์ฐํ ๊ท์น ์ ์ํ๋ค.
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.10/samples/bookinfo/networking/bookinfo-gateway.yaml
4) ๊ตฌ์ฑ์ ๋ฌธ์ ์๋์ง ํ์ธ
istioctl analyze
5) ์ ์ ํด๋ณธ๋ค
http://localhost/productpage
6) ์๋์จ ์ฒดํฌ
istioctl dashboard jaeger
istioctl dashboard grafana
https://istio.io/
https://www.redhat.com/ko/topics/microservices/what-is-istio
https://gruuuuu.github.io/cloud/service-mesh-istio/
https://bcho.tistory.com/1297
https://nesoy.github.io/articles/2018-06/Load-Balancer -> ๋ก๋ ๋ฒจ๋ฐ์ฑ ๊ฐ๋
https://findstar.pe.kr/2021/03/25/install-istio-on-docker-desktop/
https://www.44bits.io/ko/keyword/grafana
https://www.redhat.com/ko/jaeger%EB%9E%80
https://aws-diary.tistory.com/127
https://medium.com/finda-tech/prometheus%EB%9E%80-cf52c9a8785f
https://prometheus.io/docs/introduction/overview/
https://phantasmicmeans.tistory.com/entry/Istio-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0