์๋ ํ์ธ์ ๊ตฌ๋ ์๋, ์ต์ DevOps ์์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
์ด๋์ ๋ด์ด ๊ป์ถฉ ์ฐพ์์จ ๊ฒ ๊ฐ์ต๋๋ค. ์์ฆ ๋ฒ๊ฝ๋ ํ์ฐฝ ํผ๊ณ ์์ด์ ๋๋ค์ด๋ ๋ง์ด ๊ฐ์ค ๊ฒ ๊ฐ์๋ฐ์. ์ด๋ฒ ํ ์ฃผ๋ ๊ตฌ๋ ์๋์ด ๋ด์ ํ๊ป ๋๋ ์ ์์์ผ๋ฉด ํฉ๋๋ค.
์ด๋ฒ ์์์ง์์ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ํด, Kubernetes์ ์ต์ ๋ฒ์ ์์์ ๋ค๋ค๋ณด๋๋ก ํ ๊ฒ์.
โจ๋ณด์์ฑ๊ณผ ์ด์์ฑ์ ๋์ฑ ๊ฐํํ๋ Kubernetes 1.30
Kubernetes 1.30 ๋ฒ์ ์ 2024๋ 1์๋ถํฐ ๋ฐฐํฌ ์ค๋น ๊ณผ์ ์ด ์์๋์ด 2024๋ 4์ 17์ผ์ ๋ฐฐํฌ๋ ์์ ์ ๋๋ค.
์ด๋ฒ ๋ฒ์ ์์ Kubernetes ํด๋ฌ์คํฐ์ ๋ณด์์ฑ๊ณผ ์ด์์ฑ์ ๋์ฑ ๊ฐ์ ํ ์์ ์ด๋ผ๊ณ ํ๋๋ฐ์. ์ด๋ค ์ ์ด ์ ๋ฐ์ดํธ๋ ์์ ์ธ์ง ํจ๊ป ์์๋ณด๊ฒ ์ต๋๋ค.
User Namespace ๊ธฐ๋ฅ ์ถ๊ฐ (Beta)
๊ธฐ์กด Kubernetes์ Pod๋ Host ์๋ฒ์ ๋์ผํ User Namespace๋ฅผ ๊ณต์ ํ์์ต๋๋ค. User Namespace๋, Linux ์๋ฒ์ ์ ๊ทผํ๋ ์ฌ๋ฌ ์ฌ์ฉ์๋ฅผ ์์คํ ์ ๋ฑ๋กํ์ฌ ๊ตฌ๋ถ์ง๋ ์์ญ์ ๋งํ๋๋ฐ์.
์ด๋ ๊ฒ ์๋ฒ์ ์ฌ์ฉ์(User ID)๋ฅผ ๋ฑ๋กํ ๊ฒฝ์ฐ, ์ด๋ค ํ์ผ์ด๋ ํด๋๋ฅผ ํน์ ์ฌ์ฉ์๋ง ์ฝ๊ธฐ/์์ /์คํ์ด ๊ฐ๋ฅํ๋๋ก ์ค์ ๊ฐ๋ฅํ๋ฏ๋ก ์ฌ์ฉ์ ๊ฐ์ ํ๋ ์์ญ์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์์ ์ธ๊ธํ๋ 'Pod๊ฐ Host ์๋ฒ์ ๋์ผํ User Namespace๋ฅผ ๊ณต์ 'ํ๋ค๋ ๊ฒ์, Pod๊ฐ ํดํน ๋ฐ ๊ณต๊ฒฉ ๋์์ด ๋๋ค๋ฉด ๊ทธ Pod๊ฐ ๋์ ์ค์ธ Host๋ ์ํํด์ง๋ค๋ ๋ป์ ๋๋ค.
์ด๋ฐ ๋ณด์ ์ํ์ ๋ง๊ธฐ ์ํด ์ด๋ฒ ๋ฆด๋ฆฌ์ฆ์์ Pod ๋ด๋ถ์์ ์ฌ์ฉ๋๋ User ID๋ฅผ Host์ ๋ค๋ฅด๊ฒ ์ค์ ํ ์ ์๊ฒ ๋์์ต๋๋ค. ์ด๋ก์จ ์ป์ ์ ์๋ ์ด์ ์ ์๋์ ๊ฐ์ต๋๋ค.
- ๊ณต๊ฒฉ ๋ฉด์ ์ต์ํ
- Pod์ ๊ณต๊ฒฉ์๊ฐ ์ ๊ทผํ๊ฒ ๋ ๊ฒฝ์ฐ, Host์ User Namespace๊ฐ ๋ค๋ฅด๋ฏ๋ก Host๊น์ง ๊ณต๊ฒฉํ๊ธฐ ์ด๋ ค์์ง๋๋ค.
- Host์ ๋ถ๋ฆฌ
- Host์ User Namespace๊ฐ ๋ถ๋ฆฌ๋๋ฉด, ์๋ก ์ฌ์ฉํ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ฑฐ๋ ์๋ก์๊ฒ ์์์น ๋ชปํ ์ํฅ์ ์ฃผ๋ ์ผ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
Pod์ Host User Namespace ๋ถ๋ฆฌ ์ต์ ์ Pod yaml ํ์ผ(Manifest)์์ ์๋์ ๊ฐ์ด ์ค์ ํฉ๋๋ค.
๋ค๋ง ์์์ ์๊ฐํ Host User Namespace ๋ถ๋ฆฌ ๊ธฐ๋ฅ์ ์์ง Beta ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ์ด์ ์ค์ธ Kubernetes ํ๊ฒฝ์ ์ ์ฉํ ๋ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
๋ํ ์ฌ์ฉ ์ค์ธ Container Runtime์ด ํด๋น ๊ธฐ๋ฅ์ ์ง์ํ๋์ง ๋จผ์ ํ์ธ์ด ํ์ํ๊ฒ ์ต๋๋ค.
Secret์ผ๋ก Container Image Pull ์ ๋ณด์ ๊ฐํ (Alpha)
Pod์์ Container Image๋ฅผ ๋ฐ์์ฌ ๋ ๋ค์ํ ์ ์ฑ (imagePullPolicy)์ ์ ์ฉํ ์ ์์ต๋๋ค. ๊ทธ ์ค ํ๋๊ฐ IfNotPresent์ธ๋ฐ์.
IfNotPresent๋ Pod๊ฐ ์์ฑ๋๋ Node์ ๋ง์ฝ Pod์ ํ์ํ Image๊ฐ ์กด์ฌํ๋ค๋ฉด ๋ฐ๋ก ๋ฐ์ง ์๊ณ ์ ์ฅ๋์ด ์๋ Image๋ฅผ ์ฌ์ฉํ๋๋ก ํด์ Pod ์์ฑ ์๊ฐ์ ๋จ์ถ์ํค๋ ์ต์ ์ ๋๋ค.
๋ง์ฝ ๊ณต๊ฐ๋์ง ์๋ ๋ด๋ถ ์ ์ฅ์(Private Registry)์์ Kubernetes Secret์ ์ด์ฉํด์ Image๋ฅผ ๋ฐ์์ฌ ๊ฒฝ์ฐ, IfNotPresent ์ต์ ์ด ์๋ค๋ฉด Secret ๊ฒ์ฆ ์์ด ๊ธฐ์กด์ ์กด์ฌํ๋ Image๋ฅผ ์ฐ๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง Node์ ์ด๋ฏธ ์ ์ฅ๋ Image๋ผ๊ณ ํด๋, Pod๊ฐ Secret ๊ฒ์ฆ ์์ด ๋ด๋ถ ์ ์ฅ์์ ์ทจ๊ธ๋๋ Image๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ ๋ณด์ ์ธก๋ฉด์์ ์ทจ์ฝ์ ์ด ๋ ์ ์์ต๋๋ค.
๊ทธ๋์ ์ด๋ฒ ๋ฆด๋ฆฌ์ฆ ์ดํ IfNotPresent ์ต์ ์ ๋ณด์์ฑ์ด ๊ฐํ๋ ์์ ์ ๋๋ค.
์์ผ๋ก๋ imagePullPolicy์ IfNotPresent ์ต์ ์ด ์ค์ ๋์ด ์๋๋ผ๋ Image ๋ค์ด๋ก๋์ ํ์ํ Secret์ด ์ ํจํ์ง ๋จผ์ ๊ฒ์ฆํ๋๋ก ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ด์ฃ .
์ด ์ ๋ฐ์ดํธ๋ ์์ง Alpha ๋จ๊ณ์ด์ง๋ง, ์ด์ ์ค์ธ Kubernetes ํด๋ฌ์คํฐ์ Kubernetes 1.30 ๋ฆด๋ฆฌ์ฆ๋ฅผ ์ ์ฉ ์์ ์ด๋ผ๋ฉด Image ๋ค์ด๋ก๋์ ์ฌ์ฉ๋๋ Secret์ ๋ฏธ๋ฆฌ ๋ค์ ์ฒดํฌํด๋ณด๋ ๊ฒ์ด ์ข๊ฒ ์ต๋๋ค.
๐ญ๋ง์น๋ฉฐ...
์ด๋ฒ Kubernetes 1.30 ๋ฆด๋ฆฌ์ฆ์์ ๋ค์ํ ๋ณด์ ๊ด๋ จ ๊ธฐ๋ฅ๋ค์ด ์ ๋ฐ์ดํธ๋๊ณ ์๋๋ฐ์.
Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๋์ฑ ์์ ํ ํ๊ฒฝ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ์ ๋ฐ์ดํธ๋ค์ด์ง๋ง, ์ด๋ฒ ๋ฆด๋ฆฌ์ฆ๋ฅผ ์ค์ ์ด์ ์ค์ธ ํด๋ฌ์คํฐ์ ์ ์ฉํ ์์ ์ด์๋ผ๋ฉด ์ด์ ๋ํ ์ ์ฑ ์ค์ ์ด๋ ๊ธฐ์ ์ ์ธ ๋๋น๊ฐ ๋ฏธ๋ฆฌ ํ์ํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๐บ
๐References
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์