프라이빗 컨테이너 레지스트리를 사용하기 위해서는 시크릿을 사용하는 파드를 사용한다. 실습에서는, Docker Hub를 사용해서 구축한다.
docker login
명령어를 사용하여 Docker Hub에 로그인한다. 다른 프라이빗 레지스트리를 사용한다면, 해당 레지스트리에 대한 명령줄 정보가 필요하다.cat ~/.docker/config.json
명령어를 사용하여 자격 증명을 확인한다. 하단과 비슷한 정보가 나오는지 확인한다.[developer@localhost root]$ cat ~/.docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "어쩌고"
}
}
kubernetes.io/dockerconfigjson
타입의 시크릿을 사용한다. docker login이 되어 있는 상태라면 자격 증명을 클러스터에 복사할 수 있다. 해당 명령어를 사용한다.k create secret generic regcred \
--from-file=.dockerconfigjson=/home/developer/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
secret/regcred created
---
k get secret
NAME TYPE DATA AGE
regcred kubernetes.io/dockerconfigjson 1 78s
kubectl create secret docker-registry regcred \
--docker-server=<your-registry-server> \
--docker-username=<your-name> --docker-password=<your-pword> \
--docker-email=<your-email>
regcred
시크릿의 정보를 확인해 보자.k get secret regcred -o yaml
apiVersion: v1
data:
.dockerconfigjson: ~/.docker/config.json을 base64로 인코딩한 내용
kind: Secret
metadata:
creationTimestamp: "2024-02-02T07:23:36Z"
name: regcred
namespace: default
resourceVersion: "77283"
uid: 8e7edf7e-0499-43f7-aa85-e53e93f4949d
type: kubernetes.io/dockerconfigjson
kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "아까 결과와 같음"
}
}
}
regcred
라는 시크릿으로 클러스터 내에서 도커 자격 증명을 생성한 것을 확인할 수 있다. docker tag busybox:latest <myusername>/busybox:latest
---
docker tag busybox:latest your_id/busybox:latest
docker push your_id/busybox:latest
The push refers to repository [docker.io/your_id/busybox]
2e112031b4b9: Mounted from library/busybox
latest: digest: sha256:어쩌고~... size: 527
---
vi pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: your_id/busybox:latest
imagePullSecrets:
- name: regcred
imagePullSecrets
필드를 통해 쿠버네티스가 regcred
라는 시크릿으로부터 자격 증명을 가져올 수 있다.k get po
NAME READY STATUS RESTARTS AGE
nginx-deployment-6d6565499c-fdzhn 1/1 Running 0 22m
private-reg 1/1 Running 9 (75s ago) 7m32s
containerStatuses:
- containerID: docker://1ae39d854c8cb35cbe974208587ebf5de7cec69f1cbb8c1149734ab60b407de8
image: your_id/nginx:latest
imageID: docker-pullable://your_id/nginx@sha256:6a9af2366105c104e353d16998458d6a15aa5d6db0861ad9ce98538890391950