k8s

์ฑ•ํ„ฐ5. ์„œ๋น„์Šค: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒŒ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

๋ž˜๋ฆฌ๋ž˜๋ฆฌ 2023. 4. 12. 13:24

์„œ๋น„์Šค: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒŒ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์•„๋‹Œ ์„ธ๊ณ„์—์„œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„์˜ ์ •ํ™•ํ•œ 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๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.