[Istio ๊ฐ์ด๋ ep.2] 1๋ถ ๊ฐ๋ ๊ณผ ๊ธฐ๋ณธ ์ค์ #2 | Istio ์ํคํ ์ฒ: ๋ฐ์ดํฐ ํ๋ ์ธ & ์ปจํธ๋กค ํ๋ ์ธ ์์ ์ ๋ณต
๐น ๊ฐ์
์ด๋ฒ ๊ธ์์๋ Istio์ ์ํคํ
์ฒ๋ฅผ ๋ค๋ฃจ๋ฉฐ, ๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ์ ๊ตฌ์ฑ ์์์ ์ญํ ์ ์ค๋ช
ํฉ๋๋ค.
Istio๋ ์๋น์ค ๋ฉ์๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ ๊ฐ์ง ์ฃผ์ ์ปดํฌ๋ํธ์ธ ๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ์ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ ํ๋ ์ธ์ ์๋น์ค ๊ฐ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ณ , ์ปจํธ๋กค ํ๋ ์ธ์ ์ ์ฒด ๋คํธ์ํฌ ์ ์ฑ
์ ๊ด๋ฆฌํฉ๋๋ค.
์ด ๊ธ์์๋ Istio ์ํคํ
์ฒ๋ฅผ ๊ตฌ์ฑํ๋ ํต์ฌ ์์๋ค์ ์ค๋ช
ํ๊ณ , ๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ์ ์ํธ์์ฉ์ ๋ํด ์์๋ด
๋๋ค.
๐น 1. Istio ์ํคํ ์ฒ ๊ฐ์
โ 1.1 Istio ์ํคํ ์ฒ์ ์ฃผ์ ๊ตฌ์ฑ ์์
Istio๋ ํฌ๊ฒ ๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ์ผ๋ก ๋๋ ์ง๋๋ค.
๋ฐ์ดํฐ ํ๋ ์ธ์ ์๋น์ค ๊ฐ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ณ , ์ปจํธ๋กค ํ๋ ์ธ์ ์ ์ฑ
์ ๊ด๋ฆฌํ๋ฉฐ, ์ด ๋์ด ํ๋ ฅํ์ฌ ์๋น์ค ๋ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
ํต์ฌ ์์
- ๋ฐ์ดํฐ ํ๋ ์ธ(Data Plane): Envoy Proxy๊ฐ ์๋น์ค ๊ฐ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค.
- ์ปจํธ๋กค ํ๋ ์ธ(Control Plane): Istio์ ์ ์ฑ ์ ๊ด๋ฆฌํ๊ณ , ๋ฐ์ดํฐ ํ๋ ์ธ์ ๊ตฌ์ฑํ๋ Pilot, Citadel, Galley์ ๊ฐ์ ์ปดํฌ๋ํธ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
โ 1.2 ๋ฐ์ดํฐ ํ๋ ์ธ (Data Plane)
๋ฐ์ดํฐ ํ๋ ์ธ์ ์๋น์ค ๊ฐ์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค.
Envoy Proxy๊ฐ ๊ฐ ์๋น์ค์ ์ฌ์ด๋์นด ํ๋ก์๋ก ๋ฐฐํฌ๋์ด, ์๋น์ค ๊ฐ์ ๋ชจ๋ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ณ , ์ ์ดํฉ๋๋ค.
๋ฐ์ดํฐ ํ๋ ์ธ์ ์ฃผ๋ก ํธ๋ํฝ ๋ผ์ฐํ
, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋ณด์์ ๋ด๋นํฉ๋๋ค.
Envoy Proxy
- ํธ๋ํฝ ๋ผ์ฐํ : ๊ฐ ์๋น์ค๋ก์ ์์ฒญ์ ๋ผ์ฐํ ํ๊ณ , ํธ๋ํฝ ์ ์ด๋ฅผ ํตํด ์ฑ๋ฅ์ ์ต์ ํํฉ๋๋ค.
- ๋ณด์: mTLS๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ฐ์ ์ํธํ๋ ํต์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ํธ๋ํฝ ์ ์ด: ๋ฆฌํธ๋ผ์ด, ํ์์์, ์ํท ๋ธ๋ ์ด์ปค๋ฅผ ์ค์ ํ์ฌ ํธ๋ํฝ์ ์ ์ดํฉ๋๋ค.
Envoy๋ ์๋น์ค ๋ฉ์์ ์ค์ ์ฒ๋ฆฌ ์ฅ์น ์ญํ ์ ํ๋ฉฐ, Istio์ ๋ฐ์ดํฐ ํ๋ ์ธ์์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ํต์ฌ ์์์ ๋๋ค.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService # ํธ๋ํฝ ๋ผ์ฐํ
์ค์
metadata:
name: my-service # ๋ฆฌ์์ค ์ด๋ฆ ์ค์
spec:
hosts:
- my-service # ๋์ ์๋น์ค ์ค์
http:
- route:
- destination:
host: my-service # 'my-service' ์๋น์ค๋ก ํธ๋ํฝ ์ ๋ฌ
์ค๋ช :
- VirtualService: ํธ๋ํฝ ๋ผ์ฐํ ๊ท์น์ ์ ์ํ๋ ๋ฆฌ์์ค๋ก, ์๋น์ค ๊ฐ์ ํธ๋ํฝ ํ๋ฆ์ ์ ์ดํฉ๋๋ค.
๐น 2. ์ปจํธ๋กค ํ๋ ์ธ (Control Plane)
โ 2.1 ์ปจํธ๋กค ํ๋ ์ธ ๊ฐ์
์ปจํธ๋กค ํ๋ ์ธ์ ์๋น์ค ๋ฉ์์ ์ ์ฑ
์ ๊ด๋ฆฌํ๊ณ , ๋ฐ์ดํฐ ํ๋ ์ธ์ ๋ํ ์ค์ ์ ์ ๊ณตํฉ๋๋ค.
Istio์ ์ปจํธ๋กค ํ๋ ์ธ์ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ์ด๋ค์ ์๋น์ค ๋ฉ์ ๋ด์์์ ์ ์ด ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํฉ๋๋ค.
์ฃผ์ ์ปดํฌ๋ํธ
- Pilot: ๋ฐ์ดํฐ ํ๋ ์ธ์ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ , ํธ๋ํฝ ๋ผ์ฐํ ๋ฐ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- Citadel: ์๋น์ค ๊ฐ ์ธ์ฆ์ ๊ด๋ฆฌํ๊ณ , mTLS ์ธ์ฆ์ ๋ฐ๊ธ ๋ฐ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Galley: ๊ตฌ์ฑ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ฉฐ, ์ ์ฑ ๋ฐ ์ค์ ์ ๋ฐ์ดํฐ ํ๋ ์ธ์ ์ ๋ฌํฉ๋๋ค.
- Mixer (Istio 1.5 ์ด์ ๋ฒ์ ): ์ ์ฑ ๋ฐ ํ ๋ ๋ฉํธ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ์๋น์ค ๋ฉ์์ ๋ก๊น , ๋ชจ๋ํฐ๋ง์ ๋ด๋นํฉ๋๋ค.
โ 2.2 Pilot
Pilot์ ๋ฐ์ดํฐ ํ๋ ์ธ์ ํธ๋ํฝ ๋ผ์ฐํ
์ ๋ณด์ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค.
Pilot์ VirtualService, DestinationRule๊ณผ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ํฝ์ ๋ผ์ฐํ
ํ๊ณ , ์๋น์ค ๊ฐ ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
Pilot์ ์ญํ
- ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ: ํด๋ฌ์คํฐ ๋ด์ ์๋น์ค ๋ชฉ๋ก์ ๊ด๋ฆฌํ๊ณ , ์๋น์ค ๊ฐ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค.
- ํธ๋ํฝ ๋ผ์ฐํ : ํธ๋ํฝ ๋ผ์ฐํ ๊ท์น์ ์ ์ํ์ฌ, ์๋น์ค ๊ฐ์ ์์ฒญ ํ๋ฆ์ ์ต์ ํํฉ๋๋ค.
โ 2.3 Citadel
Citadel์ ์๋น์ค ๊ฐ์ ์ธ์ฆ๊ณผ ๋ณด์์ ๋ด๋นํฉ๋๋ค.
mTLS(Mutual TLS) ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ฐ ํต์ ์ ์ํธํํ๊ณ , ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ์ฌ ์๋น์ค์ ๋ณด์์ฑ์ ๊ฐํํฉ๋๋ค.
Citadel์ ์ญํ
- mTLS ์ธ์ฆ์ ๊ด๋ฆฌ: ์๋น์ค ๊ฐ ์ํธํ๋ ํต์ ์ ์ํด ์ธ์ฆ์ ๋ฐ๊ธ ๋ฐ ๊ด๋ฆฌ.
- ๋ณด์ ์ ์ฑ : ์๋น์ค ๊ฐ์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ฒ๋ฆฌํ์ฌ Zero Trust ๋ณด์์ ๊ตฌํํฉ๋๋ค.
๐น 3. ๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ์ ์ํธ์์ฉ
โ 3.1 ๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ ํ๋ ฅ
๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ์ ์๋น์ค ๋ฉ์ ๋ด์์ ์ํธ์์ฉํ๋ฉฐ, ํธ๋ํฝ๊ณผ ์ ์ฑ
์ ๊ด๋ฆฌํฉ๋๋ค.
์ปจํธ๋กค ํ๋ ์ธ์ ์ ์ฑ
์ ์ ์ํ๊ณ , ๋ฐ์ดํฐ ํ๋ ์ธ์ ์ด๋ฅผ ์คํํ์ฌ ์๋น์ค ๊ฐ ํธ๋ํฝ์ ๊ด๋ฆฌํฉ๋๋ค.
์ํธ์์ฉ ์์
- Pilot์ VirtualService ๋ฆฌ์์ค๋ฅผ ํตํด ํธ๋ํฝ ๋ผ์ฐํ ๊ท์น์ ์ ์ํ๊ณ , ์ด๋ฅผ Envoy(๋ฐ์ดํฐ ํ๋ ์ธ)๋ก ์ ๋ฌํ์ฌ ์๋น์ค ๊ฐ ํธ๋ํฝ ํ๋ฆ์ ์ ์ดํฉ๋๋ค.
- Citadel์ Envoy์ mTLS ์ธ์ฆ์๋ฅผ ์ ๊ณตํ์ฌ, ์๋น์ค ๊ฐ์ ์์ ํ ํต์ ์ ๋ณด์ฅํฉ๋๋ค.
๐ ๊ฒฐ๋ก
- Istio์ ์ํคํ ์ฒ๋ ๋ฐ์ดํฐ ํ๋ ์ธ๊ณผ ์ปจํธ๋กค ํ๋ ์ธ์ผ๋ก ๊ตฌ๋ถ๋๋ฉฐ, ๋ ํ๋ ์ธ์ด ํ๋ ฅํ์ฌ ์๋น์ค ๋ฉ์์ ํธ๋ํฝ ๊ด๋ฆฌ, ๋ณด์, ์ ์ฑ ๊ด๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
- Envoy Proxy๋ ๋ฐ์ดํฐ ํ๋ ์ธ์์ ํธ๋ํฝ ํ๋ฆ์ ์ ์ดํ๋ฉฐ, Pilot, Citadel ๋ฑ์ ์ปจํธ๋กค ํ๋ ์ธ ์ปดํฌ๋ํธ๋ ์ ์ฑ ์ ๊ด๋ฆฌํ๊ณ ์๋น์ค ๋ฉ์๋ฅผ ์ต์ ํํฉ๋๋ค.
- Istio๋ ์๋น์ค ๋ฉ์๋ฅผ ์์ ์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ์ด์ํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.