7장. 컨테이너 이미지 사용자 정의


RHOSP(Red Hat OpenStack Platform) 서비스는 컨테이너에서 실행되므로 컨테이너 이미지를 가져와야 하는 RHOSP 서비스를 배포합니다. RHOSP 배포를 위해 컨테이너 이미지를 준비하는 환경 파일을 생성하고 사용자 지정할 수 있습니다.

7.1. director 설치를 위한 컨테이너 이미지 준비

Red Hat에서는 다음과 같은 오버클라우드용 컨테이너 이미지 관리 방법을 지원합니다.

  • Red Hat Container Catalog에서 언더클라우드의 image-serve 레지스트리로 컨테이너 이미지를 가져온 다음 image-service 레지스트리에서 이미지를 가져옵니다. 먼저 언더클라우드로 이미지를 가져오면 여러 오버클라우드 노드에서 동시에 외부 연결을 통해 컨테이너 이미지를 가져오는 일을 방지할 수 있습니다.
  • Satellite 6 서버에서 컨테이너 이미지를 가져옵니다. 네트워크 트래픽은 내부 트래픽이므로 Satellite에서 직접 이러한 이미지를 가져올 수 있습니다.

언더클라우드 설치에는 컨테이너 이미지를 가져올 위치와 저장 방법을 결정하는 환경 파일이 필요합니다. director 설치를 준비할 때 기본 컨테이너 이미지 준비 파일을 생성합니다. 기본 컨테이너 이미지 준비 파일을 사용자 지정할 수 있습니다.

7.1.1. 컨테이너 이미지 준비 매개변수

컨테이너를 준비하는 데 필요한 기본 파일(containers-prepare-parameter.yaml)에는 ContainerImagePrepare heat 매개변수가 포함되어 있습니다. 이 매개변수는 이미지 세트를 준비하기 위한 다양한 설정을 정의합니다.

parameter_defaults:
  ContainerImagePrepare:
  - (strategy one)
  - (strategy two)
  - (strategy three)
  ...

각각의 설정에서 하위 매개변수 세트를 통해 사용할 이미지와 해당 이미지의 사용 방법을 정의할 수 있습니다. 다음 표에는 각 ContainerImagePrepare 전략에 사용할 수 있는 하위 매개변수에 대한 정보가 나와 있습니다.

Expand
매개변수설명

excludes

전략에서 이미지 이름을 제외하는 정규식 목록입니다.

includes

전략에 포함할 정규식 목록입니다. 기존 이미지와 일치하는 이미지 이름이 하나 이상 있어야 합니다. includes를 지정하면 excludes는 모두 무시됩니다.

modify_append_tag

대상 이미지 태그에 추가할 문자열입니다. 예를 들어 17.1.0-5.161 태그가 있는 이미지를 가져와서 modify_append_tag-hotfix 로 설정하면 director에서 최종 이미지에 17.1.0-5.161-hotfix를 태그합니다.

modify_only_with_labels

수정할 이미지를 필터링하는 이미지 레이블로 이루어진 사전입니다. 이미지가 정의된 레이블과 일치하면 director에서 그 이미지를 수정 프로세스에 포함합니다.

modify_role

이미지를 대상 레지스트리로 푸시하기 전 업로드 중에 실행할 ansible 역할 이름의 문자열입니다.

modify_vars

modify_role로 전달할 변수로 이루어진 사전입니다.

push_destination

업로드 프로세스 중 이미지를 푸시할 레지스트리의 네임스페이스를 정의합니다.

  • true로 설정하면 push_destination이 해당 호스트 이름을 사용하는 언더클라우드 레지스트리 네임스페이스로 설정되며, 이것이 권장되는 방법입니다.
  • false로 설정하면 로컬 레지스트리로 푸시되지 않고 노드가 소스에서 직접 이미지를 가져옵니다.
  • 사용자 지정 값으로 설정하면 director가 이미지를 외부 로컬 레지스트리로 푸시합니다.

Red Hat Container Catalog에서 직접 이미지를 가져오는 동안 프로덕션 환경에서 이 매개변수를 false로 설정하면 모든 오버클라우드 노드에서 외부 연결을 통해 Red Hat Container Catalog의 이미지를 동시에 가져옵니다. 이로 인해 대역폭 문제가 발생할 수 있습니다. 컨테이너 이미지를 호스팅하는 Red Hat Satellite 서버에서 이미지를 직접 가져올 때만 false를 사용하십시오.

push_destination 매개변수가 정의되지 않았거나 false로 설정되었는데 원격 레지스트리에 인증이 필요한 경우, ContainerImageRegistryLogin 매개변수를 true로 설정하고 ContainerImageRegistryCredentials 매개변수가 있는 인증 정보를 포함하십시오.

pull_source

원본 컨테이너 이미지를 가져온 소스 레지스트리입니다.

set

초기 이미지를 가져올 위치를 정의하는 key: value 정의로 이루어진 사전입니다.

tag_from_label

지정된 컨테이너 이미지 메타데이터 레이블의 값을 사용하여 모든 이미지에 대한 태그를 생성하고 해당 태그가 지정된 이미지를 가져옵니다. 예를 들어 tag_from_label: {version}-{release}를 설정하면 director는 versionrelease 레이블을 사용하여 새 태그를 구성합니다. 하나의 컨테이너의 경우 version 을 17.1.0으로 설정하고 release5.161 로 설정할 수 있으므로 태그 17.1.0-5.161이 생성됩니다. director는 set 사전에 tag가 정의되지 않은 경우에만 이 매개변수를 사용합니다.

중요

이미지를 언더클라우드로 푸시하는 경우 push_destination: UNDERCLOUD_IP:PORT 대신 push_destination: true를 사용합니다. push_destination: true 방식은 IPv4 및 IPv6 주소 모두에서 일관성 수준을 제공합니다.

set 매개변수에 여러 key: value 정의를 사용할 수 있습니다.

Expand
설명

ceph_image

Ceph Storage 컨테이너 이미지의 이름입니다.

ceph_namespace

Ceph Storage 컨테이너 이미지의 네임스페이스입니다.

ceph_tag

Ceph Storage 컨테이너 이미지의 태그입니다.

ceph_alertmanager_image

ceph_alertmanager_namespace

ceph_alertmanager_tag

Ceph Storage Alert Manager 컨테이너 이미지의 이름, 네임스페이스 및 태그입니다.

ceph_grafana_image

ceph_grafana_namespace

ceph_grafana_tag

Ceph Storage Grafana 컨테이너 이미지의 이름, 네임스페이스 및 태그입니다.

ceph_node_exporter_image

ceph_node_exporter_namespace

ceph_node_exporter_tag

Ceph Storage Node Exporter 컨테이너 이미지의 이름, 네임스페이스 및 태그입니다.

ceph_prometheus_image

ceph_prometheus_namespace

ceph_prometheus_tag

Ceph Storage Prometheus 컨테이너 이미지의 이름, 네임스페이스 및 태그입니다.

name_prefix

각 OpenStack 서비스 이미지의 접두사입니다.

name_suffix

각 OpenStack 서비스 이미지의 접미사입니다.

namespace

각 OpenStack 서비스 이미지의 네임스페이스입니다.

neutron_driver

사용할 OpenStack Networking (Neutron) 컨테이너를 결정하는 데 사용할 드라이버입니다. null 값을 사용하여 표준 neutron-server 컨테이너를 설정합니다. OVN 기반 컨테이너를 사용하려면 ovn으로 설정합니다.

tag

소스의 모든 이미지에 대한 특정 태그를 설정합니다. 정의되지 않은 경우 director는 Red Hat OpenStack Platform 버전 번호를 기본값으로 사용합니다. 이 매개변수가 tag_from_label 값보다 우선합니다.

참고

컨테이너 이미지는 Red Hat OpenStack Platform 버전을 기반으로 멀티 스트림 태그를 사용합니다. 즉, 더 이상 latest 태그가 없음을 의미합니다.

7.1.2. 컨테이너 이미지 태그 지침

containers-prepare-parameter.yaml 파일에서 이미지 컨테이너를 준비할 때 컨테이너 이미지 준비 매개변수에 설명된 대로 매개변수를 사용하여 환경을 업데이트할 때 가져오는 컨테이너 이미지 director를 결정합니다. Red Hat Container Registry는 특정 버전 형식을 사용하여 모든 Red Hat OpenStack Platform 컨테이너 이미지에 태그를 지정합니다. 이 형식은 version-release:인 각 컨테이너의 레이블 메타데이터를 따릅니다.

버전
RHOSP의 메이저 및 마이너 버전에 해당합니다. 이러한 버전은 하나 이상의 릴리스를 포함하는 스트림으로 작동합니다.
릴리스
버전 스트림 내 특정 컨테이너 이미지 버전의 릴리스에 해당합니다.

예를 들어 RHOSP의 최신 버전이 17.1.0이고 컨테이너 이미지의 릴리스가 5.161 인 경우 컨테이너 이미지의 결과 태그는 17.1.0-5.161입니다.

메이저 및 마이너 버전 태그

Red Hat Container Registry에서는 해당 컨테이너 이미지 버전의 최신 릴리스에 연결되는 메이저 및 마이너 version 버전 태그 세트도 사용합니다. 예를 들어 17.1 및 17.1.0은 모두 17.1.0 컨테이너 스트림의 최신 릴리스에 연결됩니다. 17.1의 새로운 마이너 릴리스가 발생하면 17.1 태그가 새로운 마이너 릴리스 스트림의 최신 릴리스와 관련이 있으며 17.1.0 태그는 17.1.0 스트림의 최신 릴리스에 계속 연결됩니다.

tagtag_from_label 매개변수 설정

containers-prepare-parameter.yaml 파일에서 ContainerImagePrepare 매개변수에는 tagtag_from_label 하위 매개변수가 포함되어 있습니다. tag 또는 tag_from_label 을 사용하여 다운로드할 컨테이너 이미지를 확인할 수 있습니다.

tag
director는 tag 를 사용하여 메이저 또는 마이너 버전 태그를 기반으로만 이미지를 가져옵니다. 이 태그는 Red Hat Container Registry가 버전 스트림 내의 최신 이미지 릴리스에 연결됩니다.
tag_from_label
director는 tag_from_label 을 사용하여 각 컨테이너 이미지에 대한 메타데이터 검사를 수행하고 해당 이미지를 가져오는 태그를 생성합니다.

tag 매개변수는 항상 tag_from_label 매개변수보다 우선합니다. tag_from_label을 사용하려면 컨테이너 준비 구성에서 tag 매개변수를 생략합니다.

tag 매개변수 설정

tag 의 기본값은 RHOSP 버전의 주요 버전입니다(예: 17.1). 이 값은 항상 최신 마이너 버전 및 릴리스에 해당합니다.

parameter_defaults:
  ContainerImagePrepare:
  - set:
      ...
      tag: 17.1
      ...

RHOSP 컨테이너 이미지의 특정 마이너 버전으로 변경하려면 태그를 마이너 버전으로 설정합니다. 예를 들어 17.1.2로 변경하려면 tag 를 17.1.2로 설정합니다.

parameter_defaults:
  ContainerImagePrepare:
  - set:
      ...
      tag: 17.1.2
      ...

태그를 설정하면 director는 스택 업데이트를 포함하여 설치 및 업데이트 중에 tag 에 설정된 버전의 최신 컨테이너 이미지 릴리스 를 항상 다운로드합니다.

참고

스택 업데이트를 수행하는 경우 최신 컨테이너 이미지가 필요하지 않지만 해당 환경과 일치하는 컨테이너 이미지가 필요할 수 있습니다. 이 경우 컨테이너 준비 구성에서 tag 매개변수를 생략하고 tag_from_label 만 지정합니다. tag_from_label 매개변수는 설치된 RHOSP 버전을 사용하여 업데이트 프로세스의 일부로 사용할 태그 값을 결정합니다.

tag_from_label 매개변수 설정

tag를 설정하지 않으면 director는 최신 주요 버전과 함께 tag_from_label 값을 사용합니다.

parameter_defaults:
  ContainerImagePrepare:
  - set:
      ...
      # tag: 17.1
      ...
    tag_from_label: '{version}-{release}'

tag_from_label 매개변수는 Red Hat Container Registry에서 검사하는 최신 컨테이너 이미지 릴리스의 레이블 메타데이터에서 태그를 생성합니다. 예를 들어 특정 컨테이너의 레이블에서 다음 versionrelease 메타데이터를 사용할 수 있습니다.

  "Labels": {
    "release": "5.161",
    "version": "17.1.0",
    ...
  }

tag_from_label의 기본값은 {version}-{release}로, 각 컨테이너 이미지의 버전 및 릴리스 메타데이터 레이블에 해당합니다. 예를 들어 컨테이너 이미지에 버전에 대해 17.1.0이 설정되어 있고 릴리스 용으로 5.161이 설정된 경우 컨테이너 이미지의 결과 태그는 17.1.0-5.161입니다.

7.1.3. Ceph Storage 컨테이너 이미지 제외

기본 오버클라우드 역할 구성에서는 기본 Controller, Compute 및 Ceph Storage 역할을 사용합니다. 그러나 기본 역할 구성을 사용하여 Ceph Storage 노드 없이 오버클라우드를 배포하는 경우 이미지가 기본 구성의 일부로 포함되어 있으므로 director는 Red Hat Container Registry에서 Ceph Storage 컨테이너 이미지를 계속 가져옵니다.

오버클라우드에 Ceph Storage 컨테이너가 필요하지 않은 경우 Red Hat Container Registry에서 Ceph Storage 컨테이너 이미지를 가져오지 않도록 director를 구성할 수 있습니다.

프로세스

  1. containers-prepare-parameter.yaml 파일을 편집하고 ceph_images: false 매개변수를 추가합니다.

    다음은 매개 변수가 굵은 이 파일의 예입니다.

    parameter_defaults:
      ContainerImagePrepare:
      - tag_from_label: {version}-{release}
        set:
          name_prefix: rhosp17-openstack-
          name_suffix: ''
          tag: 17.1_20231214.1
          rhel_containers: false
          neutron_driver: ovn
          ceph_images: false
        push_destination: true
  2. containers-prepare-parameter.yaml 파일을 저장합니다.
  3. 오버클라우드 배포에서 사용할 새 컨테이너 이미지 파일을 생성합니다.

    sudo openstack tripleo container image prepare -e containers-prepare-parameter.yaml --output-env-file <new_container_images_file>

    • & lt;new_container_images_file& gt;을 새 매개변수가 포함된 출력 파일로 바꿉니다.
  4. 새 컨테이너 이미지 파일을 오버클라우드 배포 환경 파일 목록에 추가합니다.

7.1.4. 준비 과정에서 이미지 수정

이미지 준비 과정에서 이미지를 수정한 다음, 수정된 이미지로 오버클라우드를 즉시 배포할 수 있습니다.

참고

RHOSP(Red Hat OpenStack Platform) director는 Ceph 컨테이너가 아닌 RHOSP 컨테이너를 준비하는 동안 이미지 수정을 지원합니다.

이미지 수정 시나리오는 다음과 같습니다.

  • 지속적 통합 파이프라인에서 배포 전 테스트 중인 변경 사항으로 이미지가 수정되는 경우입니다.
  • 개발 워크플로우 중에 테스트 및 개발을 위해 로컬 변경 사항을 배포해야 하는 경우입니다.
  • 변경 사항을 배포해야 하지만 이미지 빌드 파이프라인을 통해 사용할 수 없는 경우입니다. 예를 들어 독점 애드온 또는 긴급 수정 사항을 추가할 수 있습니다.

준비 과정에서 이미지를 수정하려면, 수정할 각 이미지에 대해 Ansible 역할을 호출합니다. 이 역할은 소스 이미지를 가져와서 요청된 변경을 수행한 다음 그 결과를 태그합니다. prepare 명령으로 이미지를 대상 레지스트리로 푸시하고 수정된 이미지를 참조하도록 heat 매개변수를 설정할 수 있습니다.

Ansible 역할 tripleo-modify-image는 요청된 역할 인터페이스를 준수하고 수정 사용 사례에 필요한 작업을 수행합니다. ContainerImagePrepare 매개변수의 수정 관련 키를 사용하여 수정을 제어합니다.

  • modify_role은 수정할 각 이미지에 대해 호출할 Ansible 역할을 지정합니다.
  • modify_append_tag는 소스 이미지 태그의 끝에 문자열을 추가합니다. 이렇게 하면 결과 이미지가 수정되었음을 알 수 있습니다. push_destination 레지스트리에 수정된 이미지가 이미 포함되어 있을 경우 이 매개변수를 사용하여 수정을 생략할 수 있습니다. 이미지를 수정할 때마다 modify_append_tag를 변경하십시오.
  • modify_vars는 역할에 전달할 Ansible 변수로 이루어진 사전입니다.

tripleo-modify-image 역할에서 처리할 사용 케이스를 선택하려면 tasks_from 변수를 해당 역할에 필요한 파일로 설정합니다.

이미지를 수정하려면 ContainerImagePrepare 항목을 개발하고 테스트하는 동안 추가 옵션 없이 image prepare 명령을 실행하여 이미지가 예상대로 수정되는지 확인합니다.

sudo openstack tripleo container image prepare \
  -e ~/containers-prepare-parameter.yaml
중요

openstack tripleo container image prepare 명령을 사용하려면 언더클라우드에 실행 중인 image-serve 레지스트리가 포함되어야 합니다. 따라서 image-serve 레지스트리가 설치되지 않으므로 새 언더클라우드를 설치하기 전에 이 명령을 실행할 수 없습니다. 언더클라우드를 성공적으로 설치한 후 이 명령을 실행할 수 있습니다.

7.1.5. 컨테이너 이미지의 기존 패키지 업데이트

RHOSP(Red Hat OpenStack Platform) 컨테이너의 컨테이너 이미지에서 기존 패키지를 업데이트할 수 있습니다.

참고

RHOSP(Red Hat OpenStack Platform) director는 Ceph 컨테이너가 아닌 RHOSP 컨테이너의 컨테이너 이미지의 기존 패키지 업데이트를 지원합니다.

프로세스

  1. 컨테이너 이미지에 설치할 RPM 패키지를 다운로드합니다.
  2. containers-prepare-parameter.yaml 파일을 편집하여 컨테이너 이미지의 모든 패키지를 업데이트합니다.

    ContainerImagePrepare:
    - push_destination: true
      ...
      modify_role: tripleo-modify-image
      modify_append_tag: "-updated"
      modify_vars:
        tasks_from: yum_update.yml
        compare_host_packages: true
        yum_repos_dir_path: /etc/yum.repos.d
      ...
  3. containers-prepare-parameter.yaml 파일을 저장합니다.
  4. openstack overcloud deploy 명령을 실행할 때 containers-prepare-parameter.yaml 파일을 포함합니다.

7.1.6. 컨테이너 이미지에 추가 RPM 파일 설치

컨테이너 이미지에 RPM 파일 디렉터리를 설치할 수 있습니다. 이 기능은 핫픽스, 로컬 패키지 빌드 또는 패키지 리포지토리를 통해 사용할 수 없는 패키지를 설치하는 데 유용합니다.

참고

RHOSP(Red Hat OpenStack Platform) director는 Ceph 컨테이너가 아닌 RHOSP 컨테이너의 컨테이너 이미지에 추가 RPM 파일을 설치할 수 있도록 지원합니다.

참고

기존 배포에서 컨테이너 이미지를 수정하는 경우 마이너 업데이트를 수행하여 오버클라우드에 변경 사항을 적용해야 합니다. 자세한 내용은 Red Hat OpenStack Platform의 마이너 업데이트 수행을 참조하십시오.

프로세스

  • 다음 예제 ContainerImagePrepare 항목은 nova-compute 이미지에만 일부 핫픽스 패키지를 설치합니다.

    ContainerImagePrepare:
    - push_destination: true
      ...
      includes:
      - nova-compute
      modify_role: tripleo-modify-image
      modify_append_tag: "-hotfix"
      modify_vars:
        tasks_from: rpm_install.yml
        rpms_path: /home/stack/nova-hotfix-pkgs
      ...

7.1.7. 사용자 지정 Dockerfile을 사용하여 컨테이너 이미지 수정

Dockerfile이 포함된 디렉터리를 지정하여 필요한 변경을 수행할 수 있습니다. tripleo-modify-image 역할을 호출하면 FROM 지시문을 변경하고 LABEL 지시문을 추가하는 Dockerfile.modified 파일이 생성됩니다.

참고

RHOSP(Red Hat OpenStack Platform) director는 Ceph 컨테이너가 아닌 RHOSP 컨테이너의 사용자 지정 Dockerfile을 사용하여 컨테이너 이미지 수정을 지원합니다.

절차

  1. 다음 예제에서는 nova-compute 이미지에 대해 사용자 지정 Dockerfile을 실행합니다.

    ContainerImagePrepare:
    - push_destination: true
      ...
      includes:
      - nova-compute
      modify_role: tripleo-modify-image
      modify_append_tag: "-hotfix"
      modify_vars:
        tasks_from: modify_image.yml
        modify_dir_path: /home/stack/nova-custom
      ...
  2. /home/stack/nova-custom/Dockerfile 파일의 예는 다음과 같습니다. USER root 지시문을 실행한 후에는 원본 이미지의 기본 사용자로 다시 전환해야 합니다.

    FROM registry.redhat.io/rhosp-rhel9/openstack-nova-compute:latest
    
    USER "root"
    
    COPY customize.sh /tmp/
    RUN /tmp/customize.sh
    
    USER "nova"

7.1.8. 컨테이너 이미지용 Satellite 서버 준비

Red Hat Satellite 6는 레지스트리 동기화 기능을 제공합니다. 이를 통해 여러 이미지를 Satellite 서버로 가져와 애플리케이션 라이프사이클의 일부로 관리할 수 있습니다. Satellite는 다른 컨테이너 활성화 시스템이 사용할 레지스트리 역할도 합니다. 컨테이너 이미지 관리 방법에 관한 자세한 내용은 Red Hat Satellite 6 Content Management Guide"Managing Container Images"를 참조하십시오.

다음 절차의 예제에서는 Red Hat Satellite 6용 hammer 명령행 툴과 ACME라는 조직을 사용합니다. 이 조직을 실제로 사용하는 Satellite 6 조직으로 대체하십시오.

참고

다음 절차에서는 registry.redhat.io에서 컨테이너 이미지에 액세스하기 위해 인증 정보가 필요합니다. 개별 사용자 인증 정보를 사용하는 대신, 레지스트리 서비스 계정을 생성하고 해당 인증 정보를 사용하여 registry.redhat.io 콘텐츠에 액세스하는 것이 좋습니다. 자세한 내용은 "Red Hat Container Registry Authentication"을 참조하십시오.

절차

  1. 모든 컨테이너 이미지 목록을 생성합니다.

    $ sudo podman search --limit 1000 "registry.redhat.io/rhosp-rhel9" --format="{{ .Name }}" | grep "rhosp-rhel9/" | sort > satellite_images
    $ sudo podman search --limit 1000 "registry.redhat.io/rhceph" | grep <ceph_dashboard_image_file>
    $ sudo podman search --limit 1000 "registry.redhat.io/rhceph" | grep <ceph_image_file>
    $ sudo podman search --limit 1000 "registry.redhat.io/openshift4" | grep ose-prometheus
    • & lt;ceph_dashboard_image_file >을 배포에서 사용하는 Red Hat Ceph Storage 버전의 이미지 파일로 바꿉니다.

      • Red Hat Ceph Storage 5: rhceph-5-dashboard-rhel8
      • Red Hat Ceph Storage 6: rhceph-6-dashboard-rhel9
    • & lt;ceph_image_file >을 배포에서 사용하는 Red Hat Ceph Storage 버전의 이미지 파일로 바꿉니다.

      • Red Hat Ceph Storage 5: rhceph-5-rhel8
      • Red Hat Ceph Storage 6: rhceph-6-rhel9

        참고

        openstack-ovn-bgp-agent 이미지는 registry.redhat.io/rhosp-rhel9/openstack-ovn-bgp-agent-rhel9:17.1 에 있습니다.

    • Ceph를 설치하고 Ceph 대시보드를 활성화하려면 다음 ose-prometheus 컨테이너가 필요합니다.

      registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.12
      registry.redhat.io/openshift4/ose-prometheus:v4.12
      registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.12
  2. satellite_images_names 파일을 Satellite 6 hammer 툴이 포함된 시스템으로 복사합니다. 또는 Hammer CLI 가이드의 지침에 따라 hammer 툴을 언더클라우드에 설치합니다.
  3. 다음 hammer 명령을 실행하여 Satellite 조직에 새 제품(OSP Containers)을 생성합니다.

    $ hammer product create \
      --organization "ACME" \
      --name "OSP Containers"

    이 사용자 지정 제품에 이미지를 저장합니다.

  4. satellite_images 파일에서 오버클라우드 컨테이너 이미지를 추가합니다.

    $ while read IMAGE; do \
      IMAGE_NAME=$(echo $IMAGE | cut -d"/" -f3 | sed "s/openstack-//g") ; \
      IMAGE_NOURL=$(echo $IMAGE | sed "s/registry.redhat.io\///g") ; \
      hammer repository create \
      --organization "ACME" \
      --product "OSP Containers" \
      --content-type docker \
      --url https://registry.redhat.io \
      --docker-upstream-name $IMAGE_NOURL \
      --upstream-username USERNAME \
      --upstream-password PASSWORD \
      --name $IMAGE_NAME ; done < satellite_images
  5. Ceph Storage 컨테이너 이미지를 추가합니다.

    $ hammer repository create \
      --organization "ACME" \
      --product "OSP Containers" \
      --content-type docker \
      --url https://registry.redhat.io \
      --docker-upstream-name rhceph/<ceph_image_name> \
      --upstream-username USERNAME \
      --upstream-password PASSWORD \
      --name <ceph_image_name>
    • & lt;ceph_image_file >을 배포에서 사용하는 Red Hat Ceph Storage 버전의 이미지 파일로 바꿉니다.

      • Red Hat Ceph Storage 5: rhceph-5-rhel8
      • Red Hat Ceph Storage 6: rhceph-6-rhel9

        참고

        Ceph 대시보드를 설치하려면 hammer repository create 명령에 --name <ceph_dashboard_image_name >을 포함합니다.

        $ hammer repository create \
          --organization "ACME" \
          --product "OSP Containers" \
          --content-type docker \
          --url https://registry.redhat.io \
          --docker-upstream-name rhceph/<ceph_dashboard_image_name> \
          --upstream-username USERNAME \
          --upstream-password PASSWORD \
          --name <ceph_dashboard_image_name>
        • & lt;ceph_dashboard_image_file >을 배포에서 사용하는 Red Hat Ceph Storage 버전의 이미지 파일로 바꿉니다.

          • Red Hat Ceph Storage 5: rhceph-5-dashboard-rhel8
          • Red Hat Ceph Storage 6: rhceph-6-dashboard-rhel9
  6. 컨테이너 이미지를 동기화합니다.

    $ hammer product synchronize \
      --organization "ACME" \
      --name "OSP Containers"

    Satellite 서버가 동기화를 완료할 때까지 기다립니다.

    참고

    설정에 따라 hammer에서 Satellite 서버 사용자 이름과 암호가 필요할 수 있습니다. hammer를 구성한 후 구성 파일을 사용하여 자동으로 로그인할 수 있습니다. 자세한 내용은 Hammer CLI Guide"Authentication" 섹션을 참조하십시오.

  7. Satellite 6 서버에서 콘텐츠 뷰를 사용하는 경우, 새로운 콘텐츠 뷰 버전을 생성하여 이미지를 통합하고 애플리케이션 라이프사이클의 환경에 따라 승격합니다. 이 과정은 대체로 애플리케이션 라이프사이클을 구조화한 방법에 따라 달라집니다. 예를 들어 라이프사이클에 production이라는 환경이 있고 해당 환경에서 컨테이너 이미지를 사용할 수 있도록 하려면 컨테이너 이미지가 포함된 콘텐츠 뷰를 생성하고 해당 콘텐츠 뷰를 production 환경으로 승격합니다. 자세한 내용은 Managing Content Views를 참조하십시오.
  8. base 이미지에 사용 가능한 태그를 확인합니다.

    $ hammer docker tag list --repository "base" \
      --organization "ACME" \
      --lifecycle-environment "production" \
      --product "OSP Containers"

    이 명령을 수행하면 OpenStack Platform 컨테이너 이미지의 태그가 특정 환경의 콘텐츠 뷰에 표시됩니다.

  9. 언더클라우드로 돌아가서 Satellite 서버를 소스로 사용하여 이미지를 준비하는 기본 환경 파일을 생성합니다. 다음 예제 명령을 실행하여 환경 파일을 생성합니다.

    $ sudo openstack tripleo container image prepare default \
      --output-env-file containers-prepare-parameter.yaml
    • --output-env-file은 환경 파일 이름입니다. 이 파일의 콘텐츠에는 언더클라우드의 컨테이너 이미지를 준비하는 데 필요한 매개변수가 포함되어 있습니다. 이 경우 파일 이름은 containers-prepare-parameter.yaml입니다.
  10. containers-prepare-parameter.yaml 파일을 편집하여 다음 매개변수를 수정합니다.

    • push_destination - 선택한 컨테이너 이미지 관리 전략에 따라 이 값을 true 또는 false로 설정합니다. 이 매개변수를 false로 설정하면 오버클라우드 노드는 Satellite에서 직접 이미지를 가져옵니다. 이 매개변수를 true로 설정하면 director가 Satellite에서 언더클라우드 레지스트리로 이미지를 가져오고 오버클라우드는 언더클라우드 레지스트리에서 이미지를 가져옵니다.
    • namespace - Satellite 서버에 있는 레지스트리의 URL입니다.
    • name_prefix - 접두사는 Satellite 6 규칙을 기반으로 하며, 콘텐츠 뷰 사용 여부에 따라 달라집니다.

      • 콘텐츠 뷰를 사용하는 경우 구조는 [org]-[environment]-[content view]-[product]-입니다. 예: acme-production-myosp17-osp_containers-.
      • 콘텐츠 뷰를 사용하지 않는 경우 구조는 [org]-[product]-입니다. 예: acme-osp_containers-.
    • ceph_namespace, ceph_image, ceph_tag - Ceph Storage를 사용하는 경우 추가 매개변수를 포함하여 Ceph Storage 컨테이너 이미지 위치를 정의합니다. 이제 ceph_image에는 Satellite별 접두사가 포함됩니다. 이 접두사는 name_prefix 옵션과 동일한 값입니다.

다음 예제 환경 파일에는 Satellite별 매개변수가 포함되어 있습니다.

parameter_defaults:
  ContainerImagePrepare:
  - push_destination: false
    set:
      ceph_image: acme-production-myosp17_1-osp_containers-rhceph-6
      ceph_namespace: satellite.example.com:443
      ceph_tag: latest
      name_prefix: acme-production-myosp17_1-osp_containers-
      name_suffix: ''
      namespace: satellite.example.com:5000
      neutron_driver: null
      tag: '17.1'
      ...
참고

Red Hat Satellite Server에 저장된 특정 컨테이너 이미지 버전을 사용하려면 태그 키-값 쌍을 set 사전의 특정 버전으로 설정합니다. 예를 들어 17.1.2 이미지 스트림을 사용하려면 set 사전에 tag: 17.1.2 를 설정합니다.

undercloud.conf 구성 파일에 containers-prepare-parameter.yaml 환경 파일을 정의해야 합니다. 그렇지 않으면 언더클라우드에서 기본값을 사용합니다.

container_images_file = /home/stack/containers-prepare-parameter.yaml

7.1.9. 벤더 플러그인 배포

일부 타사 하드웨어를 블록 스토리지 백엔드로 사용하려면 벤더 플러그인을 배포해야 합니다. 다음 예제에서는 Dell EMC 하드웨어를 블록 스토리지 백엔드로 사용하기 위해 벤더 플러그인을 배포하는 방법을 보여줍니다.

프로세스

  1. 오버클라우드의 새 컨테이너 이미지 파일을 생성합니다.

    $ sudo openstack tripleo container image prepare default \
        --local-push-destination \
        --output-env-file containers-prepare-parameter-dellemc.yaml
  2. containers-prepare-parameter-dellemc.yaml 파일을 편집합니다.
  3. 기본 Red Hat OpenStack Platform 컨테이너 이미지의 전략에 exclude 매개변수를 추가합니다. 벤더 컨테이너 이미지가 교체할 컨테이너 이미지를 제외하려면 이 매개변수를 사용합니다. 이 예제에서 컨테이너 이미지는 cinder-volume 이미지입니다.

    parameter_defaults:
      ContainerImagePrepare:
        - push_destination: true
          excludes:
      	   - cinder-volume
          set:
            namespace: registry.redhat.io/rhosp-rhel9
            name_prefix: openstack-
            name_suffix: ''
            tag: 17.1
            ...
          tag_from_label: "{version}-{release}"
  4. 공급자 플러그인의 대체 컨테이너 이미지가 포함된 ContainerImagePrepare 매개변수에 새 전략을 추가합니다.

    parameter_defaults:
      ContainerImagePrepare:
        ...
        - push_destination: true
          includes:
            - cinder-volume
          set:
            namespace: registry.connect.redhat.com/dellemc
            name_prefix: openstack-
            name_suffix: -dellemc-rhosp16
            tag: 16.2-2
            ...
  5. registry.connect.redhat.com 레지스트리의 인증 세부 정보를 ContainerImageRegistryCredentials 매개변수에 추가합니다.

    parameter_defaults:
      ContainerImageRegistryCredentials:
        registry.redhat.io:
          [service account username]: [service account password]
        registry.connect.redhat.com:
          [service account username]: [service account password]
  6. containers-prepare-parameter-dellemc.yaml 파일을 저장합니다.
  7. openstack overcloud deploy 와 같은 모든 배포 명령을 사용하여 containers-prepare-parameter-dellemc.yaml 파일을 포함합니다.

    $ openstack overcloud deploy --templates
        ...
        -e containers-prepare-parameter-dellemc.yaml
        ...

    director가 오버클라우드를 배포할 때 오버클라우드는 표준 컨테이너 이미지 대신 벤더 컨테이너 이미지를 사용합니다.

    중요
    containers-prepare-parameter-dellemc.yaml 파일은 오버클라우드 배포의 표준 containers-prepare-parameter.yaml 파일을 대체합니다. 오버클라우드 배포에 표준 containers-prepare-parameter.yaml 파일을 포함하지 마십시오. 언더클라우드 설치 및 업데이트에 대한 표준 containers-prepare-parameter.yaml 파일을 유지합니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동