๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๋ฐฐํฌํŒ์ธ Bottlerocket 1.2 ์ถœ์‹œ

๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด Amazon์˜ ์ฐธ์—ฌ๋กœ ๊ฐœ๋ฐœ๋œ Linux ๋ฐฐํฌํŒ Bottlerocket 1.2.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์˜ ๋„๊ตฌ์™€ ์ œ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ฐ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. Amazon ECS, VMware ๋ฐ AWS EKS Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Bottlerocket ์‹คํ–‰์„ ์ง€์›ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฐ ๋Ÿฐํƒ€์ž„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋“œ ๋ฐ ์—๋””์…˜ ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌํŒ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ํฌํ•จํ•˜์—ฌ Linux ์ปค๋„๊ณผ ์ตœ์†Œ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์„ ํฌํ•จํ•˜๋Š” ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ถ„ํ• ํ•  ์ˆ˜ ์—†๋Š” ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์—๋Š” systemd ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž, Glibc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Buildroot ๋นŒ๋“œ ๋„๊ตฌ, GRUB ๋ถ€ํŠธ ๋กœ๋”, ์‚ฌ์•…ํ•œ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ์ž, ๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„, Kubernetes ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ, aws-iam-authenticator ๋ฐ Amazon์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ECS ์—์ด์ „ํŠธ.

์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜๊ณ  API ๋ฐ AWS SSM ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ๋˜๋Š” ๋ณ„๋„์˜ ๊ด€๋ฆฌ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์—๋Š” ๋ช…๋ น ์…ธ, SSH ์„œ๋ฒ„ ๋ฐ ํ•ด์„๋œ ์–ธ์–ด(์˜ˆ: Python ๋˜๋Š” Perl ์—†์Œ)๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ๋„๊ตฌ ๋ฐ ๋””๋ฒ„๊น… ๋„๊ตฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š” ๋ณ„๋„์˜ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

Fedora CoreOS, CentOS/Red Hat Atomic Host์™€ ๊ฐ™์€ ์œ ์‚ฌํ•œ ๋ฐฐํฌํŒ๊ณผ์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ๊ฐ€๋Šฅํ•œ ์œ„ํ˜‘์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ๋ณดํ˜ธ๋ฅผ ๊ฐ•ํ™”ํ•˜์—ฌ OS ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ทจ์•ฝ์ ์„ ์•…์šฉํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ  ์ปจํ…Œ์ด๋„ˆ ๊ฒฉ๋ฆฌ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋งฅ๋ฝ์—์„œ ์ตœ๋Œ€ ๋ณด์•ˆ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์ฃผ์š” ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. . ์ปจํ…Œ์ด๋„ˆ๋Š” ํ‘œ์ค€ Linux ์ปค๋„ ๋ฉ”์ปค๋‹ˆ์ฆ˜(cgroup, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ seccomp)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฐฐํฌํŒ์€ "๊ฐ•์ œ" ๋ชจ๋“œ์—์„œ SELinux๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฃจํŠธ ํŒŒํ‹ฐ์…˜์€ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งˆ์šดํŠธ๋˜๊ณ , /etc ์„ค์ • ํŒŒํ‹ฐ์…˜์€ tmpfs์— ๋งˆ์šดํŠธ๋˜์–ด ์žฌ์‹œ์ž‘ ํ›„ ์›๋ž˜ ์ƒํƒœ๋กœ ๋ณต์›๋ฉ๋‹ˆ๋‹ค. /etc/resolv.conf ๋ฐ /etc/containerd/config.toml๊ณผ ๊ฐ™์€ /etc ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์ •์„ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋ ค๋ฉด API๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ๋ณ„๋„์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. dm-verity ๋ชจ๋“ˆ์€ ๋ฃจํŠธ ํŒŒํ‹ฐ์…˜์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์•”ํ˜ธํ™” ๋ฐฉ์‹์œผ๋กœ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ธ”๋ก ์žฅ์น˜ ์ˆ˜์ค€์—์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์‹œ๋„๊ฐ€ ๊ฐ์ง€๋˜๋ฉด ์‹œ์Šคํ…œ์ด ์žฌ๋ถ€ํŒ…๋ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” After Free ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค, ๋„ ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ ๋ฐ ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ์œผ๋กœ ์ธํ•œ ์ทจ์•ฝ์ ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋นŒ๋“œํ•  ๋•Œ ์ปดํŒŒ์ผ ๋ชจ๋“œ "-enable-default-pie" ๋ฐ "-enable-default-ssp"๋Š” ์‹คํ–‰ ํŒŒ์ผ ์ฃผ์†Œ ๊ณต๊ฐ„(PIE)์˜ ๋ฌด์ž‘์œ„ํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์นด๋‚˜๋ฆฌ์•„ ๋Œ€์ฒด๋ฅผ ํ†ตํ•œ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. C/C++๋กœ ์ž‘์„ฑ๋œ ํŒจํ‚ค์ง€์˜ ๊ฒฝ์šฐ "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" ๋ฐ "-fstack-clash" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™” -๋ณดํ˜ธ".

์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ:

  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ฏธ๋Ÿฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ๊ตฌ์„ฑํ•˜๋Š” ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ด€๋ฆฌ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ณธ ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • kubelet์— ๋Œ€ํ•œ topologyManagerPolicy ๋ฐ topologyManagerScope ์„ค์ •์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • zstd ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ ์••์ถ•์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • OVA(Open Virtualization Format) ํ˜•์‹์œผ๋กœ ๊ฐ€์ƒ ๋จธ์‹ ์„ VMware์— ๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ ๋ฒ„์ „ aws-k8s-1.21์ด Kubernetes 1.21์— ๋Œ€ํ•œ ์ง€์›์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. aws-k8s-1.16์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Rust ์–ธ์–ด์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€ ๋ฒ„์ „ ๋ฐ ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€