[Kubernetes] ์๋น์ค : NodePort, ClusterIP, Load Balancer
kubectl service {์๋น์ค์ด๋ฆ} --url
์๋น์ค
์ธ๋ถ์ ์ ํ๋ ๋จ์ผ ์๋ํฌ์ธํธ ๋ค์ ์๋ ํด๋ฌ์คํฐ์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ธ์ถ์ํค๋ฉฐ, ์ด๋ ์ํฌ๋ก๋๊ฐ ์ฌ๋ฌ ๋ฐฑ์๋๋ก ๋๋์ด ์๋ ๊ฒฝ์ฐ์๋ ๊ฐ๋ฅํ๋ค.
kubernetes.io
Pod ์ ์๊ฐ ์๋์ ๊ฐ๋ค๊ณ ํ์
# pod-definition.yml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
type: front-end
spec:
containers:
- name: nginx-container
image: nginx
Service ๊ด์ ์์ ๋ด ํฌํธ(port), ๋ ธ๋์ ๋ฌ๋ฆฐ Port(๋ ธ๋ํฌํธ), ํ๊ฒ ํฌํธ(ํฌํธ๋ฅผ ๋ ธ์ถํ๊ณ ์ถ์ ์ปจํ ์ด๋์ ํฌํธ)
# service-definition.yml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: NodePort
ports:
- targetPort: 80 # 1. ํ๊ฒ ํฌํธ (default, 2์ ๋์ผ)
port: 80 # 2. ์๋น์ค ์ค๋ธ์ ํธ์ ํฌํธ๊ฐ (ํ์)
nodePort: 30008 # 3. ๋
ธ๋ ํฌํธ (default, ์๋)
selector: # pod-definition.yml์ ๋ ์ด๋ธ selector (๋ชจ๋ ์ผ์นํ๋ ๋ ์ด๋ธ ์ฐพ์์ ์งํํจ)
app: myapp
type: front-end
- ์๋น์ค๋ ๋ชจ๋ ๋ ธ๋์ ๊ฑธ์ณ์ ๋์ผํ ๋ ์ด๋ธ์ ํด๋นํ๋ ํ๋์ ๋ํด ์ ์ฉ๋๊ณ
์ด๋ service ๋ ๋ก๋๋ฐธ๋ฐ์ ์ญํ ์ ํ๊ฒ ๋จ

์์: frontend backend redis ๊ฐ๊ฐ ๋ผ๋ฆฌ ํต์ ํ๊ธฐ ์ํ IP
https://kubernetes.io/ko/docs/concepts/services-networking/service/#%EB%8F%99%EA%B8%B0
# clusterIP for Backend
apiVersion: v1
kind: Service
metadata:
name: back-end
spec:
type: ClusterIP
ports:
- targetPort: 80
port: 80
selector: # pod-definition.yml์ lables.*์ ๋ด์ฉ ์ ๊ธฐ
app: myapp
type: backend

HAProxy, Nginx๋ฑ์ ์ค์นํด์ LoadBalancer๊ฐ /voting ์ voting app์ผ๋ก /dashboard๋ dashboard app์ผ๋ก ๊ฐ๊ฒ ํ ์ ์๋ค
AWS, GCP ๋ฑ์ด ์ ๊ณตํ๋ LoadBalancer ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ํ์ ์ด๋ค
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: LoadBalancer
ports:
- targetPort: 80
port: 80
nodePort: 30008