์ฑํฐ5. ์๋น์ค: ํด๋ผ์ด์ธํธ๊ฐ ํ๋๋ฅผ ๊ฒ์ํ๊ณ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํจ
์๋น์ค: ํด๋ผ์ด์ธํธ๊ฐ ํ๋๋ฅผ ๊ฒ์ํ๊ณ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํจ
์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์๋ ์ธ๊ณ์์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์๋ฒ์ ์ ํํ IP์ฃผ์๋ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, ์ฟ ๋ฒ๋คํฐ์ค์์ ๋์ผํ ์์ ์ ์ํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋์ํ์ง ์๋๋ค.
- ํ๋๋ ์ผ์์ ์ธ๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค๋ ๋ ธ๋์ ํ๋๋ฅผ ์ค์ผ์ค๋งํ ํ ํ๋๊ฐ ์์๋๊ธฐ ๋ฐ๋ก ์ ์ ํ๋์ IP์ฃผ์๋ฅผ ํ ๋นํ๋ค.
- ์ํ ์ค์ผ์ผ๋ง์ ์ฌ๋ฌ ํ๋๊ฐ ๋์ผํ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์์ ์๋ฏธํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ๋ค๋ฅธ ๋ฆฌ์์ค ์ ํ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํจ
5.1 ์๋น์ค ์๊ฐ
์ฟ ๋ฒ๋คํฐ์ค์ ์๋น์ค: ๋์ผํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ํ๋ ๊ทธ๋ฃน์ ์ง์์ ์ธ ๋จ์ผ ์ ์ ์ ๋ง๋ค๋ ค๊ณ ํ ๋ ์์ฑํ๋ ๋ฆฌ์์ค์ด๋ค.
ํ๋์ IP์ฃผ์๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋ ์๋น์ค์ IP์ฃผ์๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
๋ํ ์๋น์ค๋ฅผ ์์ฑํ๋ฉด ํ๊ฒฝ๋ณ์ ๋๋ DNS ์ด๋ฆ์ผ๋ก ์๋น์ค๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค.
ex) ํ๋ก ํธ์๋, ๋ฐฑ์๋ ํ๋
5.1.1 ์๋น์ค ์์ฑ
์๋น์ค๋ฅผ ์ง์ํ๋ ํ๋๊ฐ ํ ๊ฐ ํน์ ๊ทธ ์ด์์ผ ์ ์๋ค.
→ ์๋น์ค ์ฐ๊ฒฐ์ ์๋น์ค ๋ท๋จ์ ๋ชจ๋ ํ๋๋ก ๋ก๋๋ฐธ๋ฐ์ฑ ๋๋ค.
kubectl expose๋ก ์๋น์ค ์์ฑ
expose ๋ช ๋ น์ด๋ ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ์์ ์ฌ์ฉ๋ ๊ฒ๊ณผ ๋์ผํ ํ๋ ์ ๋ ํฐ๋ฅผ ์ฌ์ฉํด
์๋น์ค ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ๋ชจ๋ ํ๋๋ฅผ ๋จ์ผ IP ์ฃผ์์ ํฌํธ๋ก ๋ ธ์ถํ๋ค.
YAML ๋์คํฌ๋ฆฝํฐ๋ฅผ ํตํ ์๋น์ค ์์ฑ
//Kubia-svc.yaml
apiVersion: V1
kind: Service
metadata:
name: kubia
spec:
ports:
- port: 80 //์๋น์ค๊ฐ ์ฌ์ฉํ ํฌํธ
targetPort: 8080 //์๋น์ค๊ฐ ํฌ์๋ํ ์ปจํ
์ด๋ ํฌํธ
selector:
app: kubia //app=kubia ๋ ์ด๋ธ์ด ์๋ ๋ชจ๋ ํ๋๊ฐ ์ด ์๋น์ค์ ํฌํจ๋๋ค.
- kubia ๋ผ๋ ์๋น์ค๋ฅผ ์ ์ํ ๊ฒ
- ์ด ์๋น์ค๋ ํฌํธ 80์ ์ฐ๊ฒฐ์ ํ์ฉํ๊ณ ๊ฐ ์ฐ๊ฒฐ์ app=kubia ๋ ์ด๋ธ ์ ๋ ํฐ์ ์ผ์นํ๋ ํ๋์ ํฌํธ 8080์ผ๋ก ๋ผ์ฐํ ํ๋ค.
ํด๋ฌ์คํฐ ๋ด์์ ์๋น์ค ํ ์คํธ
- ์๋น์ค์ ํด๋ฌ์คํฐ Ip๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ก๊ทธ๋ก ๋จ๊ธฐ๋ ํ๋๋ฅผ ๋ง๋๋ ๊ฒ
→ ํ๋์ ๋ก๊ทธ๋ฅผ ๊ฒ์ฌํด ์๋น์ค์ ์๋ต์ด ๋ฌด์์ธ์ง ํ์ธ - ์ฟ ๋ฒ๋คํฐ์ค ๋ ธ๋๋ก ssh ์ ์ํ๊ณ curl ๋ช ๋ น์ ์คํ
- kubectl exec ๋ช ๋ น์ด๋ก ๊ธฐ์กด ํ๋์์ curl ๋ช ๋ น์ ์คํ
์คํ ์ค์ธ ์ปจํ ์ด๋์ ์๊ฒฉ์ผ๋ก ๋ช ๋ น์ด๋ฅผ ์คํ
$ kubectl exec kubia-7nog1 -- curl -s <http://10.111.249.153>
๋๋ธ ๋์๋ฅผ ์ฌ์ฉํ๋ ์ด์
→ ๋๋ธ ๋์(—)๋ kubectl ๋ช ๋ น์ค ์ต์ ์ ๋์ ์๋ฏธํ๋ค.
๋๋ธ ๋์ ๋ค์ ๋ชจ๋ ๊ฒ์ ํ๋ ๋ด์์ ์คํ๋ผ์ผ ํ๋ ๋ช ๋ น์ด๋ค.
- ํ๋์ ์ปจํ ์ด๋ ๋ด์์ curl๋ช ๋ น์ ์คํํ๋๋ก ์ฟ ๋ฒ๋คํฐ์ค์ ์ง์ํ๋ค.
- curl์ HTTP ์์ฒญ์ ์๋น์ค๋ก IP๋ก ๋ณด๋๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค ํ๋ก์๊ฐ ์ฐ๊ฒฐ์ ๊ฐ๋ก์ฑ์ ์ธ ๊ฐ์ ํ๋ ์ค ์์์ ํ๋๋ก ์์ฒญ์ ์ ๋ฌํ๋ค.
- ํ๋ ๋ด์์ ์คํ ์ค์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ํด๋น ํ๋์ ์ด๋ฆ์ ํฌํจํ๋ HTTP ์๋ต์ ๋ฐํํ๋ค.
- curl์ ํ์ค ์ถ๋ ฅ์ผ๋ก ์๋ต์ ์ถ๋ ฅํ๊ณ ์ด๋ฅผ kubectl์ด ์๋ ๋ก์ปฌ ์์คํ ์ ํ์ค ์ถ๋ ฅ์ ๋ค์ ํ์ํ๋ค.
์๋น์ค์ ์ธ์ ์ดํผ๋ํฐ ๊ตฌ์ฑ
๋์ผํ ํด๋ผ์ด์ธํธ์์ ์์ฒญํ๋๋ผ๋ ์๋น์ค ํ๋ก์๊ฐ ๊ฐ ์ฐ๊ฒฐ์ ์์์ ํ๋๋ฅผ ์ ํํด ์ฐ๊ฒฐ์ ๋ค์ forward ํ๊ธฐ ๋๋ฌธ์ ์์ฒญ๋ง๋ค ๋ค๋ฅธ ํ๋๊ฐ ์ ํ๋๋ค.
๋งค๋ฒ ๊ฐ์ ํ๋๋ก ๋ฆฌ๋ค์ด๋ ์ ํ๋ ค๋ฉด ์๋น์ค์ ์ธ์ ์ดํผ๋ํฐ ์์ฑ์ ๊ธฐ๋ณธ๊ฐ None ๋์ ClientIP๋ก ์ค์ ํ๋ค.
apiVersion: V1
kind Service
spec:
sessionAffinity: ClientIp
...
- ์ฟ ๋ฒ๋คํฐ์ค๋ None๊ณผ ClientIP๋ผ๋ ๋ ๊ฐ์ง ์ ํ์ ์๋น์ค ์ธ์ ์ดํผ๋ํฐ๋ง ์ง์ํ๋ค.
- ์ฟ ํค ๊ธฐ๋ฐ ์ธ์ ์ดํผ๋ํฐ ์ต์ ์ ์๋ค
- ์๋น์ค๋ TCP์ UDP ํจํท์ ์ฒ๋ฆฌํ๊ณ ๊ทธ๋ค์ด ๊ฐ์ง๊ณ ์๋ ํ์ด๋ก๋๋ ์ ๊ฒฝ ์ฐ์ง ์๋๋ค.
- ์ฟ ํค๋ HTTP ํ๋กํ ์ฝ์ ๊ตฌ์ฑ์ด๊ธฐ ๋๋ฌธ์ ์๋น์ค๋ ์ฟ ํค๋ฅผ ์์ง ๋ชปํ๋ค
๋์ผํ ์๋น์ค์์ ์ฌ๋ฌ ๊ฐ์ ํฌํธ ๋ ธ์ถ
ํ๋์ ์๋น์ค๋ฅผ ์ฌ์ฉํด ๋ฉํฐ ํฌํธ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋จ์ผ ํด๋ฌ์คํฐ IP๋ก ๋ชจ๋ ์๋น์ค ํฌํธ๊ฐ ๋ ธ์ถ๋๋ค.
์ฌ๋ฌ ํฌํธ๊ฐ ์๋ ์๋น์ค๋ฅผ ๋ง๋ค ๋๋ ๊ฐ ํฌํธ์ ์ด๋ฆ์ ์ง์ ํด์ผ ํ๋ค.
//์๋น์ค ์ ์์์ ๋ฉํฐ ํฌํธ ์ง์
apiVersion: v1
kind: Service
metadata:
name: kubia
spec:
ports:
- name: http
port: 80
targetPort: 8080
- name: https
port: 443
targetPort: 8443
selector:
app: kubia
์ด๋ฆ์ด ์ง์ ๋ ํฌํธ ์ฌ์ฉ
๊ฐ ํ๋์ ํฌํธ์ ์ด๋ฆ์ ์ง์ ํ๊ณ ์๋น์ค ์คํ์์ ์ด๋ฆ์ผ๋ก ์ฐธ์กฐํ ์ ์๋ค.
//ํ๋ ์ ์์ ํฌํธ ์ด๋ฆ ์ฌ์ฉ
kind: Pod
spec:
containers:
- name: kubia
ports:
- name: http
containerPort: 8080 //์ปจํ
์ด๋ ํฌํธ 8080์ http๋ผ๊ณ ํ๋ค
- name: https
containerPort: 8443 //ํฌํธ 8443์ https๋ผ๊ณ ํ๋ค
//์๋น์ค์ ์ด๋ฆ์ด ์ง์ ๋ ํฌํธ ์ฐธ์กฐํ๊ธฐ
apiVersion: v1
kind: Service
spec:
ports:
- name: http
port: 80
targetPort: http //ํฌํธ 80์ http๋ผ๋ ์ปจํ
์ด๋ ํฌ๋์ ๋งตํ
- name: https
port: 443
targetPort: https //ํฌํธ 443์ ์ปจํ
์ด๋ ํฌ๋์ ์ด๋ฆ์ด https์ธ ๊ฒ๊ณผ ๋งตํ
5.1.2 ์๋น์ค ๊ฒ์
์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ผ์ด์ธํธ ํ๋๊ฐ ์๋น์ค์ IP์ ํฌํธ๋ฅผ ๊ฒ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
ํ๊ฒฝ๋ณ์๋ฅผ ํตํ ์๋น์ค ๊ฒ์
ํ๋๊ฐ ์์๋๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋น ์์ ์ ์กด์ฌํ๋ ๊ฐ ์๋น์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ํ๊ฒฝ๋ณ์ ์ธํธ๋ฅผ ์ด๊ธฐํ ํ๋ค.
DNS๋ฅผ ํตํ ์๋น์ค ๊ฒ์
ํ๋์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค์์ ์ํ๋ ๋ชจ๋ DNS์ฟผ๋ฆฌ๋ ์์คํ ์์ ์คํ ์ค์ธ ๋ชจ๋ ์๋น์ค๋ฅผ ์๊ณ ์๋
์ฟ ๋ฒ๋คํฐ์ค์ ์์ฒด DNS ์๋ฒ๋ก ์ฒ๋ฆฌ๋๋ค.
๊ฐ ์๋น์ค๋ ๋ด๋ถ DNS ์๋ฒ์์ DNSํญ๋ชฉ์ ๊ฐ์ ธ์ค๊ณ ์๋น์ค ์ด๋ฆ์ ์๊ณ ์๋ ํด๋ผ์ด์ธํธ ํ๋๋ ํ๊ฒฝ๋ณ์
๋์ FQDN(์ ๊ทํ๋ ๋๋ฉ์ธ ์ด๋ฆ)์ผ๋ก ์ก์ธ์ค ํ ์ ์๋ค.
FQND๋ฅผ ํตํ ์๋น์ค ์ฐ๊ฒฐ
ex) backend-database.default.svc.cluster.local
backend-database๋ ์๋น์ค ์ด๋ฆ์ด๊ณ default๋ ์๋น์ค๊ฐ ์ ์๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ํ๋ด๋ฉฐ svc.cluster.local์
๋ชจ๋ ํด๋ฌ์คํฐ์ ๋ก์ปฌ ์๋น์ค ์ด๋ฆ์ ์ฌ์ฉ๋๋ ํด๋ฌ์คํฐ์ ๋๋ฉ์ธ ์ ๋ฏธ์ฌ๋ค.
ํ๋์ ์ปจํ ์ด๋ ๋ด์์ ์ ธ ์คํ
์ ธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ค๋ฉด -it ์ต์ ์ kubectl exec์ ๋ฃ์ด์ผํ๋ค.
5.2 ํด๋ฌ์คํฐ ์ธ๋ถ์ ์๋ ์๋น์ค ์ฐ๊ฒฐ
์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค ๊ธฐ๋ฅ์ผ๋ก ์ธ๋ถ ์๋น์ค๋ฅผ ๋ ธ์ถํ๋ ค๋ ๊ฒฝ์ฐ
→ ์๋น์ค๊ฐ ํด๋ฌ์คํฐ ๋ด์ ์๋ ํ๋๋ก ์ฐ๊ฒฐ์ ์ ๋ฌํ๋๊ฒ ์๋๋ผ ์ธ๋ถ IP์ ํฌํธ๋ก ์ฐ๊ฒฐ์ ์ ๋ฌํ๋ ๊ฒ
ํด๋ฌ์คํฐ์์ ์คํ ์ค์ธ ํด๋ผ์ด์ธํธ ํ๋๋ ๋ด๋ถ ์๋น์ค์ ์ฐ๊ฒฐํ๋ ๊ฒ์ฒ๋ผ ์ธ๋ถ ์๋น์ค์ ์ฐ๊ฒฐํ ์ ์๋ค.
5.2.1 ์๋น์ค ์๋ํฌ์ธํธ ์๊ฐ
์๋น์ค๋ ํ๋์ ์ง์ ์ฐ๊ฒฐ๋์ง ์๋๋ค.
→ ์๋ํฌ์ธํธ ๋ฆฌ์์ค๊ฐ ๊ทธ ์ฌ์ด์ ์๋ค.
- ์๋ํฌ์ธํธ ๋ฆฌ์์ค๋ ์๋น์ค๋ก ๋ ธ์ถ๋๋ ํ๋์ IP ์ฃผ์์ ํฌํธ ๋ชฉ๋ก์ด๋ค.
- ์๋ํฌ์ธํธ ๋ฆฌ์์ค๋ ๋ค๋ฅธ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค์ ์ ์ฌํ๋ฏ๋ก kubectl get์ ์ฌ์ฉํด ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ํ์ ํ ์ ์๋ค.
- ํ๋ ์ ๋ ํฐ๋ ์๋น์ค ์คํ์ ์ ์๋ผ ์์ง๋ง ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ ์ ๋ฌํ ๋ ์ง์ ์ฌ์ฉํ์ง๋ ์๋๋ค.
5.2.2 ์๋น์ค ์๋ํฌ์ธํธ ์๋ ๊ตฌ์ฑ
์๋น์ค์ ์๋ํฌ์ธํธ๋ฅผ ์๋น์ค์ ๋ถ๋ฆฌํ๋ฉด ์๋ํฌ์ธํธ๋ฅผ ์๋์ผ๋ก ๊ตฌ์ฑ๊ณ ์ ๋ฐ์ดํธ ํ ์ ์๋ค.
ํ๋ ์ ๋ ํฐ ์์ด ์๋น์ค๋ฅผ ๋ง๋ค๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ ์๋ํฌ์ธํธ ๋ฆฌ์์ค๋ฅผ ๋ง๋ค์ง ๋ชปํ๋ค.
์๋์ผ๋ก ๊ด๋ฆฌ๋๋ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํด ์๋น์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ์๋น์ค์ ์๋ํฌ์ธํธ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ ๋ง๋ค์ด์ผ ํ๋ค.
์ ๋ ํฐ ์์ด ์๋น์ค ์์ฑ
apiVersion: v1
kind: Service
metadata:
name: external-service //์๋น์ค ์ด๋ฆ์ ์๋ํฌ์ธํธ ์ค๋ธ์ ํธ ์ด๋ฆ๊ณผ ์ผ์นํด์ผ ํ๋ค.
spec:
port:
- port: 80 //์ด ์๋น์ค์๋ ์
๋ ํฐ๊ฐ ์ ์๋ผ ์์ง ์๋ค.
์ ๋ ํฐ๊ฐ ์๋ ์๋น์ค์ ๊ดํ ์๋ํฌ์ธํธ ๋ฆฌ์์ค ์์ฑ
์๋ํฌ์ธํธ๋ ๋ณ๋์ ๋ฆฌ์์ค์ด๋ฉฐ, ์๋น์ค ์์ฑ์ ์๋๋ค
apiVersion: v1
kind: Endpoints
metadata:
name: external-service
subsets:
- addresses:
- ip: 11.11.11.11
- ip: 22.22.22.22
ports:
- port: 80
- ์๋ํฌ์ธํธ ์ค๋ธ์ ํธ๋ ์๋น์ค์ ์ด๋ฆ์ด ๊ฐ์์ผ ํ๊ณ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋์ IP ์ฃผ์์ ํฌํธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ผ ํ๋ค.
5.2.3 ์ธ๋ถ ์๋น์ค๋ฅผ ์ํ ๋ณ์นญ ์์ฑ
FQDN(์ ๊ทํ๋ ๋๋ฉ์ธ ์ด๋ฆ)์ผ๋ก ์ธ๋ถ ์๋น์ค๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
ExternalName ์๋น์ค ์์ฑ
์ธ๋ถ ์๋น์ค์ ๋ณ์นญ์ผ๋ก ์ฌ์ฉ๋๋ ์๋น์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ ํ ํ๋๋ฅผ ExternalName์ผ๋ก ์ค์ ํด ์๋น์ค ๋ฆฌ์์ค๋ฅผ ๋ง๋ ๋ค.
ex) api.somecompany.com์ ๊ณต๊ฐ API๊ฐ ์๋ค๊ณ ๊ฐ์
apiVersion: v1
kind Service
metadata:
name: external-service
spec:
type: ExternalName //์๋น์ค ์ ํ์ด ExternalName์ผ๋ก ์ค์ ๋๋ค.
externalName: someapi.somecompany.com //์ค์ ์๋น์ค์ ์ ๊ทํ๋ ๋๋ฉ์ธ ์ด๋ฆ
ports:
- port: 80
- ExternalName ์๋น์ค๋ DNS ๋ ๋ฒจ์์๋ง ๊ตฌํ๋๋ค.
- ์๋น์ค์ ๊ดํ ๊ฐ๋จํ CNAME DNS ๋ ์ฝ๋๊ฐ ์์ฑ๋๋ค.
- ExternalName ์ ํ์ ์๋น์ค๋ ClusterIP๋ฅผ ์ป์ง ๋ชปํ๋ค.
5.3 ์ธ๋ถ ํด๋ผ์ด์ธํธ์ ์๋น์ค ๋ ธ์ถ
ํ๋ก ํธ์๋ ์น ์๋ฒ์ ๊ฐ์ ํน์ ์๋น์ค๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํด ์ธ๋ถ ํด๋ผ์ด์ธํธ๊ฐ ์ก์ธ์ค ํ ์ ์๊ฒ ๋ ธ์ถ ์ํค๋ ๊ฒ.
- ๋ ธ๋ํฌํธ๋ก ์๋น์ค ์ ํ ์ค์ : ๋ ธ๋ํฌํธ ์๋น์ค์ ๊ฒฝ์ฐ ๊ฐ ํด๋ฌ์คํฐ ๋ ธ๋๋ ๋ ธ๋ ์์ฒด์์ ํฌํธ๋ฅผ ์ด๊ณ ํด๋น ํฌํธ๋ก ์์ ๋ ํธ๋ํฝ์ ์๋น์ค๋ก ์ ๋ฌํ๋ค.
- ์๋น์ค ์ ํ์ ๋ ธ๋ํฌํธ ์ ํ์ ํ์ฅ์ธ ๋ก๋๋ฐธ๋ฐ์๋ก ์ค์ : ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์คํ ์ค์ธ ํด๋ผ์ฐ๋ ์ธํ๋ผ์์ ํ๋ก๋น์ ๋๋ ์ ์ฉ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์๋น์ค์ ์ก์ธ์ค ํ ์ ์๋ค. ๋ก๋๋ฐธ๋ฐ์๋ ํธ๋ํฝ์ ๋ชจ๋ ๋ ธ๋์ ๋ ธ๋ํฌํธ๋ก ์ ๋ฌํ๋ค. ํด๋ผ์ด์ธํธ๋ ๋ก๋๋ฐธ๋ฐ์์ IP๋ก ์๋น์ค์ ์ก์ธ์คํ๋ค.
- ๋จ์ผ IP์ฃผ์๋ก ์ฌ๋ฌ ์๋น์ค๋ฅผ ๋ ธ์ถํ๋ ์ธ๊ทธ๋ ์ค ๋ฆฌ์์ค ๋ง๋ค๊ธฐ: HTTP๋ ๋ฒจ์์ ์๋ํ๋ฏ๋ก 4๊ณ์ธต ์๋น์ค๋ณด๋ค ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋ค.
5.3.1 ๋ ธ๋ํฌํธ ์๋น์ค ์ฌ์ฉ
์๋น์ค๋ฅผ ์์ฑํ๊ณ ์ ํ์ ๋ ธ๋ํฌํธ๋ก ์ค์ ํ๋ ๊ฒ์ด๋ค.
๋ ธ๋ํฌํธ ์๋น์ค๋ฅผ ๋ง๋ค๋ฉด ์ฟ ๋ฒ๋คํฐ์ค๋ ๋ชจ๋ ๋ ธ๋์ ํน์ ํฌํธ๋ฅผ ํ ๋นํ๊ณ ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๋ ํ๋๋ก ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ ์ ๋ฌํ๋ค.
๋ ธ๋ํฌํธ ์๋น์ค ์์ฑ
//kubia-svc-nodeport
apiVersion: v1
kind: Service
metadata:
name: kubia-nodeport
spec:
type: NodePort //์๋น์ค ์ ํ์ ๋
ธ๋ํฌํธ๋ก ์ค์
ports:
- prot: 80 //์๋น์ค ๋ด๋ถ ํด๋ฌ์คํฐ Ip์ ํฌํธ
targetPort: 8080 //์๋น์ค ๋์ ํ๋์ ํฌํธ
nodePort: 30123 //๊ฐ ํด๋ฌ์คํฐ ๋
ธ๋์ ํฌํธ 30123์ผ๋ก ์๋น์ค์ ์ก์ธ์ค ํ ์ ์๋ค.
selector:
app: kubia
- ์ ํ์ ๋ ธ๋ํฌํธ๋ก ์ค์ ํ๊ณ ์ด ์๋น์ค๊ฐ ๋ชจ๋ ํด๋ฌ์คํฐ ๋ ธ๋์ ๋ฐ์ธ๋ฉ๋ผ์ผ ํ๋ ๋ ธ๋ํฌํธ๋ฅผ ์ง์ ํ๋ค.
- ์ธ๋ถ ํด๋ผ์ด์ธํธ๊ฐ ๋ ธ๋ํฌํธ ์๋น์ค์ ์ก์์ค ํ ์ ์๋๋ก ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ณ๊ฒฝํด ์ฃผ์ด์ผ ํ๋ค.
5.3.2 ์ธ๋ถ ๋ก๋๋ฐธ๋ฐ์๋ก ์๋น์ค ๋ ธ์ถ
์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ฐ๋ ์ธํ๋ผ์์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ์๋์ผ๋ก ํ๋ก๋น์ ๋ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
→ ๋ ธ๋ํฌํธ ๋์ ์๋น์ค ์ ํ์ ๋ก๋๋ฐธ๋ฐ์๋ก ์ค์ ํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๋ก๋๋ฐธ๋ฐ์๋ ๊ณต๊ฐ์ ์ผ๋ก ์ก์ธ์ค ๊ฐ๋ฅํ ๊ณ ์ ํ IP์ฃผ์๋ฅผ ๊ฐ์ง๋ฉฐ ๋ชจ๋ ์ฐ๊ฒฐ์ ์๋น์ค๋ก ์ ๋ฌํ๋ค.
→ ๋ก๋๋ฐธ๋ฐ์์ IP์ฃผ์๋ก ์๋น์ค์ ์ก์ธ์ค ํ ์ ์๋ค.
๋ก๋๋ฐธ๋ฐ์ ์๋น์ค ์์ฑ
apiVersion: v1
kind: Service
metadata:
name: kubia-loadbalancer
spec:
type: LoadBalancer // ์ด ์ ํ์ ์๋น์ค๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ํธ์คํ
ํ๋ ์ธํ๋ผ์์ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ป์ ์ ์๋ค.
ports:
- port: 80
targetPort: 8080
selector:
app: kubia
๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํ ์๋น์ค ์ฐ๊ฒฐ
- ์ธ๋ถ ํด๋ผ์ด์ธํธ๋ ๋ก๋๋ฐธ๋ฐ์์ ํฌํธ 80์ ์ฐ๊ฒฐํ๊ณ ๋ ธ๋์ ์๋ฌต์ ์ผ๋ก ํ ๋น๋ ๋ ธ๋ํฌํธ๋ก ๋ผ์ฐํ ๋๋ค. ์ฌ๊ธฐ์์ ์ฐ๊ฒฐ์ ํ๋ ์ธ์คํด์ค๋ก ์ ๋ฌ๋๋ค.
- ๋ก๋๋ฐธ๋ฐ์ ์ ํ ์๋น์ค๋ ์ถ๊ฐ ์ธํ๋ผ ์ ๊ณต ๋ก๋๋ฐธ๋ฐ์๊ฐ ์๋ ๋ ธ๋ ํฌํธ ์๋น์ค๋ค.
5.3.3 ์ธ๋ถ ์ฐ๊ฒฐ์ ํน์ฑ ์ดํด
๋ถํ์ํ ๋คํธ์ํฌ ํ์ ์ดํด์ ์๋ฐฉ
spec:
externalTrafficPolicy: Local
...
- ์ธ๋ถ ํด๋ผ์ด์ธํธ๊ฐ ๋ ธ๋ํฌํธ๋ก ์๋น์ค์ ์ ์ํ ๊ฒฝ์ฐ ์์๋ก ์ ํ๋ ํ๋๊ฐ ์ฐ๊ฒฐ์ ์์ ํ ๋์ผํ ๋ ธ๋์์ ์คํ ์ค์ผ ์๋ ์๊ณ ์์ ์๋ ์๋ค.
- ํ๋์ ๋๋ฌํ๋ ค๋ฉด ์ถ๊ฐ์ ์ธ ๋คํธ์ํฌ ํ์ด ํ์ํ ์ ์์ผ๋ฉฐ ์ด๊ฒ์ด ํญ์ ๋ฐ๋์งํ ๊ฒ์ ์๋๋ค.
- ์ด ์ถ๊ฐ ํ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์ด ์๋น์ค ์คํ ์ธ์ ์ externalTrafficPolicy
- ํ์ง๋ง ํธ๋ํฝ์ด ๋ชฐ๋ฆด์ ์๊ณ ๋ก์ปฌ ํ๋๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด ์ฐ๊ฒฐ์ด ์ค๋จ๋๋ค.
ํด๋ผ์ด์ธํธ IP๊ฐ ๋ณด์กด๋์ง ์์ ์ธ์
๋ ธ๋ํฌํธ๋ก ์ฐ๊ฒฐ์ ์์ ํ๋ฉด ํจํท์์ ์์ค ๋คํธ์ํฌ ์ฃผ์ ๋ณํ์ด ์ํ๋๋ฏ๋ก ํจํท์ ์์ค Ip๊ฐ ๋ณ๊ฒฝ๋๋ค.
5.4 ์ธ๊ทธ๋ ์ค ๋ฆฌ์์ค๋ก ์๋น์ค ์ธ๋ถ ๋ ธ์ถ
์ธ๊ทธ๋ ์ค๊ฐ ํ์ํ ์ด์
- ๋ก๋๋ฐธ๋ฐ์ ์๋น์ค๋ ์์ ์ ๊ณต์ฉ IP ์ฃผ์๋ฅผ ๊ฐ์ง ๋ก๋๋ฐธ๋ฐ์๊ฐ ํ์ํ์ง๋ง ์ธ๊ทธ๋ ์ค๋ ํ IP์ฃผ์๋ก ์์ญ ๊ฐ์ ์๋น์ค์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก ์ง์ํด์ค๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ HTTP ์์ฒญ์ ์ธ๊ทธ๋ ์ค์ ๋ณด๋ผ ๋, ์์ฒญํ ํธ์คํธ์ ๊ฒฝ๋ก์ ๋ฐ๋ผ ์์ฒญ์ ์ ๋ฌํ ์๋น์ค๊ฐ ๊ฒฐ์ ๋๋ค.
- ์ธ๊ทธ๋ ์ค๋ ๋คํธ์ํฌ ์คํ์ ์ ํ๋ฆฌ์ํค์ ๊ณ์ธต(HTTP)์์ ์๋ํ๋ฉฐ ์๋น์ค๊ฐ ํ ์ ์๋ ์ฟ ํค ๊ธฐ๋ฐ ์ธ์ ์ดํผ๋ํฐ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์๋ค.
5.4.1 ์ธ๊ทธ๋ ์ค ๋ฆฌ์์ค ์์ฑ
//kubia-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kubia
spec:
rules:
- host: kubia.example.com //์ธ๊ทธ๋ ์ค๋ kubia.example.com ๋๋ฉ์ธ ์ด๋ฆ์ ์๋น์ค์ ๋งคํํ๋ค
http:
paths:
- path: / //๋ชจ๋ ์์ฒญ์ kubia-nodeport ์๋น์ค์ ํฌํธ 80์ผ๋ก ์ ๋ฌ๋๋ค.
backend:
serviceName: kubia-nodeport
servicePort: 80
- Host kubia.example.com์ผ๋ก ์์ฒญ๋๋ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ์ ์์ ๋ ๋ชจ๋ HTTP ์์ฒญ์ ํฌํธ 80์ kubia-nodeport ์๋น์ค๋ก ์ ์กํ๋๋ก ํ๋ ์ธ๊ทธ๋ ์ค ๊ท์น์ ์ ์ํ๋ค.
5.4.2 ์ธ๊ทธ๋ ์ค๋ก ์๋น์ค ์ก์์ค
์ example.com ์๋น์ค์ ์ก์ธ์ค ํ๋ ค๋ฉด ๋๋ฉ์ธ ์ด๋ฆ์ด ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ์ IP์ ๋งคํ๋๋๋ก ํด์ผํ๋ค.
์ธ๊ทธ๋ ์ค์ IP์ฃผ์๋ฅผ ์ป๊ณ → ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ๊ฐ ๊ตฌ์ฑ๋ ํธ์คํธ์ IP๋ฅผ ์ธ๊ทธ๋ ์ค ์๋ํฌ์ธํธ๋ก ์ง์ ํ๋ค
(DNS ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๊ฑฐ๋, /etc/hosts ์ ์ถ๊ฐ๋ก ๊ตฌ์ฑํ ์ ์๋ค)
์ธ๊ทธ๋ ์ค ๋์ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ๋ DNS ์กฐํ๋ฅผ ์ํํ์ฌ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ์ IP๋ฅผ ์ป๋๋ค
- HTTP์์ฒญ์ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ์ ์ ๊ณตํ๊ณ host ํค๋์์ kubia.example.com์ ์ง์ ํ๋ค
- ์ปจํธ๋กค๋ฌ๋ ํด๋น ํค๋์์ ํด๋ผ์ด์ธํธ๊ฐ ์ก์ธ์ํ๋ ค๋ ์๋น์ค๋ฅผ ๊ฒฐ์ ํ๊ณ ์๋น์ค์ ๊ด๋ จ๋ ์๋ํฌ์ธํธ ์ค๋ธ์ ํธ๋ก ํ๋ IP๋ฅผ ์กฐํํ ๋ค์ ํด๋ผ์ด์ธํธ ์์ฒญ์ ํ๋์ ์ ๋ฌํ๋ค.
- ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ๋ ์์ฒญ์ ์๋น์ค๋ก ์ ๋ฌํ์ง ์๋๋ค. ํ๋๋ฅผ ์ ํํ๋ ๋ฐ๋ง ์ฌ์ฉํ๋ค.
5.4.3 ํ๋์ ์ธ๊ทธ๋ ์ค๋ก ์ฌ๋ฌ ์๋น์ค ๋ ธ์ถ
๋์ผํ ํธ์คํธ์ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ฌ๋ฌ ์๋น์ค ๋งคํ
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kubia
spec:
rules:
- host: kubia.example.com //์ธ๊ทธ๋ ์ค๋ kubia.example.com ๋๋ฉ์ธ ์ด๋ฆ์ ์๋น์ค์ ๋งคํํ๋ค
http:
paths:
- path: /kubia
backend:
serviceName: kubia-nodeport
servicePort: 80
- path: /bar
backend:
serviceName: bar
servicePort: 80
- ์์ฒญ์ URL์ ๊ฒฝ๋ก์ ๋ฐ๋ผ ๋ ๊ฐ์ ๋ค๋ฅธ ์๋น์ค๋ก ์ ์ก๋๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋จ์ผ IP๋ก ๋ ๊ฐ์ ์๋น์ค์ ๋๋ฌํ ์ ์๋ค.
์๋ก ๋ค๋ฅธ ํธ์คํธ๋ก ์๋ก ๋ค๋ฅธ ์๋น์ค ๋งคํํ๊ธฐ
...
spec:
rules:
- host: foo.example.com
http:
paths:
- path: /
backend:
serviceName: foo
servicePort: 80
- host: bar.example.com
http:
paths:
- path: /
backend:
serviceName: bar
servicePort: 80
- ์ปจํธ๋กค๋ฌ๊ฐ ์์ ํ ์์ฒญ์ ์์ฒญ์ ํธ์คํธ ํค๋์ ๋ฐ๋ผ ์๋น์ค foo ๋๋ bar๋ก ์ ๋ฌ๋๋ค.
- DNS๋ ๋ ๋๋ฉ์ธ ์ด๋ฆ ๋ชจ๋ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ์ IP ์ฃผ์๋ก ์ง์ ํด์ผ ํ๋ค.
5.4.4 TLS ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋๋ก ์ธ๊ทธ๋ ์ค ๊ตฌ์ฑ
์ธ๊ทธ๋ ์ค๋ฅผ ์ํ TLS ์ธ์ฆ์ ์์ฑ
- ํด๋ผ์ด์ธํธ๊ฐ ์ธ๊ทธ๋ ์ค ์ปจํธ๋กค๋ฌ์ ๋ํ TLS ์ฐ๊ฒฐ์ ํ๋ฉด ์ปจํธ๋กค๋ฌ๋ TLS ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ค.
- ํด๋ผ์ด์ธํธ์ ์ปจํธ๋กค๋ฌ ๊ฐ์ ํต์ ์ ์ํธํ๋์ง๋ง ์ปจํธ๋กค๋ฌ์ ๋ฐฑ์๋ ํ๋ ๊ฐ์ ํต์ ์ ์ํธํ๋์ง ์๋๋ค.
5.5 ํ๋๊ฐ ์ฐ๊ฒฐ์ ์๋ฝํ ์ค๋น๊ฐ ๋์ ๋ ์ ํธ ๋ณด๋ด๊ธฐ
5.5.1 ๋ ๋๋์ค ํ๋ก๋ธ ์๊ฐ
์ฟ ๋ฒ๋คํฐ์ค์์๋ ๋ผ์ด๋ธ๋์ค ํ๋ก๋ธ์ ๋น์ทํ๊ฒ ํ๋์ ๋ ๋๋์ค ํ๋ก๋ธ๋ฅผ ์ ์ํ ์ ์๋ค.
๋ ๋๋์ค ํ๋ก๋ธ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ํธ์ถ๋๋ฉฐ ํน์ ํ๋๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์์ ํ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
๋ ๋๋์ค ํ๋ก๋ธ ์ ํ
- ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ Exec ํ๋ก๋ธ๋ ์ปจํ ์ด๋์ ์ํ๋ฅผ ํ๋ก์ธ์ค์ ์ข ๋ฃ ์ํ ์ฝ๋๋ก ๊ฒฐ์ ํ๋ค.
- HTTP GET ํ๋ก๋ธ๋ HTTP GET ์์ฒญ์ ์ปจํ ์ด๋๋ก ๋ณด๋ด๊ณ ์๋ต์ HTTP ์ํ ์ฝ๋๋ฅผ ๋ณด๊ณ ์ปจํ ์ด๋๊ฐ ์ค๋น๋๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.
- TCP ์์ผ ํ๋ก๋ธ๋ ์ปจํ ์ด๋์ ์ง์ ๋ ํฌํธ๋ก TCP ์ฐ๊ฒฐ์ ์ฐ๋ค. ์์ผ์ด ์ฐ๊ฒฐ๋๋ฉด ์ปจํ ์ด๋๊ฐ ์ค๋น๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค.
๋ ๋๋์ค ํ๋ก๋ธ์ ๋์
- ๋ผ์ด๋ธ๋์ค ํ๋ก๋ธ์ ๋ฌ๋ฆฌ ์ปจํ ์ด๋๊ฐ ์ค๋น ์ํ ์ ๊ฒ์ ์คํจํ๋๋ผ๋ ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ๋ค์ ์์๋์ง ์๋๋ค.
- ๋ ๋๋์ค ํ๋ก๋ธ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ค๋น๊ฐ ๋ ํ๋์ ์ปจํ ์ด๋๋ง ์์ฒญ์ ์์ ํ๋๋ก ํ๋ค.
- ๋ ๋๋์ค ํ๋ก๋ธ๊ฐ ์คํจํ๋ฉด ํ๋๋ ์๋ํฌ์ธํธ ์ค๋ธ์ ํธ์์ ์ ๊ฑฐ๋๋ค.
- ๋ ๋๋์ค ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ ์ ์ํ์ธ ํ๋ํ๊ณ ๋ง ํต์ ํ๊ณ ์์คํ ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์ ๋ ์์์ฐจ๋ฆฌ์ง ๋ชปํ๋ค.
5.5.2 ํ๋์ ๋ ๋๋์ค ํ๋ก๋ธ ์ถ๊ฐ
๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ์ ํ๋ ํ ํ๋ฆฟ์ ๋ ๋๋์ค ํ๋ก๋ธ ์ถ๊ฐ
apiVsersion: v1
kind: ReplicationController
...
spec:
...
template:
...
spec:
containers:
- name: kubia
image: luksa/kubia
readinessProbe: //ํ๋์ ๊ฐ ์ปจํ
์ด๋์ ๋ ๋๋์ค ํ๋ก๋ธ๊ฐ ์ ์๋ ์ ์๋ค.
exec:
command:
- ls
- /var/ready
- ๋ ๋๋์ค ํ๋ก๋ธ๋ ์ปจํ ์ด๋ ๋ด๋ถ์์ ls /var/ready ๋ช ๋ น์ด๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ํํ๋ค.
- ๋ ๋๋์ค ํ๋ก๋ธ๋ ๊ธฐ๋ณธ์ผ๋ก 10์ด๋ง๋ค ์ฃผ๊ธฐ์ ์ผ๋ก ํ๋ก๋ธ๊ฐ ์คํ๋๋ค.
5.5.3 ์ค์ ํ๊ฒฝ์์ ๋ ๋๋์ค ํ๋ก๋ธ๊ฐ ์ํํด์ผ ํ๋ ๊ธฐ๋ฅ
์ค์ ํ๊ฒฝ์์ ๋ ๋๋์ค ํ๋ก๋ธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํด๋ผ์ด์ธํธ ์์ฒญ์ ์์ ํ ์ ์๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ์ฑ๊ณต ๋๋ ์คํจ๋ฅผ ๋ฐํํด์ผ ํ๋ค.
๋ ๋๋์ค ํ๋ก๋ธ๋ฅผ ํญ์ ์ ์ํ๋ผ
- ํ๋์ ๋ ๋๋์ค ํ๋ก๋ธ๋ฅผ ์ถ๊ฐํ์ง ์์ผ๋ฉด ํ๋๊ฐ ์์ํ๋ ์ฆ์ ์๋น์ค ์๋ํฌ์ธํธ๊ฐ ๋๋ค.
- ๊ธฐ๋ณธ URL์ HTTP ์์ฒญ์ ๋ณด๋ด๋๋ผ๋ ํญ์ ๋ ๋๋์ค ํ๋ก๋ธ๋ฅผ ์ ์ํด์ผ ํ๋ค.
- ๋ ๋๋์ค ํ๋ก๋ธ์ ํ๋์ ์ข
๋ฃ ์ฝ๋๋ฅผ ํฌํจํ์ง ๋ง๋ผ
→ ์ฟ ๋ฒ๋คํฐ์ค๋ ํ๋๋ฅผ ์ญ์ ํ์๋ง์ ๋ชจ๋ ์๋น์ค์์ ํ๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
5.6 ํค๋๋ฆฌ์ค ์๋น์ค๋ก ๊ฐ๋ณ ํ๋ ์ฐพ๊ธฐ
ํด๋ผ์ด์ธํธ๊ฐ ๋ชจ๋ ํ๋์ ์ฐ๊ฒฐํ๋ ค๋ฉด ๊ฐ ํ๋์ IP๋ฅผ ์์์ผ ํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ผ์ด์ธํธ๊ฐ DNS ์กฐํ๋ก ํ๋ IP๋ฅผ ์ฐพ์ ์ ์๋๋ก ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๋น์ค์ ๋ํ DNS์กฐํ๋ฅผ ์ํํ๋ฉด ํ๋์ IP๋ฅผ ๋ฐํํ๋ค.
๊ทธ๋ฌ๋ ์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค์ ํด๋ฌ์คํฐ IP๊ฐ ํ์ํ์ง ์๋ค๋ฉด ์๋น์ค IP ๋์ ํ๋ IP๋ค์ ๋ฐํํ๋ค.
5.6.1 ํค๋๋ฆฌ์ค ์๋น์ค ์์ฑ
์๋น์ค ์คํ์ clusterIp ํ๋๋ฅผ None์ผ๋ก ์ค์ ํ๋ฉด
์ฟ ๋ฒ๋คํฐ์ค๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค์ ํ๋์ ์ฐ๊ฒฐํ ์ ์๋ ํด๋ฌ์คํฐ IP๋ฅผ ํ ๋นํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋น์ค๊ฐ ํค๋๋ฆฌ์ค ์ํ๊ฐ ๋๋ค.
apiVersion: v1
kind: Service
metadata:
name: kubia-headless
spec:
clusterIP: None //์ด ๋ถ๋ถ์ด ์๋น์ค๋ฅผ ํค๋๋ฆฌ์ค ์๋น์ค๋ก ๋ง๋ ๋ค.
ports:
- port: 80
targetPort: 8080
selector:
app: kubia
5.6.2 DNS๋ก ํ๋ ์ฐพ๊ธฐ
ํค๋๋ฆฌ์ค ์๋น์ค์์๋ DNS๊ฐ ํ๋์ IP๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๋ ์๋น์ค ํ๋ก์ ๋์ ํ๋์ ์ง์ ์ฐ๊ฒฐํ๋ค.
ํค๋๋ฆฌ์ค ์๋น์ค๋ ์ฌ์ ํ ํ๋ ๊ฐ์ ๋ก๋๋ฐธ๋ฐ์ฑ์ ์ ๊ณตํ์ง๋ง ์๋น์ค ํ๋ก์ ๋์ DNS ๋ผ์ด๋ ๋ก๋น ๋งค์ปค๋์ฆ์ผ๋ก ์ ๊ณตํ๋ค.
5.6.3 ๋ชจ๋ ํ๋ ๊ฒ์- ์ค๋น๋์ง ์์ ํ๋๋ ํฌํจ
์ฟ ๋ฒ๋คํฐ์ค๊ฐ ํ๋์ ๋ ๋๋์ค ์ํ์ ๊ด๊ณ์์ด ๋ชจ๋ ํ๋๋ฅผ ์๋น์ค์ ์ถ๊ฐ๋๊ฒ ํ๋ ค๋ฉด ์๋น์ค์ ๋ค์ ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํด์ผ ํ๋ค.
5.7 ์๋น์ค ๋ฌธ์ ํด๊ฒฐ
์๋น์ค๋ก ํ๋์ ์ก์ธ์คํ ์ ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ํ์ธํ ํ ๋ค์ ์์ํด๋ณด์
- ์ธ๋ถ๊ฐ ์๋ ํด๋ฌ์คํฐ ๋ด์์ ์๋น์ค์ ํด๋ฌ์คํฐ IP์ ์ฐ๊ฒฐ๋๋์ง ํ์ธํ๋ค.
- ์๋น์ค์ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํ๋ ค๊ณ ์๋น์ค IP๋ก ํ์ ํ ํ์์๋ค. (์๋น์ค์ ํด๋ฌ์คํฐ IP๋ ๊ฐ์ IP์ด๋ฏ๋ก ํ๋์ง ์๋๋ค.)
- ๋ ๋๋์ค ํ๋ก๋ธ๋ฅผ ์ ์ํ๋ค๋ฉด ์ฑ๊ณตํ๋์ง ํ์ธํ๋ผ.
- ํ๋๊ฐ ์๋น์ค์ ์ผ๋ถ์ธ์ง ํ์ธํ๋ ค๋ฉด kubectl get endpoints๋ฅผ ์ฌ์ฉํด ํด๋น ์๋ํฌ์ธํธ ์ค๋ธ์ ํธ๋ฅผ ํ์ธํ๋ค.
- FQDN์ด๋ ๊ทธ ์ผ๋ถ๋ก ์๋น์ค์ ์ก์ธ์คํ๋ ค๊ณ ํ๋๋ฐ ์๋ํ์ง ์๋ ๊ฒฝ์ฐ, FQDN ๋์ ํด๋ฌ์คํฐ IP๋ฅผ ์ฌ์ฉํด ์ก์ธ์ค ์ฌ๋ถ๋ฅผ ํ์ธํ๋ผ
- ๋์ ํฌํธ๊ฐ ์๋ ์๋น์ค๋ก ๋ ธ์ถ๋ ํฌํธ์ ์ฐ๊ฒฐํ๊ณ ์๋์ง ํ์ธํ๋ค.
- ํ๋ IP์ ์ง์ ์ฐ๊ฒฐํด ํ๋๊ฐ ์ฌ๋ฐ๋ฅธ ํฌํธ์ ์ฐ๊ฒฐ๋ผ ์๋์ง ํ์ธํ๋ค.
- ํ๋ IP๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ก์ธ์ค ํ ์ ์๋ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ก์ปฌํธ์คํธ์๋ง ๋ฐ์ธ๋ฉํ๊ณ ์๋์ง ํ์ธํ๋ค.
5.8 ์์ฝ
- ์ฟ ๋ฒ๋คํฐ์ค ์๋น์ค ๋ฆฌ์์ค๋ฅผ ์์ฑํด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋น์ค๋ฅผ ๋ ธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค.
- ์์ ๋ ๋จ์ผ IP์ฃผ์์ ํฌํธ๋ก ํน์ ๋ ์ด๋ธ ์ ๋ ํฐ์ ์ผ์นํ๋ ์ฌ๋ฌ ๊ฐ์ ํ๋๋ฅผ ๋ ธ์ถํ๋ค.
- ์ ํ์ ๋ ธ๋ํฌํธ ๋๋ ๋ก๋๋ฐธ๋ฐ์๋ก ์ค์ ํด ํด๋ฌ์คํฐ ์ธ๋ถ์์ ์๋น์ค์ ์ก์ธ์คํ ์ ์๋ค.
- ํ๋๊ฐ ํ๊ฒฝ๋ณ์๋ฅผ ๊ฒ์ํด IP์ฃผ์์ ํฌํธ๋ก ์๋น์ค๋ฅผ ๊ฒ์ํ ์ ์๋ค.
- ExternalName ์๋น์ค ์ ํ์ผ๋ก ์ธ๋ถ ์๋น์ค์ ๋ํ DNS CNAME ๋ณ์นญ์ ์ ๊ณตํ๋ค.
- ๋จ์ผ ์ธ๊ทธ๋ ์ค๋ก ์ฌ๋ฌ HTTP ์๋น์ค๋ฅผ ๋ ธ์ถํ๋ค.
- ํ๋ ์ปจํ ์ด๋์ ๋ ๋๋์ค ํ๋ก๋ธ๋ ํ๋๋ฅผ ์๋น์ค ์๋ํฌ์ธํธ์ ํฌํจํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.
- ํค๋๋ฆฌ์ค ์๋น์ค๋ฅผ ์์ฑํ๋ฉด DNS๋ก ํ๋ IP๋ฅผ ๊ฒ์ํ ์ ์๋ค.