11장. director Operator의 오버클라우드 업데이트

openstackclient Pod를 업데이트한 후 오버클라우드 및 컨테이너 이미지 준비 배포를 실행하고 노드를 업데이트한 다음 오버클라우드 업데이트 컨버합 배포를 실행하여 오버클라우드를 업데이트합니다. 마이너 업데이트 중에 컨트롤 플레인 API를 사용할 수 있습니다.

11.1. 마이너 업데이트를 위해 director Operator 준비

RHOSP(Red Hat OpenStack Platform) 마이너 업데이트 프로세스 워크플로:

  1. RHOSP 마이너 업데이트를 위한 환경을 준비합니다.
  2. openstackclient Pod 이미지를 최신 OpenStack 16.2.z 버전으로 업데이트합니다.
  3. 오버클라우드를 최신 OpenStack 16.2.z 버전으로 업데이트합니다.
  4. 모든 Red Hat Ceph Storage 서비스를 업데이트합니다.
  5. 통합 배포를 실행하여 오버클라우드 스택을 새로 고칩니다.

11.1.1. Red Hat Enterprise Linux 릴리스에 환경 잠금

RHOSP(Red Hat OpenStack Platform) 16.2는 Red Hat Enterprise Linux (RHEL) 8.4에서 지원됩니다. 업데이트를 수행하기 전에 오버클라우드 리포지토리를 RHEL 8.4 릴리스로 잠금하여 운영 체제를 최신 마이너 릴리스로 업그레이드하지 않도록 합니다.

절차

  1. rhsm.yaml 파일을 openstackclient 로 복사합니다.

    $ oc cp rhsm.yaml openstackclient:/home/cloud-admin/rhsm.yaml
  2. openstackclient Pod에서 원격 쉘을 엽니다.

    $ oc rsh openstackclient
  3. rhsm.yaml 파일을 열고 서브스크립션 관리 구성에 rhsm_release 매개변수가 포함되어 있는지 확인합니다. rhsm_release 매개변수가 없으면 이를 추가하고 8.4 로 설정합니다.

    parameter_defaults:
      RhsmVars:
        …​
        rhsm_username: "myusername"
        rhsm_password: "p@55w0rd!"
        rhsm_org_id: "1234567"
        rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd"
        rhsm_method: "portal"
        rhsm_release: "8.4"
  4. 오버클라우드 서브스크립션 관리 환경 파일을 저장합니다.
  5. 모든 노드에서 운영 체제 버전을 RHEL 8.4에 고정하는 작업이 포함된 플레이북을 생성합니다.

    $ cat > ~/set_release.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: set release to 8.4
          command: subscription-manager release --set=8.4
          become: true
    EOF
  6. openstackclient Pod에서 ansible 플레이북을 실행합니다.

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/set_release.yaml --limit Controller,Compute

    --limit 옵션을 사용하여 모든 RHOSP 노드에 콘텐츠를 적용합니다. 이러한 노드에 다른 서브스크립션을 사용 중이므로 Red Hat Ceph Storage 노드에 대해 이 플레이북을 실행하지 마십시오.

참고

노드에 수동으로 고정하려면 노드에 로그인하고 subscription-manager 릴리스 명령을 실행합니다.

$ sudo subscription-manager release --set=8.4

11.1.2. EUS (Extended Update Support) 리포지토리로 변경

RHOSP(Red Hat OpenStack Platform) 서브스크립션에는 Red Hat Enterprise Linux (RHEL) 8.4 Extended Update Support (EUS)용 리포지토리가 포함되어 있습니다. EUS 리포지토리에는 RHEL 8.4의 최신 보안 패치 및 버그 수정이 포함됩니다. 업데이트를 수행하기 전에 다음 리포지토리로 전환합니다.

표 11.1. RHEL 8.4용 EUS 리포지토리

표준 리포지토리EUS 리포지토리

rhel-8-for-x86_64-baseos-rpms

rhel-8-for-x86_64-baseos-eus-rpms

rhel-8-for-x86_64-appstream-rpms

rhel-8-for-x86_64-appstream-eus-rpms

rhel-8-for-x86_64-highavailability-rpms

rhel-8-for-x86_64-highavailability-eus-rpms

중요

특정 버전의 Podman과의 호환성을 유지하려면 EUS 리포지터리를 사용해야 합니다. 최신 버전의 Podman은 RHOSP 16.2에서 테스트되지 않으며 예기치 않은 결과가 발생할 수 있습니다.

사전 요구 사항

  • openstackclient 포드의 rhsm.yaml 파일을 /home/cloud-admin 디렉터리에 복사합니다.

절차

  1. openstackclient Pod에서 원격 쉘을 엽니다.

    $ oc rsh openstackclient
  2. rhsm.yaml 파일을 열고 서브스크립션 관리 구성에서 rhsm_repos 매개변수를 확인합니다. 이 매개변수에 EUS 리포지토리가 포함되지 않은 경우 관련 리포지토리를 EUS 버전으로 변경합니다.

    parameter_defaults:
      RhsmVars:
        rhsm_repos:
          - rhel-8-for-x86_64-baseos-eus-rpms
          - rhel-8-for-x86_64-appstream-eus-rpms
          - rhel-8-for-x86_64-highavailability-eus-rpms
          - ansible-2.9-for-rhel-8-x86_64-rpms
          - openstack-16.2-for-rhel-8-x86_64-rpms
          - rhceph-4-tools-for-rhel-8-x86_64-rpms
          - fast-datapath-for-rhel-8-x86_64-rpms
  3. 오버클라우드 서브스크립션 관리 환경 파일을 저장합니다.
  4. 모든 노드에서 리포지토리를 RHEL 8.4 EUS 로 설정하는 작업이 포함된 플레이북을 생성합니다.

    $ cat > ~/change_eus.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: change to eus repos
          command: subscription-manager repos --disable=rhel-8-for-x86_64-baseos-rpms --disable=rhel-8-for-x86_64-appstream-rpms --disable=rhel-8-for-x86_64-highavailability-rpms --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms
          become: true
    EOF
  5. change_eus.yaml 플레이북을 실행합니다.

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/change_eus.yaml --limit Controller,Compute

    --limit 옵션을 사용하여 모든 RHOSP 노드에 콘텐츠를 적용합니다. 다른 서브스크립션을 사용하므로 Red Hat Ceph Storage 노드에 대해 이 플레이북을 실행하지 마십시오.

11.1.3. Red Hat Openstack Platform 및 Ansible 리포지토리 업데이트

RHOSP(Red Hat OpenStack Platform) 16.2 및 Ansible 2.9 패키지를 사용하도록 리포지토리를 업데이트합니다. 자세한 내용은 Overcloud 리포지토리를 참조하십시오.

사전 요구 사항

  • openstackclient 포드의 rhsm.yaml 파일을 /home/cloud-admin 디렉터리에 복사했습니다.

절차

  1. openstackclient Pod에서 원격 쉘을 엽니다.

    $ oc rsh openstackclient
  2. rhsm.yaml 파일을 열고 서브스크립션 관리 구성에서 rhsm_repos 매개변수를 확인합니다. rhsm_repos 매개변수가 RHOSP 16.1 및 Ansible 2.8 리포지토리를 사용하는 경우 리포지토리를 올바른 버전으로 변경합니다.

    parameter_defaults:
      RhsmVars:
        rhsm_repos:
          - rhel-8-for-x86_64-baseos-eus-rpms
          - rhel-8-for-x86_64-appstream-eus-rpms
          - rhel-8-for-x86_64-highavailability-eus-rpms
          - ansible-2.9-for-rhel-8-x86_64-rpms
          - openstack-16.2-for-rhel-8-x86_64-rpms
          - fast-datapath-for-rhel-8-x86_64-rpms
  3. 오버클라우드 서브스크립션 관리 환경 파일을 저장합니다.
  4. 모든 RHOSP 노드에서 리포지토리를 RHOSP {osp_curr_ver} 로 설정하는 작업이 포함된 플레이북을 생성합니다.

    $ cat > ~/update_rhosp_repos.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: change osp repos
          command: subscription-manager repos --disable=openstack-16.1-for-rhel-8-x86_64-rpms --enable=openstack-16.2-for-rhel-8-x86_64-rpms --disable=ansible-2.8-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
          become: true
    EOF
  5. update_rhosp_repos.yaml 플레이북을 실행합니다.

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_rhosp_repos.yaml --limit Controller,Compute

    --limit 옵션을 사용하여 모든 RHOSP 노드에 콘텐츠를 적용합니다. 다른 서브스크립션을 사용하므로 Red Hat Ceph Storage 노드에 대해 이 플레이북을 실행하지 마십시오.

  6. 모든 Red Hat Ceph Storage 노드에서 리포지토리를 RHOSP {osp_curr_ver} 로 설정하는 작업이 포함된 플레이북을 생성합니다.

    $ cat > ~/update_ceph_repos.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: change ceph repos
          command: subscription-manager repos --disable=openstack-16-deployment-tools-for-rhel-8-x86_64-rpms --enable=openstack-16.2-deployment-tools-for-rhel-8-x86_64-rpms --disable=ansible-2.8-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
          become: true
    EOF
  7. update_ceph_repos.yaml 플레이북을 실행합니다.

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory /home/cloud-admin/update_ceph_repos.yaml --limit CephStorage

    Red Hat Ceph Storage 노드에 콘텐츠를 적용하려면 --limit 옵션을 사용합니다.

11.1.4. container-tools 버전 설정

모든 노드에서 올바른 패키지 버전을 사용하도록 container-tools 모듈을 버전 2.0 으로 설정합니다.

절차

  1. openstackclient Pod에서 원격 쉘을 엽니다.

    $ oc rsh openstackclient
  2. 작업이 포함된 플레이북을 생성하여 모든 노드에서 container-tools 모듈을 버전 3.0 으로 설정합니다.

    $ cat > ~/container-tools.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: disable default dnf module for container-tools
          command: dnf module reset container-tools
          become: true
        - name: set dnf module for container-tools:3.0
          command: dnf module enable -y container-tools:3.0
          become: true
        - name: disable dnf module for virt:8.2
          command: dnf module disable -y virt:8.2
          become: true
        - name: set dnf module for virt:rhel
          command: dnf module enable -y virt:rhel
          become: true
    EOF
  3. 모든 노드에 대해 container-tools.yaml 플레이북을 실행합니다.

    $ ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory ~/container-tools.yaml

11.1.5. 컨테이너 이미지 준비 파일 업데이트

컨테이너 준비 파일은 ContainerImagePrepare 매개변수가 포함된 파일입니다. 이 파일을 사용하여 오버클라우드의 컨테이너 이미지를 가져오는 규칙을 정의합니다.

환경을 업데이트하기 전에 파일을 확인하여 올바른 이미지 버전을 얻을 수 있는지 확인합니다.

절차

  1. 컨테이너 준비 파일을 편집합니다. 이 파일의 기본 이름은 일반적으로 containers-prepare-parameter.yaml 입니다.
  2. 각 규칙 세트에 대해 tag 매개변수가 16.2 로 설정되어 있는지 확인합니다.

    parameter_defaults:
      ContainerImagePrepare:
      - push_destination: true
        set:
          ...
          tag: '16.2'
        tag_from_label: '{version}-{release}'
    참고

    16.2 또는 16.2.2 와 같은 업데이트에 특정 태그를 사용하지 않으려면 태그 키-값 쌍을 제거하고 tag _from_label 만 지정합니다. 설치된 Red Hat OpenStack Platform 버전을 사용하여 업데이트 프로세스의 일부로 사용할 태그 값을 결정합니다.

  3. 이 파일을 저장합니다.

11.1.6. 오버클라우드에서 펜싱 비활성화

오버클라우드를 업데이트하기 전에 펜싱이 비활성화되어 있는지 확인합니다.

컨트롤러 노드 업데이트 프로세스 중에 펜싱이 환경에 배포되면 오버클라우드에서 비활성화된 특정 노드를 탐지하고 펜싱 작업을 시도하여 의도하지 않은 결과가 발생할 수 있습니다.

오버클라우드에서 펜싱을 활성화한 경우 의도하지 않은 결과를 방지하려면 업데이트 기간 동안 펜싱을 일시적으로 비활성화해야 합니다.

절차

  1. openstackclient Pod에서 원격 쉘을 엽니다.

    $ oc rsh openstackclient
  2. 컨트롤러 노드에 로그인하고 Pacemaker 명령을 실행하여 펜싱을 비활성화합니다.

    ssh <controller-0.ctlplane> "sudo pcs property set stonith-enabled=false"
    • & lt;controller-0.ctlplane >을 컨트롤러 노드 이름으로 바꿉니다.
  3. fencing.yaml 환경 파일에서 EnableFencing 매개변수를 false 로 설정하여 업데이트 프로세스 중에 펜싱이 비활성화되었는지 확인합니다.