[k8s] ImagePullSecrets

Pod๋ฅผ ๋„์›Œ์„œ ์“ธ๋•Œ ๊ณต๊ฐœ๋œ ์ด๋ฏธ์ง€๋งŒ ์“ด๋‹ค๋ฉด ์ฐธ ํŽธํ•˜๊ฒ ์ง€๋งŒ, ์‹ค์ œ ์‘์šฉ์—์„œ๋Š” ๋‹น์—ฐํžˆ ๋น„๊ณต๊ฐœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์“ธ ๊ฒฝ์šฐ๊ฐ€ ์••๋„์ ์œผ๋กœ ๋งŽ๋‹ค. ์„œ๋ฒ„ ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๋Œ€๋ถ€๋ถ„ ๋ฏผ๊ฐํ•œ ์ •๋ณด์™€ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์—ฌํŠผ ๋น„๊ณต๊ฐœ Docker Registry์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์˜ค๋ ค๋ฉด ์ฟ ๋ฒ„๊ฐ€ ์ธ์ฆ ์ •๋ณด๋ฅผ ๋“ค๊ณ ์„œ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒŒ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๊ฑธ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ImagePullSecrets์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
์ด์— ๋Œ€ํ•œ ์‚ฌ์šฉ๋ฒ•์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

Private ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Deployment๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ๋‹ค.

๊ทธ๋ƒฅ ์‹คํ–‰ํ•˜๋ฉด, ๋‹น์—ฐํžˆ ์„œ๋ฒ„ ๋ณด์•ˆ์— ๋ง‰ํ˜€์„œ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ์™€ ์‹คํ–‰์ด ์‹คํŒจํ•  ๊ฒƒ์ด๋‹ค.




Secrets ๋งŒ๋“ค๊ธฐ

์ธ์ฆ ์ •๋ณด๋Š” secret ๋ฆฌ์†Œ์Šค๋ฅผ ํ†ตํ•ด์„œ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ Harbor ๋“ฑ์„ ํ†ตํ•ด์„œ ์ปค์Šคํ…€ ์ €์žฅ์†Œ๋ฅผ ๊ตฌ์„ฑํ•œ ๊ฒฝ์šฐ์—๋Š”, ๊ทธ ์—”๋“œํฌ์ธํŠธ์™€ ๊ณ„์ • ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด์„œ ์ƒ์„ฑํ•œ๋‹ค.

kubectl create secret docker-registry ์‹œํฌ๋ฆฟ๋ช… --docker-server=์„œ๋ฒ„ --docker-username=์œ ์ €๋„ค์ž„ --docker-password=ํŒจ์Šค์›Œ๋“œ --docker-email=์ด๋ฉ”์ผ

AWS ECR, Github Registry ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋“ค์„ ์“ธ ๊ฒฝ์šฐ์—๋Š”, ํ•ด๋‹น ์„œ๋น„์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋”ฐ๋ผ์„œ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.
์„œ๋น„์Šค ๊ธฐ์ˆ ๋ฌธ์„œ์— ๋‹ค ์ ํ˜€์žˆ์„ ๊ฒƒ์ด๋‹ค.


์˜ˆ: AWS ECR์˜ ๊ฒฝ์šฐ

๋จผ์ € AWS์˜ ECR API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ „์šฉ Docker ํ˜ธํ™˜ ํ† ํฐ์„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.

aws ecr get-authorization-token \
                     --region ๋ฆฌ์ „ \
                     --output text \
                     --query 'authorizationData[0].authorizationToken'

๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ† ํฐ์„ ํŒจ์Šค์›Œ๋“œ๋กœ ๋„ฃ์–ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค.

kubectl create secret docker-registry ์‹œํฌ๋ฆฟ๋ช… \
    --docker-server=https://๊ณ„์ •ID.dkr.ecr.๋ฆฌ์ „.amazonaws.com \
    --docker-username=AWS \
    --docker-password=ํ† ํฐ \
    --docker-email=์ด๋ฉ”์ผ



์‹œํฌ๋ฆฟ์„ imagePullSecrets๋กœ ์ ์šฉ

์•„๋ฌดํŠผ ์‹œํฌ๋ฆฟ์„ ์ œ๋Œ€๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ๋ฐ”๋กœ Pod์— ๋ถ™์—ฌ์„œ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ์‹์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค. spec.imagePullSecrets์— ๋ฐฉ๊ธˆ ๋งŒ๋“  ์‹œํฌ๋ฆฟ์˜ ์ด๋ฆ„๋งŒ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.
๊ทธ๋Ÿผ ์ฟ ๋ฒ„๊ฐ€ ์•Œ์•„์„œ ์‹œํฌ๋ฆฟ ์ฝ์–ด์„œ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹œ๋„ํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” Deployment๋ผ์„œ ์˜ˆ์™ธ์ ์œผ๋กœ template ๋‚ด๋ถ€์˜ spec์— ๋“ค์–ด๊ฐ”๋‹ค.


์ธ์ฆ์ •๋ณด๊ฐ€ ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ”๋‹ค๋ฉด, ์ด์ œ๋Š” ์ œ๋Œ€๋กœ ์ž˜ ๋ฐ›์•„์˜ฌ ๊ฒƒ์ด๋‹ค.



์ฐธ์กฐ
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
https://blog.naver.com/sssang97/223101036344