CLOUD

Kolla Ansible 이미지 커스터마이징 및 Docker Hub 배포 가이드

92Hoonhee 2025. 6. 16. 16:25

개요

Kolla Ansible을 사용하여 OpenStack 배포 시 필요한 이미지들을 사전에 Docker Hub에 업로드하고, 배포 시 해당 이미지들을 활용하는 방법에 대한 가이드입니다.

 

⚠️ 중요사항: 이 방법은 인터넷 연결이 가능한 환경에서만 사용할 수 있습니다. 폐쇄망이나 오프라인 환경에서는 별도의 프라이빗 레지스트리 구축이 필요합니다.

1. 기본 이미지 Pull

먼저 Kolla Ansible에서 사용할 OpenStack 이미지들을 pull 받습니다.

# Kolla Ansible을 통해 필요한 이미지들을 pull
kolla-ansible pull

또는 개별 이미지 pull:

docker pull quay.io/openstack.kolla/cinder-backup:2024.2-ubuntu-noble
docker pull quay.io/openstack.kolla/cinder-scheduler:2024.2-ubuntu-noble
docker pull quay.io/openstack.kolla/horizon:2024.2-ubuntu-noble
# ... 기타 필요한 이미지들

2. 이미지 태그 변경

Pull 받은 이미지들을 자신의 Docker Hub 계정에 맞게 태그를 변경합니다.

# 예시: cinder-backup 이미지 태그 변경
docker tag quay.io/openstack.kolla/cinder-backup:2024.2-ubuntu-noble hooulra/cinder-backup:fx-hci_250611

# 예시: cinder-scheduler 이미지 태그 변경
docker tag quay.io/openstack.kolla/cinder-scheduler:2024.2-ubuntu-noble hooulra/cinder-scheduler:fx-hci_250611

# 예시: horizon 이미지 태그 변경
docker tag quay.io/openstack.kolla/horizon:2024.2-ubuntu-noble hooulra/horizon:fx-hci_250611

3. 이미지 확인

태그가 제대로 변경되었는지 확인합니다.

docker images | grep hooulra

예상 출력:

hooulra/cinder-backup      fx-hci_250611    0fe14e760eb5   4 days ago   1.42GB
hooulra/cinder-scheduler   fx-hci_250611    43e0075df1dd   4 days ago   1.41GB
hooulra/horizon           fx-hci_250611     a1b2c3d4e5f6   4 days ago   1.35GB

4. Docker Hub 레포지토리 준비

Docker Hub에서 각 이미지별로 레포지토리를 생성합니다:

  • hooulra/cinder-backup
  • hooulra/cinder-scheduler
  • hooulra/horizon
  • hooulra/tgtd
  • hooulra/iscsid
  • hooulra/fluentd
  • hooulra/kolla-toolbox
  • 기타 필요한 모든 서비스 이미지들

5. Docker Hub에 이미지 Push

# Docker Hub 로그인
docker login

# 이미지들을 Docker Hub에 push
docker push hooulra/cinder-backup:fx-hci_250611
docker push hooulra/cinder-scheduler:fx-hci_250611
docker push hooulra/horizon:fx-hci_250611
docker push hooulra/tgtd:fx-hci_250611
docker push hooulra/iscsid:fx-hci_250611
# ... 기타 모든 이미지들

6. globals.yml 설정 수정

Kolla Ansible의 globals.yml 파일을 수정하여 커스텀 이미지를 사용하도록 설정합니다.

---
# Docker Hub 설정
docker_registry: "docker.io"
docker_namespace: "hooulra"
openstack_tag: "fx-hci_250611"

# 기타 필요한 설정들
kolla_base_distro: "ubuntu"
openstack_release: "2024.2"

# 네트워크 설정
network_interface: "ens3"
neutron_external_interface: "ens4"

# 활성화할 서비스들
enable_cinder: "yes"
enable_horizon: "yes"
# ... 기타 서비스 설정

7. 배포 실행

설정이 완료되면 Kolla Ansible을 통해 배포를 실행합니다.

# 사전 검사
kolla-ansible -i multinode prechecks

# 배포 실행
kolla-ansible -i multinode deploy

주요 장점

  1. 빠른 배포: 이미지들이 이미 Docker Hub에 준비되어 있어 배포 시간 단축
  2. 버전 관리: 커스텀 태그를 통한 체계적인 버전 관리
  3. 안정성: 검증된 이미지 세트를 통한 안정적인 배포
  4. 재사용성: 여러 환경에서 동일한 이미지 세트 재사용 가능

스크립트 자동화

반복 작업을 위한 스크립트 예시:

#!/bin/bash

# 이미지 목록
IMAGES=(
    "cinder-backup"
    "cinder-scheduler" 
    "horizon"
    "tgtd"
    "iscsid"
    "fluentd"
    "kolla-toolbox"
    # 추가 이미지들...
)

DOCKER_NAMESPACE="hooulra"
CUSTOM_TAG="fx-hci_250611"
ORIGINAL_TAG="2024.2-ubuntu-noble"

# 태그 변경 및 push
for image in "${IMAGES[@]}"; do
    echo "Processing $image..."
    docker tag quay.io/openstack.kolla/$image:$ORIGINAL_TAG $DOCKER_NAMESPACE/$image:$CUSTOM_TAG
    docker push $DOCKER_NAMESPACE/$image:$CUSTOM_TAG
    echo "Completed $image"
done

참고사항

  • 인터넷 연결 필수: 이 방법은 Docker Hub에 접근할 수 있는 인터넷 환경에서만 사용 가능
  • 폐쇄망 환경: 오프라인 또는 폐쇄망 환경에서는 Harbor, Registry 등의 프라이빗 레지스트리 구축 필요
  • Docker Hub의 pull rate limit을 고려하여 필요시 프라이빗 레지스트리 사용 검토
  • 이미지 크기가 크므로 네트워크 대역폭과 저장공간 고려
  • 보안을 위해 프라이빗 레포지토리 사용 권장
  • 정기적인 이미지 업데이트 및 보안 패치 적용 필요