[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