6.2. CLI를 사용하여 Operator 업그레이드

이 섹션의 절차에서는 OpenShift CLI(명령줄 인터페이스)를 사용하여 다른 버전의 Operator를 AMQ Broker 7.10에서 사용 가능한 최신 버전으로 업그레이드하는 방법을 보여줍니다.

6.2.1. 사전 요구 사항

  • CLI를 사용하여 Operator를 처음 설치하는 경우에만 Operator를 업그레이드해야 합니다. 원래 OperatorHub를 사용하여 Operator를 설치하는 경우 (즉, OpenShift Container Platform 웹 콘솔의 프로젝트에 InstalledOperators )에 표시되는 경우 OperatorHub를 사용하여 Operator를 업그레이드해야 합니다. OperatorHub를 사용하여 Operator를 업그레이드하는 방법을 알아보려면 6.3절. “OperatorHub를 사용하여 Operator 업그레이드” 를 참조하십시오.

6.2.2. CLI를 사용하여 Operator 업그레이드

OpenShift CLI(명령줄 인터페이스)를 사용하여 Operator를 AMQ Broker 7.10의 최신 버전으로 업그레이드할 수 있습니다.

절차

  1. 웹 브라우저에서 AMQ Broker 7.10.6 패치소프트웨어 다운로드 페이지로 이동합니다.
  2. 버전 드롭다운 목록의 값이 7.10.6 으로 설정되고 릴리스 탭이 선택되어 있는지 확인합니다.
  3. AMQ Broker 7.10.6 Operator 설치 및 예제 파일 옆에 있는 Download 를 클릭합니다.

    amq-broker-operator-7.10.6-ocp-install-examples.zip 압축 아카이브가 자동으로 시작됩니다.

  4. 다운로드가 완료되면 아카이브를 선택한 설치 디렉터리로 이동합니다. 다음 예제에서는 아카이브를 ~/broker/operator 라는 디렉터리로 이동합니다.

    $ mkdir ~/broker/operator
    $ mv amq-broker-operator-7.10.6-ocp-install-examples.zip ~/broker/operator
  5. 선택한 설치 디렉터리에서 아카이브의 콘텐츠를 추출합니다. 예를 들면 다음과 같습니다.

    $ cd ~/broker/operator
    $ unzip amq-broker-operator-operator-7.10.6-ocp-install-examples.zip
  6. 기존 Operator 배포가 포함된 프로젝트의 관리자로 OpenShift Container Platform에 로그인합니다.

    $ oc login -u <user>
  7. Operator 버전을 업그레이드하려는 OpenShift 프로젝트로 전환합니다.

    $ oc project <project-name>
  8. 다운로드 및 추출한 최신 Operator 아카이브의 배포 디렉터리에서 operator.yaml 파일을 엽니다.

    참고

    operator.yaml 파일에서 Operator는SHA( Secure Hash Algorithm ) 값으로 표시되는 이미지를 사용합니다. 숫자 기호(#) 기호로 시작하는 주석 행은 SHA 값이 특정 컨테이너 이미지 태그에 해당함을 나타냅니다.

  9. 이전 Operator 배포의 operator.yaml 파일을 엽니다. 이전 구성에서 지정한 기본값이 아닌 값이 operator.yaml 구성 파일에 복제되었는지 확인합니다.
  10. operator.yaml 파일에서 Operator 이름은 기본적으로 controller-manager 로 지정됩니다. controller-manager 의 모든 인스턴스를 amq-broker-operator 로 교체하고 이전 버전의 Operator 이름인 amq-broker-operator로 파일을 저장합니다. 예를 들면 다음과 같습니다.

    spec:
    ...
      selector
        matchLabels
          name: amq-broker-operator
    ...
  11. Operator에 포함된 CRD를 업데이트합니다. Operator를 배포하기 전에 CRD를 업데이트해야 합니다.

    1. 주요 브로커 CRD를 업데이트합니다.

      $ oc apply -f deploy/crds/broker_activemqartemis_crd.yaml
    2. 주소 CRD를 업데이트합니다.

      $ oc apply -f deploy/crds/broker_activemqartemisaddress_crd.yaml
    3. scaledown 컨트롤러 CRD를 업데이트합니다.

      $ oc apply -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
    4. 보안 CRD를 업데이트합니다.

      $ oc apply -f deploy/crds/broker_activemqartemissecurity_crd.yaml
  12. AMQ Broker Operator 7.10.0에서만 업그레이드하는 경우 Operator 및 StatefulSet을 삭제합니다.

    기본적으로 새 Operator는 StatefulSet을 삭제하여 사용자 정의 및 Operator 미터링 레이블을 삭제합니다. 이 레이블은 7.10.0의 Operator의 StatefulSet 선택기에 잘못 추가되었습니다. Operator가 StatefulSet을 삭제하면 기존 브로커 Pod도 삭제하여 일시적인 브로커 중단이 발생합니다. 중단을 방지하려면 다음 단계를 완료하여 브로커 Pod를 삭제하지 않고 Operator 및 StatefulSet을 삭제합니다.

    1. Operator를 삭제합니다.

      $ oc delete -f deploy/operator.yaml
    2. 브로커 Pod를 분리하려면 --cascade=orphan 옵션을 사용하여 StatefulSet을 삭제합니다. 고립된 브로커 Pod는 StatefulSet이 삭제된 후에도 계속 실행됩니다.

      $ oc delete statefulset <statefulset-name> --cascade=orphan
  13. AMQ Broker Operator 7.10.0 또는 7.10.1에서 업그레이드하는 경우 기본 브로커 CR에 application 또는 ActiveMQArtemis 라는 레이블이 deploymentPlan.labels 속성에 구성되어 있는지 확인합니다.

    이러한 라벨은 Operator가 Pod에 라벨을 할당하도록 예약되며 7.10.1 이후 사용자 정의 라벨로 허용되지 않습니다. 이러한 사용자 정의 라벨이 기본 브로커 CR에 구성된 경우 Pod에 Operator 할당 라벨을 사용자 정의 라벨로 덮어씁니다. 이러한 사용자 정의 라벨 중 하나가 기본 브로커 CR에 구성된 경우 다음 단계를 완료하여 Pod에서 올바른 라벨을 복원하고 CR에서 라벨을 제거합니다.

    1. 7.10.0에서 업그레이드하는 경우 이전 단계에서 Operator를 삭제했습니다. 7.10.1에서 업그레이드하는 경우 Operator를 삭제합니다.

      $ oc delete -f deploy/operator.yaml
    2. 다음 명령을 실행하여 올바른 Pod 레이블을 복원합니다. 다음 예에서 'ex-aao'는 배포된 StatefulSet의 이름입니다.

      $ for pod in $(oc get pods | grep -o '^ex-aao[^ ]*') do; oc label --overwrite pods $pod ActiveMQArtemis=ex-aao application=ex-aao-app; done
    3. CR의 deploymentPlan.labels 속성에서 애플리케이션ActiveMQArtemis 레이블을 삭제합니다.

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

        oc login -u <user> -p <password> --server=<host:port>
      2. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemis_cr.yaml 이라는 샘플 CR 파일을 엽니다.
      3. CR의 deploymentPlan.labels 속성에서 application 또는 ActiveMQArtemis 라는 사용자 지정 레이블을 삭제합니다.
      4. CR 파일을 저장합니다.
      5. CR 인스턴스를 배포합니다.

        1. 브로커 배포를 위해 프로젝트로 전환합니다.

          $ oc project <project_name>
        2. CR을 적용합니다.

          $ oc apply -f <path/to/broker_custom_resource_instance>.yaml
    4. 이전 Operator를 삭제한 경우 새 Operator를 배포합니다.

       $ oc create -f deploy/operator.yaml
  14. 업데이트된 Operator 구성을 적용합니다.

    $ oc apply -f deploy/operator.yaml
  15. 새 Operator는 이전 브로커 배포를 인식하고 관리할 수 있습니다. 배포 CR에서 자동 업데이트가 활성화된 경우 Operator의 조정 프로세스는 각 브로커 Pod를 업그레이드합니다. 자동 업데이트가 활성화되지 않은 경우 CR에서 다음 속성을 설정하여 활성화할 수 있습니다.

    spec:
        ...
        upgrades:
            enabled: true
            minor: true

    자동 업데이트 활성화에 대한 자세한 내용은 6.4절. “AMQ Broker 버전을 지정하여 브로커 컨테이너 이미지 업그레이드” 에서 참조하십시오.

    참고

    조정 프로세스가 시작되지 않으면 배포를 스케일링하여 프로세스를 시작할 수 있습니다. 자세한 내용은 3.4.1절. “기본 브로커 인스턴스 배포”의 내용을 참조하십시오.

  16. 필요에 따라 업그레이드된 브로커에서 사용할 수 있는 새 기능의 CR에 속성을 추가합니다.