์ด ๊ธ์์ ๋ค๋ฃจ๋ ๊ฒ
Kubernetes์ ๊ฐ์ฅ ๊ธฐ๋ณธ ๋จ์์ธ Deployment์ Service๋ฅผ ์ฌ์ฉํด Nginx๋ฅผ ๋ฐฐํฌํ๊ณ ์ธ๋ถ์์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
์ ์์ง์
- ์ด ๊ธ๋ถํฐ ์์ ๊ฐ๋ฅํฉ๋๋ค. Docker๊ฐ ์ค์น๋์ด ์์ผ๋ฉด ๋ฉ๋๋ค.
์ด ๋จ๊ณ์์ ํด๊ฒฐํ๋ ค๋ ๋ฌธ์
์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ Kubernetes ์์ ๋ฐฐํฌํ๋ ค๋ฉด, Pod๋ฅผ ๊ด๋ฆฌํ๋ Deployment์ ๋คํธ์ํฌ ์ ๊ทผ์ ์ ๊ณตํ๋ Service์ ๊ด๊ณ๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค. ์ด ๊ธ์์๋ Minikube ๋ก์ปฌ ํด๋ฌ์คํฐ์์ Nginx๋ฅผ ๋ฐฐํฌํ๊ณ kubectl ๋ช ๋ น์ด๋ฅผ ์ฒด๋ํฉ๋๋ค.
์ค์ต ์ฝ๋: GitHub (Deployment_and_Service)
๐งญ ์ ์ฒด ํ๋ฆ ์์ฝ
โ Minikube ์ค์น ๋ฐ ํด๋ฌ์คํฐ ์์
โก kubectl ๋ช
๋ น์ด ์ค์ต
โข Nginx Deployment + Service ๋ฐฐํฌ
โฃ ์ํ ํ์ธ / ํ๋ ์ ์ / ๋ก๊ทธ ํ์ธ / ์ํ ํ์ฅ
โค ๋ธ๋ก๊ทธ ์ ๋ฆฌ
โ๏ธ 1๋จ๊ณ โ Minikube & kubectl ์ค์น
Docker ์ค์น & ๊ถํ ๋ถ์ฌ
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker $USER
์ค์น ํ logout โ login ๋๋
newgrp docker์คํ ํ์
Minikube & kubectl ์ค์น
# Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# kubectl (v1.30 ๊ธฐ์ค)
curl -LO "https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
ํด๋ฌ์คํฐ ์์ & ํ์ธ
minikube start --driver=docker
kubectl get nodes
๐งฑ 2๋จ๊ณ โ Nginx ๋ฐฐํฌ ํ์ผ ์์ฑ
nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25.3
ports:
- containerPort: 80
nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30080
๐งช 3๋จ๊ณ โ ๋ฐฐํฌ ๋ฐ ํ์ธ
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
kubectl get all
๐ 4๋จ๊ณ โ ํ๋ ํ์ธ & ๋ช ๋ น์ด ์ค์ต
kubectl describe pod <pod-name>
kubectl logs <pod-name>
kubectl exec -it <pod-name> -- bash
kubectl scale deployment nginx-deployment --replicas=4
๐ 5๋จ๊ณ โ Nginx ์ ์ ํ ์คํธ
# ๋ธ๋ผ์ฐ์ ์ด๊ธฐ
minikube service nginx-service
# ๋๋ curl๋ก ํ์ธ
curl $(minikube ip):30080
๐ ์ค์ต ๋๋ ํ ๋ฆฌ ์์
k8s-basic/
โโโ nginx-deployment.yaml
โโโ nginx-service.yaml
โโโ README.md
์ค๊ณ ํ๋จ (Why This Way?)
Pod ์ง์ ์์ฑ์ ์ฅ์ ์ ์๋ ๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก Deployment๋ก ReplicaSet ๊ธฐ๋ฐ ๊ด๋ฆฌ๋ฅผ ํ๊ณ , ์ ์ธํ YAML๋ก ๊ด๋ฆฌํ์ฌ GitOps ๋ฐ CI/CD ์๋ํ์ ์ฐ๊ณํฉ๋๋ค.
๋ค์์ ์ฝ์ ๊ธ
โ Kubernetes 2๋จ๊ณ: ConfigMap & Secret โ ์ค์ ๋ถ๋ฆฌ์ ๋ฏผ๊ฐ ์ ๋ณด ๊ด๋ฆฌ