๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋๋ฅผ ํจ์จ์ ์ด๊ณ ์์ ํ๊ฒ ์์ํ๊ธฐ ์ํด Amazon์ ์ฐธ์ฌ๋ก ๊ฐ๋ฐ๋ Linux ๋ฐฐํฌํ Bottlerocket 1.3.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" ํ๋๊ทธ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ํ์ฑํ -๋ณดํธ".
์ ๋ฆด๋ฆฌ์ค์์:
- ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋๋ก ํ์ฉํ๋ ์๋ชป๋ ์ก์ธ์ค ๊ถํ ์ค์ ๊ณผ ๊ด๋ จ๋ docker ๋ฐ ๋ฐํ์ ์ปจํ ์ด๋ ๋๊ตฌ(CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103)์ ์ทจ์ฝ์ ์ด ์์ ๋์์ต๋๋ค. ๋๋ ํฐ๋ฆฌ์ ์ ์ฅํ๊ณ ์ธ๋ถ ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค.
- kubelet ๋ฐ pluto์ IPv6 ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ค์ ์ ๋ณ๊ฒฝํ ํ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํ ์ ์์ต๋๋ค.
- Amazon EC2 M6i ์ธ์คํด์ค์ ๋ํ ์ง์์ด eni-max-pods ํจํค์ง์ ์ถ๊ฐ๋์์ต๋๋ค.
- Open-vm-tools์๋ Cilium ํดํท์ ๊ธฐ๋ฐ์ผ๋ก ์ฅ์น ํํฐ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- x86_64 ํ๋ซํผ์ ๊ฒฝ์ฐ ํ์ด๋ธ๋ฆฌ๋ ๋ถํ ๋ชจ๋๊ฐ ๊ตฌํ๋ฉ๋๋ค(EFI ๋ฐ BIOS ์ง์).
- Rust ์ธ์ด์ ๋ํ ํจํค์ง ๋ฒ์ ๋ฐ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
- Kubernetes 8์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ฐฐํฌ ๋ณํ aws-k1.17s-1.17์ ๋ํ ์ง์์ด ์ค๋จ๋์์ต๋๋ค. Kubernetes 8์ ์ง์ํ๋ aws-k1.21s-1.21 ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. k8s ๋ณํ์ cgroup Runtime.slice ๋ฐ system.slice ์ค์ ์ ์ฌ์ฉํฉ๋๋ค.
์ถ์ฒ : opennet.ru