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 전략에 사용할 수 있는 하위 매개변수에 대한 정보가 나와 있습니다.
| 매개변수 | 설명 |
|---|---|
|
| 전략에서 이미지 이름을 제외하는 정규식 목록입니다. |
|
|
전략에 포함할 정규식 목록입니다. 기존 이미지와 일치하는 이미지 이름이 하나 이상 있어야 합니다. |
|
|
대상 이미지 태그에 추가할 문자열입니다. 예를 들어 17.1.0-5.161 태그가 있는 이미지를 가져와서 |
|
| 수정할 이미지를 필터링하는 이미지 레이블로 이루어진 사전입니다. 이미지가 정의된 레이블과 일치하면 director에서 그 이미지를 수정 프로세스에 포함합니다. |
|
| 이미지를 대상 레지스트리로 푸시하기 전 업로드 중에 실행할 ansible 역할 이름의 문자열입니다. |
|
|
|
|
| 업로드 프로세스 중 이미지를 푸시할 레지스트리의 네임스페이스를 정의합니다.
Red Hat Container Catalog에서 직접 이미지를 가져오는 동안 프로덕션 환경에서 이 매개변수를
|
|
| 원본 컨테이너 이미지를 가져온 소스 레지스트리입니다. |
|
|
초기 이미지를 가져올 위치를 정의하는 |
|
|
지정된 컨테이너 이미지 메타데이터 레이블의 값을 사용하여 모든 이미지에 대한 태그를 생성하고 해당 태그가 지정된 이미지를 가져옵니다. 예를 들어 |
이미지를 언더클라우드로 푸시하는 경우 push_destination: UNDERCLOUD_IP:PORT 대신 push_destination: true를 사용합니다. push_destination: true 방식은 IPv4 및 IPv6 주소 모두에서 일관성 수준을 제공합니다.
set 매개변수에 여러 key: value 정의를 사용할 수 있습니다.
| 키 | 설명 |
|---|---|
|
| Ceph Storage 컨테이너 이미지의 이름입니다. |
|
| Ceph Storage 컨테이너 이미지의 네임스페이스입니다. |
|
| Ceph Storage 컨테이너 이미지의 태그입니다. |
|
| Ceph Storage Alert Manager 컨테이너 이미지의 이름, 네임스페이스 및 태그입니다. |
|
| Ceph Storage Grafana 컨테이너 이미지의 이름, 네임스페이스 및 태그입니다. |
|
| Ceph Storage Node Exporter 컨테이너 이미지의 이름, 네임스페이스 및 태그입니다. |
|
| Ceph Storage Prometheus 컨테이너 이미지의 이름, 네임스페이스 및 태그입니다. |
|
| 각 OpenStack 서비스 이미지의 접두사입니다. |
|
| 각 OpenStack 서비스 이미지의 접미사입니다. |
|
| 각 OpenStack 서비스 이미지의 네임스페이스입니다. |
|
|
사용할 OpenStack Networking (Neutron) 컨테이너를 결정하는 데 사용할 드라이버입니다. null 값을 사용하여 표준 |
|
|
소스의 모든 이미지에 대한 특정 태그를 설정합니다. 정의되지 않은 경우 director는 Red Hat OpenStack Platform 버전 번호를 기본값으로 사용합니다. 이 매개변수가 |
컨테이너 이미지는 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 스트림의 최신 릴리스에 계속 연결됩니다.
tag 및 tag_from_label 매개변수 설정
containers-prepare-parameter.yaml 파일에서 ContainerImagePrepare 매개변수에는 tag 및 tag_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에서 검사하는 최신 컨테이너 이미지 릴리스의 레이블 메타데이터에서 태그를 생성합니다. 예를 들어 특정 컨테이너의 레이블에서 다음 version 및 release 메타데이터를 사용할 수 있습니다.
"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를 구성할 수 있습니다.
프로세스
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-
containers-prepare-parameter.yaml파일을 저장합니다. 오버클라우드 배포에서 사용할 새 컨테이너 이미지 파일을 생성합니다.
sudo openstack tripleo container image prepare -e containers-prepare-parameter.yaml --output-env-file <new_container_images_file>-
&
lt;new_container_images_file>을 새 매개변수가 포함된 출력 파일로 바꿉니다.
-
&
- 새 컨테이너 이미지 파일을 오버클라우드 배포 환경 파일 목록에 추가합니다.
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 컨테이너의 컨테이너 이미지의 기존 패키지 업데이트를 지원합니다.
프로세스
- 컨테이너 이미지에 설치할 RPM 패키지를 다운로드합니다.
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 ...-
containers-prepare-parameter.yaml파일을 저장합니다. -
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을 사용하여 컨테이너 이미지 수정을 지원합니다.
절차
다음 예제에서는
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 .../home/stack/nova-custom/Dockerfile파일의 예는 다음과 같습니다.USERroot 지시문을 실행한 후에는 원본 이미지의 기본 사용자로 다시 전환해야 합니다.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"을 참조하십시오.
절차
모든 컨테이너 이미지 목록을 생성합니다.
$ 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
-
Red Hat Ceph Storage 5:
&
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에 있습니다.
-
Red Hat Ceph Storage 5:
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
-
satellite_images_names파일을 Satellite 6hammer툴이 포함된 시스템으로 복사합니다. 또는 Hammer CLI 가이드의 지침에 따라hammer툴을 언더클라우드에 설치합니다. 다음
hammer명령을 실행하여 Satellite 조직에 새 제품(OSP Containers)을 생성합니다.$ hammer product create \ --organization "ACME" \ --name "OSP Containers"이 사용자 지정 제품에 이미지를 저장합니다.
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_imagesCeph 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
-
Red Hat Ceph Storage 5:
-
Red Hat Ceph Storage 5:
컨테이너 이미지를 동기화합니다.
$ hammer product synchronize \ --organization "ACME" \ --name "OSP Containers"Satellite 서버가 동기화를 완료할 때까지 기다립니다.
참고설정에 따라
hammer에서 Satellite 서버 사용자 이름과 암호가 필요할 수 있습니다.hammer를 구성한 후 구성 파일을 사용하여 자동으로 로그인할 수 있습니다. 자세한 내용은 Hammer CLI Guide의 "Authentication" 섹션을 참조하십시오.-
Satellite 6 서버에서 콘텐츠 뷰를 사용하는 경우, 새로운 콘텐츠 뷰 버전을 생성하여 이미지를 통합하고 애플리케이션 라이프사이클의 환경에 따라 승격합니다. 이 과정은 대체로 애플리케이션 라이프사이클을 구조화한 방법에 따라 달라집니다. 예를 들어 라이프사이클에
production이라는 환경이 있고 해당 환경에서 컨테이너 이미지를 사용할 수 있도록 하려면 컨테이너 이미지가 포함된 콘텐츠 뷰를 생성하고 해당 콘텐츠 뷰를production환경으로 승격합니다. 자세한 내용은 Managing Content Views를 참조하십시오. base이미지에 사용 가능한 태그를 확인합니다.$ hammer docker tag list --repository "base" \ --organization "ACME" \ --lifecycle-environment "production" \ --product "OSP Containers"이 명령을 수행하면 OpenStack Platform 컨테이너 이미지의 태그가 특정 환경의 콘텐츠 뷰에 표시됩니다.
언더클라우드로 돌아가서 Satellite 서버를 소스로 사용하여 이미지를 준비하는 기본 환경 파일을 생성합니다. 다음 예제 명령을 실행하여 환경 파일을 생성합니다.
$ sudo openstack tripleo container image prepare default \ --output-env-file containers-prepare-parameter.yaml-
--output-env-file은 환경 파일 이름입니다. 이 파일의 콘텐츠에는 언더클라우드의 컨테이너 이미지를 준비하는 데 필요한 매개변수가 포함되어 있습니다. 이 경우 파일 이름은containers-prepare-parameter.yaml입니다.
-
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 하드웨어를 블록 스토리지 백엔드로 사용하기 위해 벤더 플러그인을 배포하는 방법을 보여줍니다.
프로세스
오버클라우드의 새 컨테이너 이미지 파일을 생성합니다.
$ sudo openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter-dellemc.yaml-
containers-prepare-parameter-dellemc.yaml파일을 편집합니다. 기본 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}"공급자 플러그인의 대체 컨테이너 이미지가 포함된
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 ...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]-
containers-prepare-parameter-dellemc.yaml파일을 저장합니다. 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파일을 유지합니다.