이미지 생성 및 관리
Image 서비스(glance)를 사용하여 Red Hat OpenStack Platform에서 이미지 생성 및 관리
OpenStack Documentation Team
rhos-docs@redhat.com
초록
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 더 나은지 알려주십시오.
직접 문서 피드백(DDF) 기능 사용
피드백 추가 DDF 기능을 사용하여 특정 문장, 단락 또는 코드 블록에 대한 직접 의견을 제출할 수 있습니다.
- 다중 페이지 HTML 형식으로 문서를 봅니다.
- 문서의 오른쪽 상단에 피드백 버튼이 표시되는지 확인합니다.
- 주석 처리하려는 텍스트 부분을 강조 표시합니다.
- 피드백 추가를 클릭합니다.
- 코멘트를 사용하여 피드백 추가 필드를 완료합니다.
- 선택 사항: 문서 팀이 문제에 대한 자세한 설명을 위해 연락을 드릴 수 있도록 이메일 주소를 추가합니다.
- Submit 을 클릭합니다.
1장. Image 서비스(glance)
RHOSP(Red Hat OpenStack Platform)에서 이미지 및 스토리지를 관리합니다.
1.1. VM(가상 머신) 이미지 형식
VM 이미지는 부팅 가능한 운영 체제가 설치된 가상 디스크가 포함된 파일입니다. VM 이미지는 다양한 형식으로 지원됩니다. 다음 형식은 RHOSP(Red Hat OpenStack Platform)에서 사용할 수 있습니다.
-
RAW
- 구조화되지 않은 디스크 이미지 형식입니다. -
QCOW2
- QEMU 에뮬레이터에서 지원하는 디스크 형식입니다. 이 형식에는 QEMU 1.1 이상이 필요한 QCOW2v3(또는 QCOW3)이 포함됩니다. -
ISO
- Sector-by-sector는 바이너리 파일에 저장된 디스크의 데이터 복사본입니다. -
AKI
- Amazon 커널 이미지를 나타냅니다. -
AMI
- Amazon 머신 이미지를 나타냅니다. -
ARI
- Amazon RAMDisk 이미지를 나타냅니다. -
VDI
- Cryostat VM 모니터 및 QEMU 에뮬레이터에서 지원하는 디스크 형식입니다. -
VHD
- VMware, Cryostat 등의 VM 모니터에서 사용하는 일반 디스크 형식입니다. -
PLECDHE
P - OS 컨테이너를 실행하기 위해 Virtu Cryostatzo에서 지원하고 사용하는 디스크 형식입니다. -
OVA
- Image 서비스(glance)에 저장된 데이터가 OVA tar 아카이브 파일임을 나타냅니다. -
DOCKER
- Image 서비스(glance)에 저장된 것이 컨테이너 파일 시스템의 Docker tar 아카이브임을 나타냅니다.
ISO
에는 일반적으로 VM 이미지 형식으로 간주되지 않지만 설치된 운영 체제가 있는 부팅 가능한 파일 시스템이 포함되어 있기 때문에 다른 VM 이미지 파일과 동일한 방식으로 사용합니다.
1.2. 지원되는 이미지 서비스 백엔드
다음과 같은 Image 서비스(glance) 백엔드 시나리오가 지원됩니다.
- RADOS 블록 장치(RBD)는 Ceph를 사용할 때 기본 백엔드입니다.
- RBD 다중 저장소.
- Object Storage(swift). 이미지 서비스는 Object Storage 유형 및 백엔드를 기본값으로 사용합니다.
- Block Storage(cinder).
NFS
- 중요
NFS는 지원되는 이미지 서비스 배포 옵션이지만 더 강력한 옵션을 사용할 수 있습니다.
NFS는 이미지 서비스의 네이티브가 아닙니다. 이미지 서비스에 NFS 공유를 마운트하면 이미지 서비스에서 작업을 관리하지 않습니다. 이미지 서비스는 파일 시스템에 데이터를 작성하지만 백엔드가 NFS 공유임을 인식하지 못합니다.
이러한 유형의 배포에서는 공유가 실패하면 이미지 서비스에서 요청을 다시 시도할 수 없습니다. 즉, 백엔드에서 오류가 발생하면 저장소가 읽기 전용 모드로 전환되거나 로컬 파일 시스템에 데이터를 계속 쓸 수 있으므로 데이터가 손실될 위험이 있습니다. 이 상황에서 복구하려면 공유가 마운트되고 동기화되었는지 확인한 다음 이미지 서비스를 다시 시작해야 합니다. 이러한 이유로 Red Hat은 NFS를 이미지 서비스 백엔드로 권장하지 않습니다.
그러나 NFS를 이미지 서비스 백엔드로 사용하도록 선택하는 경우 다음 모범 사례 중 일부는 위험을 완화하는 데 도움이 될 수 있습니다.
- 안정적인 프로덕션 수준의 NFS 백엔드를 사용합니다.
- 컨트롤러 노드와 NFS 백엔드 간에 강력하고 안정적인 연결이 있는지 확인합니다. 계층 2(L2) 네트워크 연결이 권장됩니다.
- 마운트된 공유에 대한 모니터링 및 경고를 포함합니다.
- 기본 파일 시스템 권한을 설정합니다. 저장소로 사용하는 공유 파일 시스템에 쓰기 권한이 있어야 합니다.
- glance-api 프로세스가 실행되는 사용자 및 그룹에 로컬 파일 시스템의 마운트 지점에 대한 쓰기 권한이 없는지 확인합니다. 즉, 프로세스에서 가능한 마운트 실패를 감지하고 쓰기 시도 중에 저장소를 읽기 전용 모드로 배치할 수 있습니다.
1.3. 이미지 서명 및 확인
이미지 서명 및 확인은 배포자가 이미지에 서명하고 서명 및 공개 키 인증서를 이미지 속성으로 저장할 수 있으므로 이미지 무결성 및 신뢰성을 보호합니다.
Nova에서 RADOS Block Device(RBD)를 사용하여 가상 머신 디스크를 저장하는 경우 이미지 서명 및 확인이 지원되지 않습니다.
이미지 서명 및 확인에 대한 자세한 내용은 키 관리자 서비스 가이드를 사용하여 시크릿 관리 가이드의 Image 서비스 (glance) 이미지 유효성 검사를 참조하십시오.
1.4. 이미지 변환
이미지 변환은 이미지를 가져오는 동안 작업 API를 호출하여 이미지를 변환합니다.
가져오기 워크플로의 일부로 플러그인은 이미지 변환을 제공합니다. 배포 구성에 따라 이 플러그인을 활성화하거나 비활성화할 수 있습니다. 배포자는 배포에 권장되는 이미지 형식을 지정해야 합니다.
내부적으로 Image 서비스(glance)는 이미지의 비트를 특정 형식으로 수신하고 비트를 임시 위치에 저장합니다. 이미지 서비스는 플러그인을 트리거하여 이미지를 대상 형식으로 변환하고 이미지를 최종 대상으로 이동합니다. 작업이 완료되면 이미지 서비스가 임시 위치를 삭제합니다. 이미지 서비스는 처음에 업로드된 형식을 유지하지 않습니다.
이미지를 가져올 때만 이미지 변환을 트리거할 수 있습니다. 이미지를 업로드할 때 실행되지 않습니다.
이미지 관리에 이미지 서비스 명령줄 클라이언트를 사용합니다.
예를 들면 다음과 같습니다.
$ glance image-create-via-import \ --disk-format qcow2 \ --container-format bare \ --name NAME \ --visibility public \ --import-method web-download \ --uri http://server/image.qcow2
1.5. 상호 운용 가능한 이미지 가져오기
상호 운용 가능한 이미지 가져오기 워크플로를 사용하면 다음 두 가지 방법으로 이미지를 가져올 수 있습니다.
-
URI에서 이미지를 가져오려면
web-download
(기본값) 방법을 사용합니다. -
glance-direct
방법을 사용하여 로컬 파일 시스템에서 이미지를 가져옵니다. -
copy-image
방법을 사용하여 기존 이미지를 배포에 있는 기타 Image 서비스(glance) 백엔드에 복사합니다. 배포에서 여러 이미지 서비스 백엔드가 활성화된 경우에만 이 가져오기 방법을 사용합니다.
1.6. 이미지 서비스 캐싱으로 확장성 개선
glance-api 캐싱 메커니즘을 사용하여 Image 서비스(glance) API 서버에 이미지 사본을 저장하고 자동으로 검색하여 확장성을 향상시킵니다. 이미지 서비스 캐싱을 사용하면 glance-api를 여러 호스트에서 실행할 수 있습니다. 즉, 백엔드 스토리지에서 동일한 이미지를 여러 번 검색할 필요가 없습니다. 이미지 서비스 캐싱은 이미지 서비스 작업에 영향을 미치지 않습니다.
Red Hat OpenStack Platform director(tripleo) heat 템플릿을 사용하여 이미지 서비스 캐싱을 설정합니다.
절차
환경 파일에서
GlanceCacheEnabled
매개변수 값을true
로 설정하여glance-api.conf
heat 템플릿에서플레이버
값을keystone+cachemanagement
로 자동으로 설정합니다.parameter_defaults: GlanceCacheEnabled: true
-
오버클라우드를 재배포할 때
openstack overcloud deploy
명령에 환경 파일을 포함합니다. 선택 사항: 오버클라우드를 재배포할 때
glance_cache_pruner
를 대체 빈도로 튜닝합니다. 다음 예제에서는 5 분의 빈도를 보여줍니다.parameter_defaults: ControllerExtraConfig: glance::cache::pruner::minute: '*/5'
파일 시스템 전체 시나리오를 피하기 위해 필요에 따라 빈도를 조정합니다. 대체 빈도를 선택할 때 다음 요소를 포함합니다.
- 사용자 환경에서 캐시할 파일의 크기입니다.
- 사용 가능한 파일 시스템 공간의 양입니다.
- 환경에서 이미지를 캐시하는 빈도입니다.
1.7. 이미지 사전 캐싱
RHOSP(Red Hat OpenStack Platform) director는 glance-api
서비스의 일부로 이미지를 사전 캐시할 수 있습니다.
이미지 관리에 Image 서비스(glance) 명령줄 클라이언트를 사용합니다.
1.7.1. 주기적인 이미지 사전 캐싱의 기본 간격 구성
RHOSP(Red Hat OpenStack Platform) director는 glance-api
서비스의 일부로 이미지를 사전 캐시할 수 있습니다.
사전 캐싱 주기 작업은 glance-api
서비스가 실행 중인 각 컨트롤러 노드에서 300초(5분 기본 시간)마다 실행됩니다. 기본 시간을 변경하려면 glance-api.conf의 Default
섹션에서 cache_prefetcher_interval
매개변수를 설정할 수 있습니다.
프로세스
요구 사항에 따라 언더클라우드의 환경 파일에
ExtraConfig
매개변수를 사용하여 새 간격을 추가합니다.parameter_defaults: ControllerExtraConfig: glance::config::glance_api_config: DEFAULT/cache_prefetcher_interval: value: '<300>'
<300>을 이미지를 사전 캐시하는 간격으로 원하는 시간(초)으로 바꿉니다.
/home/stack/templates/
의 환경 파일에서 간격을 조정한 후stack
사용자로 로그인하고 구성을 배포합니다.$ openstack overcloud deploy --templates \ -e /home/stack/templates/<env_file>.yaml
<env_file>을 사용자가 추가한
ExtraConfig
설정이 포함된 환경 파일의 이름으로 바꿉니다.중요오버클라우드를 생성할 때 추가 환경 파일을 전달한 경우 오버클라우드를 원치 않는 변경하지 않도록
-e
옵션을 사용하여 여기에서 다시 전달합니다.
openstack overcloud deploy
명령에 대한 자세한 내용은 director 가이드를 사용하여 Red Hat OpenStack Platform 설치 및 관리의 Deployment 명령을 참조하십시오.
1.7.2. 정기적인 작업을 사용하여 이미지를 사전 캐시
정기적인 작업을 사용하여 이미지를 사전 캐시합니다.
사전 요구 사항
주기적인 작업을 사용하여 이미지를 사전 캐시하려면 glance_api
서비스가 실행 중인 노드에 직접 연결된 glance-cache-manage
명령을 사용해야 합니다. 서비스 요청에 응답하는 노드를 숨기는 프록시를 사용하지 마십시오. 언더클라우드가 glance_api
서비스가 실행 중인 네트워크에 액세스할 수 없으므로 기본적으로 controller-0
이라는 첫 번째 오버클라우드 노드에서 명령을 실행합니다.
올바른 호스트에서 명령을 실행하고 필요한 인증 정보가 있고 glance-api
컨테이너 내부에서 glance-cache-manage
명령을 실행하고 있는지 확인하려면 다음 사전 요구 사항 절차를 완료합니다.
절차
stack 사용자로 언더클라우드에 로그인하고
controller-0
의 프로비저닝 IP 주소를 식별합니다.(undercloud) [stack@site-undercloud-0 ~]$ openstack server list -f value -c Name -c Networks | grep controller overcloud-controller-1 ctlplane=192.168.24.40 overcloud-controller-2 ctlplane=192.168.24.13 overcloud-controller-0 ctlplane=192.168.24.71 (undercloud) [stack@site-undercloud-0 ~]$
오버클라우드에 인증하려면 기본적으로
/home/stack/overcloudrc
에 저장된 인증 정보를controller-0
으로 복사합니다.$ scp ~/overcloudrc tripleo-admin@192.168.24.71:/home/tripleo-admin/
controller-0
에 연결합니다.$ ssh tripleo-admin@192.168.24.71
controller-0
에서tripleo-admin
사용자로glance_api 서비스
의 IP 주소를 식별합니다. 다음 예에서 IP 주소는 Cryostat1.105
입니다.(overcloud) [root@controller-0 ~]# grep -A 10 '^listen glance_api' /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg listen glance_api server central-controller0-0.internalapi.redhat.local 172.25.1.105:9292 check fall 5 inter 2000 rise 2
glance-cache-manage
명령은glance_api
컨테이너에서만 사용할 수 있으므로 오버클라우드에 인증할 환경 변수가 이미 설정되어 있는 해당 컨테이너에 exec 스크립트를 만듭니다. 다음 콘텐츠를 사용하여controller-0
의/home/tripleo-admin
에glance_pod.sh
라는 스크립트를 생성합니다.sudo podman exec -ti \ -e NOVA_VERSION=$NOVA_VERSION \ -e COMPUTE_API_VERSION=$COMPUTE_API_VERSION \ -e OS_USERNAME=$OS_USERNAME \ -e OS_PROJECT_NAME=$OS_PROJECT_NAME \ -e OS_USER_DOMAIN_NAME=$OS_USER_DOMAIN_NAME \ -e OS_PROJECT_DOMAIN_NAME=$OS_PROJECT_DOMAIN_NAME \ -e OS_NO_CACHE=$OS_NO_CACHE \ -e OS_CLOUDNAME=$OS_CLOUDNAME \ -e no_proxy=$no_proxy \ -e OS_AUTH_TYPE=$OS_AUTH_TYPE \ -e OS_PASSWORD=$OS_PASSWORD \ -e OS_AUTH_URL=$OS_AUTH_URL \ -e OS_IDENTITY_API_VERSION=$OS_IDENTITY_API_VERSION \ -e OS_COMPUTE_API_VERSION=$OS_COMPUTE_API_VERSION \ -e OS_IMAGE_API_VERSION=$OS_IMAGE_API_VERSION \ -e OS_VOLUME_API_VERSION=$OS_VOLUME_API_VERSION \ -e OS_REGION_NAME=$OS_REGION_NAME \ glance_api /bin/bash
overcloudrc
파일을 가져오고glance_pod.sh
스크립트를 실행하여 오버클라우드 컨트롤러 노드를 인증하는 데 필요한 환경 변수를 사용하여glance_api
컨테이너를 실행합니다.[tripleo-admin@controller-0 ~]$ source overcloudrc (overcloudrc) [tripleo-admin@central-controller-0 ~]$ bash glance_pod.sh ()[glance@controller-0 /]$
glance image-list
와 같은 명령을 사용하여 컨테이너에서 오버클라우드에 대해 인증된 명령을 실행할 수 있는지 확인합니다.()[glance@controller-0 /]$ glance image-list +--------------------------------------+----------------------------------+ | ID | Name | +--------------------------------------+----------------------------------+ | ad2f8daf-56f3-4e10-b5dc-d28d3a81f659 | cirros-0.4.0-x86_64-disk.img | +--------------------------------------+----------------------------------+ ()[glance@controller-0 /]$
절차
admin 사용자로 캐시할 이미지를 대기열에 넣습니다.
$ glance-cache-manage --host=<host_ip> queue-image <image_id>
-
<host_ip>를
glance-api
컨테이너가 실행 중인 컨트롤러 노드의 IP 주소로 바꿉니다. <image_id>를 큐하려는 이미지의 ID로 바꿉니다.
사전 캐시하려는 이미지를 대기열에 추가하면
cache_images
정기 작업이 모든 대기 중인 이미지를 동시에 사전 가져옵니다.참고이미지 캐시는 각 노드의 로컬이므로 Red Hat OpenStack Platform이 HA(3, 5 또는 7 컨트롤러 포함)와 함께 배포된 경우
glance-cache-manage
명령을 실행할 때--host
옵션으로 호스트 주소를 지정해야 합니다.
-
<host_ip>를
다음 명령을 실행하여 이미지 캐시의 이미지를 확인합니다.
$ glance-cache-manage --host=<host_ip> list-cached
<host_ip>를 사용자 환경에 있는 호스트의 IP 주소로 바꿉니다.
관련 정보
다음과 같은 목적으로 추가 glance-cache-manage
명령을 사용할 수 있습니다.
-
나열-캐시
되어 현재 캐시된 모든 이미지를 나열합니다. -
캐싱을 위해 현재
대기열에
있는 모든 이미지를 나열하려면 목록을 큐에 넣습니다. -
캐싱할
이미지를
대기열에 추가하는 대기열 이미지입니다. -
캐시에서 이미지를 제거하기 위해
delete-cached-image
-
cache에서 모든 이미지를 제거하기 위해
delete-all-cached-images
-
캐시 대기열에서 이미지를 삭제하려면
delete-queued-image
-
캐시 대기열에서 모든 이미지를 삭제하려면
delete-all-queued-images
1.8. 이미지 서비스 API를 사용하여 스파스 이미지 업로드 활성화
Image 서비스(glance) API를 사용하면 스파스 이미지 업로드를 사용하여 네트워크 트래픽을 줄이고 스토리지 공간을 절약할 수 있습니다. 이 기능은 DCN(Distributed Compute Node) 환경에서 특히 유용합니다. 스파스 이미지 파일을 사용하면 이미지 서비스에서 null 바이트 시퀀스를 쓰지 않습니다. 이미지 서비스는 지정된 오프셋을 사용하여 데이터를 작성합니다. 스토리지 백엔드는 이러한 오프셋을 실제로 스토리지 공간을 사용하지 않는 null 바이트로 해석합니다.
이미지 관리에 이미지 서비스 명령줄 클라이언트를 사용합니다.
제한
- 스파스 이미지 업로드는 Ceph RADOS Block Device(RBD)에서만 지원됩니다.
- 파일 시스템에서 스파스 이미지 업로드가 지원되지 않습니다.
- Sparseness는 클라이언트와 이미지 서비스 API 간의 전송 중에 유지 관리되지 않습니다. 이미지는 이미지 서비스 API 수준에서 스파스됩니다.
사전 요구 사항
- RHOSP(Red Hat OpenStack Platform) 배포에서는 이미지 서비스 백엔드에 RBD를 사용합니다.
절차
-
stack
사용자로 언더클라우드 노드에 로그인합니다. stackrc
인증 정보 파일을 소싱합니다.$ source stackrc
다음 콘텐츠를 사용하여 환경 파일을 생성합니다.
parameter_defaults: GlanceSparseUploadEnabled: true
다른 환경 파일과 함께 스택에 새 환경 파일을 추가하고 오버클라우드를 배포합니다.
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e <new_environment_file>.yaml \ ...
이미지 업로드에 대한 자세한 내용은 이미지 업로드를 참조하십시오.
검증
이미지를 가져오고 해당 크기를 확인하여 스파스 이미지 업로드를 확인할 수 있습니다.
다음 절차에서는 예제 명령을 사용합니다. 적절한 경우 해당 환경의 값으로 바꿉니다.
이미지 파일을 로컬로 다운로드합니다.
$ wget <file_location>/<file_name>
-
&
lt;file_location
>을 파일 위치로 바꿉니다. &
lt;file_name
>을 파일 이름으로 바꿉니다.예를 들면 다음과 같습니다.
$ wget https://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-1508.qcow2
-
&
디스크 크기 및 업로드할 이미지의 가상 크기를 확인합니다.
$ qemu-img info <file_name>
예를 들면 다음과 같습니다.
$ qemu-img info CentOS-6-x86_64-GenericCloud-1508.qcow2 image: CentOS-6-x86_64-GenericCloud-1508.qcow2 file format: qcow2 virtual size: 8 GiB (8589934592 bytes) disk size: 1.09 GiB cluster_size: 65536 Format specific information: compat: 0.10 refcount bits: 1
이미지를 가져옵니다.
$ glance image-create-via-import --disk-format qcow2 --container-format bare --name centos_1 --file <file_name>
- 이미지 ID를 기록합니다. 후속 단계에서 필요합니다.
이미지를 가져오고 활성 상태인지 확인합니다.
$ glance image show <image_id>
Ceph Storage 노드에서 이미지 크기가 1단계의 출력에서 가상 크기보다 작은지 확인합니다.
$ sudo rbd -p images diff <image_id> | awk '{ SUM += $2 } END { print SUM/1024/1024/1024 " GB" }' 1.03906 GB
선택 사항:
rbd_thin_provisioning
이 컨트롤러 노드의 이미지 서비스 구성 파일에 구성되어 있는지 확인할 수 있습니다.SSH를 사용하여 컨트롤러 노드에 액세스합니다.
$ ssh -A -t tripleo-admin@<controller_node_IP_address>
해당 컨트롤러 노드에서
rbd_thin_provisioning
이True
와 같은지 확인합니다.$ sudo podman exec -it glance_api sh -c 'grep ^rbd_thin_provisioning /etc/glance/glance-api.conf'
1.9. 보안 metadef API
RHOSP(Red Hat OpenStack Platform)에서 클라우드 관리자는 메타데이터 정의(metadef) API를 사용하여 키 값 쌍과 태그 메타데이터를 정의할 수 있습니다. 클라우드 관리자가 생성할 수 있는 metadef 네임스페이스, 오브젝트, 속성, 리소스 또는 태그 수에 제한이 없습니다.
이미지 서비스 정책은 metadef API를 제어합니다. 기본적으로 클라우드 관리자만 metadef API를 생성, 업데이트 또는 삭제할 수 있습니다. 이러한 제한은 metadef API가 무단 사용자에게 정보를 노출하지 못하도록 하며, 이미지 서비스(glance) 데이터베이스를 무제한 리소스로 채우는 악의적인 사용자의 위험을 완화하여 DoS(Denial of Service) 스타일 공격을 생성할 수 있습니다. 그러나 클라우드 관리자는 기본 정책을 재정의할 수 있습니다.
1.10. 클라우드 사용자를 위한 metadef API 액세스 활성화
메타데이터 정의(metadef) API에 대한 쓰기 액세스 권한을 사용하는 클라우드 관리자는 기본 관리자 전용 정책을 재정의하여 모든 사용자가 해당 API에 액세스할 수 있도록 할 수 있습니다. 그러나 이러한 유형의 구성에서는 고객 이름 및 내부 프로젝트와 같은 실수로 민감한 리소스 이름을 누출시킬 가능성이 있습니다. 관리자는 모든 사용자에 대해 읽기 액세스만 활성화된 경우에도 이전에 생성된 리소스를 식별하기 위해 시스템을 감사해야 합니다.
프로세스
클라우드 관리자로 언더클라우드에 로그인하여 정책 재정의를 위한 파일을 생성합니다. 예를 들면 다음과 같습니다.
$ cat open-up-glance-api-metadef.yaml
모든 사용자에게 metadef API 읽기-쓰기 액세스를 허용하도록 정책 덮어쓰기 파일을 구성합니다.
GlanceApiPolicies: { glance-metadef_default: { key: 'metadef_default', value: '' }, glance-get_metadef_namespace: { key: 'get_metadef_namespace', value: 'rule:metadef_default' }, glance-get_metadef_namespaces: { key: 'get_metadef_namespaces', value: 'rule:metadef_default' }, glance-modify_metadef_namespace: { key: 'modify_metadef_namespace', value: 'rule:metadef_default' }, glance-add_metadef_namespace: { key: 'add_metadef_namespace', value: 'rule:metadef_default' }, glance-delete_metadef_namespace: { key: 'delete_metadef_namespace', value: 'rule:metadef_default' }, glance-get_metadef_object: { key: 'get_metadef_object', value: 'rule:metadef_default' }, glance-get_metadef_objects: { key: 'get_metadef_objects', value: 'rule:metadef_default' }, glance-modify_metadef_object: { key: 'modify_metadef_object', value: 'rule:metadef_default' }, glance-add_metadef_object: { key: 'add_metadef_object', value: 'rule:metadef_default' }, glance-delete_metadef_object: { key: 'delete_metadef_object', value: 'rule:metadef_default' }, glance-list_metadef_resource_types: { key: 'list_metadef_resource_types', value: 'rule:metadef_default' }, glance-get_metadef_resource_type: { key: 'get_metadef_resource_type', value: 'rule:metadef_default' }, glance-add_metadef_resource_type_association: { key: 'add_metadef_resource_type_association', value: 'rule:metadef_default' }, glance-remove_metadef_resource_type_association: { key: 'remove_metadef_resource_type_association', value: 'rule:metadef_default' }, glance-get_metadef_property: { key: 'get_metadef_property', value: 'rule:metadef_default' }, glance-get_metadef_properties: { key: 'get_metadef_properties', value: 'rule:metadef_default' }, glance-modify_metadef_property: { key: 'modify_metadef_property', value: 'rule:metadef_default' }, glance-add_metadef_property: { key: 'add_metadef_property', value: 'rule:metadef_default' }, glance-remove_metadef_property: { key: 'remove_metadef_property', value: 'rule:metadef_default' }, glance-get_metadef_tag: { key: 'get_metadef_tag', value: 'rule:metadef_default' }, glance-get_metadef_tags: { key: 'get_metadef_tags', value: 'rule:metadef_default' }, glance-modify_metadef_tag: { key: 'modify_metadef_tag', value: 'rule:metadef_default' }, glance-add_metadef_tag: { key: 'add_metadef_tag', value: 'rule:metadef_default' }, glance-add_metadef_tags: { key: 'add_metadef_tags', value: 'rule:metadef_default' }, glance-delete_metadef_tag: { key: 'delete_metadef_tag', value: 'rule:metadef_default' }, glance-delete_metadef_tags: { key: 'delete_metadef_tags', value: 'rule:metadef_default' } }
참고rule:metadeta_default
를 사용하도록 모든 metadef 정책을 구성해야 합니다.오버클라우드를 배포할 때
-e
옵션을 사용하여 배포 명령에 새 정책 파일을 추가합니다.$ openstack overcloud deploy -e open-up-glance-api-metadef.yaml
2장. 이미지 관리
Image 서비스(glance)는 디스크 및 서버 이미지에 대한 검색, 등록 및 전달 서비스를 제공합니다. 서버 이미지를 복사하거나 스냅샷을 작성하고 저장할 수 있는 기능을 제공합니다. 저장된 이미지를 서버 운영 체제를 설치하고 개별적으로 서비스를 구성하는 것보다 새로운 서버를 빠르고 일관되게 위임하는 템플릿으로 사용할 수 있습니다.
2.1. 이미지 생성
RHEL(Red Hat Enterprise Linux) ISO 파일 또는 Windows ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.
2.1.1. Red Hat OpenStack Platform에서 KVM 게스트 이미지 사용
준비된 RHEL KVM(커널 기반 가상 머신) 게스트 QCOW2 이미지를 사용할 수 있습니다.
이러한 이미지는 cloud-init
로 구성되며 SSH 키 프로비저닝이 올바르게 작동하려면 ec2-compatible 메타데이터 서비스를 활용해야 합니다.
준비된 Windows KVM 게스트 QCOW2 이미지를 사용할 수 없습니다.
KVM 게스트 이미지의 경우:
-
이미지의
root
계정은 비활성화되어 있지만sudo
액세스는cloud-user
라는 특수 사용자에게 부여됩니다. -
이 이미지에는
루트
암호가 설정되어 있지 않습니다.
루트
암호는 두 번째 필드에 !!
를 배치하여 /etc/shadow
에 잠겨 있습니다.
RHOSP 인스턴스의 경우 RHOSP 대시보드 또는 명령줄에서 ssh 키 쌍을 생성하고 해당 키 조합을 사용하여 인스턴스에 대한 SSH 공용 인증을 root로 수행합니다.
인스턴스가 시작되면 이 공개 키가 삽입됩니다. 그런 다음 키 쌍을 만들 때 다운로드한 개인 키를 사용하여 인증할 수 있습니다.
2.1.2. 사용자 지정 Red Hat Enterprise Linux 또는 Windows 이미지 만들기
사전 요구 사항
- 이미지를 생성할 Linux 호스트 머신입니다. 언더클라우드 또는 오버클라우드를 제외한 Linux 패키지를 설치하고 실행할 수 있는 머신일 수 있습니다.
advanced-virt 리포지토리가 활성화되어 있습니다.
$ sudo subscription-manager repos --enable=advanced-virt-for-rhel-8-x86_64-rpms
libvirt, virt-manager: 게스트 운영 체제를 생성하는 데 필요한 모든 패키지를 설치합니다.
$ sudo dnf module install -y virt
libguestfs 툴을 설치하여 가상 머신 이미지에 액세스하고 수정합니다.
$ sudo dnf install -y libguestfs-tools-c
- RHEL 9 또는 8 ISO 파일 또는 Windows ISO 파일. RHEL ISO 파일에 대한 자세한 내용은 RHEL 9.0 Binary DVD 또는 RHEL 8.6 Binary DVD 를 참조하십시오. Windows ISO 파일이 없는 경우 Microsoft Evaluation Center 에서 평가판 이미지를 다운로드합니다.
-
Kickstart
파일(RHEL만)을 변경하려면 텍스트 편집기입니다.
언더클라우드에 libguestfs-tools
패키지를 설치하는 경우 언더클라우드에서 tripleo_iscsid
서비스와 포트 충돌을 방지하기 위해 iscsid.socket
을 비활성화합니다.
$ sudo systemctl disable --now iscsid.socket
2.1.3. Red Hat Enterprise Linux 9 이미지 생성
Red Hat Enterprise Linux 9 ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.
호스트 시스템에서 [root@host]#
을 사용하여 모든 명령을 실행해야 합니다.
절차
virt-install
을 사용하여 설치를 시작하십시오.[root@host]# qemu-img create -f qcow2 rhel9.qcow2 10G. [root@host]# virt-install --virt-type kvm --name rhel9 --ram 2048 \ --cdrom /var/lib/libvirt/images/rhel-9.0-x86_64-dvd.iso \ --disk rhel9.qcow2,format=qcow2 \ --network=bridge:virbr0 --graphics vnc,listen=127.0.0.1 \ --noautoconsole --os-type=linux --os-variant=rhel9.0
그러면 인스턴스가 시작되고 설치 프로세스가 시작됩니다.
참고인스턴스가 자동으로 시작되지 않으면
virt-viewer
명령을 실행하여 콘솔을 확인합니다.[root@host]# virt-viewer rhel9
인스턴스를 구성합니다.
- 초기 설치 관리자 부팅 메뉴에서 Install Red Hat Enterprise Linux 9 를 선택합니다.
- 적절한 Language 및 Cryostat 옵션을 선택합니다.
- 설치에서 사용하는 장치 유형에 대한 메시지가 표시되면 자동 감지된 설치 미디어를 선택합니다.
- 설치 대상 유형에 대한 메시지가 표시되면 로컬 표준 디스크 를 선택합니다. 기타 스토리지 옵션의 경우 파티션 자동 구성을 선택합니다.
- SSH 서버를 설치하는 기본 서버 설치를 선택합니다.
- 네트워크 및 호스트 이름의 경우 네트워크에 eth0 을 선택하고 장치의 호스트 이름을 선택합니다. 기본 호스트 이름은 localhost.localdomain 입니다.
Root Password 필드에 암호를 입력하고 Confirm 필드에 동일한 암호를 다시 입력합니다.
- 결과
- 설치 프로세스가 완료되고 Complete! 화면이 표시됩니다.
- 설치가 완료되면 인스턴스를 재부팅하고 root 사용자로 로그인합니다.
다음 값만 포함하도록
/etc/sysconfig/network-scripts/ifcfg-eth0
파일을 업데이트합니다.TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- 시스템을 재부팅합니다.
Content Delivery Network에 머신을 등록합니다.
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-9-server-rpms
시스템을 업데이트합니다.
# dnf -y update
cloud-init
패키지를 설치합니다.# dnf install -y cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
구성 파일을 편집하고cloud_init_modules
에서 다음을 추가합니다.- resolv-conf
resolv-conf
옵션은 인스턴스가 처음 부팅될 때resolv.conf
를 자동으로 구성합니다. 이 파일에는이름 서버
,도메인
및 기타 옵션과 같은 인스턴스와 관련된 정보가 포함되어 있습니다.EC2 메타데이터 서비스에 액세스하는 문제를 방지하려면
/etc/sysconfig/network
에 다음 행을 추가합니다.NOZEROCONF=yes
콘솔 메시지가 대시보드 및
nova console-log
출력의 로그 탭에 표시되도록 하려면/etc/default/grub
파일에 다음 부팅 옵션을 추가합니다.GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
grub2-mkconfig
명령을 실행합니다.# grub2-mkconfig -o /boot/grub2/grub.cfg
출력은 다음과 같습니다.
Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.9.2.el9.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.9.2.el9.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-121.el9.x86_64 Found initrd image: /boot/initramfs-3.10.0-121.el9.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img done
생성된 이미지에 이 인스턴스의 서브스크립션 세부 정보가 포함되지 않도록 인스턴스를 등록합니다.
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
인스턴스의 전원을 끕니다.
# poweroff
virt-sysprep
명령을 사용하여 문제 없이 인스턴스를 생성하는 데 사용할 수 있도록 이미지를 재설정하고 정리합니다.[root@host]# virt-sysprep -d rhel9
디스크 이미지 내의 사용 가능한 공간을 다시 호스트 내의 여유 공간으로 변환하여 이미지 크기를 줄입니다.
[root@host]# virt-sparsify --compress rhel9.qcow2 rhel9-cloud.qcow2
그러면 명령이 실행되는 위치에 새
rhel9-cloud.qcow2
파일이 생성됩니다.rhel9-cloud.qcow2
이미지 파일을 이미지 서비스에 업로드할 수 있습니다. 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 이미지 업로드를 참조하십시오.
2.1.4. Red Hat Enterprise Linux 8 이미지 생성
Red Hat Enterprise Linux 8 ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.
호스트 시스템에서 [root@host]#
을 사용하여 모든 명령을 실행해야 합니다.
절차
virt-install
을 사용하여 설치를 시작하십시오.[root@host]# qemu-img create -f qcow2 rhel8.qcow2 10G [root@host]# virt-install --virt-type kvm --name rhel8 --ram 2048 \ --cdrom /var/lib/libvirt/images/RHEL-8.0.0--x86_64-dvd1.iso \ --disk rhel8.qcow2,format=qcow2 \ --network=bridge:virbr0 --graphics vnc,listen=127.0.0.1 \ --noautoconsole --os-type=linux --os-variant=rhel8.0
그러면 인스턴스가 시작되고 설치 프로세스가 시작됩니다.
참고인스턴스가 자동으로 시작되지 않으면
virt-viewer
명령을 실행하여 콘솔을 확인합니다.[root@host]# virt-viewer rhel8
인스턴스를 구성합니다.
초기 설치 프로그램 부팅 메뉴에서 Install or upgrade an existing system 을 선택하고 설치 프롬프트를 따릅니다. 기본값을 수락합니다.
디스크 설치 프로그램은 설치 전에 설치 미디어를 테스트하는 옵션을 제공합니다. 확인을 선택하여 테스트 또는 Skip 을 실행하여 테스트 없이 진행합니다.
- 적절한 Language 및 Cryostat 옵션을 선택합니다.
- 설치에서 사용하는 장치 유형에 대한 메시지가 표시되면 Basic Storage Devices 를 선택합니다.
-
장치의 호스트 이름을 선택합니다. 기본 호스트 이름은
localhost.localdomain
입니다. -
시간대 및
root
암호를 설정합니다. - 디스크 공간에 따라 설치하려는 옵션에서 설치 유형을 선택합니다.
- SSH 서버를 설치하는 기본 서버 설치를 선택합니다.
- 설치 프로세스가 완료되고 Congratulations가 완료되면 Red Hat Enterprise Linux 설치가 완전히 표시됩니다.
-
인스턴스를 재부팅하고
root
사용자로 로그인합니다. 다음 값만 포함하도록
/etc/sysconfig/network-scripts/ifcfg-eth0
파일을 업데이트합니다.TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- 시스템을 재부팅합니다.
Content Delivery Network에 머신을 등록합니다.
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-8-server-rpms
시스템을 업데이트합니다.
# dnf -y update
cloud-init
패키지를 설치합니다.# dnf install -y cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
구성 파일을 편집하고cloud_init_modules
아래에 다음 콘텐츠를 추가합니다.- resolv-conf
resolv-conf
옵션은 인스턴스가 처음 부팅될 때resolv.conf
구성 파일을 자동으로 구성합니다. 이 파일에는 이름 서버 ,도메인
및 기타 옵션과
같은 인스턴스 관련 정보가 포함되어 있습니다.네트워크 문제를 방지하려면
/etc/udev/rules.d/75-persistent-net-generator.rules
:을 생성하십시오.# echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules
이렇게 하면
/etc/udev/rules.d/70-persistent-net.rules
파일이 생성되지 않습니다./etc/udev/rules.d/70-persistent-net.rules
가 생성되면 스냅샷에서 부팅할 때 네트워킹이 올바르게 작동하지 않을 수 있습니다. 네트워크 인터페이스는eth0
이 아니라eth1
로 생성되고 IP 주소가 할당되지 않습니다.EC2 메타데이터 서비스에 액세스하는 문제를 방지하려면
/etc/sysconfig/network
에 다음 행을 추가합니다.NOZEROCONF=yes
콘솔 메시지가 대시보드 및
nova console-log
출력의 로그 탭에 표시되도록 하려면/etc/grub.conf
파일에 다음 부팅 옵션을 추가합니다.console=tty0 console=ttyS0,115200n8
결과 이미지에 이 인스턴스에 대한 동일한 서브스크립션 세부 정보가 포함되지 않도록 가상 머신을 등록합니다.
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
인스턴스의 전원을 끕니다.
# poweroff
virt-sysprep
명령을 사용하여 문제 없이 인스턴스를 생성하는 데 사용할 수 있도록 이미지를 재설정하고 정리합니다.[root@host]# virt-sysprep -d rhel8
virt-sparsify
명령을 사용하여 이미지 크기를 줄입니다. 이 명령은 디스크 이미지 내의 사용 가능한 공간을 다시 변환하여 호스트 내의 사용 가능한 공간을 다시 변환합니다.[root@host]# virt-sparsify --compress rhel8.qcow2 rhel8-cloud.qcow2
이렇게 하면 명령이 실행되는 위치에 새
rhel8-cloud.qcow2
파일이 생성됩니다.참고인스턴스에 적용되는 플레이버의 디스크 공간에 따라 이미지를 기반으로 인스턴스 파티션의 크기를 수동으로 조정해야 합니다.
rhel8-cloud.qcow2
이미지 파일을 이미지 서비스에 업로드할 준비가 되었습니다. 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 이미지 업로드를 참조하십시오.
2.1.5. Windows 이미지 생성
Windows ISO 파일을 사용하여 QCOW2 형식으로 RHOSP(Red Hat OpenStack Platform) 호환 이미지를 수동으로 생성합니다.
호스트 시스템에서 [root@host]#
을 사용하여 모든 명령을 실행해야 합니다.
절차
virt-install
을 사용하여 설치를 시작하십시오.[root@host]# virt-install --name=<name> \ --disk size=<size> \ --cdrom=<path> \ --os-type=windows \ --network=bridge:virbr0 \ --graphics spice \ --ram=<ram>
virt-install
매개변수의 다음 값을 바꿉니다.- <name> true - Windows 인스턴스에 있는 이름입니다.
- <size> Cryostat- Cryostatdisk 크기(GB)입니다.
- Windows 설치 ISO 파일의 경로입니다.
<RAM>유지 관리 - 요청된 RAM 양(MB)입니다.
참고--os-type=windows
매개변수를 사용하면 시계가 Windows 게스트에 대해 올바르게 구성되어 있으며 Hyper-V 지원 기능을 활성화합니다. 이미지를 Image 서비스(glance)에 업로드하기 전에 이미지 메타데이터에서os_type=windows
를 설정해야 합니다.
virt-install
은 게스트 이미지를/var/lib/libvirt/images/
<name
> .qcow2
로 저장합니다. 게스트 이미지를 다른 곳에 유지하려면--disk
옵션의 매개변수를 변경합니다.--disk path=<filename>,size=<size>
<filename>을 인스턴스 이미지를 저장하는 파일 이름 및 선택적으로 해당 경로로 바꿉니다. 예를 들어
path=win8.qcow2,size=8
은 현재 작업 디렉터리에win8.qcow2
라는 8GB 파일을 생성합니다.작은 정보게스트가 자동으로 시작되지 않으면
virt-viewer
명령을 실행하여 콘솔을 확인합니다.[root@host]# virt-viewer <name>
Windows를 설치하는 방법에 대한 자세한 내용은 관련 Microsoft 설명서를 참조하십시오.
-
새로 설치된 Windows 시스템이 가상화된 하드웨어를 사용하도록 허용하려면 VirtIO 드라이버를 설치해야 할 수 있습니다. 이렇게 하려면 이미지를 Windows 인스턴스에 CD-ROM 드라이브로 연결하여 설치합니다.
virtio-win
패키지를 설치하려면 VirtIO ISO 이미지를 인스턴스에 추가하고 VirtIO 드라이버를 설치해야 합니다. 자세한 내용은 가상화 구성 및 관리 가이드에서 Windows 가상 머신용 KVM 반가상화 드라이버 설치를 참조하십시오. 구성을 완료하려면 Windows 시스템에서 Cloudbase-Init 를 다운로드하고 실행합니다. Cloudbase-Init 설치가 끝나면 Run Sysprep 및 Cryostat 확인란 을 선택합니다.
Sysprep
툴은 특정 Microsoft 서비스에서 사용하는 OS ID를 생성하여 게스트를 고유하게 만듭니다.중요Red Hat은 Cloudbase-Init에 대한 기술 지원을 제공하지 않습니다. 문제가 발생하면 Contact Cloudbase Solutions 를 참조하십시오.
Windows 시스템이 종료되면 < name>.qcow2
이미지 파일을 이미지 서비스에 업로드할 준비가 된 것입니다. 이 이미지를 RHOSP 배포에 업로드하는 방법에 대한 자세한 내용은 이미지 업로드를 참조하십시오.
2.1.5.1. 메타데이터 속성
Compute 서비스(nova)는 libosinfo
데이터를 사용하여 기본 장치 모델을 설정할 수 있도록 더 이상 지원되지 않습니다. 대신 다음 이미지 메타데이터 속성을 사용하여 인스턴스에 최적의 가상 하드웨어를 구성합니다.
-
os_distro
-
os_version
-
hw_cdrom_bus
-
hw_disk_bus
-
hw_scsi_model
-
hw_vif_model
-
hw_video_model
-
hypervisor_type
이러한 메타데이터 속성에 대한 자세한 내용은 이미지 구성 매개변수를 참조하십시오.
2.1.6. UEFI Secure Boot 용 이미지 생성
오버클라우드에 UEFI Secure Boot Compute 노드가 포함된 경우 클라우드 사용자가 Secure Boot 인스턴스를 시작하는 데 사용할 수 있는 Secure Boot 인스턴스 이미지를 생성할 수 있습니다.
프로세스
UEFI Secure Boot의 새 이미지를 생성합니다.
$ openstack image create --file <base_image_file> uefi_secure_boot_image
-
&
lt;base_image_file
>을 UEFI 및 GUID 파티션 테이블(GPT) 표준을 지원하고 EFI 시스템 파티션을 포함하는 이미지 파일로 바꿉니다.
-
&
기본 머신 유형이
q35
가 아닌 경우 시스템 유형을q35
로 설정합니다.$ openstack image set --property hw_machine_type=q35 uefi_secure_boot_image
UEFI Secure Boot 호스트에서 인스턴스를 예약하도록 지정합니다.
$ openstack image set \ --property hw_firmware_type=uefi \ --property os_secure_boot=required \ uefi_secure_boot_image
2.2. 이미지 업로드
이미지를 업로드합니다.
프로세스
glance image-create
명령과속성
옵션을 사용하여 이미지를 업로드합니다.예를 들면 다음과 같습니다.
$ glance image-create --name <NAME> \ --is-public true --disk-format qcow2 \ --container-format bare \ --file <IMAGE_FILE> \ --property <IMAGE_METADATA>
-
glance image-create
명령 옵션 목록은 Image 서비스(glance) 명령 옵션을 참조하십시오. - 속성 키 목록은 이미지 구성 매개변수를 참조하십시오.
-
2.3. 이미지 업데이트
이미지를 업데이트합니다.
프로세스
glance image-update
명령을속성
옵션과 함께 사용하여 이미지를 업데이트합니다.예를 들면 다음과 같습니다.
$ glance image-update IMG-UUID \ --property architecture=x86_64
-
glance image-update
명령 옵션 목록은 Image 서비스(glance) 명령 옵션을 참조하십시오. - 속성 키 목록은 이미지 구성 매개변수를 참조하십시오.
-
2.4. 이미지 가져오기
다음 두 가지 방법 중 하나를 사용하여 Image 서비스(glance)로 이미지를 가져올 수 있습니다.
-
web-download
를 사용하여 URI에서 이미지를 가져옵니다. -
glance-direct
를 사용하여 로컬 파일 시스템에서 이미지를 가져옵니다.
web-download
방법은 기본적으로 활성화되어 있습니다. 클라우드 관리자는 가져오기 방법을 구성합니다. glance import-info
명령을 실행하여 사용 가능한 가져오기 옵션을 나열할 수 있습니다.
2.4.1. 원격 URI에서 이미지 가져오기
web-download
방법을 사용하여 원격 URI에서 이미지를 복사할 수 있습니다.
이미지를 생성하고 가져올 이미지의 URI를 지정합니다.
$ glance image-create-via-import \ --container-format <CONTAINER FORMAT> \ --disk-format <DISK-FORMAT> \ --name <NAME> \ --import-method web-download \ --uri <URI>
-
<
CONTAINER FORMAT
>를 이미지에 대해 설정된 컨테이너 형식(없음, ami, ari, aki, bare, ovf, ova, docker)으로 바꿉니다. -
<
DISK-FORMAT
>를 이미지에 대해 설정된 디스크 형식(없음, ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso, ploop)으로 바꿉니다. -
&
lt;NAME&
gt;을 이미지에 대한 설명이 포함된 이름으로 바꿉니다. -
<
;URI&
gt;를 이미지의 URI로 바꿉니다.
-
<
glance image-show <IMAGE_ID> 명령을 사용하여 이미지
의 가용성을 확인할 수 있습니다.-
&
lt;IMAGE_ID&
gt;를 이미지 생성 중에 제공한 ID로 바꿉니다.
-
&
이미지 서비스 웹 다운로드
방법은 2단계 프로세스를 사용하여 가져오기를 수행합니다.
-
웹 다운로드
메서드는 이미지 레코드를 생성합니다. -
웹 다운로드
방법은 지정된 URI에서 이미지를 검색합니다.
URI에는 선택적 거부 목록 및 허용 목록 필터링이 적용됩니다.
Image Property Cryostat 플러그인은 메타데이터 속성을 이미지에 삽입할 수 있습니다. 이러한 삽입된 속성은 이미지 인스턴스가 시작되는 컴퓨팅 노드를 결정합니다.
2.4.2. 로컬 볼륨에서 이미지 가져오기
glance-direct
메서드는 이미지 ID를 생성하는 이미지 레코드를 생성합니다. 이미지가 로컬 볼륨에서 이미지 서비스에 업로드되면 스테이징 영역에 저장되고 구성된 검사를 통과한 후 활성화됩니다. glance-direct
방법을 사용하려면 HA(고가용성) 구성에 사용할 때 공유 스테이징 영역이 필요합니다.
공통 스테이징 영역이 없는 경우 HA 환경에서 glance-direct
방법을 사용하는 이미지 업로드가 실패할 수 있습니다. HA 활성-활성 환경에서는 API 호출이 이미지 서비스 컨트롤러에 배포됩니다. 다운로드 API 호출을 API 호출과 다른 컨트롤러로 보내 이미지를 업로드할 수 있습니다.
glance-direct 방법은 세 가지 호출을 사용하여 이미지를 가져옵니다.
-
glance image-create
-
Glance 이미지 단계
-
Glance image-import
glance image-create-via-import
명령을 사용하여 하나의 명령으로 이러한 세 가지 호출을 모두 수행할 수 있습니다.
$ glance image-create-via-import \ --container-format <CONTAINER FORMAT> \ --disk-format <DISK-FORMAT> \ --name <NAME> \ --file </PATH/TO/IMAGE>
-
<
CONTAINER FORMAT
>, <DISK-FORMAT
>, <NAME
> , </PATH/TO/IMAGE
>를 이미지와 관련된 값으로 바꿉니다.
이미지가 스테이징 영역에서 백엔드 위치로 이동하면 이미지가 나열됩니다. 그러나 이미지가 활성화되는 데 다소 시간이 걸릴 수 있습니다.
glance image-show <IMAGE_ID> 명령을 사용하여 이미지
의 가용성을 확인할 수 있습니다.
-
&
lt;IMAGE_ID
를 이미지 생성 중에 제공한 ID로 바꿉니다.
2.5. 이미지 삭제
프로세스
glance image-delete
명령을 사용하여 하나 이상의 이미지를 삭제합니다.$ glance image-delete <IMAGE_ID> [<IMAGE_ID> ...]
<IMAGE_ID>를 삭제하려는 이미지의 ID로 바꿉니다.
참고glance image-delete
명령은 이미지 및 이미지의 모든 사본과 이미지 인스턴스 및 메타데이터를 영구적으로 삭제합니다.
2.6. 이미지 숨기거나 숨기기
사용자에게 제공되는 일반 목록에서 공용 이미지를 숨길 수 있습니다. 예를 들어 더 이상 사용되지 않는 CentOS 7 이미지를 숨기고 최신 버전만 표시하여 사용자 환경을 단순화할 수 있습니다. 사용자는 숨겨진 이미지를 검색하고 사용할 수 있습니다.
이미지를 숨기려면 다음을 수행합니다.
glance image-update <image_id> --hidden 'true'
숨겨진 이미지를 생성하려면 glance image-create
명령에 --hidden
인수를 추가합니다.
이미지를 분리하려면 다음을 수행합니다.
glance image-update <image_id> --hidden 'false'
숨겨진 이미지 표시
숨겨진 이미지를 나열하려면 다음을 수행합니다.
glance image-list --hidden 'true'
2.7. 이미지 변환 활성화
GlanceImageImportPlugins
매개변수를 활성화하여 QCOW2 이미지를 Image 서비스(glance)에 업로드할 수 있습니다. 그런 다음 QCOW2 이미지를 RAW 형식으로 변환할 수 있습니다.
Red Hat Ceph Storage RADOS Block Device(RBD)를 사용하여 이미지를 저장하고 Nova 인스턴스를 부팅하면 이미지 변환이 자동으로 활성화됩니다.
이미지 변환을 활성화하려면 다음 매개변수 값이 포함된 환경 파일을 생성합니다. openstack overcloud deploy
명령에 -e
옵션을 사용하여 새 환경 파일을 포함합니다.
parameter_defaults: GlanceImageImportPlugins:'image_conversion'
이미지 관리에 이미지 서비스 명령줄 클라이언트를 사용합니다.
2.7.1. 이미지를 RAW 형식으로 변환
Red Hat Ceph Storage는 VM(가상 머신) 디스크를 호스팅하는 QCOW2 이미지를 저장할 수 있지만 사용을 지원하지 않습니다.
QCOW2 이미지를 업로드하고 VM을 생성할 때 컴퓨팅 노드는 이미지를 다운로드하고 이미지를 RAW로 변환한 후 다시 Ceph에 업로드할 수 있습니다. 이 프로세스는 특히 병렬 VM 생성 중에 VM을 생성하는 데 걸리는 시간에 영향을 미칩니다.
예를 들어 여러 VM을 동시에 생성할 때 변환된 이미지를 Ceph 클러스터에 업로드하면 이미 실행 중인 워크로드에 영향을 미칠 수 있습니다. 업로드 프로세스는 이러한 IOPS 워크로드와 스토리지 대응을 방해할 수 있습니다.
Ceph에서 VM을 보다 효율적으로 부팅하려면(임시 백엔드 또는 볼륨에서 부팅) Glance 이미지 형식은 RAW여야 합니다.
절차
이미지를 RAW로 변환하면 원본 QCOW2 이미지 파일보다 크기가 큰 이미지가 발생할 수 있습니다. 변환 전에 다음 명령을 실행하여 최종 RAW 이미지 크기를 확인합니다.
qemu-img info <image>.qcow2
이미지를 QCOW2에서 RAW 형식으로 변환합니다.
qemu-img convert -p -f qcow2 -O raw <original qcow2 image>.qcow2 <new raw image>.raw
2.7.1.1. Image 서비스(glance)에서 디스크 형식 구성
GlanceDiskFormats
매개변수를 사용하여 디스크 형식을 활성화하거나 거부하도록 Image 서비스(glance)를 구성할 수 있습니다.
절차
-
언더클라우드 호스트에
stack
사용자로 로그인합니다. 언더클라우드 인증 정보 파일을 가져옵니다.
$ source ~/stackrc
환경 파일에
GlanceDiskFormats
매개변수를 포함합니다(예:glance_disk_formats.yaml
):parameter_defaults: GlanceDiskFormats: - <disk_format>
예를 들어 다음 구성을 사용하여 RAW 및 ISO 디스크 형식만 활성화합니다.
parameter_defaults: GlanceDiskFormats: - raw - iso
다음 예제 구성을 사용하여 QCOW2 디스크 이미지를 거부합니다.
parameter_defaults: GlanceDiskFormats: - raw - iso - aki - ari - ami
해당 환경과 관련된 다른 환경 파일과 함께
openstack overcloud deploy
명령에 새 구성이 포함된 환경 파일을 포함합니다.$ openstack overcloud deploy --templates \ -e <overcloud_environment_files> \ -e <new_environment_file> \ …
-
&
lt;overcloud_environment_files
>를 배포에 속하는 환경 파일 목록으로 바꿉니다. -
&
lt;new_environment_file
>을 새 구성이 포함된 환경 파일로 바꿉니다.
-
&
RHOSP에서 사용 가능한 디스크 형식에 대한 자세한 내용은 이미지 구성 매개변수를 참조하십시오.
2.7.2. RAW 형식으로 이미지 저장
GlanceImageImportPlugins
매개변수를 활성화하면 다음 명령을 실행하여 이전에 생성된 이미지를 RAW 형식으로 저장합니다.
$ glance image-create-via-import \ --disk-format qcow2 \ --container-format bare \ --name NAME \ --visibility public \ --import-method web-download \ --uri http://server/image.qcow2
-
--name
,NAME
을 이미지 이름으로 바꿉니다.glance image-list
에 표시될 이름입니다. -
--uri
의 경우http://server/image.qcow2
를 QCOW2 이미지의 위치 및 파일 이름으로 교체합니다.
이 명령 예제에서는 이미지 레코드를 생성하고 web-download
방법을 사용하여 가져옵니다. glance-api는 가져오기 프로세스 중에 --uri
위치에서 이미지를 다운로드합니다. web-download
를 사용할 수 없는 경우 glanceclient
가 이미지 데이터를 자동으로 다운로드할 수 없습니다. glance import-info
명령을 실행하여 사용 가능한 이미지 가져오기 방법을 나열합니다.
3장. 이미지 가져오기 및 공유 스테이징
OpenStack Image 서비스(glance)의 기본 설정은 RHOSP(Red Hat OpenStack Platform)를 설치할 때 사용하는 heat 템플릿에 따라 결정됩니다. 이미지 서비스 heat 템플릿은 deployment/glance/glance-api-container-puppet.yaml
입니다.
web-download
방법 또는 glance-direct
방법을 사용하여 이미지를 가져올 수 있습니다. 이러한 가져오기 방법에 대한 자세한 내용은 이미지 가져오기를 참조하십시오.
3.1. glance-settings.yaml 파일 생성 및 배포
사용자 지정 환경 파일을 사용하여 가져오기 매개변수를 구성합니다. 이러한 매개변수는 코어 heat 템플릿 컬렉션에 있는 기본값을 재정의합니다. 예제 환경 콘텐츠에는 상호 운용 가능한 이미지 가져오기에 대한 매개변수가 포함되어 있습니다.
parameter_defaults: # Configure NFS backend GlanceBackend: file GlanceNfsEnabled: true GlanceNfsShare: 192.168.122.1:/export/glance # Enable glance-direct import method GlanceEnabledImportMethods: glance-direct,web-download # Configure NFS staging area (required for glance-direct import method) GlanceStagingNfsShare: 192.168.122.1:/export/glance-staging
GlanceBackend
,GlanceNfsEnabled
및 GlanceNfsShare
매개 변수는 Overcloud 매개변수 가이드에 정의되어 있습니다.
상호 운용 가능한 이미지 가져오기를 위해 두 개의 새 매개 변수를 사용하여 가져오기 방법과 공유 NFS 스테이징 영역을 정의합니다.
- GlanceEnabledImportMethods
- 사용 가능한 가져오기 메서드, web-download(기본값) 및 glance-direct를 정의합니다. 이 매개변수는 web-download 이외의 추가 메서드를 활성화하려면 경우에만 필요합니다.
- GlanceStagingNfsShare
-
glance-direct 가져오기 방법에서 사용하는 NFS 스테이징 영역을 구성합니다. 이 공간은 고가용성 클러스터 구성의 노드 간에 공유할 수 있습니다. 이 매개변수를 사용하려면
GlanceNfsEnabled
매개변수를true
로 설정해야 합니다.
절차
-
새 파일(예:
glance-settings.yaml
)을 만듭니다. 예제의 구문을 사용하여 이 파일을 채웁니다. openstack overcloud deploy
명령에glance-settings.yaml
파일과 배포와 관련된 기타 환경 파일을 포함합니다.$ openstack overcloud deploy --templates -e glance-settings.yaml
환경 파일 사용에 대한 자세한 내용은 director를 사용하여 Red Hat OpenStack Platform 설치 및 관리를 참조하십시오.
3.2. 이미지 웹-가져오기 소스 제어
URI 블록 목록을 추가하고 선택적 glance-image-import.conf
파일에 web-import 이미지 다운로드 소스를 제한할 수 있습니다.
세 가지 수준에서 이미지 소스 URI를 허용하거나 차단할 수 있습니다.
- 스키마(allowed_schemes, disallowed_schemes)
- host (allowed_hosts, disallowed_hosts)
- 포트(allowed_ports, disallowed_ports)
모든 수준에서 allowlist와 blocklist를 둘 다 지정하면 허용 목록이 지원되고 blocklist는 무시됩니다.
Image 서비스(glance)는 다음 결정 논리를 적용하여 이미지 소스 URI의 유효성을 검사합니다.
스키마가 확인됩니다.
- 누락된 스키마: reject
- 허용 목록이 있고 스키마가 allowlist: reject에 존재하지 않는 경우입니다. 그렇지 않으면 C를 건너뛰고 2로 계속합니다.
- blocklist가 있고 스키마가 blocklist: reject에 있는 경우입니다.
호스트 이름을 확인합니다.
- 누락된 호스트 이름: reject
- 허용 목록이 있고 allowlist: reject에 호스트 이름이 없습니다. 그렇지 않으면 C를 건너뛰고 3으로 계속 진행합니다.
- blocklist가 있고 호스트 이름이 blocklist: reject에 있습니다.
URI에 포트가 있으면 포트가 확인됩니다.
- 허용 목록이 있고 포트가 allowlist: reject에 존재하지 않는 경우입니다. 그렇지 않으면 B를 건너뛰고 4로 계속합니다.
- blocklist가 있고 포트가 blocklist: reject에 있습니다.
- URI가 유효한 것으로 허용됩니다.
허용 목록에 추가하거나 블록 목록에 추가하지 않고 스키마를 허용하면 URI에 포트를 포함하지 않고 해당 구성 요소에 기본 포트를 사용하는 모든 URI가 허용됩니다. URI에 포트가 포함된 경우 기본 의사 결정 논리에 따라 URI의 유효성을 검사합니다.
3.3. 이미지 가져오기 예
예를 들어 FTP의 기본 포트는 21입니다. ftp 는 허용 목록에 있는 스키마이므로 이 URL은 ftp://example.org/some/resource. 그러나 21이 포트 허용 목록에 없으므로 동일한 리소스에 대한 이 URL은 거부됩니다. ftp://example.org:21/some/resource.
allowed_schemes = [http,https,ftp] disallowed_schemes = [] allowed_hosts = [] disallowed_hosts = [] allowed_ports = [80,443] disallowed_ports = []
3.4. 기본 이미지 가져오기 블록 목록 및 허용 목록 설정
glance-image-import.conf
파일은 다음 기본 옵션이 포함된 선택적 파일입니다.
- allowed_schemes - [http, https]
- disallowed_schemes - 빈 목록
- allowed_hosts - 빈 목록
- disallowed_hosts - 빈 목록
- allowed_ports - [80, 443]
- disallowed_ports - 빈 목록
기본값을 사용하는 경우 최종 사용자는 http
또는 https
스키마만 사용하여 URI에 액세스할 수 있습니다. 사용자가 지정할 수 있는 포트는 80
및 443
입니다. 사용자는 포트를 지정할 필요가 없지만 포트를 지정하는 경우 80
또는 443
이어야 합니다.
glance-image-import.conf
파일은 이미지 서비스 소스 코드 트리의 etc/
하위 디렉터리에서 찾을 수 있습니다. Red Hat OpenStack Platform 릴리스에 대한 올바른 분기를 찾고 있는지 확인하십시오.
3.5. 이미지 압축 해제
이미지 압축 플러그인은 상호 운용 가능한 이미지 가져오기를 위해 자동화된 이미지 압축을 구현합니다. web-download
가져오기 방법을 사용하려는 환경에서 이 플러그인을 사용할 수 있지만 이미지 공급자는 압축 이미지만 제공합니다. 이미지 압축 해제는 클라이언트와 이미지 서비스(glance) 간의 네트워크 사용량을 최적화합니다.
이미지 압축 해제에 대한 다음 아카이브 유형이 지원됩니다.
- ZIP
- LHA/LZH
- GZIP
LHA/LZH 형식은 Python 3 lhafile 종속성 라이브러리가 설치된 경우에만 지원됩니다. Python 3 lhafile 종속성 라이브러리가 설치되지 않은 경우 LHA/LZH 파일이 있는 가져오기 작업이 실패합니다. 현재 플러그인은 TAR.GZ와 같은 다중 계층 아카이브는 지원하지 않습니다.
3.5.1. 이미지 압축 해제 구현
이미지 압축 플러그인은 상호 운용 가능한 이미지 가져오기 워크플로우의 일부로만 사용할 수 있습니다(POST v2/images/{image_id}/import
). 플러그인은 이미지 데이터 업로드 호출(PUT v2/images/{image_id}/file
)에 영향을 미치지 않습니다.
서비스 사용자가 상호 운용 가능한 이미지 가져오기 워크플로를 사용하도록 하려면 Image 서비스(glance) policy.json
파일에서 upload_image
정책을 제한합니다. 기본적으로 이 정책은 제한되지 않으며 권한이 있는 모든 사용자가 이미지 업로드를 호출할 수 있습니다.
사전 요구 사항
Image Decompression 플러그인을 사용하려면 image_decompression
을 glance-image-import.conf
파일에 추가해야 합니다.
[image_import_opts] image_import_plugins = ['image_decompression']
프로세스
이미지 서비스
policy.json
파일에서upload_image
정책을 제한합니다. 이 예제에서는 클라우드 관리자 및 서비스 사용자만 이미지 업로드 호출을 수행할 수 있습니다."upload_image": "role:admin or (service_user_id:<uuid of nova user>) or (service_roles:<service user role>)"
-
&
lt;uuid of nova user&
gt;를 service 사용자의 UUID로 바꿉니다. -
&
lt;service user role
>을 서비스 사용자에 대해 생성되고 신뢰할 수 있는 서비스에 할당된 역할로 바꿉니다.
-
&
3.5.2. 이미지 가져오기 워크플로에 대한 여러 플러그인 활성화
glance-image-import.conf
파일에서 image_import_plugins
옵션을 구성하여 이미지 가져오기 워크플로에 대해 여러 플러그인을 활성화할 수 있습니다. 플러그인은 병렬로 실행되지 않습니다. image_import_plugins
목록에 표시되는 순서대로 실행됩니다.
프로세스
glance-image-import.conf
파일에서 여러 플러그인을 구성합니다. 이 예제에서는 이미지를 변환하기 전에 압축을 풀어야 합니다. 목록에 있는 플러그인을 주문하여 이미지 압축을 먼저 확인합니다.[image_import_opts] image_import_plugins = ['image_decompression', 'image_conversion'] [image_conversion] output_format = raw
3.6. 이미지 가져오기에 메타데이터 삽입하여 VM 시작 위치 제어
최종 사용자는 이미지 서비스에 이미지를 업로드하고 이러한 이미지를 사용하여 VM을 시작할 수 있습니다. 이러한 사용자 제공(관리자 이외의) 이미지는 특정 컴퓨팅 노드 세트에서 시작해야 합니다. 계산 노드에 인스턴스를 할당하면 이미지 메타데이터 속성으로 제어됩니다.
Image Property Cryostat 플러그인은 가져오는 동안 이미지에 메타데이터 속성을 삽입합니다. glance-image-import.conf
파일의 [image_import_opts] 및 [inject_metadata_properties] 섹션을 편집하여 속성을 지정합니다.
Image Property Cryostat 플러그인을 활성화하려면 [image_import_opts]
섹션에 다음 행을 추가합니다.
[image_import_opts] image_import_plugins = [inject_image_metadata]
특정 사용자 집합에서 제공하는 이미지로 메타데이터 삽입을 제한하려면 ignore_user_roles
매개변수를 설정합니다. 예를 들어 다음 구성을 사용하여 property1
의 값을 하나의 값과admin이 아닌 사용자가 다운로드한 이미지에 property2
의 두 값을 삽입합니다.
[DEFAULT] [image_conversion] [image_import_opts] image_import_plugins = [inject_image_metadata] [import_filtering_opts] [inject_metadata_properties] ignore_user_roles = admin inject = PROPERTY1:value,PROPERTY2:value;another value
ignore_user_roles
매개변수는 플러그인이 무시한 ID 서비스(keystone) 역할의 쉼표로 구분된 목록입니다. 즉, 이미지 가져오기 호출을 수행하는 사용자에게 이러한 역할이 있는 경우 플러그인은 이미지에 속성을 삽입하지 않습니다.
매개변수 삽입
은 가져온 이미지의 이미지 레코드에 삽입되는 쉼표로 구분된 속성 및 값 목록입니다. 각 속성 및 값은 콜론 (':')
으로 인용하고 구분해야 합니다.
glance-image-import.conf
파일은 이미지 서비스 소스 코드 트리의 etc/
하위 디렉터리에서 찾을 수 있습니다. Red Hat OpenStack Platform 릴리스에 대한 올바른 분기를 찾고 있는지 확인하십시오.
4장. 여러 저장소가 있는 이미지 서비스
RHOSP(Red Hat OpenStack Platform) 이미지 서비스(glance)는 분산 엣지 아키텍처가 있는 여러 저장소 사용을 지원하므로 모든 엣지 사이트에 이미지 풀을 사용할 수 있습니다.
4.1. 여러 저장소에 있는 이미지 사본
분산 엣지 아키텍처와 함께 여러 저장소를 사용하면 모든 에지 사이트에 이미지 풀을 사용할 수 있습니다. 허브 사이트라고도 하는 중앙 사이트와 에지 사이트 간에 이미지를 복사할 수 있습니다.
이미지 메타데이터에는 각 복사본의 위치가 포함되어 있습니다. 예를 들어 두 에지 사이트에 있는 이미지는 중앙 사이트와 두 개의 에지 사이트라는 세 위치가 있는 단일 UUID로 노출됩니다. 즉, 여러 저장소에 단일 UUID를 공유하는 이미지 데이터 사본이 있을 수 있습니다. 위치에 대한 자세한 내용은 이미지 위치 이해를 참조하십시오.
모든 에지 사이트의 RADOS 블록 장치(RBD) 이미지 풀을 사용하면 Ceph RBD COW(Copy-On-Write) 및 스냅샷 계층 기술을 사용하여 VM(가상 머신)을 빠르게 부팅할 수 있습니다. 즉, 볼륨에서 VM을 부팅하고 실시간 마이그레이션을 수행할 수 있습니다. Ceph RBD를 사용한 계층 지정에 대한 자세한 내용은 블록 장치 가이드의 Ceph 블록 장치 계층 지정을 참조하십시오.
에지 사이트에서 인스턴스를 시작하면 필요한 이미지가 로컬 Image 서비스(glance) 저장소에 자동으로 복사됩니다. 그러나 인스턴스 시작 중에 시간을 절약하기 위해 glance multistore를 사용하여 중앙 이미지 저장소에서 에지 사이트로 미리 이미지를 복사할 수 있습니다.
4.2. 스토리지 엣지 아키텍처 요구사항
에지 사이트에서 이미지를 사용하려면 다음 요구 사항을 참조하십시오.
- 각 이미지의 사본은 중앙 위치의 Image 서비스(glance)에 있어야 합니다.
- 이미지를 다른 에지 사이트에 복사하려면 먼저 에지 사이트의 이미지를 중앙 위치로 복사해야 합니다.
- Red Hat Ceph Storage를 사용하여 DCN(Distributed Compute Node) 아키텍처를 배포할 때 원시 이미지를 사용해야 합니다.
- RADOS 블록 장치(RBD)는 이미지, 컴퓨팅 및 블록 스토리지 서비스의 스토리지 드라이버여야 합니다.
-
각 사이트에 대해
NovaComputeAvailabilityZone
및CinderStorageAvailabilityZone
매개변수에 동일한 값을 할당해야 합니다.
4.3. 여러 저장소로 이미지 가져오기
상호 운용 가능한 이미지 가져오기 워크플로를 사용하여 여러 Ceph Storage 클러스터로 이미지 데이터를 가져옵니다. 로컬 파일 시스템 또는 웹 서버를 통해 사용할 수 있는 Image 서비스(glance)로 이미지를 가져올 수 있습니다.
웹 서버에서 이미지를 가져오는 경우 이미지를 한 번에 여러 저장소로 가져올 수 있습니다. 웹 서버에서 이미지를 사용할 수 없는 경우 로컬 파일 시스템의 이미지를 중앙 저장소로 가져온 다음 추가 저장소에 복사할 수 있습니다. 자세한 내용은 기존 이미지 복사를 여러 저장소에 참조하십시오.
이미지 관리에 이미지 서비스 명령줄 클라이언트를 사용합니다.
중앙 위치에서 이미지를 사용하는 인스턴스가 없는 경우에도 중앙 사이트에 이미지 복사본을 항상 저장합니다. 이미지 서비스로 이미지를 가져오는 방법에 대한 자세한 내용은 분산 컴퓨팅 노드 아키텍처 배포 가이드를 참조하십시오.
4.3.1. 이미지 가져오기 실패 관리
--allow-failure
매개변수를 사용하여 이미지 가져오기 작업의 오류를 관리할 수 있습니다.
-
--allow-failure
매개변수의 값이true
인 경우 첫 번째 저장소에서 데이터를 성공적으로 가져온 후 이미지 상태가활성화
됩니다. 이 설정은 기본 설정입니다.os_glance_failed_import
이미지 속성을 사용하여 이미지 데이터를 가져오지 못한 저장소 목록을 볼 수 있습니다. -
--allow-failure
매개변수의 값을false
로 설정하면 지정된 모든 저장소에서 데이터를 성공적으로 가져온 후에만 이미지 상태가활성화
됩니다. 이미지 데이터를 가져오는 저장소 실패로 인해 이미지 상태가실패
하게 됩니다. 이미지는 지정된 저장소 중 하나로 가져오지 않습니다.
4.3.2. 여러 저장소로 이미지 데이터 가져오기
--allow-failure
매개변수의 기본 설정은 true
이므로 일부 저장소가 이미지 데이터를 가져오지 못하는 경우 명령에 매개 변수를 포함할 필요가 없습니다.
이 절차에서는 이미지 데이터를 성공적으로 가져오기 위해 모든 저장소가 필요하지는 않습니다.
절차
지정된 여러 저장소로 이미지 데이터를 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name IMAGE-NAME \ --import-method web-download \ --uri URI \ --stores STORE1,STORE2,STORE3
- IMAGE-NAME 을 가져올 이미지의 이름으로 교체합니다.
- URI 를 이미지 URI로 바꿉니다.
- STORE1,STORE2, STORE3 을 이미지 데이터를 가져오려는 저장소 이름으로 교체합니다.
-
또는 모든 저장소에 이미지를 업로드하려면
--stores
를--all-stores true
로 바꿉니다.
QCOW2 이미지를 RAW 형식으로 자동 변환하는 glance image-create-via-import
명령은 web-download
방법에서만 작동합니다. glance-direct
방법을 사용할 수 있지만 구성된 공유 파일 시스템이 있는 배포에서만 작동합니다.
4.3.3. 실패 없이 여러 저장소로 이미지 데이터 가져오기
이 절차에서는 이미지 데이터를 성공적으로 가져오려면 모든 저장소가 필요합니다.
절차
지정된 여러 저장소로 이미지 데이터를 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name IMAGE-NAME \ --import-method web-download \ --uri URI \ --stores STORE1,STORE2
- IMAGE-NAME 을 가져올 이미지의 이름으로 교체합니다.
- URI 를 이미지 URI로 바꿉니다.
- STORE1,STORE2, STORE3 을 이미지 데이터를 복사할 저장소 이름으로 교체합니다.
또는 모든 저장소에 이미지를 업로드하려면
--stores
를--all-stores true
로 바꿉니다.참고--allow-failure
매개변수를false
로 설정하면 이미지 서비스에서 이미지 데이터를 가져오지 못하는 저장소를 무시하지 않습니다. 이미지 속성os_glance_failed_import
를 사용하여 실패한 저장소 목록을 볼 수 있습니다. 자세한 내용은 이미지 가져오기 작업의 진행률 검사를 참조하십시오.
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ glance image-show IMAGE-ID | grep stores
IMAGE-ID 를 기존 이미지의 ID로 바꿉니다.
출력에는 쉼표로 구분된 저장소 목록이 표시됩니다.
4.3.4. 단일 저장소로 이미지 데이터 가져오기
이미지 데이터를 단일 저장소로 가져올 수 있습니다.
절차
이미지 데이터를 단일 저장소로 가져옵니다.
$ glance image-create-via-import \ --container-format bare \ --name IMAGE-NAME \ --import-method web-download \ --uri URI \ --store STORE
- IMAGE-NAME 을 가져올 이미지의 이름으로 교체합니다.
- URI 를 이미지 URI로 바꿉니다.
STORE 를 이미지 데이터를 복사할 저장소 이름으로 교체합니다.
참고명령에
--stores
,--all-stores
또는--store
옵션을 포함하지 않으면 이미지 서비스에서 중앙 저장소에 이미지를 생성합니다.
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ glance image-show IMAGE-ID | grep stores
IMAGE-ID 를 기존 이미지의 ID로 바꿉니다.
출력에는 쉼표로 구분된 저장소 목록이 표시됩니다.
4.3.5. 이미지 가져오기 작업의 진행률 확인
상호 운용 가능한 이미지 가져오기 워크플로우는 이미지 데이터를 저장소로 순차적으로 가져옵니다. 이미지 크기, 저장소 수, 중앙 사이트와 에지 사이트 간의 네트워크 속도는 이미지 가져오기 작업을 완료하는 데 걸리는 시간에 영향을 미칩니다.
이미지 가져오기 작업 중에 전송된 알림에 표시되는 두 개의 이미지 속성을 확인하여 이미지 가져오기 진행 상황을 확인할 수 있습니다.
-
os_glance_importing_to_stores
속성에는 이미지 데이터를 가져오지 않은 저장소가 나열됩니다. 가져오기 시작 시 요청된 모든 저장소가 목록에 표시됩니다. 저장소가 이미지 데이터를 가져올 때마다 이미지 서비스는 목록에서 저장소를 제거합니다. -
os_glance_failed_import
속성은 이미지 데이터를 가져오지 못하는 저장소를 나열합니다. 이 목록은 이미지 가져오기 작업 시작 시 비어 있습니다.
다음 절차에서 환경에는 3개의 Ceph Storage 클러스터( 중앙
저장소와 dcn0
및 dcn1
에 있는 두 개의 저장소)가 있습니다.
절차
이미지 데이터가 특정 저장소에 추가되었는지 확인합니다.
$ glance image-show IMAGE-ID
IMAGE-ID 를 기존 이미지의 ID로 바꿉니다.
출력에는 다음 예제 스니펫과 유사한 쉼표로 구분된 저장소 목록이 표시됩니다.
| os_glance_failed_import | | os_glance_importing_to_stores | central,dcn0,dcn1 | status | importing
이미지 가져오기 작업의 상태를 모니터링합니다.
watch
를 사용하여 명령 앞에 도달하면 명령 출력이 2초마다 새로 고쳐집니다.$ watch glance image-show IMAGE-ID
IMAGE-ID 를 기존 이미지의 ID로 바꿉니다.
이미지 가져오기 작업이 진행됨에 따라 작업 상태가 변경됩니다.
| os_glance_failed_import | | os_glance_importing_to_stores | dcn0,dcn1 | status | importing
이미지를 가져오지 못했습니다. 이미지가 다음 예와 유사합니다.
| os_glance_failed_import | dcn0 | os_glance_importing_to_stores | dcn1 | status | importing
작업이 완료되면 상태가 active로 변경됩니다.
| os_glance_failed_import | dcn0 | os_glance_importing_to_stores | | status | active
4.4. 기존 이미지를 여러 저장소에 복사
이 기능을 사용하면 상호 운용 가능한 이미지 가져오기 워크플로를 사용하여 에지의 여러 Ceph Storage 저장소로 Red Hat OpenStack Image 서비스(glance) 이미지 데이터를 사용하여 기존 이미지를 복사할 수 있습니다.
이미지를 에지 사이트에 복사하기 전에 중앙 사이트에 있어야 합니다. 이미지 소유자 또는 관리자만 새로 추가된 저장소에 기존 이미지를 복사할 수 있습니다.
이미지 데이터를 수신하도록 --all-stores
를 true
로 설정하거나 특정 저장소를 지정하여 기존 이미지 데이터를 복사할 수 있습니다.
-
--all-stores
옵션의 기본 설정은false
입니다.--all-stores
가false
인 경우--stores STORE1,STORE2
를 사용하여 이미지 데이터를 수신하는 저장소를 지정해야 합니다. 지정된 저장소에 이미지 데이터가 이미 있으면 요청이 실패합니다. -
all-stores
를true
로 설정하고 이미지 데이터가 일부 저장소에 이미 있는 경우 해당 저장소가 목록에서 제외됩니다.
이미지 데이터를 수신하는 저장소를 지정하면 이미지 서비스는 중앙 사이트의 데이터를 스테이징 영역으로 복사합니다. 그런 다음 이미지 서비스는 상호 운용 가능한 이미지 가져오기 워크플로를 사용하여 이미지 데이터를 가져옵니다. 자세한 내용은 여러 저장소에 이미지 가져오기를 참조하십시오.
이미지 관리에 이미지 서비스 명령줄 클라이언트를 사용합니다.
Red Hat은 관리자가 정해진 이미지 복사 요청을 신중하게 방지하는 것이 좋습니다. 동일한 이미지에 대한 두 개의 시간이 지정된 복사 이미지 작업으로 인해 경쟁 조건과 예기치 않은 결과가 발생합니다. 기존 이미지 데이터는 그대로 유지되지만 새 저장소에 데이터를 복사하지 못합니다.
4.4.1. 모든 저장소에 이미지 복사
다음 절차에 따라 사용 가능한 모든 저장소에 이미지 데이터를 복사합니다.
절차
사용 가능한 모든 저장소에 이미지 데이터를 복사합니다.
$ glance image-import IMAGE-ID \ --all-stores true \ --import-method copy-image
IMAGE-ID 를 복사할 이미지 이름으로 교체합니다.
이미지 데이터가 사용 가능한 모든 저장소에 성공적으로 복제되었는지 확인합니다.
$ glance image-list --include-stores
이미지 가져오기 작업의 상태를 확인하는 방법에 대한 자세한 내용은 이미지 가져오기 작업 의 진행 상황 확인을 참조하십시오.
4.4.2. 특정 저장소에 이미지 복사
다음 절차에 따라 이미지 데이터를 특정 저장소에 복사합니다.
절차
이미지 데이터를 특정 저장소에 복사합니다.
$ glance image-import IMAGE-ID \ --stores STORE1,STORE2 \ --import-method copy-image
- IMAGE-ID 를 복사할 이미지 이름으로 교체합니다.
- STORE1 및 STORE2 를 이미지 데이터를 복사할 저장소 이름으로 교체합니다.
이미지 데이터가 지정된 저장소에 성공적으로 복제되었는지 확인합니다.
$ glance image-list --include-stores
이미지 가져오기 작업의 상태를 확인하는 방법에 대한 자세한 내용은 이미지 가져오기 작업 의 진행 상황 확인을 참조하십시오.
4.5. 특정 저장소에서 이미지 삭제
Red Hat OpenStack Image 서비스(glance)를 사용하여 특정 저장소의 기존 이미지 사본을 삭제합니다.
이미지 관리에 이미지 서비스 명령줄 클라이언트를 사용합니다.
프로세스
특정 저장소에서 이미지를 삭제합니다.
$ glance stores-delete --store _STORE_ID_ _IMAGE_ID_
- _STORE_ID를 이미지 복사본을 삭제해야 하는 저장소 이름으로 바꿉니다.
- IMAGE_ID 를 삭제하려는 이미지의 ID로 바꿉니다.
glance image-delete
를 사용하면 모든 사이트의 이미지가 영구적으로 삭제됩니다. 이미지 인스턴스 및 메타데이터뿐만 아니라 모든 이미지 사본이 삭제됩니다.
4.6. 이미지 위치 이해
이미지가 여러 사이트에 존재할 수 있지만 지정된 이미지에 대한 단일 UUID(Universal Unique Identifier)만 있습니다. 이미지 메타데이터에는 각 복사본의 위치가 포함되어 있습니다. 예를 들어 두 에지 사이트에 있는 이미지는 중앙 사이트와 두 개의 에지 사이트 등 3개의 위치가 있는 단일 UUID로 노출됩니다.
이미지 관리를 위해 OpenStack 명령줄 클라이언트 대신 Image 서비스(glance) 명령줄 클라이언트를 사용합니다. 그러나 openstack image show
명령을 사용하여 이미지 위치 속성을 나열합니다. glance image-show
명령 출력에는 위치가 포함되어 있지 않습니다.
프로세스
이미지 사본이 존재하는 사이트를 표시합니다.
$ glance image-show ID | grep "stores" | stores | default_backend,dcn1,dcn2
이 예제에서는 중앙 사이트인
default_backend
및 두 에지 사이트dcn1
및dcn2
에 이미지가 있습니다.또는
--include-stores
옵션과 함께glance image-list
명령을 실행하여 이미지가 존재하는 사이트를 확인할 수 있습니다.$ glance image-list --include-stores | ID | Name | Stores | 2bd882e7-1da0-4078-97fe-f1bb81f61b00 | cirros | default_backend,dcn1,dcn2
각 위치의 세부 정보를 표시하려면 이미지 위치 속성을 나열합니다.
$ openstack image show ID -c properties | properties | (--- cut ---) locations='[{'url': 'rbd://79b70c32-df46-4741-93c0-8118ae2ae284/images/2bd882e7-1da0-4078-97fe-f1bb81f61b00/snap', 'metadata': {'store': 'default_backend'}}, {'url': 'rbd://63df2767-8ddb-4e06-8186-8c155334f487/images/2bd882e7-1da0-4078-97fe-f1bb81f61b00/snap', 'metadata': {'store': 'dcn1'}}, {'url': 'rbd://1b324138-2ef9-4ef9-bd9e-aa7e6d6ead78/images/2bd882e7-1da0-4078-97fe-f1bb81f61b00/snap', 'metadata': {'store': 'dcn2'}}]', (--- cut --)
이미지 속성에는 각 이미지의 위치에 대한 다양한 Ceph RBD URI가 표시됩니다.
이 예에서 중앙 이미지 위치 URI는 다음과 같습니다.
rbd://79b70c32-df46-4741-93c0-8118ae2ae284/images/2bd882e7-1da0-4078-97fe-f1bb81f61b00/snap', 'metadata': {'store': 'default_backend'}}
URI는 다음 데이터로 구성됩니다.
-
79b70c32-df46-4741-93c0-8118ae284
는 중앙 Ceph FSID에 해당합니다. 각 Ceph 클러스터에는 고유한 FSID가 있습니다. -
모든 사이트의 기본값은
이미지가
저장되는 Ceph 풀에 해당하는 images 입니다. -
2bd882e7-1da0-4078-97fe-f1bb81f61b00
은 이미지 UUID에 해당합니다. UUID는 위치에 관계없이 지정된 이미지에 대해 동일합니다. -
메타데이터는 이 위치가 매핑되는 Glance 저장소를 보여줍니다. 이 예제에서는 중앙 허브 사이트인
default_backend
에 매핑됩니다.
-
부록 A. Image 서비스(glance) 명령 옵션
glance image-create
및 glance image-update
명령과 함께 다음 선택적 인수를 사용할 수 있습니다.
표 A.1. 명령 옵션
특정 대상 | 옵션 | 설명 |
---|---|---|
All |
| https://docs.openstack.org/glance/latest/user/common-image-properties.html#architecture에 지정된 운영 체제 아키텍처 |
All |
| true인 경우 이미지를 해제할 수 없습니다. |
All |
| 이미지에 대한 설명이 포함된 이름 |
All |
| 이 이미지가 연결된 인스턴스를 기록하는 데 사용할 수 있는 메타데이터입니다. (정보만 있으면 인스턴스 스냅샷을 생성하지 않습니다.) |
All |
| 이미지를 부팅하는 데 필요한 디스크 공간(GB)의 양입니다. |
All |
| 이미지 접근성 범위. 유효한 값: public, private, community, shared |
All |
| AMI 스타일 이미지를 부팅할 때 커널로 사용해야 하는 Image 서비스(glance)에 저장된 이미지 ID입니다. |
All |
| 배포자가 지정한 운영 체제 버전 |
All |
| 디스크 형식입니다. 유효한 값: None, ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso, ploop |
All |
| https://docs.openstack.org/glance/latest/user/common-image-properties.html#os-distro에 지정된 대로 운영 체제 배포의 일반적인 이름 |
All |
| 이미지의 소유자 |
All |
| AMI 스타일 이미지를 부팅할 때 램디스크로 사용해야 하는 이미지 서비스에 저장된 이미지 ID입니다. |
All |
| 이미지를 부팅하는 데 필요한 RAM 용량(MB)입니다. |
All |
| 컨테이너 형식. 유효한 값: None, ami, ari, aki, bare, ovf, ova, docker |
All |
| 이미지와 연결할 임의의 속성입니다. 여러 번 사용할 수 있습니다. |
|
| 이미지와 관련된 문자열 목록 |
|
| 이미지의 식별자 |
|
| 이미지에서 제거할 임의의 속성의 키 이름입니다. |
부록 B. 이미지 구성 매개변수
glance image-create
및 glance image-update
명령 모두에 property
옵션과 함께 다음 키를 사용할 수 있습니다.
표 B.1. 속성 키
특정 대상 | 키 | 설명 | 지원되는 값 |
---|---|---|---|
All |
|
하이퍼바이저에서 지원해야 하는 CPU 아키텍처입니다. 예를 들면 |
|
All |
| 하이퍼바이저 유형입니다. |
|
All |
| 스냅샷 이미지의 경우 이 이미지를 생성하는 데 사용되는 서버의 UUID입니다. | 유효한 서버 UUID |
All |
| AMI 스타일 이미지를 부팅할 때 커널로 사용해야 하는 이미지 서비스에 저장된 이미지의 ID입니다. | 유효한 이미지 ID |
All |
| 소문자로 운영 체제 배포의 일반적인 이름입니다. |
|
All |
| 배포자가 지정한 운영 체제 버전입니다. | 버전 번호(예: "11.10") |
All |
| AMI 스타일 이미지를 부팅할 때 램디스크로 사용해야 하는 이미지 서비스에 저장된 이미지의 ID입니다. | 유효한 이미지 ID |
All |
| 가상 머신 모드입니다. 가상 머신에 사용되는 호스트/게스트 ABI(애플리케이션 바이너리 인터페이스)를 나타냅니다. |
H |
libvirt API 드라이버 |
| CD-ROM 장치를 연결할 디스크 컨트롤러의 유형을 지정합니다. |
|
libvirt API 드라이버 |
| 디스크 장치를 연결할 디스크 컨트롤러의 유형을 지정합니다. |
|
libvirt API 드라이버 |
| 인스턴스를 부팅하는 데 사용할 펌웨어 유형을 지정합니다. | 다음 유효한 값 중 하나로 설정합니다.
|
libvirt API 드라이버 |
| 지정된 시스템 유형을 사용하여 ARM 시스템을 부팅할 수 있습니다. ARM 이미지가 사용되고 해당 시스템 유형이 명시적으로 지정되지 않은 경우 Compute는 virt 시스템 유형을 ARMv7 및 AArch64의 기본값으로 사용합니다. |
유효한 유형은 |
libvirt API 드라이버 |
| 인스턴스에 노출할 NUMA 노드 수입니다( 플레이버 정의를 재정의하지 않음). | 정수. |
libvirt API 드라이버 |
| vCPUs N-M을 NUMA 노드 0에 매핑( 플레이버 정의를 재정의하지 않음). | 쉼표로 구분된 정수 목록입니다. |
libvirt API 드라이버 |
| vCPUs N-M을 NUMA 노드 1에 매핑( 플레이버 정의를 재정의하지 않음). | 쉼표로 구분된 정수 목록입니다. |
libvirt API 드라이버 |
| NMB의 RAM을 NUMA 노드 0에 매핑합니다( 플레이버 정의를 재정의하지 않음). | 정수 |
libvirt API 드라이버 |
| NMB의 RAM을 NUMA 노드 1에 매핑합니다( 플레이버 정의를 재정의하지 않음). | 정수 |
libvirt API 드라이버 |
| PCI 패스스루 장치 및 SR-IOV 인터페이스에 대한 NUMA 선호도 정책을 지정합니다. | 다음 유효한 값 중 하나로 설정합니다.
|
libvirt API 드라이버 |
|
게스트 에이전트 지원. |
|
libvirt API 드라이버 |
| 이 이미지로 시작된 인스턴스에 난수 생성기(RNG) 장치를 추가합니다.
인스턴스 플레이버는 기본적으로 RNG 장치를 활성화합니다. RNG 장치를 비활성화하려면 클라우드 관리자가 플레이버에서
기본 엔트로피 소스는 |
|
libvirt API 드라이버 |
| VirtIO SCSI(virtio-scsi)를 사용하여 컴퓨팅 인스턴스에 대한 블록 장치 액세스를 제공할 수 있습니다. 기본적으로 인스턴스는 VirtIO Block(virtio-blk)을 사용합니다. virtio SCSI는 향상된 확장성 및 성능을 제공하고 고급 SCSI 하드웨어를 지원하는 반가상화 SCSI 컨트롤러 장치입니다. |
|
libvirt API 드라이버 |
|
사용할 TPM 장치의 모델로 설정합니다. |
|
libvirt API 드라이버 |
|
사용할 TPM 버전으로 설정합니다. TPM 버전 |
|
libvirt API 드라이버 |
| 가상 머신 인스턴스에서 사용할 표시 장치의 비디오 장치 드라이버입니다. | 다음 값 중 하나로 설정하여 사용할 지원되는 드라이버를 지정합니다.
|
libvirt API 드라이버 |
|
비디오 이미지의 최대 RAM입니다. | 정수(MB)(예: 64) |
libvirt API 드라이버 |
|
서버가 중단된 경우 지정된 작업을 수행하는 가상 하드웨어 워치독 장치를 활성화합니다. 워치독은 i6300esb 장치(PCI Intel 6300 Cryostat를 추정)를 사용합니다. |
|
libvirt API 드라이버 |
|
| |
libvirt API 드라이버 |
| 을 사용하여 UEFI Secure Boot로 보호되는 인스턴스를 생성합니다. | 다음 유효한 값 중 하나로 설정합니다.
|
libvirt API 드라이버 및 VMware API 드라이버 |
| 사용할 가상 네트워크 인터페이스 장치의 모델을 지정합니다. | 유효한 옵션은 구성된 하이퍼바이저에 따라 다릅니다.
|
VMware API 드라이버 |
| 하이퍼바이저에서 사용하는 가상 SCSI 또는 IDE 컨트롤러입니다. |
|
VMware API 드라이버 |
|
이미지에 설치된 운영 체제를 설명하는 VMware GuestID입니다. 이 값은 가상 머신을 생성할 때 하이퍼바이저에 전달됩니다. 지정하지 않으면 기본값은 | 자세한 내용은 VMware vSphere의 이미지를 참조하십시오. |
VMware API 드라이버 |
| 현재 사용되지 않습니다. |
|
CryostatAPI 드라이버 |
|
true인 경우 인스턴스가 부팅되기 전에 디스크의 루트 파티션의 크기를 자동으로 조정합니다. 이 값은 CryostatAPI 드라이버와 함께 Cryostat 기반 하이퍼바이저를 사용할 때 Compute 서비스에서만 고려합니다. Compute 서비스는 이미지에 단일 파티션이 있고 파티션이 |
|
libvirt API 드라이버 및 CryostatAPI 드라이버 |
|
이미지에 설치된 운영 체제입니다. CryostatAPI 드라이버에는 이미지의 |
|