- Aiden's Lab แแ ฒแแ ณแ แ ฆแแ ฅ
- Posts
- ๐ญKubernetes แแ ตแแ ณแผแแ ณแฏ แแ ฆแแ ขแ แ ฉ แแ ตแจแแ ตแแ ฉ แแ ตแแแ กแแ งแซ minikubeแ แ ฉ! - minikube แแ ชแซแแ งแผแแ ฆแแ ฅ แแ กแ แ กแแ ขแแ ฉแแ ณแซ Kubernetes Ingress แแ ตแฏแแ ณแธ
๐ญKubernetes แแ ตแแ ณแผแแ ณแฏ แแ ฆแแ ขแ แ ฉ แแ ตแจแแ ตแแ ฉ แแ ตแแแ กแแ งแซ minikubeแ แ ฉ! - minikube แแ ชแซแแ งแผแแ ฆแแ ฅ แแ กแ แ กแแ ขแแ ฉแแ ณแซ Kubernetes Ingress แแ ตแฏแแ ณแธ
Kubernetesแแ ด Ingress แแ ตแแ ณแผแแ ณแฏ minikube แแ ชแซแแ งแผแแ ฆแแ ฅ แแ ตแฏแแ ณแธแแ กแแ ฉ แแ ฆแแ ณแแ ณแแ กแแ ณแซ แแ กแแ ตแแ ณแ แ ณแฏ แแ ฆแแ ฉแผแแ กแธแแ ตแแ ก.
์๋ ํ์ธ์, Aidenโs Lab ๋ด์ค๋ ํฐ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ง๋ ๊ธ์์ minikube์ ๋ํด ์ดํด๋ดค์ต๋๋ค.
minikube๋ฅผ ์ ์จ์ผ ํ๋์ง, minikube๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ํด์ผ ํ ์ , ๊ทธ๋ฆฌ๊ณ minikube๋ฅผ ์ง์ ์ค์นํ๋ ๊ฒ๊น์ง ๊ฐ์ด ํด๋ดค๋๋ฐ์.
minikube๋ฅผ ์ค์น๋ง ํ๊ณ ๋๋ด๊ธฐ๋ ๋๋ฌด ์์ฝ์ฃ ? ๊ทธ๋์ ์ด๋ฒ์ minikube๋ก ์์ฑํ Kubernetes ํด๋ฌ์คํฐ ์์์ Ingress๋ฅผ ํ์ฉํ Nginx ์ฑ ๋ฐฐํฌ ๋ฐ ๋ ธ์ถ ์ค์ต์ ์งํํด๋ณด๋ ค ํฉ๋๋ค.
์ด๋ฒ ๊ฐ์ด๋๋ฅผ ํตํด Kubernetes์ ํต์ฌ ๊ธฐ๋ฅ์ด์ ์์ฆ ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ Ingress๋ฅผ ๋ก์ปฌ minikube ํด๋ฌ์คํฐ ์์์ ์ง์ ์ฌ์ฉํด๋ณด๋ฉฐ ์๋ ๋ฐฉ์๊น์ง ์ตํ์ค ์ ์์ผ์ค ๊ฒ๋๋ค.
์ด๋ ต์ง ์๊ฒ ๋ฐ๋ผํ์ค ์ ์๋๋ก ์ต๋ํ ์ง๊ด์ ์ธ ๊ตฌ์ฑ์ผ๋ก ์ค๋นํ ๊ฐ์ด๋์ด๋, ๊ผญ ํ์ธํด๋ณด์ธ์!
๐minikube์์ Ingress ํ์ฉํ Nginx ์ฑ ๋ฐฐํฌ ๊ฐ์ด๋
๋จผ์ minikube ํด๋ฌ์คํฐ ์์์ ๊ธฐ๋ณธ์ ์ด์ง๋ง ํ์๋ก ์์์ผ ํ Ingress ์ค์ต์ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
"Ingress์ ๋ํด ๋ง์ด๋ ๋ค์ด๋ดค์ง๋ง ์์ง ์ ์ฐ์ด๊ณ ์ธ์ ์จ์ผ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ด์..."
๊ทธ๋ ๋ค๋ฉด ๋์ฑ ์ข์ต๋๋ค! ์ ๊ฐ minikube ํด๋ฌ์คํฐ ์์์ ๋ฐฐํฌํ ๊ฐ๋จํ ์ฑ์ Ingress๋ก ๋ ธ์ถํ๋ฉด์ Ingress๊ฐ ์ด๋จ ๋ ์ฐ์ด๋์ง๋ ์ปดํฉํธํ๊ฒ ์ค๋ช ๋๋ฆด๊ฒ์.
Ingress๋ ์ธ๋ถ์์ ๋ค์ด์ค๋ HTTP ๋๋ HTTPS ์์ฒญ์ ์์ ํ ๋ค์, ๋ฏธ๋ฆฌ ์ ์๋ ๋ผ์ฐํ ๊ท์น์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ํด๋ฌ์คํฐ ๋ด๋ถ ์๋น์ค(Pod)์ ํด๋น ์์ฒญ์ ์ ๋ฌํ๋ ์ญํ ์ ์ํํฉ๋๋ค.
ํนํ Ingress๋ฅผ ์ฌ์ฉํ๋ฉด ๋จ์ผ IP ์ฃผ์์ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉด์๋ URL์ ๊ฒฝ๋ก์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ํธ๋ํฝ์ ๋ถ์ฐํ ์ ์๋๋ฐ์.
๊ฐ ์๋น์ค๋ ๊ณ ์ ํ URL ๊ฒฝ๋ก๋ฅผ ํ ๋น๋ฐ์ ๊ตฌ๋ถ๋๊ธฐ ๋๋ฌธ์, ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํ๊ณ ์ธ๋ถ ์ ๊ทผ ์ง์ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ ์ ์๋ ๊ฒ์ ๋๋ค.
minikube๋ก ์ฝ๊ฒ ์๋ฅผ ๋ค๋ฉด, minikube ํด๋ฌ์คํฐ IP์ 80 ํฌํธ๋ก ๋ค์ด์ค๋ HTTP ์์ฒญ ์ค ์๋์ ๊ฐ์ ์์ฒญ์ ๋ฏธ๋ฆฌ ์ ์๋ ๊ท์น์ ๋ฐ๋ผ ๊ฐ๊ฐ ์ ์ ํ ์๋น์ค๋ก ์ ๋ฌ๋๋ ๊ฒ์ ๋๋ค.
/app1
-> ํด๋ฌ์คํฐ ๋ด ์๋น์ค A/app2
-> ํด๋ฌ์คํฐ ๋ด ์๋น์ค B
์ฌ์ค Kubernetes์ Ingress ๋ฆฌ์์ค ์์ฒด๋ ์ธ๋ถ ์์ฒญ์ ์ด๋ป๊ฒ ๋ด๋ถ ์๋น์ค๋ก ์ฐ๊ฒฐํ ์ง์ ๋ํ '๋ผ์ฐํ ๊ท์น ์ค๋ช ์'์ ๊ฐ๊น์ต๋๋ค.
ํน์ URL ๊ฒฝ๋ก๋ก ์์ฒญ์ด ์ฌ ๊ฒฝ์ฐ ์ด๋ค ์๋น์ค๋ก ์ ๋ฌํ ์ง๋ฅผ Ingress YAML ํ์ผ์ ์ ์ธ์ ์ผ๋ก ๋ช ์ํ๊ฑฐ๋ ์.
๊ทธ๋ผ Ingress ๋ฆฌ์์ค์ ์ ์๋ ๊ท์น์ ์ฐธ๊ณ ํด์ ์ค์ ํธ๋ํฝ์ ์ ๋ฌ์ ๋๊ฐ ํ๋๊ณ ์?
๋ฐ๋ก, Ingress Controller์ ๋๋ค.
๊ทธ๋์ Kubernetes ํด๋ฌ์คํฐ์์ Ingress ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด Ingress Contoller๋ฅผ ๋ณ๋๋ก ์ค์นํ๊ณ , Ingress ๋ฆฌ์์ค๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉ ์ค์ธ minikube์์๋ ๋ค์ํ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๋์จ ํํ๋ก ์ ๊ณตํ๋๋ฐ์. Ingress Controller๋ ์ ๋์จ ํํ๋ก ์ฝ๊ฒ ์ค์น ๊ฐ๋ฅํฉ๋๋ค.
Ingress ์ค์ต์ ์ํด minikube์ Ingress ์ ๋์จ์ ๋จผ์ ์ค์นํด๋ณผ๊ฒ์.
1๏ธโฃminikube์์ Ingress ์ ๋์จ ์ค์นํ๊ธฐ
์ง๋ ๊ธ์์ ์์ฑํ๋ minikube ํด๋ฌ์คํฐ๋ฅผ minikube start
๋ช
๋ น์ด๋ก ์๋์ํจ ๋ค, minikube addons {minikube ํด๋ฌ์คํฐ ์ด๋ฆ} list
๋ช
๋ น์ด๋ก ํ์ฌ minikube์ ์ค์น๋ ์ ๋์จ๊ณผ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋์จ ๋ชฉ๋ก์ ํ์ธํด๋ด
๋๋ค.

์ด๋ฏธ์ง์ ํ์๋ ๊ฒ์ฒ๋ผ, ํ์ฌ minikube ํด๋ฌ์คํฐ์๋ Ingress ์ ๋์จ์ด ์์ง ๋นํ์ฑํ(disabled
) ์ํ์ธ๋ฐ์. ์๋ ๋ช
๋ น์ด๋ก Ingress ์ ๋์จ์ ํ์ฑํํด๋ณด๊ฒ ์ต๋๋ค.
minikube addons -p {minikube ํด๋ฌ์คํฐ ์ด๋ฆ} enable ingress
๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ฒ๋ผ Ingress ์ ๋์จ ์ค์น๊ฐ ์งํ๋ฉ๋๋ค. (์ค์นํ๋ ๋ฐ์ ์๊ฐ์ด ์ฝ๊ฐ ์์๋ ์ ์์ต๋๋ค.)

์ค์น๊ฐ ๋๋๊ณ minikube addons {minikube ํด๋ฌ์คํฐ ์ด๋ฆ} list
๋ช
๋ น์ด๋ฅผ ๋ค์ ์คํํ๋ฉด...

Ingress๊ฐ ํ์ฑํ(enabledโ )๋์๋ค๊ณ ๋จ๋ค์!
๊ทธ๋ผ ์ด์ Ingress๋ก ํธ๋ํฝ์ ๋ผ์ฐํ ํ ์๋น์ค๋ฅผ Kubernetes์ Deployment์ Service ๋ฆฌ์์ค๋ก ์์ฑํ๊ณ , ํธ๋ํฝ ๋ผ์ฐํ ๊ท์น์ ๋ช ์ํ๋ Ingress ๋ฆฌ์์ค๋ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
2๏ธโฃDeployment, Service, Ingress ๋ฆฌ์์ค ์์ฑํ๊ธฐ
์ง๊ด์ ์ธ ์ค์ต์ ์ํด, ํธ๋ํฝ์ ๋ฐ์ ๊ฐ ์๋น์ค๋ฅผ Nginx ์๋ฒ๋ก ๊ตฌ์ฑํด๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ด๋ฒ ์ค์ต์์ ๋ฐฐํฌํ ํ ์คํธ์ฉ ์๋น์ค๋ ์๋ 2๊ฐ์ง์ ๋๋ค.
user-nginx
:/user
๋ก ๋๋๋ ํธ๋ํฝ์ ๋ฐ๋ Nginx ์๋ฒproduct-nginx
:/product
๋ก ๋๋๋ ํธ๋ํฝ์ ๋ฐ๋ Nginx ์๋ฒ
๊ฐ Deployment์์ ์ ์ํด์ ๋ณผ ์ ์, user
์๋น์ค๊ฐ ์ฌ์ฉํ๋ Nginx ์ด๋ฏธ์ง ๋ฒ์ (1.23
)๊ณผ product
์๋น์ค์์ ์ฌ์ฉํ๋ Nginx ์ด๋ฏธ์ง ๋ฒ์ (1.25
)์ด ์๋ก ๋ค๋ฅด๋ค๋ ๊ฒ์
๋๋ค.
์ด๊ฑด ๋ชจ๋ ๋ฐฐํฌ๊ฐ ๋๋๊ณ ํ ์คํธํ ๋ ํธ๋ํฝ์ด ์์๋๋ก ์ ๋ฌ๋๋์ง ๋ณด๊ธฐ ์ํจ์ ๋๋ค.
๊ทธ๋ผ user-nginx
์๋น์ค๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํ Kubernetes ๋ฆฌ์์ค ๋ช
์ธ์๋ฅผ ๋จผ์ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค. (user-nginx.yaml
)
# 1. user-nginx ๋ฐฐํฌ๋ฅผ ์ํ Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: user-nginx
template:
metadata:
labels:
app: user-nginx
spec:
containers:
- name: nginx
image: nginx:1.23 # Ingress ํ
์คํธ ์ ๊ตฌ๋ถ์ ์ํด product ์๋น์ค์ ๋ค๋ฅธ ๋ฒ์ ์ฌ์ฉ
ports:
- containerPort: 80
---
# 2. user-nginx ๋ฐฐํฌ๋ฅผ ์ํ Service
apiVersion: v1
kind: Service
metadata:
name: user-nginx-service
spec:
selector:
app: user-nginx
ports:
- protocol: TCP
port: 80 # Service๊ฐ ๋
ธ์ถํ ํฌํธ
targetPort: 80 # Pod์ ์ปจํ
์ด๋ ํฌํธ
# Ingress๊ฐ ์ธ๋ถ ํธ๋ํฝ์ minikube ํด๋ฌ์คํฐ ๋ด๋ถ Service๋ก ์ ๋ฌํ๋ฏ๋ก, Service์ Type์ ClusterIP๋ก ์ง์ ํฉ๋๋ค.
# Kubernetes Service์ ๊ธฐ๋ณธ Type์ด ClusterIP์ด๊ธฐ ๋๋ฌธ์ ๋ช
์ธ์์ Type์ ๋ฐ๋ก ์ง์ ํ์ง ์์ต๋๋ค.
๋ค์์ product-nginx
์๋น์ค ๋ฐฐํฌ๋ฅผ ์ํ Kuberentes ๋ฆฌ์์ค ๋ช
์ธ์์
๋๋ค. (product-nginx.yaml
)
# 1. product-nginx ๋ฐฐํฌ๋ฅผ ์ํ Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: product-nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: product-nginx
template:
metadata:
labels:
app: product-nginx
spec:
containers:
- name: nginx
image: nginx:1.25 # Ingress ํ
์คํธ ์ ๊ตฌ๋ถ์ ์ํด user ์๋น์ค์ ๋ค๋ฅธ ๋ฒ์ ์ฌ์ฉ
ports:
- containerPort: 80
---
# 2. product-nginx ๋ฐฐํฌ๋ฅผ ์ํ Service
apiVersion: v1
kind: Service
metadata:
name: product-nginx-service
spec:
selector:
app: product-nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
๋ง์ง๋ง์ผ๋ก ํธ๋ํฝ์ ๋ผ์ฐํ
ํ Ingress ๋ฆฌ์์ค์
๋๋ค. (example-ingress.yaml
)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
# ์ฌ์ฉํ Ingress์ Class๋ช
(minikube์ Ingress ์ ๋์จ ์ฌ์ฉ ์ 'nginx'๋ก ์ง์ )
ingressClassName: nginx
rules:
- http:
paths:
- path: /user # ๋ผ์ฐํ
๊ท์น์ด ์ ์ฉ๋ ๊ฒฝ๋ก
pathType: Prefix # URI๊ฐ path ๊ฐ์ผ๋ก ์์(Prefix)ํ๋ฉด ๋ผ์ฐํ
ํ๋๋ก ์ค์
backend:
service:
name: user-nginx-service # user-nginx์ Service ์ด๋ฆ
port:
number: 80 # ํด๋น Service๊ฐ ๋
ธ์ถ ์ค์ธ ํฌํธ ๋ฒํธ
- path: /product
pathType: Prefix
backend:
service:
name: product-nginx-service # product-nginx์ Service ์ด๋ฆ
port:
number: 80
์ ๋ ์๋์ ๊ฐ์ด ์์์ ํด๋(ingress-test
)๋ฅผ ์๋ก ๋ง๋ ๋ค์ ๊ฐ ๋ช
์ธ์(Manifest)๋ฅผ ์์ฑํ์ต๋๋ค.

Manifest๋ฅผ ๋ชจ๋ ์์ฑํ๋ค๋ฉด, ์ด์ minikube ํด๋ฌ์คํฐ์ ๋ฐฐํฌํด๋ณผ ์ฐจ๋ก์ ๋๋ค.
3๏ธโฃminikube ํด๋ฌ์คํฐ์ ์์ฑํ Kubernetes ๋ฆฌ์์ค ๋ฐฐํฌํ๊ธฐ
Kubernetes ํด๋ฌ์คํฐ์ ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ ๋ kubectl์ ์ฌ์ฉํ์ฃ . minikube ํด๋ฌ์คํฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
ํนํ kubectl apply -f {ํ์ผ๋ช
๋๋ ํด๋๋ช
}
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด, ์ฌ๋ฌ Manifest๋ ํ ๋ฒ์ ๋ฐฐํฌ ๊ฐ๋ฅํ๋ฐ์. ์ ๊ฒฝ์ฐ์ ์๋์ ๊ฐ์ด Manifest๊ฐ ํฌํจ๋ ํด๋๋ฅผ ์ง์ ํ๋ ๋ช
๋ น์ด๋ก ์ค์ต์ ํ์ํ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
kubectl apply -f ingress-test
์ค์ ํฐ๋ฏธ๋์์ ingress-test
ํด๋๊ฐ ์๋ ๊ฒฝ๋ก๋ก ์ด๋ํ ๋ค์, ํด๋น ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ด Manifest์์ ์ ์ํ ๋ชจ๋ Kubernetes ๋ฆฌ์์ค๊ฐ ๋ฐฐํฌ๋ฉ๋๋ค.

์ฐ๋ฆฌ๊ฐ Manifest๋ฅผ ์์ฑํ ๋ Namespace๋ฅผ ๋ฐ๋ก ์ง์ ํ์ง ์์๊ธฐ ๋๋ฌธ์, default
Namespace์ ์ ๋ฆฌ์์ค๊ฐ ๋ชจ๋ ๋ฐฐํฌ๋์์ต๋๋ค. ๊ทธ๋์ ๋ฐฐํฌ๋ ๋ฆฌ์์ค๋ค์ kubectl get all
๋ช
๋ น์ด๋ก ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.

Ingress ์ค์ต์ ํ์ํ ๋ฆฌ์์ค๊ฐ ๋ชจ๋ ๋ฐฐํฌ๋์์ผ๋, ์ด์ ์ค์ ๋ก ํธ๋ํฝ ๋ผ์ฐํ ์ด ์ ๋๋์ง ํ ์คํธํด๋ณด๊ฒ ์ต๋๋ค.
4๏ธโฃIngress๋ก ํธ๋ํฝ ๋ผ์ฐํ ๋์ ํ ์คํธํ๊ธฐ
์ฐ๋ฆฌ๋ ์ง๊ธ๊น์ง Ingress Controller ์ ๋์จ์ ํ์ฑํํ๊ณ , Ingress ๋ฆฌ์์ค๋ฅผ ๋น๋กฏํด ํ ์คํธ์ ํ์ํ ๋ชจ๋ Kubernetes ๋ฆฌ์์ค๋ฅผ ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ์ต๋๋ค.
Ingress๋ ํด๋ฌ์คํฐ๋ก ์ ๊ทผํ๋ ์ธ๋ถ ํธ๋ํฝ์ ๋ผ์ฐํ ์ ๋ด๋นํ๋ค๊ณ ํ์์ฃ . ์ฌ๊ธฐ์ ์ด์ผ๊ธฐํ๋ ์ธ๋ถ ํธ๋ํฝ์ minikube ํด๋ฌ์คํฐ์ IP๋ฅผ ํตํด ํด๋ฌ์คํฐ๋ก ์ ๊ทผํ๋ HTTP/HTTPS ์์ฒญ์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ์ค์ต ์ค์ธ minikube ํด๋ฌ์คํฐ์ IP๋ฅผ ์์์ผ Ingress ํ ์คํธ๋ ํ ์ ์์ต๋๋ค. minikube ํด๋ฌ์คํฐ์ IP๋ฅผ ํ์ธํ๋ ๋ช ๋ น์ด๋ ์๋์ ๊ฐ์ต๋๋ค.
minikube -p {minikube ํด๋ฌ์คํฐ ์ด๋ฆ} ip
ํฐ๋ฏธ๋์ ํด๋น ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ฒ๋ผ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉ ์ค์ธ minikube ํด๋ฌ์คํฐ์ IP๋ฅผ ์ ์ ์์ต๋๋ค.

๊ฐ๋จํ์ฃ ? ๊ทธ๋ผ ์ด์ ํฐ๋ฏธ๋์์ minikube ํด๋ฌ์คํฐ IP์ ์ฐ๋ฆฌ๊ฐ Ingress ๋ฆฌ์์ค์์ ์ ์ํ path๋ฅผ ํฉ์น URL์ ์ ๊ทผํด๋ณด๊ฒ ์ต๋๋ค.
curl ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ URL์ ์ ๊ทผํ๋ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋ฐ์. ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ง ์๋น์ค์ ํธ๋ํฝ์ ๋ณด๋ด์ ํ ์คํธํ๊ธฐ ๋๋ฌธ์ ์๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ๊ฐ ์ ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค.
curl http://{minikube_ip}/user
curl http://{minikube_ip}/product


์ฐ๋ฆฌ๊ฐ ์ฃผ๋ชฉํด์ผ ํ ๊ฒ์ 404 Not Found
์๋ฌ ์๋์ ๊ฐ Nginx์ ๋ฒ์ ์
๋๋ค.
์๋์ฒ๋ผ ๊ฐ Deployment์์ ๋ค๋ฅด๊ฒ ๋ช ์ํ Nginx ๋ฒ์ ์ด ํ์๋๊ณ ์์ฃ ?
user
์๋น์ค์ Nginx ์ด๋ฏธ์ง ๋ฒ์ :1.23
product
์๋น์ค์ Nginx ์ด๋ฏธ์ง ๋ฒ์ :1.25
์์ ๊ฐ์ ๋ฉ์์ง๊ฐ ํ์๋์๋ค๋ฉด, ๋ณธ ์ค์ต์ ์๋๋๋ก Ingress Controller๊ฐ URI์ ๋ฐ๋ผ ์ธ๋ถ ํธ๋ํฝ์ ๊ท์น์ ๋ง๋ Service๋ก ์ ๋ฌํ์ฌ ๊ฐ Nginx ์๋ฒ๊ฐ ํด๋น ์์ฒญ์ ๋ฐ์ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ฐ Deployment์ ์ฌ์ฉํ ๊ธฐ๋ณธ Nginx ์๋ฒ ๋ด์๋ ๊ฐ๊ฐ /user
๊ฒฝ๋ก์ /product
๊ฒฝ๋ก์ ๋ํ ํ์ด์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ 404 Not Found
์๋ฌ๊ฐ ํ์๋ ๊ฒ์ธ๋ฐ, ์ปดํฉํธํ๋ฉด์๋ Ingress์ ํธ๋ํฝ ๋ผ์ฐํ
๊ธฐ๋ฅ์ ์ง๊ด์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ์ค์ต์ ์ํด ๊ฐ ํ์ด์ง๋ ๋ง๋ค์ง ์์๊ฑฐ๋ ์.
๐ญ๋ง๋ฌด๋ฆฌ
์ด๋ฒ ์ค์ต์ผ๋ก ์ฐ๋ฆฌ๋ minikube ํด๋ฌ์คํฐ ์์์ Ingress๋ฅผ ํตํด ์ธ๋ถ ํธ๋ํฝ์ ๋ผ์ฐํ ํด๋ดค๋๋ฐ์.
์ค์ต์ ์งํํ๋ฉด์ ์ฌ๋ฌ๋ถ๋ค๋ ์์ฐ์ค๋ Ingress๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ Kubernetes ํด๋ฌ์คํฐ ์์์ Ingress๋ก ํธ๋ํฝ์ ๋ผ์ฐํ ํ๋ ๋ฐฉ๋ฒ์ ์ตํ์ จ์ ๊ฒ๋๋ค.
์ด๋ ๊ฒ minikube๋ฅผ ํ์ฉํ๋ฉด ๋ก์ปฌ ํ๊ฒฝ์์๋ ์์ฝ๊ฒ Kubernetes ๊ธฐ๋ฅ์ ํ ์คํธํ๊ณ ์ค์ตํ ์ ์๋ต๋๋ค.
๋ค์ ๊ธ์์๋ minikube ํด๋ฌ์คํฐ ์์์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํด์ ์ฌ์ฉํ๋ ์ค์ต์ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
์๋ง์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํด์ด ์์ง๋ง, ๊ทธ ์ค์์๋ Kubernetes ๋ฆฌ์์ค๋ฅผ ์ฒด๊ณ์ ์ด๊ณ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ Kustomize๋ฅผ minikube ํด๋ฌ์คํฐ ์์์ ์ฌ์ฉํด๋ณผ ์์ ์ธ๋ฐ์.
๊ทธ๋ฌ๋ ๋ค์ ๊ธ๋ ๊ธฐ๋ํด ์ฃผ์ธ์!
โจ์ด๋ฒ ๋ด์ค๋ ํฐ๋ ์ด๋ ์ จ๋์?
์ด๋ฒ ๊ธ์์ ๋ค๋ฃฌ ์ฃผ์ ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ๋์ง ์๋ ค์ฃผ์ธ์! ๋ด์ค๋ ํฐ๋ฅผ ๋ ๋์ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ํ๊ธฐ ์ํด ์๋ ํผ์์ ์งง์ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ์์ด์.
๐ ํผ๋๋ฐฑ ๋ณด๋ด๊ธฐ (1~2๋ถ ์์)
์ฌ๋ฌ๋ถ๋ค์ ์์คํ ์๊ฒฌ์ Aidenโs Lab ๋ด์ค๋ ํฐ์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค!
๐ญAidenโs Lab์์ ๋ ๋ง์ ์ํฐํด์ ๋ง๋๋ณด์ธ์
๋ฐํ๋ ๋ด์ค๋ ํฐ๋ฅผ ์์นด์ด๋นํ๊ณ ๋ค์ํ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ๊ธฐ์ ๋ธ๋ก๊ทธ๋ฅผ ์ด์ ์ค์ ๋๋ค.