ํด๋น ํธ๊ฐ ๋ฐํ๋์์ต๋๋ค. LinuxAmazon๊ณผ ํ๋ ฅํ์ฌ ๊ฐ๋ฐ๋ Bottlerocket 1.3.0 ๋ฐฐํฌํ์ ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋๋ฅผ ํจ์จ์ ์ด๊ณ ์์ ํ๊ฒ ์คํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด ๋ฐฐํฌํ์ ํด๋ง ๋ฐ ์ ์ด ๊ตฌ์ฑ ์์๋ Rust๋ก ์์ฑ๋์์ผ๋ฉฐ MIT ๋ฐ Apache 2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. Bottlerocket์ Amazon ECS, VMware ๋ฐ AWS EKS Kubernetes ํด๋ฌ์คํฐ์์ ์คํ๋ ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๋ฐ ๋ฐํ์ ๋๊ตฌ๋ฅผ ์ง์ํ๋ ์ฌ์ฉ์ ์ง์ ๋น๋ ๋ฐ ์๋์ ๋ ์ ๊ณตํฉ๋๋ค.
์ด ๋ฐฐํฌํ์ ์ปค๋์ ํฌํจํ์ฌ ์์์ ์ผ๋ก ์๋ ์ ๋ฐ์ดํธ๋๋ ๋ถํ ๋ถ๊ฐ๋ฅํ ์์คํ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. Linux ์ปจํ ์ด๋ ์คํ์ ํ์ํ ๊ตฌ์ฑ ์์๋ง ํฌํจํ๋ ์ต์ ์์คํ ํ๊ฒฝ์ ๋๋ค. ์ด ํ๊ฒฝ์๋ systemd ์์คํ ๊ด๋ฆฌ์, Glibc ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Buildroot ๋น๋ ํด์ฒด์ธ, GRUB ๋ถํธ๋ก๋, wicked ๋คํธ์ํฌ ๊ตฌ์ฑ ๋๊ตฌ, ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋์ฉ containerd ๋ฐํ์, Kubernetes ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ํ๋ซํผ, aws-iam-authenticator ์ธ์ฆ ๋๊ตฌ ๋ฐ Amazon ECS ์์ด์ ํธ๊ฐ ํฌํจ๋ฉ๋๋ค.
์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ๋ ๋ณ๋์ ๊ด๋ฆฌ ์ปจํ ์ด๋์ ์ ๊ณต๋๋ฉฐ, ์ด ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์๊ณ API ๋ฐ AWS SSM ์์ด์ ํธ๋ฅผ ํตํด ๊ด๋ฆฌ๋ฉ๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง์๋ ๋ช ๋ น ์ ธ์ด ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ์๋ฒ SSH ๋ฐ ์ธํฐํ๋ฆฌํฐ ์ธ์ด(์: Python ๋๋ Perl ์ ์ธ)์ ๊ฒฝ์ฐ ๊ด๋ฆฌ ๋ฐ ๋๋ฒ๊น ๋๊ตฌ๋ ๋ณ๋์ ์๋น์ค ์ปจํ ์ด๋์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
Fedora CoreOS์ ๊ฐ์ ์ ์ฌํ ๋ฐฐํฌํ๊ณผ์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. CentOSRed Hat Atomic Host๋ ์ ์ฌ์ ์ํ์ผ๋ก๋ถํฐ ์์คํ ์ ๋ณดํธํ๊ณ , ์ด์ ์ฒด์ ๊ตฌ์ฑ ์์์ ์ทจ์ฝ์ ์ ์ฉ์ ์ด๋ ต๊ฒ ํ๋ฉฐ, ์ปจํ ์ด๋ ๊ฒฉ๋ฆฌ๋ฅผ ๊ฐํํ์ฌ ์ต๊ณ ์ ๋ณด์์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. ์ปจํ ์ด๋๋ ๋ค์ดํฐ๋ธ ์ปค๋ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์์ฑ๋ฉ๋๋ค. Linux โ cgroups, ๋ค์์คํ์ด์ค ๋ฐ seccomp. ์ถ๊ฐ์ ์ธ ๊ฒฉ๋ฆฌ๋ฅผ ์ํด ๋ฐฐํฌํ์ SE๋ฅผ ์ฌ์ฉํฉ๋๋ค.Linux "๊ฐ์ ์ ์ฉ" ๋ชจ๋์ ๋๋ค.
๋ฃจํธ ํํฐ์ ์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง์ดํธ๋๊ณ , /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" ํ๋๊ทธ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ํ์ฑํ -๋ณดํธ".
์ ๋ฆด๋ฆฌ์ค์์:
- ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋์ด ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋๋ก ํ์ฉํ๋ ์๋ชป๋ ์ก์ธ์ค ๊ถํ ์ค์ ๊ณผ ๊ด๋ จ๋ docker ๋ฐ ๋ฐํ์ containerd ๋๊ตฌ์ ์ทจ์ฝ์ (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103)์ ์์ ํ์ต๋๋ค.
- kubelet ๋ฐ pluto์ ์ถ๊ฐ๋์์ต๋๋ค. IPv6 ์ง์.
- ์ค์ ์ ๋ณ๊ฒฝํ ํ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- eni-max-pods ํจํค์ง๊ฐ Amazon EC2 M6i ์ธ์คํด์ค๋ฅผ ์ง์ํ๋๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
- open-vm-tools๋ ์ด์ Cilium ํดํท์ ๊ธฐ๋ฐ์ผ๋ก ๋๋ฐ์ด์ค ํํฐ๋ฅผ ์ง์ํฉ๋๋ค.
- x86_64 ํ๋ซํผ์ ๊ฒฝ์ฐ ํ์ด๋ธ๋ฆฌ๋ ๋ถํ ๋ชจ๋๊ฐ ๊ตฌํ๋์์ต๋๋ค(EFI ๋ฐ BIOS ์ง์).
- Rust ์ธ์ด์ ๋ํ ํจํค์ง ๋ฒ์ ๋ฐ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
- Kubernetes 8 ๊ธฐ๋ฐ aws-k1.17s-1.17 ๋ฐฐํฌ ๋ณํ์ ๋ํ ์ง์์ด ์ค๋จ๋์์ต๋๋ค. Kubernetes 8์ ์ง์ํ๋ aws-k1.21s-1.21 ๋ณํ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. k8s ๋ณํ์ runtime.slice ๋ฐ system.slice cgroup ์ค์ ์ ์ฌ์ฉํฉ๋๋ค.
์ถ์ฒ : opennet.ru
