๋กœ์ผ“๐Ÿพ
article thumbnail
๋ฐ˜์‘ํ˜•

Nginx ๊ธฐ๋ฐ˜์˜ Pod ๋‚ด์—์„œ S3 ์™€ Mount ํ•˜๊ธฐ ์œ„ํ•ด goofys ๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

(goofys ๋ง๊ณ  EBS ๋‚˜ EFS ๋„ ์œ„์‹œ๋ฆฌ์ŠคํŠธ์— ์žˆ์—ˆ์ง€๋งŒ, goofys ๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ goofys ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค)

 

๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ฃ .

nginx ์— s3 ๋งˆ์šดํŠธ

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 ๋ฅผ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค. 

What is the path to the syslog file&nbsp;#332

 

์ œ๋Œ€๋กœ ํ–ˆ๋Š”๋ฐ ์•ˆ๋ณด์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ๋ฒ„๊ทธ์ธ๊ฑฐ ๊ฐ™์•„์š”. 

์ง€๊ธˆ ๋‹น์žฅ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑด ์—†์„ ๊ฑฐ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๋ ค๋˜ ์ฐฐ๋‚˜ ์ข‹์€ ์ˆ˜๊ฐ€ ๋– ์˜ฌ๋ž์–ด์š” ๐Ÿ‘€

 

goofys ๋ฅผ background ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  foreground ๋กœ ์‹คํ–‰์‹œ์ผœ ๋ฐ”๋กœ ๋กœ๊ทธ๊ฐ€ ์ฐํžˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด์ฃ .

goofys -h

 

-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 ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฒ„ํ‚ท์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

printenv ๋กœ ์ ‘๊ทผ ๊ถŒํ•œ ํ™•์ธ

 

ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ž˜ ๋“ฑ๋ก ๋˜์–ด์žˆ๊ณ , ์‹ค์ œ๋กœ aws s3 ls ๋ช…๋ น์–ด๋ฅผ ์ฃผ์—ˆ์„ ๋•Œ ์ ‘๊ทผ์ด ์ž˜๋ฉ๋‹ˆ๋‹ค.

๋ฌด์—‡์ด ๋ฌธ์ œ์ผ๊นŒ์š”..??

 

ํ˜น์‹œ๋‚˜ goofys ๋งˆ์šดํŠธ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” AWS IAM Policy ๊ถŒํ•œ์ด ๋ถ€์กฑํ•œ ๊ฑฐ ๊ฐ™์•„ ํ•œ๋ฒˆ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค. 

Issues ์— ์ด๋ ‡๊ฒŒ ๋‚˜์™€์žˆ๋„ค์š”.

goofys ์— ํ•„์š”ํ•œ ๊ถŒํ•œ

์ฝ์–ด๋ณด๋‹ˆ s3:GetObject, s3:ListBucket ๋งŒ ์žˆ์–ด๋„ ์ถฉ๋ถ„ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” IRSA ๋Š” ์ด๋ฏธ ๊ถŒํ•œ์„ ๋‹ค ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ๋ฌธ์ œ์ธ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿคจ 

๋ญ˜๊นŒ์š”..?

 

์‚ฌ์‹ค ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด์„  ์ฉ ๋ช…์พŒํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜์ง„ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

 

goofys ์˜ Usage ๋ฅผ ๋ณด๋ฉด AWS ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„  AWS_ACCESS_KEY_ID ์™€ AWS_SECRET_ACCESS_KEY ๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

AWS ์ž๊ฒฉ ์ฆ๋ช…

 

ํ•˜์ง€๋งŒ ์ด๋ฏธ Pod ๋Š” IRSA ๋ฐฉ์‹์œผ๋กœ ์ž๊ฒฉ ์ฆ๋ช…์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— AWS_ACCESS_KEY_ID ์™€ AWS_SECRET_ACCESS_KEY ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ์„œ์นญํ•ด๋ณธ ๊ฒฐ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช๋Š” ์‚ฌ๋žŒ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. (Issues)

Support to AWS_WEB_IDENTITY_TOKEN_FILE&nbsp;#703

 

์ €๋ž‘ ๋˜‘๊ฐ™์ด AWS_WEB_IDENTITY_TOKEN_FILE ์„ ์“ฐ๊ณ  ์‹ถ์–ดํ•˜๋„ค์š”. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ go sdk ๋ฅผ 1.23.13 ๋ฒ„์ „ ๋ณด๋‹ค ๋†’์€ ๋ฒ„์ „์„ ์“ฐ๋ผ ํ•ฉ๋‹ˆ๋‹ค.

1.44 ๋ฒ„์ „ ์‚ฌ์šฉ ์ค‘

 

ํ•˜์ง€๋งŒ ์ด๋ฏธ 1.44 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.. ์ด ๋ฌธ์ œ๋Š” ์•„๋‹Œ๊ฑฐ ๊ฐ™์•„์š”..

 

์ดํ›„ ๊ณ„์† ์‚ฝ์งˆ์ด ๊ณ„์† ๋˜์—ˆ์ง€๋งŒ, ๋ช…์พŒํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ Secret ์„ ์ด์šฉํ•ด์„œ Pod ์— AWS_ACCESS_KEY_ID ์™€ AWS_SECRET_ACCESS_KEY ๊ฑด๋„ค์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. (์ฐธ๊ณ )

 

AWS IRSA ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ด๋ฏธ ํ–ˆ์ง€๋งŒ goofys ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด AWS Cred ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๋˜ ๊ฑด๋„ค์ค€ ๊ฒƒ์ด ๋งˆ์Œ์— ๋“ค์ง„ ์•Š์Šต๋‹ˆ๋‹ค..

 

ํ•˜์ง€๋งŒ ์ง€๊ธˆ ๋‹น์žฅ์€ ๋ช…์พŒํ•œ ๋‹ต์ด ์—†์–ด์„œ ์ด ๋ฐฉ์‹์„ ํ†ตํ•ด goofys ๋ฅผ ๋งˆ์šดํŠธํ•˜์˜€์Šต๋‹ˆ๋‹ค ๐Ÿคจ

 

goofys ์ž์ฒด๊ฐ€ 2020๋…„ 4์›” 5์ผ ์ดํ›„๋ก  release ๊ฐ€ ์—†์–ด์„œ goofys ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์ƒ ๋ช…์พŒํ•œ ๋‹ต์„ ์–ป๊ธด ์–ด๋ ค์›Œ๋ณด์ž…๋‹ˆ๋‹ค ๐Ÿ˜ข

2020๋…„ 4์›” 5์ผ์ด ๋งˆ์ง€๋ง‰ ๋ฆด๋ฆฌ์Šค..

 

aws cli ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” aws s3 sync ๋ฅผ ์ด์šฉํ•ด์„œ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ค„ ์ˆœ ์žˆ์ง€๋งŒ.. ์ด๋ณด๋‹จ goofys ๊ฐ€ ๋” ํŽธ๋ฆฌํ•  ๊ฑฐ ๊ฐ™์•„ goofys ๋กœ ๊ฐ‘๋‹ˆ๋‹ค..

 

์•„๋ฌดํŠผ ์ด๋ฒˆ ์—๋Ÿฌ๋„ ๋ฌด์‚ฌํžˆ ํ•ด๊ฒฐํ–ˆ๋‹ค ๐Ÿ‘

๋ฐ˜์‘ํ˜•
profile on loading

Loading...