프라이빗 레지스트리에서 이미지 받아오기

황서희·2024년 2월 16일
0
post-thumbnail

참고

프라이빗 컨테이너 레지스트리를 사용하기 위해서는 시크릿을 사용하는 파드를 사용한다. 실습에서는, Docker Hub를 사용해서 구축한다.

  • 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
  • 로그인 하지 않은 경우에는 CLI에서 자격 증명을 통하여 시크릿을 생성할 수 있다.
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
  • .dockerconfigjson 필드 값을 확인하기 위해, 시크릿 데이터를 읽을 수 있는 형식으로 변형해 본다.
kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "아까 결과와 같음"
                }
        }
}
  • 이를 통해 regcred 라는 시크릿으로 클러스터 내에서 도커 자격 증명을 생성한 것을 확인할 수 있다.
  • 생성한 시크릿을 사용하는 파드를 만든다.
    • 도커에 이미지를 넣기 전에, tag를 꼭 변경해 주자…
    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 라는 시크릿으로부터 자격 증명을 가져올 수 있다.
  • 파드를 생성했을 때 파드가 생성되면 ok
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
profile
다 아는 건 아니어도 바라는 대로

0개의 댓글