2025년 8월 경 있었던 Bitnami의 유료화 전환 [1] 이후 metallb, wordpress와 같이 bitnami에서 docker hub을 통해 제공하던 컨테이너 이미지가 모두 제거되었다.
helm 배포 이후 계속해서 아래와 같은 에러가 발생하는 것을 보고 뒤늦게 확인하고 찾아본 이후 Bitnami의 유료화 소식을 알게 되었다…
참고: docker hub에서 bitnami 사의 컨테이너 이미지가 없어져서 발생하는 에러 (metallb-controller는 물론 metallb-speaker 역시 동일한 문제가 발생한다.)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 29s default-scheduler Successfully assigned metallb/metallb-controller-6df6575d7c-mnptc to ha-k8s-134-worker-01
Normal BackOff 20s kubelet Back-off pulling image "docker.io/bitnami/metallb-controller:0.15.2-debian-12-r7"
Warning Failed 20s kubelet Error: ImagePullBackOff
Normal Pulling 4s (x2 over 26s) kubelet Pulling image "docker.io/bitnami/metallb-controller:0.15.2-debian-12-r7"
Warning Failed 2s (x2 over 20s) kubelet Failed to pull image "docker.io/bitnami/metallb-controller:0.15.2-debian-12-r7": rpc error: code = NotFound desc = failed to pull and unpack image "docker.io/bitnami/metallb-controller:0.15.2-debian-12-r7": failed to unpack image on snapshotter overlayfs: unexpected media type text/html for sha256:96d89f840cd3e3a93f636a618b4626699d0dcfd99df53e03dc7bd22104e6943b: not found
Warning Failed 2s (x2 over 20s) kubelet Error: ErrImagePull
이 경우 말 그대로 Docker hub에서 metallb-controller 이미지가 없어서 404 not found 같은 텍스트가 리턴되어서 그런 것이고, 임시로 AWS (Amazon ECR)에서 제공하는 Amazon ECR Public Gallery를 활용하면 되긴 한다…
다만 이 역시 언제까지 제공될 지는 확실하지 않기 때문에 장기적으로는 더 좋은 방법을 찾아야 할 듯 하다.
Docker hub에서 Amazon ECR의 Public Gallery로 컨테이너 레지스트리를 변경하는 방법은 아래와 같다.
1) helm chart 디렉토리 내 values.yaml 파일을 열어 아래와 같은 항목을 수정한다:
# 전역 설정으로 레지스트리 변경 및 타 레지스트리 허용
global:
imageRegistry: "public.ecr.aws"
security:
allowInsecureImages: true # To utilize Amazon ECR Public Registry...
# 개별 컴포넌트 설정
controller:
image:
registry: public.ecr.aws
repository: bitnami/metallb-controller
speaker:
image:
registry: public.ecr.aws
repository: bitnami/metallb-speaker
# 만약 BGP 모드에서 FRR을 사용 중이라면
frr:
image:
registry: public.ecr.aws
repository: bitnami/metallb-frr
2) 변경 사항을 저장한 후 helm chart 배포 (Security 경고가 좀 뜨지만 Registry 관련 내용은 무시 가능하다.)
$ helm upgrade --install metallb -f values.yaml . -n metallb --create-namespace
Release "metallb" does not exist. Installing it now.
NAME: metallb
LAST DEPLOYED: ***
NAMESPACE: metallb
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: metallb
CHART VERSION: ***
APP VERSION: ***
⚠ WARNING: Since August 28th, 2025, only a limited subset of images/charts are available for free.
Subscribe to Bitnami Secure Images to receive continued support and security updates.
More info at https://bitnami.com and https://github.com/bitnami/containers/issues/83267
** Please be patient while the chart is being deployed **
MetalLB is now running in the cluster
MetalLB can be configured using CRDs. Please refer to the README.md file or the MetalLB official documentation on how to use them
https://metallb.universe.tf/configuration/
...
⚠ SECURITY WARNING: Original containers have been substituted. This Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Tanzu Application Catalog containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.
Substituted images detected:
- public.ecr.aws/bitnami/metallb-controller:0.15.2-debian-12-r7
- speaker/bitnami/metallb-speaker:0.15.2-debian-12-r6
- public.ecr.aws/bitnami/metallb-speaker:0.15.2-debian-12-r6
⚠ SECURITY WARNING: Verifying original container images was skipped. Please note this Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Bitnami Secure Images containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.
3) 배포된 metallb 워크로드 확인
$ kubectl get pods -n metallb
NAME READY STATUS RESTARTS AGE
metallb-controller-*** 1/1 Running 0 101s
metallb-speaker-*** 1/1 Running 0 102s
metallb-speaker-*** 1/1 Running 0 102s
metallb-speaker-*** 1/1 Running 0 102s
위와 같이 metallb-controller, metallb-speaker의 이미지 Pull이 성공적으로 완료되어 파드가 동작하는 것을 볼 수 있다.
끝!
References: