yeonghoon.kim

  • 게시판
  • 갤러리

ImagePullBackOff와 registry pull secret 누락

김영훈 2026.06.22 12:27 조회 수 : 17

복구 테스트 중 3008-bingbingsubway 앱이 정상 기동하지 않음.

ArgoCD Application은 만들어졌고 sync도 진행됐는데 Pod 쪽에서 이미지 pull 문제가 발생함.

상태 확인.

# 3008-bingbingsubway namespace의 Pod 상태를 확인한다.
kubectl -n 3008-bingbingsubway get pods -o wide

Pod 이벤트 확인.

# 이미지 pull 실패 원인을 확인한다.
kubectl -n 3008-bingbingsubway describe pod <pod-name>

증상은 private registry에서 이미지를 받지 못하는 쪽.

처음에는 Registry 자체 문제처럼 보일 수 있지만, 원인을 나눠서 봐야 함.

ImagePullBackOff
  ├─ DNS 문제
  │   registry.yeonghoon.kim이 잘못된 IP로 해석
  │
  ├─ Registry endpoint 문제
  │   Registry가 응답하지 않음
  │
  ├─ 인증 문제
  │   gitlab-registry-secret 누락 또는 참조 누락
  │
  └─ 이미지 문제
      image name/tag 오타 또는 이미지 없음

이 경우에는 chart의 imagePullSecrets 기본값이 비어 있었음.

그래서 Pod가 private registry에 인증 없이 anonymous pull을 시도했고, 403 Forbidden이 발생함.

Registry Secret이 namespace에 있어도 Deployment나 ServiceAccount가 그 Secret을 참조하지 않으면 소용없음.

Secret 존재 확인.

# registry pull Secret이 namespace에 있는지 확인한다.
kubectl -n 3008-bingbingsubway get secret gitlab-registry-secret

Deployment에서 imagePullSecrets 참조 확인.

# Deployment가 imagePullSecrets를 참조하는지 확인한다.
kubectl -n 3008-bingbingsubway get deployment <deployment-name> \
  -o yaml | grep -nA5 "imagePullSecrets"

Helm values에 registry pull secret 참조 추가.

imagePullSecrets:
  - name: gitlab-registry-secret

임시로는 patch로 살릴 수 있음.

# Deployment에 imagePullSecrets를 임시로 추가한다.
kubectl -n 3008-bingbingsubway patch deployment <deployment-name> \
  --type='merge' \
  -p '{"spec":{"template":{"spec":{"imagePullSecrets":[{"name":"gitlab-registry-secret"}]}}}}'

하지만 임시 patch만 하면 Git 기준 상태에는 남지 않음.

ArgoCD 환경에서는 Git에 반영해야 함.

그래서 서비스 repo의 Helm values에 gitlab-registry-secret 참조를 영구 반영함.

커밋.

558a474 Configure registry pull secret for Kubernetes deploy

반영 후 확인.

# Pod가 정상적으로 이미지를 받는지 확인한다.
kubectl -n 3008-bingbingsubway get pods -o wide
# Application 상태를 확인한다.
kubectl -n argocd get application 3008-bingbingsubway \
  -o custom-columns=NAME:.metadata.name,SYNC:.status.sync.status,HEALTH:.status.health.status

정리.

ImagePullBackOff가 보이면 바로 Registry 장애로 단정하지 않음.

DNS, Registry endpoint, Secret 존재, workload의 imagePullSecrets 참조, 이미지 이름/tag를 나눠서 확인해야 함.

이번 문제는 Registry가 아니라 Helm chart에서 imagePullSecrets 참조가 빠진 문제였음.


  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 0

번호 제목 글쓴이 날짜 조회 수
339 yeonghoon.kim php 업그레이드 new 김영훈 2026.07.09 0
338 GitLab Registry PAT 만료로 이미지 Pull 실패 김영훈 2026.07.08 14
337 Stateful과 Stateless 구분해보기 김영훈 2026.07.02 23
336 Git revert는 기록을 지우는 게 아니라 되돌리는 기록을 남기는 것 김영훈 2026.06.29 19
335 OutOfSync와 Degraded 구분하기 김영훈 2026.06.28 25
334 control-plane 장애 시나리오 관찰 김영훈 2026.06.27 12
333 worker 재부팅 전 drain 절차 정리 김영훈 2026.06.26 20
» ImagePullBackOff와 registry pull secret 누락 김영훈 2026.06.22 17
331 ArgoCD 복구 중 GitLab 접근 문제 정리 김영훈 2026.06.22 26
330 관측 스택과 앱 배포 저장소 구조 정리 김영훈 2026.06.19 23
329 SOPS Secret 복구와 ArgoCD root Application 적용 김영훈 2026.06.18 28
328 복구 런북 초반 누락 사항 정리 김영훈 2026.06.17 15
327 CoreDNS로 GitLab Registry 내부 주소 고정 김영훈 2026.06.17 19
326 ArgoCD와 GitOps 구조 준비 김영훈 2026.06.16 16
325 SOPS age로 Kubernetes Secret 암복호화 김영훈 2026.06.15 23
324 yeonghoon.kim 배포 파일을 Helm Chart로 전환 [1] 김영훈 2026.06.12 18
323 Docker Compose 서비스를 Kubernetes로 이전(깃랩 도커 저장소 필요) [2] 김영훈 2026.06.10 20
322 Kubernetes 기본 클러스터, ingress-nginx 설치 김영훈 2026.06.09 15
321 DGX Kubernetes 구성 계획 김영훈 2026.06.08 25
320 2026년 일본 여행(21일) 요약 김영훈 2026.06.02 17
쓰기 태그
 첫 페이지 1 2 3 4 5 6 7 8 9 10 끝 페이지