Nginx ๊ธฐ๋ฐ์ Pod ๋ด์์ S3 ์ Mount ํ๊ธฐ ์ํด goofys ๋ฅผ ์ฌ์ฉํ๋ ์ ์ด ์์ต๋๋ค.
(goofys ๋ง๊ณ EBS ๋ EFS ๋ ์์๋ฆฌ์คํธ์ ์์์ง๋ง, goofys ๊ฐ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ํ๋จํ์ฌ goofys ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค)
๊ทธ๋ฆผ์ผ๋ก ํํํ์๋ฉด ์๋์ ๊ฐ์ฃ .
Nginx ๊ฐ provisioning ๋ ๋ ConfigMap ์ผ๋ก init.sh ๋ฅผ ์ฃผ์ด goofys ๋ฅผ ๋ง์ดํธ ํ ํ ์คํ๋๋๋ก ํ์ต๋๋ค.
์ด๋ฐ์์ผ๋ก ๋ง์ด์ฃ .
#!/usr/bin/env sh
set -eu
wget https://github.com/kahing/goofys/releases/latest/download/goofys
chmod +x goofys
/goofys <S3 Bucket> /var/nginx
...
nginx -g 'daemon off;'
์๊ฐ๋๋ก ๋๋ฉด ์ข์ํ ๋ฐ.. ์ธ์์ด ์ฝ์ง ์์ฃ ...
๋ฐ๋ก ์๋ฌ๊ฐ ๋ฐ์ํด์ค๋๋ค ๐คฆโ๏ธ
/goofys <S3 Bucket> /var/nginx
#2023/01/26 02:48:32.872554 main.FATAL Unable to mount file system, see syslog for details
์์ธํ ์๋ฌ ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด syslog ๋ฅผ ์ฐธ๊ณ ํ๋ผ๊ณ ํ๋ค์.
cat /var/log/syslog
์ด.. ๊ทผ๋ฐ ์๋ฌด ๋ด์ฉ์ด ์์ด์.. ๊ฒฝ๋ก๊ฐ ์ ๊ธฐ๊ฐ ์๋๊ฐ ์ถ์ด GitHub goofys ์ Issues ๋ฅผ ์ฐพ์๋ดค์ต๋๋ค.
์ ๋๋ก ํ๋๋ฐ ์๋ณด์ ๋๋ค. ์๋ฌด๋๋ ๋ฒ๊ทธ์ธ๊ฑฐ ๊ฐ์์.
์ง๊ธ ๋น์ฅ ๋ด๊ฐ ํ ์ ์๋ ๊ฑด ์์ ๊ฑฐ ๊ฐ๋ค๋ ์๊ฐ์ ํ๋ ค๋ ์ฐฐ๋ ์ข์ ์๊ฐ ๋ ์ฌ๋์ด์ ๐
goofys ๋ฅผ background ๋ก ์คํ์ํค๋ ๊ฒ์ด ์๋๊ณ foreground ๋ก ์คํ์์ผ ๋ฐ๋ก ๋ก๊ทธ๊ฐ ์ฐํ๊ฒ ํ๋ ๊ฒ์ด์ฃ .
-f ์ต์ ์ ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
/goofys <S3 Bucket> /var/nginx
2023/01/26 02:48:49.217423 s3.INFO Switching from region 'us-east-1' to 'ap-northeast-2'
2023/01/26 02:48:49.256088 main.FATAL Mounting file system: Mount: mount: running fusermount: exit status 1
stderr:
fusermount: fuse device not found, try 'modprobe fuse' first
fuse mount ์ ๊ด๋ จ๋ ์๋ฌ๊ฐ ๋ณด์ ๋๋ค. fuse mount ์ goofys ์์๋ ์๋ดํ๊ณ ์์ต๋๋ค.
์ด๋ ต์ง ์๊ฒ ์ค์นํ ์ ์์ต๋๋ค.
#!/usr/bin/env sh
set -eu
apk upgrade && apk update
apk add --no-cache fuse # fuse ์ถ๊ฐ
wget https://github.com/kahing/goofys/releases/latest/download/goofys
chmod +x goofys
/goofys <S3 Bucket> /var/nginx
...
nginx -g 'daemon off;'
์ดํ ๋ค์ ์คํ ํ๋ ๋ฐ ๋์ผํ ์๋ฌ๊ฐ ๊ณ์ ๋ฐ์ํ์ต๋๋ค. ๋คํํ ์ ๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๋ Issues ๊ฐ ์์์ต๋๋ค.
์ํ! ์ ์๋๋์ง ์๊ฑฐ ๊ฐ์ต๋๋ค.
๋ฐฐํฌํ๋ ค๋ Nginx ๊ธฐ๋ฐ์ Pod ๋ Root ๊ฐ ์๋ ๊ณ์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ fuse mount ํ ๊ถํ์ด ์์๋๊ฑฐ์ฃ !
๋ฐ๋ผ์ Linux Capability ์ต์ ์ผ๋ก CAP_SYS_ADMIN ์ ๋ถ์ฌํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Pod ๋ฅผ ์ฌ์์ํด๋ณด์ฃ .
2023/01/26 03:02:57.725131 s3.INFO Switching from region 'us-east-1' to 'ap-northeast-2'
2023/01/26 03:02:57.761046 main.ERROR Unable to access '<s3 bucket>': permission denied
2023/01/26 03:02:57.761074 main.FATAL Mounting file system: Mount: initialization failed
์ฌ์ ํ ์๋๊ธด ํ์ง๋ง, ์๊น์ ๋ก๊ทธ ๋ด์ฉ์ด ๋ค๋ฆ ๋๋ค. fuse mount ๋ถ๋ถ์ ํด๊ฒฐ์ด ๋ ๊ฑฐ ๊ฐ์์ ๐
๊ทธ๋ผ ๋ก๊ทธ ๋ด์ฉ์ ์ฝ์ด๋ณผ๊น์?
S3 Bucket ์ ์ ๊ทผํ ๊ถํ์ด ์๋ค๋ ๊ตฐ์.
ํ์ง๋ง ๋ถ๋ช Pod ๋ฅผ ์คํํ๊ธฐ์ AWS IRSA ๋ฅผ ์ด์ฉํ์ฌ ํด๋น ๋ฒํท์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ์ฃผ์์ต๋๋ค.
ํ๊ฒฝ๋ณ์๋ก ์ ๋ฑ๋ก ๋์ด์๊ณ , ์ค์ ๋ก aws s3 ls ๋ช ๋ น์ด๋ฅผ ์ฃผ์์ ๋ ์ ๊ทผ์ด ์๋ฉ๋๋ค.
๋ฌด์์ด ๋ฌธ์ ์ผ๊น์..??
ํน์๋ goofys ๋ง์ดํธ ํ ๋ ์ฌ์ฉ๋๋ AWS IAM Policy ๊ถํ์ด ๋ถ์กฑํ ๊ฑฐ ๊ฐ์ ํ๋ฒ ์ฐพ์๋ดค์ต๋๋ค.
Issues ์ ์ด๋ ๊ฒ ๋์์๋ค์.
์ฝ์ด๋ณด๋ s3:GetObject, s3:ListBucket ๋ง ์์ด๋ ์ถฉ๋ถํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ IRSA ๋ ์ด๋ฏธ ๊ถํ์ ๋ค ๊ฐ๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ ๋ฌธ์ ์ธ ๊ฑฐ ๊ฐ์ต๋๋ค ๐คจ
๋ญ๊น์..?
์ฌ์ค ์ด ๋ฌธ์ ์ ๋ํด์ ์ฉ ๋ช ์พํ๊ฒ ํด๊ฒฐํ์ง ๋ชปํ์ต๋๋ค.
goofys ์ Usage ๋ฅผ ๋ณด๋ฉด AWS ์ ์ ๊ทผํ๊ธฐ ์ํด์ AWS_ACCESS_KEY_ID ์ AWS_SECRET_ACCESS_KEY ๋ฅผ ์ง์ ํด์ค์ผ ํฉ๋๋ค.
ํ์ง๋ง ์ด๋ฏธ Pod ๋ IRSA ๋ฐฉ์์ผ๋ก ์๊ฒฉ ์ฆ๋ช ์ ํ๊ธฐ ๋๋ฌธ์ AWS_ACCESS_KEY_ID ์ AWS_SECRET_ACCESS_KEY ๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๊ทธ๋์ ๋ค์ ํ๋ฒ ์์นญํด๋ณธ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๋ ์ฌ๋์ด ์์์ต๋๋ค. (Issues)
์ ๋ ๋๊ฐ์ด AWS_WEB_IDENTITY_TOKEN_FILE ์ ์ฐ๊ณ ์ถ์ดํ๋ค์. ํด๊ฒฐ ๋ฐฉ๋ฒ์ go sdk ๋ฅผ 1.23.13 ๋ฒ์ ๋ณด๋ค ๋์ ๋ฒ์ ์ ์ฐ๋ผ ํฉ๋๋ค.
ํ์ง๋ง ์ด๋ฏธ 1.44 ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.. ์ด ๋ฌธ์ ๋ ์๋๊ฑฐ ๊ฐ์์..
์ดํ ๊ณ์ ์ฝ์ง์ด ๊ณ์ ๋์์ง๋ง, ๋ช ์พํ๊ฒ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ด ์์์ต๋๋ค.
๊ฒฐ๊ตญ Secret ์ ์ด์ฉํด์ Pod ์ AWS_ACCESS_KEY_ID ์ AWS_SECRET_ACCESS_KEY ๊ฑด๋ค์ฃผ์์ต๋๋ค. (์ฐธ๊ณ )
AWS IRSA ๋ฅผ ์ฌ์ฉํด์ ์๊ฒฉ ์ฆ๋ช ์ ์ด๋ฏธ ํ์ง๋ง goofys ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด AWS Cred ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ํ๊ฒฝ๋ณ์๋ก ๋ ๊ฑด๋ค์ค ๊ฒ์ด ๋ง์์ ๋ค์ง ์์ต๋๋ค..
ํ์ง๋ง ์ง๊ธ ๋น์ฅ์ ๋ช ์พํ ๋ต์ด ์์ด์ ์ด ๋ฐฉ์์ ํตํด goofys ๋ฅผ ๋ง์ดํธํ์์ต๋๋ค ๐คจ
goofys ์์ฒด๊ฐ 2020๋ 4์ 5์ผ ์ดํ๋ก release ๊ฐ ์์ด์ goofys ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ช ์พํ ๋ต์ ์ป๊ธด ์ด๋ ค์๋ณด์ ๋๋ค ๐ข
aws cli ์์ ์ ๊ณตํด์ฃผ๋ aws s3 sync ๋ฅผ ์ด์ฉํด์ ๋น์ทํ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ค ์ ์์ง๋ง.. ์ด๋ณด๋จ goofys ๊ฐ ๋ ํธ๋ฆฌํ ๊ฑฐ ๊ฐ์ goofys ๋ก ๊ฐ๋๋ค..
์๋ฌดํผ ์ด๋ฒ ์๋ฌ๋ ๋ฌด์ฌํ ํด๊ฒฐํ๋ค ๐