[K8S] bitnami 유료화 이후 metallb, wordpress 등 bitnami에 의해 제공되던 helm chart 우회 활용 방법

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:

[1] https://medium.com/@talkimhi/bitnamis-august-28th-bombshell-the-end-of-free-container-images-as-we-know-them-74fe5cdfb882

Leave a Comment