IT ์‚ฌ๋ฌผํ•จ ๐Ÿป ์ž์„ธํžˆ๋ณด๊ธฐ

k8s

์ฑ•ํ„ฐ6: ๋ณผ๋ฅจ: ์ปจํ…Œ์ด๋„ˆ์— ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€ ์—ฐ๊ฒฐ

๋ž˜๋ฆฌ๋ž˜๋ฆฌ 2023. 4. 27. 10:07

์ฑ•ํ„ฐ6: ๋ณผ๋ฅจ: ์ปจํ…Œ์ด๋„ˆ์— ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€ ์—ฐ๊ฒฐ

*๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ

  • ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ํŒŒ๋“œ ์ƒ์„ฑ
  • ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๋ณผ๋ฅจ ์ƒ์„ฑ
  • ํŒŒ๋“œ ๋‚ด๋ถ€์— ๊นƒ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์‚ฌ์šฉ
  • ํŒŒ๋“œ์— GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ์™€ ๊ฐ™์€ ํผ์‹œ์Šคํ„ดํŠธ ์Šคํ† ๋ฆฌ์ง€ ์—ฐ๊ฒฐ
  • ์‚ฌ์ „ ํ”„๋กœ๋น„์ €๋‹๋œ ํผ์‹œ์Šคํ„ดํŠธ ์Šคํ† ๋ฆฌ์ง€
  • ํผ์‹œ์Šคํ„ดํŠธ ์Šคํ† ๋ฆฌ์ง€์˜ ๋™์  ํ”„๋กœ๋น„์ €๋‹

์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒํ”„ํ•  ๋•Œ ์ถ”๊ฐ€ํ•œ ํŒŒ์ผ๋“ค์„ ๊ฐ–๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

→ ์ƒˆ๋กœ ์‹œ์ž‘ํ•œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด์ „์— ์‹คํ–‰ํ–ˆ๋˜ ์ปจํ…Œ์ด๋„ˆ์— ์“ฐ์—ฌ์ง„ ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ์–ด๋–ค ๊ฒƒ๋„ ๋ณผ ์ˆ˜ ์—†๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ๋ณผ๋ฅจ์€ ํŒŒ๋“œ์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ ์ •์˜๋˜๋ฉฐ ํŒŒ๋“œ์™€ ๋™์ผํ•œ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ฐ€์ง„๋‹ค.

→ ์ด ๋•Œ๋ฌธ์— ๋ณผ๋ฅจ์˜ ์ฝ˜ํ…์ธ ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ์ง€์†๋œ๋‹ค.

6.1 ๋ณผ๋ฅจ ์†Œ๊ฐœ

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ณผ๋ฅจ์€ ํŒŒ๋“œ์˜ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ปจํ…Œ์ด๋„ˆ์™€ ๋™์ผํ•˜๊ฒŒ ํŒŒ๋“œ ์ŠคํŽ™์—์„œ ์ •์˜๋œ๋‹ค.
  • ๋ณผ๋ฅจ์€ ๋…๋ฆฝ์ ์ธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ž์ฒด์ ์œผ๋กœ ์ƒ์„ฑ,์‚ญ์ œ ๋  ์ˆ˜ ์—†๋‹ค.

6.1.1 ์˜ˆ์ œ์˜ ๋ณผ๋ฅจ ์„ค๋ช…

  • ์„ธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์žˆ์ง€๋งŒ ๊ฐ๊ฐ ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๋งŒ์œผ๋กœ๋Š” ํฐ ์“ธ๋ชจ๊ฐ€ ์—†๋‹ค.

  • ๋ณผ๋ฅจ ๋‘๊ฐœ๋ฅผ ํŒŒ๋“œ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์„ธ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ์ ์ ˆํ•œ ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธํ•œ๋‹ค๋ฉด ๋‚˜์€ ์‹œ์Šคํ…œ์ด ์ƒ์„ฑ๋œ๋‹ค.
  • ์ด ๊ฒฝ์šฐ ๋ณผ๋ฅจ ๋‘๊ฐœ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ์„ธ ๊ฐœ์— ๋งˆ์šดํŠธ ํ•œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ์™€ ๋ณผ๋ฅจ์ด ๊ฐ™์€ ํŒŒ๋“œ์— ๊ตฌ์„ฑ๋๋”๋ผ๋„ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ทธ ํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  • ์˜ˆ์ œ์˜ ๋‘ ๋ณผ๋ฅจ์€ ๋นˆ ์ƒํƒœ๋กœ ์ดˆ๊ธฐํ™”๋˜๋ฏ€๋กœ emptyDir ์œ ํ˜•์˜ ๋ณผ๋ฅจ์ด๋‹ค.

6.1.2 ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ณผ๋ฅจ ์œ ํ˜• ์†Œ๊ฐœ

  • emptyDir: ์ผ์‹œ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๋‹จํ•œ ๋นˆ ๋””๋ ‰ํ„ฐ๋ฆฌ
  • hostPath: ์›Œ์ปค ๋…ธ๋“œ์˜ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ํŒŒ๋“œ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋งˆ์šดํŠธํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
  • gitRepo: ๊นƒ ๋ฆฌํฌ๋ฆฌ์ €ํ‹ธ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์ฒดํฌ์•„์›ƒํ•ด ์ดˆ๊ธฐํ™”ํ•œ ๋ณผ๋ฅจ
  • nfs: NFS ๊ณต์œ ๋ฅผ ํŒŒ๋“œ์— ๋งˆ์šดํŠธํ•œ๋‹ค.
  • gcePersistentDisk, awsElasticBlockStore,azureDisk: ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž์˜ ์ „์šฉ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋งˆ์šดํŠธํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
  • cinder, cephfs, iscsi, flocker, glusterfs, quobyte, rbd, flexVolume, vsphere Volume, photoPersistentDis, scaleIO: ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋„คํŠธ์›Œํฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋งˆ์šดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
  • configMap, secret, downwardAPI: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฆฌ์†Œ์Šค๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ ์ •๋ณด๋ฅผ ํŒŒ๋“œ์— ๋…ธ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํŠน๋ณ„ํ•œ ์œ ํ˜•์˜ ๋ณผ๋ฅจ
  • persistentVolumneClaim: ์‚ฌ์ „์— ํ˜น์€ ๋™์ ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹๋œ ํผ์‹œ์Šคํ„ดํŠธ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ๋‹ค.

6.2 ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•œ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ 

ํ•˜๋‚˜์˜ ํŒŒ๋“œ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•œ๋Š” ๋ฐฉ๋ฒ•

6.2.1 emptyDir ๋ณผ๋ฅจ ์‚ฌ์šฉ

๋ณผ๋ฅจ์ด ๋นˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์‹œ์ž‘๋œ๋‹ค.

emptyDir ๋ณผ๋ฅจ์€ ๋™์ผ ํŒŒ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„

ํŒŒ์ผ์„ ๊ณต์œ ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

๋‹จ์ผ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์“ฐ๋Š” ๋ชฉ์ ์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ๋“œ์— emptyDir ๋ณผ๋ฅจ ์‚ฌ์šฉ

ํŒŒ๋“œ ์ƒ์„ฑํ•˜๊ธฐ

//๋™์ผํ•œ ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‘๊ฐœ ์žˆ๋Š” ํŒŒ๋“œ:fortune-pod.yaml
apiVersion: v1
kind: pod
metadata:
	name: fortune
spec:
	containers:
	- image: luksa/fortune
		name: html-generator //์ฒซ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ๋Š” html-generator์ด๋ฆ„์— luksa/fortune ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
		volumeMounts:
		- name: html
			mountPath: /var/htdocs //html์ด๋ž€ ์ด๋ฆ„์˜ ๋ณผ๋ฅจ์„ ์ปจํ…Œ์ด๋„ˆ์˜ /var/htdocs์— ๋งˆ์šดํŠธํ•œ๋‹ค.
	- image: nginx:alpine
		name: web-server //๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ
		volumneMounts:
		- name: html
			mountPath: /usr/share/nginx/html
			readOnly: true //์œ„์™€ ๋™์ผํ•œ ๋ณผ๋ฅจ์„ ์ฝ๊ธฐ์ „์šฉ์œผ๋กœ ๋งˆ์šดํŠธํ•œ๋‹ค.
		ports:
		- containerPort: 80
			protocol: TCP
	volumes:
	- name: html
		emptyDir: {} //html์ด๋ž€ ๋‹จ์ผ emptyDir ๋ณผ๋ฅจ์„ ์œ„์˜ ์ปจํ…Œ์ด๋„ˆ ๋‘ ๊ฐœ์— ๋งˆ์šดํŠธํ•œ๋‹ค 
  • ํŒŒ๋“œ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‘ ๊ฐœ์™€ ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ๋งˆ์šดํŠธ๋œ ๋‹จ์ผ ๋ณผ๋ฅจ์„ ๊ฐ–๋Š”๋‹ค.
  • html-generator ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋งค 10์ดˆ๋งˆ๋‹ค fortune ๋ช…๋ น์˜ ๊ฒฐ๊ณผ๋ฅผ /var/htdocs/index.html์— ์“ฐ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.
  • web-server ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘ ํ•˜์ž๋งˆ์ž ์ปจํ…Œ์ด๋„ˆ๋Š” /usr/share/nginx/html ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ HTMLํŒŒ์ผ์„ ์„œ๋น„์Šคํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

emptyDir์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋งค์ฒด ์ง€์ •ํ•˜๊ธฐ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— emptyDir์„ ๋””์Šคํฌ๊ฐ€ ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” tmpfs ํŒŒ์ผ์‹œ์Šคํ…œ์œผ๋กœ ์ƒ์„ฑํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.

→ ์ด๋ฅผ ์œ„ํ•ด emptyDir์˜ medium์„ Memory๋กœ ์ง€์ •ํ•œ๋‹ค.

volumes:
	- name: html
		emptyDir:
			medium: Memory // ์ด emptyDir์˜ ํŒŒ์ผ๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋  ๊ฒƒ์ด๋‹ค.

emptyDir ๋ณผ๋ฅจ์€ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ณผ๋ฅจ์˜ ์œ ํ˜•์ด์ง€๋งŒ ๋‹ค๋ฅธ ์œ ํ˜•๋“ค๋„ ์ด ๋ณผ๋ฅจ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค.

6.2.2 ๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ๋ณผ๋ฅจ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

  • gitRepo ๋ณผ๋ฅจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ emptyDir ๋ณผ๋ฅจ์ด๋ฉฐ ํŒŒ๋“œ๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๊ณ  ํŠน์ • ๋ฆฌ๋น„์ „์„
    ์ฒดํฌ์•„์›ƒํ•ด ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์šด๋‹ค.
  • gitRepo ๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋œ ํ›„์—๋Š” ์ฐธ์กฐํ•˜๋Š” ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์™€ ๋™๊ธฐํ™”ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์— ์ถ”๊ฐ€ ์ปค๋ฐ‹์„ ํ‘ธ์‹œํ•ด๋„ ๋ณผ๋ฅจ์— ์žˆ๋Š” ํŒŒ์ผ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํŒŒ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ํŒŒ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ์ƒˆ ํŒŒ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ด ํŒŒ๋“œ์˜ ๋ณผ๋ฅจ์€ ์ตœ์‹  ์ปค๋ฐ‹์„ ํฌํ•จํ•œ๋‹ค.

๋ณต์ œ๋œ ๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ ํŒŒ์ผ์„ ์„œ๋น„์Šคํ•˜๋Š” ์›น ์„œ๋ฒ„ ์‹คํ–‰ํ•˜๊ธฐ

//gitRepo ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ๋“œ: gitrepo-volume-pod.yaml
apiVersion: v1
kind: Pod
metadata:
	name: gitrepo-volume-pod
spec:
	containers:
	- images: nginx:apline
		name: web-server
		volumeMounts:
		- name: html
			mountPath: /usr/shar/nginx/html
			readOnly: true
		ports:
		- containerPort: 80
			protocol: TCP
		volumes:
		- name: html
			gitRepo: //๊นƒ ๋ ˆํฌ ๋ณผ๋ฅจ ์ƒ์„ฑ
				reqpository: ๊นƒ ๋ ˆํฌ์ง€ํ† ์ง€.git //๋ณผ๋ฅจ์€ ์ด ๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ๋ณต์ œ
				revision: master //master ๋ธŒ๋žœ์น˜๋ฅผ ์ฒดํฌ์•„์›ƒ
				directory: . //๋ณผ๋ฅจ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ๋ณต์ œ
  • ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋ณผ๋ฅจ์€ ๋จผ์ € ๋นˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ํŠน์ • ๊นƒ ๋ ˆํฌ๋ฅผ ๋ณต์ œํ•œ๋‹ค.
  • ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ . ์œผ๋กœํ•˜์˜€๊ธฐ์— ๋ณผ๋ฅจ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์ œ๋œ๋‹ค.

๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์™€ ํŒŒ์ผ ๋™๊ธฐํ™” ์—ฌ๋ถ€ ํ™•์ธํ•˜๊ธฐ

๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์˜ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋˜์„œ ์ƒˆ ๋ฒ„์ „์„ ๋ณด๋ ค๋ฉด ํŒŒ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

→ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ ๋งˆ๋‹ค ํŒŒ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹  ๋ณผ๋ฅจ์ด ํ•ญ์ƒ ๊นƒ ๋ฆฌํฌ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋„๋ก ์ถ”๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ ์†Œ๊ฐœ

์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋Š” ํŒŒ๋“œ์˜ ์ฃผ ์ปจํ…Œ์ด๋„ˆ์˜ ๋™์ž‘์„ ๋ณด์™„ํ•œ๋‹ค.

๋„์ปค ํ—ˆ๋ธŒ์˜ “git sync” ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด ๊นƒ ๋ ˆํฌ๋ณผ๋ฅจ๋ฅผ ์ตœ์‹ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์ œ์˜ ํŒŒ๋“œ์—์„œ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์— ์ด ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ธฐ์กด ๊นƒ ๋ ˆํฌ๋ณผ๋ฅจ์„ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•œ ๋’ค,

๊นƒ ๋™๊ธฐํ™” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์™€ ํŒŒ์ผ ๋™๊ธฐํ™”๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.

 

ํ”„๋ผ์ด๋น— ๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ๋กœ gitRepo ๋ณผ๋ฅจ ์‚ฌ์šฉํ•˜๊ธฐ

ํ”„๋ผ์ด๋น— ๊นƒ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ๋ฅด ์ปจํ…Œ์ด๋„ˆ์— ๋ณต์ œํ•˜๋ ค๋ฉด ๊นƒ ๋™๊ธฐํ™” ์‚ฌ์ด๋“œ์นด๋‚˜ git Repo ๋ณผ๋ฅจ์„ ๋Œ€์‹ ํ•˜๋Š” ๋‹ค๋ฅธ ์œ ์‚ฌ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

gitRepo ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ์ •๋ฆฌ

๋ณผ๋ฅจ์„ ํฌํ•จํ•˜๋Š” ํŒŒ๋“œ๋ฅผ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์ƒ์„ฑ๋˜๊ณ  ๋…์ ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ „์šฉ ๋””๋ ‰ํ‹ฐ๋Ÿฌ๋‹ค.

6.3 ์›Œ์ปค ๋…ธ๋“œ ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ ์ ‘๊ทผ

ํŠน์ • ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์˜ ํŒŒ๋“œ๋Š” ๋…ธ๋“œ์˜ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋…ธ๋“œ ๋””๋ฐ”์ด์Šค๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ์˜ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

→ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” hostPath ๋ณผ๋ฅจ์œผ๋กœ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค.

6.3.1 hostPath ๋ณผ๋ฅจ ์†Œ๊ฐœ

  • hostPath ๋ณผ๋ฅจ์€ ๋…ธ๋“œ ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ํŠน์ • ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • hostPath ๋ณผ๋ฅจ์˜ ์ฝ˜ํ…์ธ ๋Š” ํŒŒ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ํŒŒ๋“œ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ๋‹ค์Œ ํŒŒ๋“œ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ ๋™์ผ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” hostPath ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๊ณ , ์ด์ „ ํŒŒ๋“œ์™€ ๋™์ผํ•œ ๋…ธ๋“œ์— ์Šค์ผ€์ค„๋ง๋œ๋‹ค๋Š” ์กฐ๊ฑด์—์„œ ์ƒˆ๋กœ์šด ํŒŒ๋“œ๋Š” ์ด์ „ ํŒŒ๋“œ๊ฐ€ ๋‚จ๊ธด ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

6.3.2 hostPath ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ ํŒŒ๋“œ ๊ฒ€์‚ฌํ•˜๊ธฐ

๋Œ€๋ถ€๋ถ„์ด ๋…ธ๋“œ์˜ ๋กœ๊ทธํŒŒ์ผ์ด๋‚˜ kubeconfig, CA ์ธ์ฆ์„œ๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ด ์œ ํ˜•์˜ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ์ค‘ ์–ด๋А ๊ฒƒ๋„ hostPath ๋ณผ๋ฅจ์„ ์ž์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

6.4 ํผ์‹œ์Šคํ„ดํŠธ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ

ํŒŒ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•ด์•ผํ•˜๊ณ  ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์žฌ์Šค์ผ€์ค„๋ง๋œ ๊ฒฝ์šฐ์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ๋„ ์ ‘๊ทผ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— NAS(Network-Attached Storage)์œ ํ˜•์— ์ €์žฅ๋ผ์•ผ ํ•œ๋‹ค.

6.4.1 GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๋ฅผ ํŒŒ๋“œ ๋ณผ๋ฅจ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ ์ƒ์„ฑํ•˜๊ธฐ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ๋Š” ๋™์ผํ•œ ์˜์—ญ์— ์ƒ์„ฑํ•œ๋‹ค.

  • ์ด ๋ช…๋ น์€ mongodb๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์—ฌ์ง„ 1GB ํฌ๊ธฐ์˜ GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ๋“œ ์ƒ์„ฑํ•˜๊ธฐ

//gcePersistentDisk ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ๋“œ: mongodb-pod-gcepd.yaml
apiVersion: v1
kind: Pod
metadata:
	name: mongodb
spec:
	volumes:
	- name: mongodb-data
		gcePersistentDisk: //๋ณผ๋ฅจ์˜ ์œ ํ˜•์€ GCEํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ
			pdName: mongodb //ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ์˜ ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ์ด์ „์— ์ƒ์„ฑํ•œ ์‹ค์ œ PD์™€ ์ผ์น˜ํ•ด์•ผํ•œ๋‹ค.
			fsType: ext4 //ํŒŒ์ผ์‹œ์Šคํ…œ ์œ ํ˜•์€ EXT4
	containers:
	- image: mongo
		name: mongodb
		volumeMounts:
		- name: mongodb-data
			mountPath: /data/db //MongoDB๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒฝ๋กœ๋‹ค.
		ports:
		- containerPort: 27017
			protocol: TCP
  • ํŒŒ๋“œ๋Š” ์ƒ์„ฑํ•œ GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋‹จ์ผ ๋ณผ๋ฅจ๊ณผ ๋‹จ์ผ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ด๋ค„์ง„๋‹ค.
    ๋ณผ๋ฅจ์„ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ MongoDB๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” /data/db์— ๋งˆ์šดํŠธํ•œ๋‹ค.

MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„ํ๋จผํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด ํผ์‹œ์Šคํ„ดํŠธ ์Šคํ† ๋ฆฌ์ง€์— ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ

์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— MongoDB ์…ธ์„ ์‹คํ–‰ํ•ด ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๋ฅผ ํŒŒ๋“œ ์ธ์Šคํ„ด์Šค ์—ฌ๋Ÿฌ ๊ฐœ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

6.4.2 ๊ธฐ๋ฐ˜ ํผ์‹œ์Šคํ„ดํŠธ ์Šคํ† ๋ฆฌ์ง€๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋ณผ๋ฅจ ์‚ฌ์šฉํ•˜๊ธฐ

๊ตฌ๊ธ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์—”์ง„ - GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ ๋ณผ๋ฅจ

AWS EC2 - awsElasticBlockStore

Azure - azureFile, azureDisk

 

NFS ๋ณผ๋ฅจ ์‚ฌ์šฉํ•˜๊ธฐ

ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์™ธ์žฅ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋ณผ๋ฅจ์— ๋งˆ์šดํŠธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์ง€์› ์˜ต์…˜์ด ์ œ๊ณต๋œ๋‹ค.

...
volumes:
- name: mongodb-data
	nfs: //์ด ๋ณผ๋ฅจ์€ NFS ๊ณต์œ ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
		server: 1.2.3.4 //NFS ์„œ๋ฒ„์˜ IP
		path: /some/path //์„œ๋ฒ„์˜ ์ต์ŠคํฌํŠธ๋œ ๊ฒฝ๋กœ

NFS ๊ณต์œ ๋ฅผ ๋งˆ์šดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์œ„์™€๊ฐ™์ด NFS์„œ๋ฒ„์™€ ์„œ๋ฒ„์—์„œ ์ต์ŠคํฌํŠธ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ์ˆ  ์‚ฌ์šฉํ•˜๊ธฐ

๋™์ผํ•œ ํŒŒ๋“œ ์ •์˜๋ฅผ ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

6.5 ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ์ˆ ๊ณผ ํŒŒ๋“œ ๋ถ„๋ฆฌ

์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ด€๋ จ ์ฒ˜๋ฆฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๋งŒ์˜ ์˜์—ญ์ด์–ด์•ผ ํ•œ๋‹ค.

6.5.1 ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ๊ณผ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ์†Œ๊ฐœ

์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์— ์Šคํ† ๋ฆฌ์ง€๋ฅผ
์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค 2๊ฐœ

  • ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ
  • ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ ํด๋ ˆ์ž„

  • ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์„œ๋ฒ„๋กœ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ๋“ฑ๋กํ•œ๋‹ค.
  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋˜๋ฉด ๊ด€๋ฆฌ์ž๋Š” ํฌ๊ธฐ์™€ ์ง€์› ๊ฐ€๋Šฅํ•œ ์ ‘๊ทผ ๋ชจ๋“œ๋ฅผ ์ง€์ •
  • ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์šฉ์ž๋Š” ์ ‘๊ทผ ๋ชจ๋“œ๋ฅผ ๋ช…์‹œํ•œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API ์„œ๋ฒ„์— ๊ฒŒ์‹œํ•˜๊ณ  ์ฟ ๋ฒ„๋Š” ์ ์ ˆํ•œ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ์„ ์ฐพ์•„ ํด๋ ˆ์ž„์— ๋ณผ๋ฅจ์„ ๋ฐ”์ธ๋”ฉํ•œ๋‹ค.
  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์€ ํŒŒ๋“œ ๋‚ด๋ถ€์˜ ๋ณผ๋ฅจ ์ค‘ ํ•˜๋‚˜๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์˜ ๋ฐ”์ธ๋”ฉ์„ ์‚ญ์ œํ•ด ๋ฆด๋ฆฌ์Šค๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ๋™์ผํ•œ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

6.5.2 ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ ์ƒ์„ฑ

//gcePersistentDisk ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ: mongodb-pv-gcepd.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
	name: mongodb-pv
spec:
	capacity:
		storage: 1Gi //PersistentVolume ์‚ฌ์ด์ฆˆ๋ฅผ ์ง€์ •
	accessModes:
	- ReadWriteOnce //์ด pv๋Š” ๋‹จ์ผ ํด๋ผ์ด์–ธํŠธ์˜ ์ผ๊ธฐ/์“ฐ๊ธฐ์šฉ ์ด๋‚˜ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งˆ์šดํŠธ๋œ๋‹ค.
	- ReadOnlyMany
	persistentVolumeReclaimPolicy: Retain //ํด๋ ˆ์ž„์ด ํ•ด์ œ๋œ ํ›„ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ์œ ์ง€๋ผ์•ผ ํ•œ๋‹ค.
	gcePersistentDisk: //ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ์ด์ „์— ์ƒ์„ฑํ•œ GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค.
		pdName: mongodb
		fsTpye: ext4

  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ๋•Œ ๊ด€๋ฆฌ์ž๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๊ฒŒ ์šฉ๋Ÿ‰์ด ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€
    ๋‹จ์ผ ๋…ธ๋“œ๋‚˜ ๋™์‹œ์— ๋‹ค์ˆ˜ ๋…ธ๋“œ์— ์ฝ๊ธฐ๋‚˜ ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์•ผํ•จ.
  • ๋˜ํ•œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—๊ฒŒ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์ด ํ•ด์ œ๋˜๋ฉด ์–ด๋–ค ๋™์ž‘์„ ํ•ด์•ผํ• ์ง€.

  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ๋…ธ๋“œ์™€ ๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ ์ˆ˜์ค€ ๋ฆฌ์†Œ์Šค๋‹ค.

6.5.3 ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ์ƒ์„ฑ์„ ํ†ตํ•œ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ ์š”์ฒญ

ํŒŒ๋“œ๊ฐ€ ์žฌ์Šค์ผ€์ค„๋ง๋˜๋”๋ผ๋„ ๋™์ผํ•œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

→ ํด๋ ˆ์ž„์€ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๋ณ„๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋‹ค.

 

ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ์ƒ์„ฑํ•˜๊ธฐ

// ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„: mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
	name: mongodb-pvc //ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์˜ ์ด๋ฆ„์œผ๋กœ ๋‚˜์ค‘์— ํŒŒ๋“œ์˜ ๋ณผ๋ฅจ์„ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
spec:
	resources:
		requests:
			storage: 1Gi //1GiB์˜ ์Šคํ† ๋ฆฌ์ง€ ์š”์ฒญ
	accessModes:
	- ReadWriteOnce //๋‹จ์ผ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€(์ฝ๊ธฐ ์“ฐ๊ธฐ ๋ชจ๋‘ ์ˆ˜ํ–‰)
	storageClassname: ""
  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์ด ์ƒ์„ฑ๋˜์ž๋งˆ์ž ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ ์ ˆํ•œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ์ฐพ๊ณ  ํด๋ ˆ์ž„์— ๋ฐ”์ธ๋”ฉํ•œ๋‹ค.
  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์˜ ์šฉ๋Ÿ‰์€ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์˜ ์š”์ฒญ์„ ์ˆ˜์šฉํ•  ๋งŒํผ ์ปค์•ผํ•œ๋‹ค.
  • ๋ณผ๋ฅจ ์ ‘๊ทผ ๋ชจ๋“œ๋Š” ํด๋ ˆ์ž„์—์„œ ์š”์ฒญํ•œ ์ ‘๊ทผ ๋ชจ๋“œ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.

ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ์กฐํšŒํ•˜๊ธฐ

๋‹ค์Œ์€ ์ ‘๊ทผ ๋ชจ๋“œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์•ฝ์–ด.

  • RWO(ReadWriteOnce): ๋‹จ์ผ ๋…ธ๋“œ๋งŒ์ด ์ฝ๊ธฐ/์“ฐ๊ธฐ์šฉ์œผ๋กœ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ๊ฐ€๋Šฅ
  • ROX(ReadOnlyMany): ๋‹ค์ˆ˜ ๋…ธ๋“œ๊ฐ€ ์ฝ๊ธฐ์šฉ์œผ๋กœ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ๊ฐ€๋Šฅ
  • RWX(ReadWriteMany): ๋‹ค์ˆ˜ ๋…ธ๋“œ๊ฐ€ ์ฝ๊ธฐ/์“ฐ๊ธฐ์šฉ์œผ๋กœ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ๊ฐ€๋Šฅ

→์ด๋Š” ํŒŒ๋“œ ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ณผ๋ฅจ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›Œ์ปค ๋…ธ๋“œ ์ˆ˜์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค.

ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์€ ํด๋Ÿฌ์Šคํ„ฐ ์ˆ˜์ค€์˜ ๋ฆฌ์†Œ์Šค์ด๋ฏ€๋กœ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํŒŒ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

6.5.4 ํŒŒ๋“œ์—์„œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ์‚ฌ์šฉํ•˜๊ธฐ

// ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ๋“œ: mongodb-pod-pvc.yaml
apiVersion: v1
kind: Pod
metadata:
	name: mongodb
spec:
	containers:
	- image: mongo
		name: mongodb
		volumeMounts:
		- name: mongodb-data
			mountPath: /data/db
		ports:
		- containerPort: 27017
			protocol : TCP
		volumes:
		- name: mongodb-data
			persistentVolumeClaim:
				claimName: mongodb-pvc //ํŒŒ๋“œ ๋ณผ๋ฅจ์—์„œ ์ด๋ฆ„์œผ๋กœ ํผ์‹œ์Šคํ„ดํŠธ ๋ณผ๋ฅจ ํด๋ ˆ์ž„์„ ์ฐฝ์กฐํ•œ๋‹ค

6.5.5 ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ๊ณผ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ์‚ฌ์šฉ์˜ ์žฅ์  ์ดํ•ดํ•˜๊ธฐ

  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ๊ณผ ํผ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์„ ์ƒ์„ฑํ•˜๋Š” ์ถ”๊ฐ€ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋งž์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋Š”
    ๊ธฐ์ €์— ์‚ฌ์šฉ๋œ ์‹ค์ œ ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ์ˆ ์„ ์•Œ ํ•„์š”๊ฐ€ ์—†๋‹ค.

  • ๋™์ผํ•œ ํŒŒ๋“œ์™€ ํด๋ ˆ์ž„ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜์™€ ๊ด€๋ จ๋œ ์–ด๋–ค ๊ฒƒ๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ
    ๋‹ค๋ฅธ ์ฟ ๋ฒ„ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

6.5.6 ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ ์žฌ์‚ฌ์šฉ

ํŒŒ๋“œ์™€ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์„ ์‚ญ์ œํ•œ๋‹ค

→ ํด๋ ˆ์ž„์˜ ์ƒํƒœ๊ฐ€ Pending์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค.

→์ด๋ฏธ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ณผ๋ฅจ์„ ์™„์ „ํžˆ ๋น„์šฐ์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ์šด ํด๋ ˆ์ž„์— ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์—†๋‹ค.

→ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ณผ๋ฅจ์„ ๋น„์šฐ์ง€ ์•Š์•˜๋‹ค๋ฉด ํด๋ ˆ์ž„๊ณผ ํŒŒ๋“œ๊ฐ€ ์ƒ์„ฑ๋๋‹ค๊ณ  ํ• ์ง€๋ผ๋„ ์ด์ „ ํŒŒ๋“œ๊ฐ€ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

 

ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ์ˆ˜๋™์œผ๋กœ ๋‹ค์‹œ ํด๋ ˆ์ž„ํ•˜๊ธฐ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— persistentVolumeClaimPolicy๋ฅผ Retain์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์ด ์ด๋Ÿฌํ•œ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํด๋ ˆ์ž„์ด ํ•ด์ œ๋ผ๋„ ๋ณผ๋ฅจ๊ณผ ์ฝ˜ํ…์ธ ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํ•œ๋‹ค.

 

ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ํด๋ ˆ์ž„ํ•˜๊ธฐ

๋ฆฌํด๋ ˆ์ž„ ์ •์ฑ…์€ Recycle ๊ณผ Delete๋‹ค.

Recycle: ๋ณผ๋ฅจ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ณผ๋ฅจ์ด ๋‹ค์‹œ ํด๋ ˆ์ž„๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณผ๋ฅจ์„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค(๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด)

Delete: ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

6.6 ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์˜ ๋™์  ํ”„๋กœ๋น„์ €๋‹

ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹  ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ๋ฐฐํฌ → ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒ ๊ฐ€๋Šฅํ•œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์˜ ํƒ€์ž…์„ ํ•˜๋‚˜ ์ด์ƒ์˜ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค ์˜ค๋ธŒ์ ํŠธ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

6.6.1 ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ๋ฆฌ์†Œ์Šค๋ฅผ ํ†ตํ•œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šคํ† ๋ฆฌ์ง€ ์œ ํ˜• ์ •์˜ํ•˜๊ธฐ

์‚ฌ์šฉ์ž๊ฐ€ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์„ ์ƒ์„ฑํ•˜๋ฉด ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์ด ํ”„๋กœ๋น„์ €๋‹๋˜๋ฏ€๋กœ ๊ด€๋ฆฌ์ž๋Š” ํ•˜๋‚˜ ํ˜น์€ ๊ทธ ์ด์ƒ์˜ ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค.

//์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ์ •์˜: storageclass-fast-gcepd.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
	name: fast
provisioner: kubernetes.io.gce-pd //ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ ํ”„๋กœ๋น„์ €๋‹์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‹ค.
parameters:
type: pd-ssd
zone: europe-west1-b //์ด๋Ÿฐ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ”„๋กœ๋น„์ €๋„ˆ๋กœ ์ „๋‹ฌ๋œ๋‹ค.

6.6.2 ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์—์„œ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค ์š”์ฒญํ•˜๊ธฐ

์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์˜ ์ด๋ฆ„์— ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ • ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” PVC ์ •์˜ ์ƒ์„ฑํ•˜๊ธฐ

//๋™์  ํ”„๋กœ๋น„์ €๋‹ PVC: mongodb-pvc-dp.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
	name: mongodb-pvc
spec:
	storageClassName: fast // PVC๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ์š”์ฒญํ•œ๋‹ค.
resources:
	requests:
		storage: 100Mi
	accessModes:
		- ReadWriteOnce

6.3.3 ์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๋™์  ํ”„๋กœ๋น„์ €๋‹

์Šคํ† ๋ฆฌ์ง€ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„ ์ƒ์„ฑํ•˜๊ธฐ

storageClassName ์†์„ฑ์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  PVC๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ตฌ๊ธ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์—”์ง„์—์„œ๋Š” pd-standard ์œ ํ˜•์˜ GCE ํผ์‹œ์Šคํ„ดํŠธ ๋””์Šคํฌ๊ฐ€ ํ”„๋กœ๋น„์ €๋‹๋œ๋‹ค.

 

ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์„ ๋ฏธ๋ฆฌ ํ”„๋กœ๋น„์ €๋‹๋œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์œผ๋กœ ๋ฐ”์ธ๋”ฉ ๊ฐ•์ œํ™”ํ•˜๊ธฐ

storageClassName ์†์„ฑ์„ ๋นˆ ๋ฌธ์ž์—ด๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฏธ๋ฆฌ ํ”„๋กœ๋น„์ €๋‹๋œ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์ด ์žˆ๋‹ค๊ณ  ํ• ์ง€๋ผ๋„ ๋™์  ๋ณผ๋ฅจ ํ”„๋กœ๋น„์ €๋„ˆ๋Š” ์ƒˆ๋กœ์šด ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ์„ ํ”„๋กœ๋น„์ €๋‹ ํ•œ๋‹ค.

 

ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ ๋™์  ํ”„๋กœ๋น„์ €๋‹์˜ ์ „์ฒด ๊ทธ๋ฆผ ์ดํ•ดํ•˜๊ธฐ

6.7 ์š”์•ฝ

  • ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ํŒŒ๋“œ ์ƒ์„ฑ๊ณผ ํŒŒ๋“œ์˜ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ๋ณผ๋ฅจ์„ ํŒŒ๋“œ์— ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•ด ๋™์ผํ•œ ํŒŒ์ผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•œ๋‹ค.
  • emptDir ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•ด ์ž„์‹œ, ๋น„์˜๊ตฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • gitRepo ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•ด ๊นƒ ๋ฆฌํฌ์˜ ์ฝ˜ํ…์ธ ๋กœ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฑ„์šด๋‹ค.
  • hostPath ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•ด ํ˜ธ์ŠคํŠธ ๋…ธ๋“œ์˜ ํŒŒ์ผ์— ์ ‘๊ทผํ•œ๋‹ค.
  • ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€ ๋ณผ๋ฅจ์— ๋งˆ์šดํŠธํ•ด ํŒŒ๋“œ๊ฐ€ ์žฌ์‹œ์ž‘๋ผ๋„ ํŒŒ๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
  • ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจ๊ณผ ํผ์‹œ์Šคํ„ดํŠธ๋ณผ๋ฅจํด๋ ˆ์ž„์„ ์‚ฌ์šฉํ•ด ํŒŒ๋“œ์™€ ์Šคํ† ๋ฆฌ์ง€ ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • ๊ฐ PVC์„ ์œ„ํ•ด PV์„ ์›ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ํด๋ž˜์Šค๋กœ ๋™์  ํ”„๋กœ๋น„์ €๋‹ํ•œ๋‹ค.
  • PVC์„ ๋ฏธ๋ฆฌ ํ”„๋กœ๋น„์ €๋‹๋œ PV๊ณผ ๋ฐ”์ธ๋”ฉํ•˜๊ณ ์ž ํ•  ๋•Œ ๋™์  ํ”„๋กœ๋น„์ €๋„ˆ๊ฐ€ ๊ฐ„์„ญํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค.