Istio: Ingress Gateway
Ingress Gateway๋?
bookinfo ์์ ์์ ๋ง๋ VirtualService
์ DestinationRule
์ K8s ํด๋ฌ์คํฐ ๋ด๋ถ์์ ํ๋ฅด๋ ํธ๋ํฝ์ ์ ์ดํ๋ ๋ฆฌ์์ค์ด๋ค.
๊ทธ๋ผ istio ๋คํธ์ํฌ ์์์ ์ดํ๋ฆฌ์ผ์ด์ ์ K8s ํด๋ฌ์คํฐ ์ธ๋ถ๋ก ๋ ธ์ถ ํ๋ ค๊ณ ํ๋ค๋ฉด, ์ด๋ป๊ฒ ํด์ผ ํ ๊น??
K8s Ingress๋ ์ด๋ฆ์ด ๋น์ทํ๋ค์
์ผ๋จ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ K8s Service๋ K8s Ingress๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ์ ๊ทผํ๋ฉด, VirtualService
์ DestinationRule
๋ก ์ค์ ํ ๋คํธ์ํฌ ๊ท์น์ด ์ ์ฉ ๋์ง ์๋๋ค.
์๋ํ๋ฉด, K8s Ingress์ K8s Service์์ ๋ค์ด์ค๋ ๋คํธ์ํฌ ํธ๋ํฝ์ istiod
๊ฐ ์๋๋ผ K8s ์ปจํธ๋กคํ๋ ์ธ์ kube-proxy
๋ฅผ ํตํด ์ ์ด๋๊ธฐ ๋๋ฌธ์ด๋ค!
Istio์๋ Ingress Gateway๋ผ๋๊ฒ ์์ต๋๋ค.
Istio์ vs
, dr
์ ๊ท์น์ ๋ฐ๋ฅด๊ฒ ํ๋ ค๋ฉด ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค.
Envoy Proxy๊ฐ ๋คํธ์ํฌ ์์ฒญ์ ํ๊ฒ ํ๋ผ!
๊ทธ๋์ Istio๋ Envoy Proxy ์ปจํ ์ด๋ ํ๋๋ง ์๋ Ingress Gateway๋ผ๋ ์ด๋ฆ์ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๋ค!!!
Istio๋ ํด๋ฌ์คํฐ ์ธ๋ถ์์ ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ์ Ingress Gateway์ ์์ํ๋ค.
์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด, Ingress Gateway๋ โEnvoy Proxyโ๊ฐ ์๋ ๊ฑธ ์ ์ ์๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ Application๊ณผ ๋ค๋ฅด๊ฒ Service์ ์ปจํ ์ดํฐ๋ ์กด์ฌํ์ง ์๋๋ค!! ์ค์ง Envoy Proxy ์ปจํ ์ด๋๋ง ๋จ๋ ์ผ๋ก ์กด์ฌํ๋ค!!
Ingress Gateway๋ ์ด๋ป๊ฒ ์ฐ๋์?
์ ingress gateway๋ผ๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, istio์ Gateway
๋ผ๋ ๋ฆฌ์์ค๋ฅผ ์ ์ ํ๋๋ฐ
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
# The selector matches the ingress gateway pod labels.
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 8080 # ์ ํฌํธ ๋ฒํธ์ ๋ํ ์ค๋ช
์ ๋ค์์ ํ๋ค!
name: http
protocol: HTTP
hosts:
- "*"
- ์ด๋ค ingress gateway๋ก ํธ๋ํฝ์ ๋ฐ์์ง
- ์ด๋ค ํฌํธ์์ (๋ค์์ ๋ ์์ธํ ์ค๋ช )
- ์ด๋ค ํธ์คํธ์์ ์์ฒญ์ด ๋ค์ด์ฌ ๊ฑด์ง (์๊ฒ๋ ๋ค์์ ๋ ์์ธํ ์ค๋ช !)
์ ๋ํ ๋ด์ฉ์ ์ ์ด์ค๋ค.
์๋ ๊ฒ istio Gateway
๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ณ ๋๋ฉด, ์ด์ ์ Gateway ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ViratualService
๋ฅผ ํ๋ ๋ง๋ค์ด์ค์ผ ํ๋ค.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*"
gateways: # ์๊ธฐ์ ์ ์ด์ค๋ค!
- bookinfo-gateway
http:
...
์ด VirtualService
๋ Ingress Gateway๋ก ๋ค์ด์จ ํธ๋ํฝ์ ์ด๋ค ๊ณณ์ผ๋ก ๋ผ์ฐํ
ํ ์ง๋ฅผ ๊ท์น์ด ์ ํ ์๋ค. ์ด ๊ท์น๋ค์ Ingress Gateway์ Envoy Proxy์์ ํธ๋ํฝ์ด ๋๊ฐ ๋ evaluate ๋๋ค.
Mesh gateway์ ๋น๊ต
Ingress GW์ (๊ณง ์ดํด๋ณผ) Egress GW๋ฅผ ๊ตฌ์ฑํ๋ Envoy Proxy๋ ํน์ํ ์ญํ ์ ํ๋ค. ๊ทธ๋์ ์ด๋ค์ ๋ํด์๋ spec.gateways
์ ์ง์ Gateway
๋ฆฌ์์ค๋ฅผ ๋ช
์ํด์ ๊ทธ๋ค์ด ์ฌ์ฉํ๋ VirtualService
๋ฅผ ์ ์ํ๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก ์ด๋ ๊ฒ ์ฐ๋ ๊ฒฝ์ฐ๋ ์๋ค.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
spec:
gateways:
- bookinfo-gateway
- mesh # mesh gateway๋ ๊ฐ์ด ์ ์ฉํ ์๋ ์๋ค!
http:
...
์ด๋ โmesh gatewayโ๋ Ingress/Egress GW๋ฅผ ๊ตฌ์ฑํ๋ Envoy Proxy๋ฅผ ์ ์ธํ Istio Service Mesh ๋ด์ ์กด์ฌํ๋ ๋ค๋ฅธ ๋ชจ๋ Envoy Proxy๋ฅผ ๋งํ๋ค.
์ฒ์ VirtualService
๋ฅผ ๋ฐฐ์ธ ๋๋ Service Mesh ๋ด๋ถ์์์ ํธ๋ํฝ๋ง์ ์ ์ดํ๊ธฐ ๋๋ฌธ์ spec.gateways
์ ์๋ฌด๊ฒ๋ ์ ์ง ์์๋ค. ์๋ฌด๊ฒ๋ ์ ์ ์ผ๋ฉด mesh
gateway๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๋ค์ด๊ฐ๋ค.
Ingress Gateway๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค!
ํ์โฆ ๋ฐฉ๋ฒ์ ์ฐพ๋๊ฒ ๊ฝค ์ด๋ ค์ ๋คโฆ (โฅ๏นโฅ)
์ผ๋จ Istio ์ค์น ๋ ์๋์ผ๋ก ์ค์นํ๋ Ingress Gateway ์ธ์ ์ถ๊ฐ Ingress GW๋ฅผ ๋์ฐ๊ณ ์ถ๋ค๋ฉด, IstioOperator
๋ฆฌ์์ค๋ฅผ ์์ ํด์ค์ผ ํ๋ค.
Istio๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ๋ istioctl
, helm chart๋ก ์ค์นํ๊ธฐ, Istio Operator๋ก ์ค์นํ๊ธฐ ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ์ฌ๊ธฐ์๋ istioctl
์ Istio Operator๋ฅผ ์ฌ์ฉํด์ Ingress GW๋ฅผ ์ถ๊ฐํด๋ณด๊ฒ ๋ค.
์ผ๋จ, ์ฐ๋ฆฌ๊ฐ IstioOperator
๋ฆฌ์์ค๋ฅผ ์์ ํ์ ๋, ๊ทธ๊ฑธ ๋ฐ์ํด์ ๋์ ์ค IstioOperator ์ปจํธ๋กค๋ฌ๋ฅผ ๋์์ผ ํ๋ค.
$ istioctl operator init
์๋ ๊ฒ ํ๋ฉด, ์ด์ istio-operator
๋ผ๋ ns์ IstioOperator ์ปจํธ๋กค๋ฌ๊ฐ ๋ฌ๋ค! (๊ทธ๋ฐ๋ฐ ์ด๋ฆ์ istio-operator-xxx
์ด๋ ์ฃผ์!)
์ข๋ค! ์ด์ IstioOperator
๋ฅผ ์์ ํด๋ณด์! ์๋ ๋ช
๋ น์ด๋ก ๋ฆฌ์์ค๋ฅผ ํ์ธํ๋ค.
$ kubectl get istiooperator -n istio-system
๊ทธ๋ฆฌ๊ณ ์กด์ฌํ๋ IstioOperator
๋ฆฌ์์ค๋ฅผ ์์ ํ๋๋ฐโฆ
๋จผ์ annotations
์ ์๋ install.istio.io/ignoreReconcile
์ false
๋ก ๋ฐ๊ฟ์ค๋ค. ์๊ฑธ ๋ฐ๊พธ์ง ์์ผ๋ฉด ๋ฆฌ์์ค๋ฅผ ์์ ํด๋ IstioOperator ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ์์ ์ ํ๋ค!
๊ทธ๋ฆฌ๊ณ spc.components.ingressGateways
ํญ๋ชฉ์์ ์๋ก์ด Ingress GW๋ฅผ ์ถ๊ฐํด์ฃผ์!
์ด๋ ์ฃผ์ํ ์ ์ label.istio
๋ ๊ฐ์ด ์ค์ ํด์ค์ผ ํ๋ค! ๋ง์ฝ ์ค์ ํ์ง ์์ผ๋ฉด, default ingress gateway๋ ๊ฐ์ label.istio = "ingressgateway"
๋ฅผ ์ฐ๊ฒ ๋์ด์ ๋ Ingress GW๊ฐ ์ ๋๋ก ๋ถ๋ฆฌ ๋์ง ์๊ฒ ๋๋ค!
์ผํธ!! ์๋ก์ด Ingress GW๊ฐ ์ ๋ด๋ค!! เดฆเตเดฆเดฟ หอฬ๊ณหอฬ )โง
Ingress Gateway ๋ ์์ธํ ์ดํด๋ณด๊ธฐ
Gateway์ port
์ IngressGateway์ containerPort
์ฐ์ , ์ค์ต์์ ์ฌ์ฉํ๋ Gateway
์ VirtualService
์ yaml ํ์ผ๋ถํฐ ๋ค์ ๋ณด์!!
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
# The selector matches the ingress gateway pod labels.
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 8080 # ์๊ธฐ!
name: http
protocol: HTTP
hosts:
- "*"
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*"
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /productpage
...
route:
- destination:
host: productpage
port:
number: 9080 # ์๊ธฐ!!
๋์ ๋น๊ต ํ์ ๋ ์ดํด๊ฐ ์ ๋๋ ๋ถ๋ถ์ ๋ฐ๋ก ๋์ port
๋ถ๋ถ์ด๋ค. Gateway
๋ 8080
ํฌํธ๋ฅผ, VirtualService
๋ 9080
ํฌํธ๋ก ์๋ก ๋ค๋ฅธ ํฌํธ๋ฅผ ๋ช
์ํ๊ธฐ ๋๋ฌธ์ด๋ค!
์ผ๋จ Gateway
๋ฆฌ์์ค์ port
๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํด๋ณด์๋ค.
8080
โ7070
์ผ๋ก ๋ณ๊ฒฝ: โ8080
โ9090
์ผ๋ก ๋ณ๊ฒฝ: โ
์ค์ง 8080
์ผ๋ก ์ค์ ํ์ ๋๋ง, Gateway๋ฅผ ํตํ ๋ผ์ฐํ
์ด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์๋ค!! ๋๋์ฒด ์์ผ๊น!! /(โ-โ)/
์ผ๋จ ๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด, istio-system
ns์ ๋ ์๋ default IngressGateway Pod์์ ํน์ ํฌํธ๋ค๋ง ํ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค!!
์ค์ง ์๋ ๋ ํฌํธ์ ๊ฒฝ์ฐ๋ก ์ค์ ํ์ ๋๋ง Gateway๊ฐ ์ ๋๋ก ๋์ํ๋ค.
8080
์80
(http) ํฌํธ8443
์443
(https) ํฌํธ
์ผ๋จ ๊ทธ ์ด์ ๋ IngressGateway์ containerPort
์ Service
์ ์๋ค.
IngressGateway Pod์ ์ ๋ณด๋ฅผ ๋ณด๋ฉด ์๋์ ๊ฐ์ด ์ค์ ๋์ด ์๋ค.
# default ingress gateway pod
...
image: docker.io/istio/proxyv2:1.20.2
imagePullPolicy: IfNotPresent
name: istio-proxy
ports:
- containerPort: 15021
protocol: TCP
- containerPort: 8080
protocol: TCP
- containerPort: 8443
protocol: TCP
- containerPort: 15090
name: http-envoy-prom
protocol: TCP
...
IngressGateway Service์ ์ ๋ณด๋ฅผ ๋ณด๋ฉด ์๋ ๋ค.
# default ingress gateway service
...
ports:
- name: status-port
nodePort: 31782
port: 15021
protocol: TCP
targetPort: 15021
- name: http2
nodePort: 32514
port: 80
protocol: TCP
targetPort: 8080
- name: https
nodePort: 32051
port: 443
protocol: TCP
targetPort: 8443
...
์ฆ, ์ฐ๋ฆฌ๊ฐ ๋ง๋ Gateway
๊ฐ ์ฌ์ฉํ๋ default ingressGateway์ ์ปจํ
์ด๋๊ฐ 8080
๊ณผ 8443
ํฌํธ๋ง ์ด๋ ค ์๊ธฐ ๋๋ฌธ์, Gateway
๋ 8080
ํฌํธ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
The specification describes a set of ports that should be exposed, the type of protocol to use, SNI configuration for the load balancer, etc.
Gateway
๋ฆฌ์์ค์ ๋ช
์๋ port๋ ingressGateway์์ ๋ค์ด์ค๋ ๋ชฉ์ ์ผ๋ก๋ ์ฌ์ฉํ์ง๋ง, ๋ฐ๋๋ก Gateway๋ฅผ ์ฌ์ฉํด ์๋น์ค๋ฅผ ์ธ๋ถ์ ๋
ธ์ถํ ๋๋ ์ฌ์ฉํ๋ค. (๋จ, ์ด ๊ฒฝ์ฐ์ Egress Gateway๋ ๋ค๋ฅธ ๊ฐ๋
์ด๋ ์ฃผ์!)
host
-port
์กฐํฉ์ ํ๋์ Gateway๋ง ๊ฐ๋ฅ
์ด๋ฒ์๋ Bookinfo ์์ ๋ฅผ default
ns์๋ ๋์ฐ๊ณ , test
ns์๋ ๋์๋ณด์!! ๐๐
๊ทธ๋ฆฌ๊ณ ๋๋ค ๋ชจ๋ istio์ default ingress-gateway๋ฅผ ์ฌ์ฉํด Gateway
๋ฆฌ์์ค๋ฅผ ์ธ๋ถ์ ๋
ธ์ถ ํด๋ณด์!
default
ns์๋ ์ด๋ฏธ bookinfo ์ดํ๋ฆฌ์ผ์ด์
์ ๋์ ๋ค๊ณ ์๊ฐํ๊ณ , test
ns์ bookinfo ์ดํ๋ฆฌ์ผ์ด์
์ ๋์๋ณด๊ฒ ๋ค.
$ kubectl create ns test
$ kubectl label ns test istio-injection=enabled
$ kubectl apply -n test -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/bookinfo/platform/kube/bookinfo.yaml
$ kubectl apply -n test -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/bookinfo/networking/bookinfo-gateway.yaml
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ๋์ฐ๊ฒ ๋๋ฉด, ์ด์ํ๊ฒ๋ test
ns์ ๋์ด bookinfo ์ดํ๋ฆฌ์ผ์ด์
์๋ ์ ์์ด ์ ๋๋ค!!!
๊ทธ๋ฆฌ๊ณ Kiali์์ ์ด๋ฐ ์๋ฌ๋ ํ์ธํ ์ ์๋ค.
KIA0301: More than one Gateway for the same host port combination
์ฆ, ํ๋์ ingress-gateway์์ ์ด๋ค Gateway๊ฐ (host
, port
)์ ์์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉด, ๋์ค์ ์๊ธด ๋ค๋ฅธ Gateway๋ ๊ทธ ์์ ์ฌ์ฉํ์ง ๋ชปํ๋ค!
์ด ๊ฒฝ์ฐ ํด๊ฒฐํ๋ ค๋ฉด,
- ๋ค๋ฅธ ingress-gateway๋ฅผ ์ฌ์ฉํ๊ธฐ
- ingress-gateway์ ๋ค๋ฅธ containerPort ์ฌ์ฉํ๊ธฐ (ex:
9443
)
์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค.
Ingress๋ก ํน์ host ์ฃผ์๋ก ๋ค์ด์ค๋ ํธ๋ํฝ ํธ๋ค๋งํ๊ธฐ
์ฐ๋ฆฌ๊ฐ Gateway
๋ฆฌ์์ค๋ฅผ ์ฒ์ ๋ง๋ค ๋, ์๋์ ๊ฐ์ด hosts
๋ฅผ ์์ผ๋์นด๋ "*"
๋ก ์ค์ ํ์๋ค.
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
servers:
- ...
hosts:
- "*" # ์์ผ๋์นด๋!
๊ทธ๋ฐ๋ฐ ์๊ธฐ์ ํน์ host ์ฃผ์๋ฅผ ๋ฃ์ด์ ํด๋น ์ฃผ์๋ก๋ง ์ค๋ ํธ๋ํฝ์ ๋ฐ์ ์๋ ์๋ค. ์๋์ ๊ฐ์ด ๋ง์ด๋ค!
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
servers:
- ...
hosts:
- "mybookinfo.com" # host๋ฅผ ๋ช
์ํ๋ค!
์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ, mybookinfo.com
๋ผ๋ ์ฃผ์๋ก ๋ค์ด์จ ํธ๋ํฝ๋ง Gateway
๋ฆฌ์์ค๊ฐ ํธ๋ค๋งํ๊ฒ ๋๋ค!
๋ณธ์ธ์ ๋ก์ปฌ ๋งฅ๋ถ์์ Rancher Desktop์ผ๋ก K8s ํด๋ฌ์คํฐ๋ฅผ ๋๋ ค ์คํํ๊ณ ์๋๋ฐ, ์ด๋ ๊ฒ Gateway
๋ฆฌ์์ค์ Host๋ฅผ ๋ช
์ํ๊ฒ ๋๋ฉด, curl
๋ช
๋ น์ด์ -HHost
์์ฑ์ ๋ ๋ฃ์ด์ค์ผ ํ๋ค. (--header "Host: ..."
๋ก ๋ฃ์ด์ค๋ ๋๋ค!)
# https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/#using-node-ports-of-the-ingress-gateway-service
$ export INGRESS_NS=istio-system
$ export INGRESS_NAME=istio-ingressgateway
$ export INGRESS_HOST="192.168.64.2"
# ์ฑ๊ณต!
$ curl -s -I --header "Host:mybookinfo.com" "http://$INGRESS_HOST/productpage"
HTTP/1.1 200 OK
server: istio-envoy
# ์คํจ...
$ curl -s -I "http://$INGRESS_HOST/productpage"
HTTP/1.1 404 Not Found
๋ก์ปฌ ๋งฅ๋ถ์ด๋ผ Internal IP๊ฐ ๋ถ์ด์ Host๊ฐ ์๊ธฐ ๋๋ฌธ์ Host
ํค๋๊ฐ ๊ฐ์ ๋ฃ์ด์ ์ฐํํ๋ ๋ฐฉ๋ฒ์ ์ผ๋ค.
ํ๋์ Ingress๊ฐ ์ฌ๋ฌ Host๋ก ๋ค์ด์ค๋ ํธ๋ํฝ ๋ฐ๊ธฐ
Gateway
์ host๋ฅผ ์ง์ ํ ์ ์๋ค๋ ์ฌ์ค์ ํ๋์ Ingress๋ก ์ฌ๋ฌ ์๋น์ค๋ฅผ ๋
ธ์ถํ ์ ์๋ค๋ ๊ฑธ ๋งํ๊ธฐ๋ ํ๋ค!! ๋ฐฉ๊ธ mybookinfo.com
์ ์ํด ๋ง๋ค์๋ Gateway
, VirtualService
๋ ๊ทธ๋๋ก ๋๊ณ , helloworld ์ํฌ๋ก๋๋ฅผ ๋
ธ์ถํ๊ธฐ ์ํ ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐ๋ก ๋ง๋ค์ด ๋์๋ณด์.
๊ทธ๋ฌ๊ณ ์์ฒญ์ ๋ณด๋ด๋ณด๋ฉด
$ curl -s --header "Host:mybookinfo.com" "http://$INGRESS_HOST/productpage"
# ...bookinfo web html...
$ curl -s --header "Host:myhelloworld.com" "http://$INGRESS_HOST/hello"
Hello version: v2, instance: helloworld-v2-77f98b76b-zq5ch
์๋ ๊ฒ Host ์ ๋ณด์ ๋ฐ๋ผ์ ์๋ก ๋ค๋ฅธ ์ํฌ๋ก๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ ์๋ค!! โ๏ธ
egress-gateway๋ฅผ ingress ์ฉ๋๋ก ์ฌ์ฉํ ์ ์์๊น?
๋ฟ์๋น ์?? ์ด ๋ฌด์จ ๋ณํ์ ์ธ(?) ์๊ฐ์ธ๊ฐ ใ ใ ๋๊ฐ๋(egress) ๊ณณ์ผ๋ก ๋ค์ด์ฌ(ingress) ์ ์์๊น? ๋ญ ์ด๋ฐ ์๊ฐ์ธ๊ฐ ใ ใ
์ผ๋จ ๋ต์ โ๋ถ๊ฐ๋ฅโ์ด๋ค!! โ
๊ทธ ์ด์ ๋ Egress GW ๋ฆฌ์์ค๋ K8s Service๊ฐ LoadBalancer
ํ์
์ด ์๋๋ผ ClusterIP
์ด๊ธฐ ๋๋ฌธ์ด๋ค!!
์๊ฐํด๋ณด๋ฉด, ์๋๋ ํด๋ฌ์คํฐ ๋ฐ์ผ๋ก ๋๊ฐ๋ ๊ฑด ํ ์ ์๋๋ฐ, ๊ทธ๊ฑธ Egress GW๋ผ๋ ์ด๋ฆ์ผ๋ก ํธ๋ํฝ์ ์ ์ดํ๋ ค๋ ๊ฒ ๋ฟ์ด๋ค. ๊ทธ๋์ Egress GW๋ ClusterIP
๋ฅผ ์ฌ์ฉํด๋ ์ถฉ๋ถํ๋ค!!
๋งบ์๋ง
๋๋์ด Istio์ Ingress Gateway์ Gateway
๋ฆฌ์์ค๋ ์ญ ์ดํด๋ดค๋ค!! ์ด๊ฒ ๋๋ค โGatewayโ๋ผ๋ ์๋ฉ์ ์ฐ๋๊น Istio ์ฒ์ ๊ณต๋ถํ ๋ ์ง์ง ํท๊ฐ๋ฆฌ๊ฒ ๋ง๋ค์๋ค O=(โ-โQ)
๊ฒ๋ค๊ฐ Ingress Gateway๋ K8s Pod์ด๋ผ๋ ์๋๋ฐ, Gateway
๋ฆฌ์์ค๋ Pod๋ ์์งโฆ ๊ฒฐ๊ตญ VirtualService
, DestinationRule
, Gateway
๋ชจ๋ Istio๊ฐ Envoy Proxying ํ ๋ ์ฌ์ฉํ๋ Config ๋ฆฌ์์ค๋ผ๋ ๊ฑธ ์๊ธฐ ์ ๊น์ง ์ ๋ง ํท๊ฐ๋ ธ๋ค.
์! ์ด์ ๋ฐ๋ก ์์์ ๋ดค๋ โEgress Gatewayโ๋ฅผ ์ดํด๋ณผ ์ฐจ๋ก๋ค!! ๊ทธ๋ผ ์๋ ~~