- ์ฟ ๋ฒ๋คํฐ์ค Docker Hub-Private Image ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ
Private Image๋ฅผ ๊ฐ์ ธ์์ผ ํ ๋ ์ฟ ๋ฒ๋คํฐ์ค์ secret์ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด ๊ธ์์๋ Docker Hub์ ๊ธฐ์ค์ผ๋ก ์์ฑ ํฉ๋๋ค. ์ฐ์ Private Image ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ธ ๋งํผ ์๋์ ๊ฐ์ด ์ด๋ฏธ Docker Hub์ ์ด๋ฏธ์ง๊ฐ ๋ฑ๋ก๋์ด ์๋ค๋ ๊ฐ์ ํ์ ์งํ ํฉ๋๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ๋งค๋ํ์คํธ ํ์ผ ์์ฑ
์ ๋ ์๋์ ๊ฐ์ด ๊ฐ๋จํ Deployment๋ฅผ ์ค์ ํด์ฃผ๋ ๋งค๋ํ์คํธ ํ์ผ(.yaml)์ ์์ฑ ํ์์ต๋๋ค.
Private Image๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ ๋งค๋ํ์คํธ ํ์ผ์ viํธ์ง๊ธฐ๋ก ์ฌ์ ํ spec.template.spec.ImagePullSecrets.name ํ๋์ ์์์ ๊ฐ์ ์ค์ ํด์ค๋๋ค. ์ด ๊ฐ์ ์ดํ ์์ฑํ secret name ์ด๋ฏ๋ก ์ฐธ๊ณ ํ์ฌ ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค. ๋ํ image ๋ช ๋ ์ฌ๋๋ก ์ ๋ ฅ ํด์ฃผ์ ์ผ ํฉ๋๋ค.
* ๋งค๋ํ์คํธ ํ์ผ์ ํ์ํ ํ๋๋ง ์์ฑ ํ ์์ง apply๋ ํ์ง ๋ง์์ฃผ์ธ์.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 2
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nirsa/nginx ## docker hub ์ด๋ฏธ์ง ์ง์
ports:
- containerPort: 80
imagePullSecrets: ## ์ฐธ์กฐํ secret name
- name: dockersecret
- spec.template.spec.containers.image → Docker Hub์ ๋ฑ๋ก๋ ์ด๋ฏธ์ง์ ์ด๋ฆ์ ๋ฑ๋ก ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก [DockerHub์ฌ์ฉ์๋ช ]/[์ด๋ฏธ์ง์ด๋ฆ] ์ ํํ๋ฅผ ๊ฐ์ง๋ฉฐ ๋ค์ ๋ฒ์ ์ด ์ถ๊ฐ๋ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง๋ช ์ ๋ชจ๋ฅธ๋ค๋ฉด docker hub ํํ์ด์ง์ ์ ์ํ์ฌ ๋ก๊ทธ์ธ ํ ํ์ธํ์๋ฉด ๋ฉ๋๋ค.
- spec.template.spec.ImagePullSecrets.name → ์ด๋ค name์ ๊ฐ์ง secret์ ์ฐธ์กฐํ ์ง ์ค์ ํ๋ ๋ถ๋ถ ์ ๋๋ค. ์ดํ ์ปค๋งจ๋๋ฅผ ํตํด ์์ฑํ name์ ์ง์ ํ๊ฒ ๋๋๋ฐ, ์ฐ์ ์ ๋ dockersecret์ผ๋ก ์ค์ ํ์์ต๋๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค secret ์์ฑ
์ฟ ๋ฒ๋คํฐ์ค์ ๋ง์คํฐ ๋ ธ๋์์ ์๋์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ ํด์ค๋๋ค. []์ผ๋ก ๋ฌถ์ด์ค ๋ถ๋ถ๋ค์ ๋ชจ๋ ์ํฉ์ ๋ฐ๋ผ ์์ฑ ํด์ฃผ์ ์ผ ํ๋ ๋ถ๋ถ ์ ๋๋ค. ์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํ์ฌ ์ปค๋งจ๋ ์์ฑ ํ ์ํฐ๋ฅผ ์น์๋ฉด secret์ด ์์ฑ๋๊ฑธ ํ์ธํ ์ ์์ต๋๋ค.
- [secret name] ์ ์์์ ์์ฑํ๋ ๋งค๋ํ์คํธ ํ์ผ์ ๊ธฐ์ ํ name์ ์์ฑํด์ฃผ์ ์ผ ํฉ๋๋ค. (~ImagePullSecrets.name ๋ถ๋ถ์ ์์ฑํ ๋ด์ฉ์ผ๋ก, ์ ๊ฐ์ ๊ฒฝ์ฐ dockersecret ์ด ๋ฉ๋๋ค.)
- Docker Hub ๊ณ์ ๊ณผ ํจ์ค์๋๋ ์ค์ ๋ก Private Image๊ฐ ๋ฑ๋ก๋์ด ์๋ Docker Hub์ ๊ณ์ ๊ณผ ํจ์ค์๋๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํฉ๋๋ค.
kubectl create secret docker-registry [secret name] --docker-username="[Docker Hub ๊ณ์ ]" \
--docker-password="[Docker Hub ํจ์ค์๋]" --docker-server=https://index.docker.io/v1/
- Private Image ํ์ผ์ ์ ๊ฐ์ ธ์ค๋์ง ํ์ธ
์ด์ Docker Hub์ Private Image ํ์ผ์ ๊ฐ์ ธ์ฌ ์ค๋น๋ ๋ชจ๋ ๋์์ผ๋, ์์ฑํด๋์๋ ๋งค๋ํ์คํธ ํ์ผ์ apply ํ์ฌ ์ค์ ๋ก ์ ๊ฐ์ ธ์ค๋์ง ํ์ธ๋ง ํ๋ฉด ๋ฉ๋๋ค.
kubectl describe [pod name] | grep Image ๋ช ๋ น์ด๋ฅผ ํตํด ์ ์์ ์ผ๋ก ์ํ๋ ์ด๋ฏธ์ง ํ์ผ์ ๊ฐ์ ธ ์๋์ง๋ ๋ณผ ์ ์์ต๋๋ค.
- ImagePullBackOff ๋ฐ์ ์
๋ง์ฝ ๋งค๋ํ์คํธ ํ์ผ์ ์์ฑํ spec.template.spec.ImagePullSecrets.name ํ๋์ ์์ฑํ secret name์ด ๋ค๋ฅด๋ค๋ฉด ์ ์์ ์ผ๋ก ์ด๋ฏธ์ง ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋๋ secret์ ๋ฑ๋กํ docker hub ๊ณ์ ์ ๋ณด๊ฐ ๋ฌ๋ผ docker hub์ ์ ๊ทผํ ์ ์์ด ์ด๋ฏธ์ง๋ฅผ ๋ชป๊ฐ์ ธ์์ ๋ฐ์ํ ์๋ ์์ต๋๋ค.
- ๋งค๋ํ์คํธ ํ์ผ์ ์์ฑํ secret name๊ณผ ์์ฑํ secret name์ด ๊ฐ์์ง ๋ค์ ํ๋ฒ ํ์ธ ํด๋ณด์ธ์. (secret name์ kubectl get secret ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค. ๋ง์ฝ ์๋ค๋ฉด ์์ฑ๋์ง ์์๊ฒ์ ๋๋ค)
- secret์ ์์ฑํ ๋ ๋ฑ๋กํ docker hub์ ๊ณ์ ์ ๋ณด๊ฐ ๋ง๋์ง ํ์ธ ํด๋ณด์ธ์.
์๋ ์์๋ secret name์ด dockersecret์ผ๋ก ๋์ด ์์ง๋ง, ๋งค๋ํ์คํธ ํ์ผ์๋ dockersecret2๋ก ์ ์ฅํ์๊ณ ๊ทธ ํ apply ํ ๋ secret์ ์ฐธ์กฐํ ์ ์์ด ์ด๋ฏธ์ง๋ฅผ ๋ชป๊ฐ์ ธ์ค๊ณ ImagePullBackOff๊ฐ ๋ฐ์ํฉ๋๋ค.
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Linux] dig ๋ช ๋ น์ด์ ์ฌ์ฉ๋ฒ (0) | 2021.10.28 |
---|---|
[K8S] EKS ํด๋ฌ์คํฐ ์ธ์ฆ(authenfication) ๋ฐ ๊ถํ(authorization) ์ค์ ํ๊ธฐ (7) | 2021.10.27 |
[Kubernetes] Cert manager Kubernetes ํต์ ์ํธํ ๋ฐ ์๋ํ (0) | 2021.10.25 |
[MySQL] ๋คํ / ์ํฌํธ ํ๊ธฐ Dump / Import (0) | 2021.10.22 |
[MySQL] MySQL ๊ถํ (0) | 2021.10.22 |