어제까지 잘 받던 Bitnami 이미지가 갑자기 없다고 나온다. 태그를 지정한 이미지에서 특히 자주 난다.
Error response from daemon: failed to resolve reference
"docker.io/bitnami/rabbitmq-cluster-operator:2.16.1-debian-12-r0": not found
쿠버네티스에서는 ErrImagePull 과 ImagePullBackOff 로 나타난다. Helm 차트로 배포한 것이라면 차트가 참조하는 이미지가 그대로인데 레지스트리 쪽에서 사라진 상황이다.
2025년 8월 28일부로 Bitnami 의 Docker Hub 카탈로그 구성이 바뀌었다. docker.io/bitnami 에 있던 버전 태그가 붙은 이미지 대부분이 docker.io/bitnamilegacy 로 옮겨졌다. 남은 bitnami 네임스페이스에는 개발용으로 쓰라는 제한된 수의 하드닝 이미지가 latest 태그로만 남는다. 유지보수되는 버전별 이미지는 유료 구독인 docker.io/bitnamisecure 로 옮겼다[1].
| 네임스페이스 | 내용 | 갱신 |
|---|---|---|
bitnami |
무료 커뮤니티 이미지 일부. 사실상 latest 만 |
제한적 |
bitnamilegacy |
이전 버전 태그 전체를 옮겨 둔 보관소 | 없음. 보안 패치도 없다 |
bitnamisecure |
Bitnami Secure Images. 유료 구독 | 지속 |
원래 예고는 docker.io/bitnami 공개 카탈로그를 8월 28일에 정리하는 것이었으나, 영향 평가 후 9월 29일로 미뤄 진행됐다. 그 사이 8월 28~29일, 9월 2~3일, 9월 17~19일에 예고된 접속 차단(brownout)이 있었다. 이 기간에 CI 나 노드 재생성이 겹쳤다면 원인 파악이 더 어려웠다.
이미지 경로를 bitnamilegacy 로 바꾼다. 태그는 그대로 쓴다.
docker pull bitnamilegacy/rabbitmq-cluster-operator:2.16.1-debian-12-r0
Helm 차트라면 레지스트리와 저장소를 덮어쓴다. 키 이름은 차트마다 다르므로 helm show values 로 확인한다.
helm upgrade <release> <chart> \
--set image.registry=docker.io \
--set image.repository=bitnamilegacy/rabbitmq-cluster-operator \
--reuse-values
Bitnami 차트는 global.imageRegistry 와 하위 컴포넌트별 image.repository 를 각각 갖는 경우가 많다. 차트 하나에 이미지가 여러 개(주 컨테이너, init 컨테이너, exporter, volume-permissions) 있으므로 렌더 결과에서 전부 찾아 바꾼다.
helm template <release> <chart> -f values.yaml | grep -E '^\s+image:'
이것은 응급 조치다. bitnamilegacy 는 보안 패치를 받지 않는다. 그대로 두면 CVE 가 쌓인다.
세 갈래 중 하나를 고른다.
상류 공식 이미지로 옮긴다. 대부분의 오픈소스 프로젝트는 자체 공식 이미지를 낸다. Bitnami 이미지는 비 root 실행과 환경 변수 기반 설정 등 자체 규약이 있으므로, 옮길 때 UID · 설정 경로 · 환경 변수 이름이 달라진다는 점을 감안해야 한다. 예를 들어 RabbitMQ Cluster Operator 는 프로젝트가 직접 배포한다.
kubectl apply -f https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml
사내 레지스트리에 미러링한다. 지금 쓰는 태그를 Harbor · Nexus 로 옮겨 두고 차트가 그쪽을 보게 한다. 외부 레지스트리 정책 변화에 한 번 데었으니, 운영에 쓰는 이미지는 어차피 사내로 끌어와 고정하는 편이 낫다.
docker pull bitnamilegacy/<image>:<tag>
docker tag bitnamilegacy/<image>:<tag> registry.example.com/mirror/<image>:<tag>
docker push registry.example.com/mirror/<image>:<tag>
Bitnami Secure Images 를 구독한다. 기존 이미지 규약을 그대로 쓰면서 패치를 받아야 하는 경우다.
클러스터 안에서 bitnami 이미지를 쓰는 워크로드를 한 번에 찾아 둔다.
kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{range .spec.containers[*]}{.image}{" "}{end}{"\n"}{end}' \
| grep -E 'docker\.io/bitnami/|(^|[[:space:]])bitnami/'
이미 떠 있는 파드는 노드에 이미지가 남아 있어 멀쩡해 보인다. 문제는 노드를 늘리거나 바꿀 때, 파드가 다른 노드로 옮겨갈 때 한꺼번에 터진다. 지금 조용하다고 안전한 것이 아니다.
Bitnami 카탈로그 변경 공지 — 2026-09-20 확인. https://github.com/bitnami/containers/issues/83267 ↩︎