Istio (์ดํ ์ด์คํฐ์ค) ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ํ์ ์ธ ์๋น์ค ๋ฉ์ฌ ์์ค์ ๋๋ค. ๋ฟ๋ง ์๋๋ผ ์ด์คํฐ์ค๋ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ๋ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ Nginx ์ ๊ฐ์ ๋ณ๋์ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ๊ฐ ํ์ ์์ด์.
์ด๋ฒ ๊ธ์์ Istio ์ ํต์ฌ ์์์ธ IngressGateway ์ TLS ๋ฅผ ์ ์ฉ์์ผ ๋ณด๊ณ ์ ํฉ๋๋ค!
Istio ๋ฅผ ์ค๋ช
ํ๋ ๊ธ์ด ์๋๊ธฐ ๋๋ฌธ์ Gateway, VirtualService ์ ๊ฐ์ ๋ฆฌ์์ค์ ๋ํ ์ค๋ช
์ ํ์ง ์๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ๋ ์ธ ๋๋์ฝ๋~
์ค์ต ํ๊ฒฝ์ ์๋์ ๊ฐ์์.
- ์ฟ ๋ฒ๋คํฐ์ค v1.26.2
- ์ด์คํฐ์ค v1.17.2
๊ณต์ ๋ฌธ์์ ๋์์๋ ์์ ๋ ๋ถํ์ํ ๋ด์ฉ์ด ๋ง์์ ๋ฑ ํ์ํ ๋ถ๋ถ๋ง ์ค์ตํ๋ ค๊ณ ํฉ๋๋ค.
๋ง์ฝ ๋ ์์ธํ ์ ๋ณด๊ฐ ๊ถ๊ธํ๋ค๋ฉด ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
TLS ๋ฅผ ์ ์ฉ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋จผ์ ๊ฐ์ธํค(key)์ ์ธ์ฆ์(crt) ๋ฅผ ์์ฑํด์ค์๋ค.
# 2048 ๋นํธ์ RSA ํค ์์ฑ
openssl genrsa -out tls.key 2048
# ์์ฑํ key ๊ฐ์ง๊ณ crt ์์ฑ
openssl req -new -x509 -sha256 -key tls.key -out tls.crt -subj "/CN=kingbj0429.com/O=kingbj0429 organization"
Organization ์ ์๋ฌด๊ฑฐ๋ ํด์ฃผ์ ๋ ์๊ด ์์ง๋ง ๋ฐ๋์ CN(Common Name) ์ ์ฌ์ฉํ ๋๋ฉ์ธ์ ๋ช ์ํฉ๋๋ค.
๊ฐ์ธํค์ ์ธ์ฆ์๋ฅผ ์์ฑํ์ต๋๋ค.
์ ์์ ์ผ๋ก ์ ๊ทผํด๋ณด๋ฉด, ์ฐ์ ๊ฐ์ธํค์ CSR (Certificate Sigining Resquest) ๋ฅผ ์์ฑํ ํ, CA ๋ฅผ ํตํด์ CRT ๋ฅผ ๋ฐ์์ผ ํฉ๋๋ค.
Cert-Manager ์ด์ฉํ๋ ํธ์ด ํจ์ฌ ์์ํฉ๋๋ค.
์ด์ ์์ฑํ TLS ๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค์ ์ํฌ๋ฆฟ ๋ฆฌ์์ค๋ก ์์ฑํฉ๋๋ค.
์ฐธ๊ณ ๋ก ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค์ ๋ํ TLS ๋ ๋ชจ๋ ์ํฌ๋ฆฟ์ผ๋ก ๊ด๋ฆฌ๋ฉ๋๋ค. ์ฌ๊ธฐ ์ฐธ๊ณ
k create -n istio-system secret tls kingbj0429-tls --key tls.key --cert tls.crt
์ํฌ๋ฆฟ์ CLI ๋ช ๋ น์ด๋ก ์์ฑํด์ผ ์ธ์ฝ๋ฉ์ผ๋ก ์ธํ ์ค์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
๋ํ ๋ฐ๋์ istio-system ๋ค์์คํ์ด์ค์ ์์ฑํด์ฃผ์ธ์.
์ค๋น๋ ๋ค ๋๋ฌ์ต๋๋ค. ๊ทธ๋ผ ์ด์ ์์ ๋ฆฌ์์ค๋ฅผ ์์ฑํด๋ณด์ฃ .
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 443
name: https
protocol: HTTPS
tls:
mode: SIMPLE
credentialName: kingbj0429-tls
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*"
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /productpage
- uri:
prefix: /static
- uri:
exact: /login
- uri:
exact: /logout
- uri:
prefix: /api/v1/products
route:
- destination:
host: productpage
port:
number: 9080
.spec.servers[].tls ๋ฅผ ์ ๊น ์ค๋ช ํ์๋ฉด mode ๋ ๋ฐ๋์ SIMPLE ๋ก ํ๊ณ , credentialName ์ ๋ฐฉ๊ธ ์ ์์ฑํ ์ํฌ๋ฆฟ์ ์ด๋ฆ์ผ๋ก ํด์ค๋๋ค. ์ํฌ๋ฆฟ์ istio-system ๋ค์์คํ์ด์ค์ ์ ์ฉํ์ง๋ง ์์ ๋ฆฌ์์ค์ ๋ค์์คํ์ด์ค๋ ์๋ฌด๊ณณ์ด๋ ์๊ด์์ด์.
Gateway ์ ๋ํ ์ค๋ช ์ ์ฌ๊ธฐ ์ฐธ๊ณ
VirtualService ์ ๋ํ ์ค๋ช ์ ์ฌ๊ธฐ ์ฐธ๊ณ
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ ์์ ๋ฅผ ์ฟ ๋ฒ๋คํฐ์ค์ ๋ฐฐํฌํด์ค๋๋ค. ์ด์คํฐ์ค์์ ์ ๊ณตํด์ฃผ๋ ์์ ํ์ผ๋ค์ด๋ฉฐ, TLS ์ฐ๊ฒฐ์ ๋ํด ํ ์คํธํ ๋ ํ์ํ ํ๋์ ๋๋ค.
๋ฆฌ์์ค ์์ฑ๋ ๋ชจ๋ ๋๋ฌ์ต๋๋ค. ๊ทธ๋ผ ์ด์ TLS ๊ฐ ์ ์ ์ฉ๋์๋ ์ง ํ์ธํด๋ณด์ฃ .
์ฐ์ ingressgateway ์ ํฌํธ๋ฅผ ํ์ธํด๋ด ๋๋ค.
k get svc -n istio-system
์๋ง istio-ingressgateway ๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์์ฑํ๋ค๋ฉด TYPE ์ด LoadBalancer ์ผํ ๋ฐ ์ ๋ ๋ก์ปฌ์์ ์งํ๋๊ธฐ ๋๋ฌธ์ NodePort ๋ก ๋ฐ๊ฟ์ฃผ์๊ณ , ๊ฐ๊ฐ์ ํ๋กํ ์ฝ์ ๋ง๋ ํ๊ฒํฌํธ๋ค์ด ์ง์ ๋์ด ์์ต๋๋ค.
TLS ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ 443:30407 ๋ก ์ ๊ทผํ ๊ฒ์ ๋๋ค.
์ ๊ฐ์ ๊ฒฝ์ฐ ingressgateway ํ๋๋ k8s-worker-1 ์ ๋ฐฐํฌ๋์ด ์๊ณ , k8s-worker-1 ์ ip ๋ 192.168.0.127 ์ ๋๋ค.
๋ฐ๋ผ์ https://192.168.0.127:30407 ๋ก ์ ๊ทผํ๋ฉด ๋ ๊ฑฐ ๊ฐ์์!
๋งค๋ฒ ์ฐ๊ธฐ ๊ท์ฐฎ์ผ๋ ํ๊ฒฝ๋ณ์๋ก ๋ฑ๋กํด์ฃผ์์ด์.
export INGRESS_HOST=192.168.0.127 # istio-ingressgateway ๊ฐ ๋์ด์ ธ ์๋ ๋
ธ๋์ ip
export SECURE_INGRESS_PORT=30407
๊ทธ๋ผ ์ด์ ์์ฒญ์ ๋ณด๋ด๋ณด์ฃ .
curl https://kingbj0429.com:$SECURE_INGRESS_PORT/api/v1/products -k -v --resolve kingbj0429.com:$SECURE_INGRESS_PORT:$INGRESS_HOST
curl ๋ช ๋ น์ด ์ต์ ์ ๋ํด ์ ๊น ์ค๋ช ํ๋ฉด,
-k : ์ธ์ฆ์๊ฐ ์ง์ง์ธ์ง, ๊ฐ์ง์ธ์ง ์ ๊ฒฝ ์์
-v : verbose ๋ก ๋ํ ์ผํ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค
--resolve : kingbj0429.com:$SECURE_INGRESS_PORT ๋ก ์ค๋ ๋๋ฉ์ธ ์ง์๋ $INGRESS_HOST ๋ก ํด์ํ ๊ฑฐ์
์ฑ๊ณต์ ์ผ๋ก ์๋ต์ด ์์ต๋๋ค.
ํ์ง๋ง ์ง๊ธ์ผ๋ก๋ ๋ญ๊ฐ ์ด์ง ์์ฌ์์. ์น ๋ธ๋ผ์ฐ์ ์์ ์ ๊ทผํ๋ ค๋ฉด ์๋์ ๊ฐ์ด IP ๋ก ์ ๊ทผํด์ผํด์. ๋๋ฉ์ธ์ด ๊ฐ์ง์ด๋๊น์.
IP ๋ฅผ ์ธ์ฐ๊ธฐ ๊ท์ฐฎ์ผ๋ ๋งฅ์ hosts ๋ฅผ ์ ๊น ์๋ด์ค๊ฒ์.
sudo vim /etc/hosts
hosts ํ์ผ์ ์์ ํ๊ณ DNS ์ ์บ์ฑ์ ์ง์๋๋ค.
sudo killall -HUP mDNSResponder
๊ทธ๋ผ ์ด์ ๋ธ๋ผ์ฐ์ ์์๋ ๋๋ฉ์ธ์ผ๋ก ์ ๊ทผํ ์ ์์ด์!
์ธ์ฆ์๊ฐ ๊ฐ์ง์ด๊ธฐ ๋๋ฌธ์ ์ฃผ์ ์ํจ์ ์์ด์ง์ง ์์ง๋ง ์ค์ ์ธ์ฆ๋ ๋๋ฉ์ธ์ ๊ตฌ๋งคํ๋ฉด ์ ๋์ํ ๊ฒ ๊ฐ๋ค์!
์ค๋์ Istio Ingressgateway ์ TLS ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ดค์ต๋๋ค.
๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง!
'DevOps > Istio' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Istio] ksniff ๋ฅผ ์ด์ฉํด์ ํจํท์ ์ผํํ์ (17) | 2025.01.04 |
---|---|
[Istio] ์ฟ! ์ฐ๋ฆฌ๋ง์ ๋น๋ฐ์ด์ผ - mTLS (๊ฒ์ฆํธ) (9) | 2023.08.17 |
[Istio] ์ฟ! ์ฐ๋ฆฌ๋ง์ ๋น๋ฐ์ด์ผ - mTLS (ํ์ธํธ) (0) | 2023.07.02 |
[Istio] Istio Ingress ์ ALB ๋ฅผ ๋ถ์ฌ๋ณด์ ! (0) | 2023.02.12 |