CLOUD

KOLLA ANSIBLE - 간단하게 도커 프라이빗 레지스트리 적용 시켜보기

92Hoonhee 2025. 2. 5. 16:25

사전 준비

이 작업을 수행하려면 먼저 Kolla-Ansible을 설치하고 OpenStack 배포에 필요한 모든 이미지를 사전에 kolla-ansible 명령어 pull을 통해 다운로드해야 합니다. 이후, 다운로드된 이미지를 프라이빗 레지스트리에 푸시할 수 있습니다.

1. 도커 레지스트리 컨테이너 실행

먼저, 도커가 설치된 상태에서 다음 명령어를 실행하여 레지스트리 컨테이너를 실행합니다.

docker run -d -p 192.168.0.226:5000:5000 --restart=always --name registry registry:2

이 명령어는 192.168.0.226:5000 포트로 외부에서 접근할 수 있도록 도커 레지스트리를 실행합니다.

2. Docker Daemon 설정 변경

레지스트리를 신뢰할 수 있도록 /etc/docker/daemon.json 파일을 수정합니다.

{
    "insecure-registries": ["192.168.0.226:5000"],
    "ip-forward": true,
    "iptables": true,
    "log-opts": {
        "max-file": "5",
        "max-size": "50m"
    }
}

설정 적용을 위해 도커를 재시작합니다.

systemctl restart docker

3. 레지스트리 정상 실행 확인

다음 명령어를 실행하여 레지스트리 서비스가 정상적으로 실행 중인지 확인합니다.

netstat -tulnp | grep 5000

출력 예시:

LISTEN 0      4096     192.168.0.226:5000      0.0.0.0:*    users:(("docker-proxy",pid=28601,fd=4))

이후 아래 명령어를 실행하여 레지스트리가 정상적으로 동작하는지 확인합니다.

curl -v http://192.168.0.226:5000/v2/_catalog

출력 예시:

{"repositories":[]}

4. OpenStack Kolla 이미지 태그 변경

현재 있는 모든 OpenStack Kolla 이미지를 프라이빗 레지스트리로 푸시할 수 있도록 태그를 변경합니다.

for img in $(docker images --format "{{.Repository}}:{{.Tag}}" | grep "quay.io/openstack.kolla"); do
    new_tag=$(echo $img | sed "s|quay.io/openstack.kolla|192.168.0.226:5000/openstack.kolla|")
    docker tag $img $new_tag
done

변경된 이미지가 정상적으로 적용되었는지 확인합니다.

docker images | grep "192.168.0.226:5000/openstack.kolla"

5. OpenStack Kolla 이미지 푸시

태그가 변경된 모든 이미지를 프라이빗 레지스트리에 푸시합니다.

for img in $(docker images --format "{{.Repository}}:{{.Tag}}" | grep "192.168.0.226:5000/openstack.kolla"); do
    docker push $img
done

푸시 완료 후, 레지스트리에 정상적으로 반영되었는지 확인합니다.

curl -v http://192.168.0.226:5000/v2/_catalog

출력 예시:

{"repositories":["openstack.kolla/image1", "openstack.kolla/image2"]}

6. global.yml에서 레지스트리 설정

OpenStack Kolla를 배포할 때 global.yml 파일에서 프라이빗 레지스트리를 사용하도록 설정해야 합니다.

/etc/kolla/globals.yml 파일을 열고 아래 설정을 추가하거나 수정합니다:

docker_registry: "192.168.0.226:5000"
docker_namespace: "openstack.kolla"
docker_registry_insecure: "yes"

이 설정을 적용하면 Kolla가 도커 이미지를 192.168.0.226:5000에서 가져오도록 구성됩니다.

7. 배포 시도

프라이빗 레지스트리에 푸시된 이미지를 활용하여 OpenStack Kolla를 배포합니다.

 

 

프라이빗 레지스트리 사용의 이점

네트워크 대역폭 절약

  • 외부 레지스트리(quay.io, docker.io 등)에서 반복적으로 이미지를 다운로드하는 대신, 내부 네트워크에서 빠르게 가져올 수 있음.
  1. 배포 속도 향상
    • 내부 네트워크에서 이미지를 가져오기 때문에 배포 시간이 단축되며, 특히 다중 노드 환경에서 큰 효과를 봄.
  2. 외부 네트워크 의존도 감소
    • 인터넷 연결이 제한적인 환경에서도 원활하게 OpenStack 배포 가능.
    • 외부 레지스트리가 다운되거나 속도가 저하되더라도 영향을 받지 않음.
  3. 보안성 강화
    • 프라이빗 환경에서 관리되므로 외부 해킹 및 보안 위협에서 자유로움.
    • 신뢰할 수 있는 이미지만 저장하고 검증된 환경에서 배포 가능.
  4. 이미지 버전 관리 용이
    • 원하는 특정 버전의 이미지를 유지 및 관리할 수 있어 불필요한 업데이트나 충돌을 방지 가능.
  5. 커스텀 이미지 적용 가능
    • 필요에 따라 OpenStack Kolla 이미지를 직접 수정하여 내부 레지스트리에 푸시한 후 배포 가능.