[Harbor] 이미지 Push 및 Kubernetes 에서 사용방법


1. 프로젝트 생성 방법

  1. harbor 웹 콘솔 접속하여 로그인
  2. Project 탭의 NEW Project 클릭

    3. Project 값 입력

커맨드 확인

2. 이미지 태그 및 PUSH 방법

docker pull nginx:latest

테스트 이미지용 nginx:latest 다운로드

docker login 192.168.133.11

harbor(사설저장소) docker 로그인

docker tag nginx:latest 192.168.133.11/test/nginx:latest
docker push 192.168.133.11/test/nginx

tag 명령어로 사설저장소 주소 추가 후 push

웹 콘솔 접속하여 저장소에 이미지가 잘 올라갔는지 확인

3. 쿠버네티스 secret 작성 (imagePullSecret 용)

https://kubernetes.io/ko/docs/tasks/configure-pod-container/pull-image-private-registry

참고

kubectl create secret generic regcred \\
    --from-file=.dockerconfigjson=<path/to/.docker/config.json> \\
    --type=kubernetes.io/dockerconfigjson

regcred 대신 원하는 secret 이름 입력해도 됨.

  • docker login 을 하면 ~/.docker 아래 config.json 파일이 생기는데 여기에 로그인 정보를 담고 있음

base64 decode 하면 auth 의 내용을 확인할 수 있다.

4. 쿠버네티스에서 이미지 사용

nginx-test.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      imagePullSecrets:
      - name: regcred
      containers:
      - name: nginx
        image: 192.168.133.11/test/nginx:latest
        ports:
        - containerPort: 80

imagePullSecrets: 항목에 위에 만든 regcred secret 추가

kubectl apply -f nginx-test.yaml

계속해서 ImagePullBackOFF 에러가 뜰 시

  1. 이미지 경로가 제대로 되었는지 확인
  2. ImagePullSecret 에 제대로 image repository 인증정보가 들어가있는지 확인
  3. 각 노드들 OS 에 서버 인증서를 전달했는지 확인 (하버 OS 인증서 등록과 동일하게)
    (인증서 적용 이후 K8S Container 재기동 필수 (Containerd))

Leave a Comment