3.2. CLI를 사용하여 Operator 설치

참고

각 Operator 릴리스에서는 아래에 설명된 대로 최신 AMQ Broker 7.10.6 Operator 설치 및 예제 파일을 다운로드해야 합니다.

이 섹션의 절차에서는 OpenShift CLI(명령줄 인터페이스)를 사용하여 지정된 OpenShift 프로젝트에서 AMQ Broker 7.10용 최신 버전의 Operator를 설치하고 배포하는 방법을 보여줍니다. 후속 절차에서는 이 Operator를 사용하여 일부 브로커 인스턴스를 배포합니다.

3.2.1. Operator 배포 준비

CLI를 사용하여 Operator를 배포하기 전에 Operator 설치 파일을 다운로드하고 배포를 준비해야 합니다.

절차

  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-7.10.6-ocp-install-examples.zip
  6. 아카이브를 추출했을 때 생성된 디렉터리로 전환합니다. 예를 들면 다음과 같습니다.

    $ cd amq-broker-operator-7.10.6-ocp-install-examples
  7. OpenShift Container Platform에 클러스터 관리자로 로그인합니다. 예를 들면 다음과 같습니다.

    $ oc login -u system:admin
  8. Operator를 설치할 프로젝트를 지정합니다. 새 프로젝트를 생성하거나 기존 프로젝트로 전환할 수 있습니다.

    1. 새 프로젝트를 생성합니다.

      $ oc new-project <project_name>
    2. 또는 기존 프로젝트로 전환합니다.

      $ oc project <project_name>
  9. Operator와 함께 사용할 서비스 계정을 지정합니다.

    1. 추출한 Operator 아카이브의 배포 디렉터리에서 service_account.yaml 파일을 엽니다.
    2. kind 요소가 ServiceAccount 로 설정되어 있는지 확인합니다.
    3. 기본 서비스 계정 이름을 metadata 섹션에서 변경하려면 amq-broker-operator 를 사용자 지정 이름으로 교체합니다.
    4. 프로젝트에서 서비스 계정을 생성합니다.

      $ oc create -f deploy/service_account.yaml
  10. Operator의 역할 이름을 지정합니다.

    1. role.yaml 파일을 엽니다. 이 파일은 Operator에서 사용하고 수정할 수 있는 리소스를 지정합니다.
    2. kind 요소가 Role 으로 설정되어 있는지 확인합니다.
    3. metadata 섹션의 기본 역할 이름을 변경하려면 amq-broker-operator 를 사용자 지정 이름으로 교체합니다.
    4. 프로젝트에 역할을 생성합니다.

      $ oc create -f deploy/role.yaml
  11. Operator의 역할 바인딩을 지정합니다. 역할 바인딩은 지정한 이름을 기반으로 이전에 생성한 서비스 계정을 Operator 역할에 바인딩합니다.

    1. role_binding.yaml 파일을 엽니다.
    2. ServiceAccountRolename 값이 service_account.yamlrole.yaml 파일에 지정된 이름과 일치하는지 확인합니다. 예를 들면 다음과 같습니다.

      metadata:
          name: amq-broker-operator
      subjects:
          kind: ServiceAccount
          name: amq-broker-operator
      roleRef:
          kind: Role
          name: amq-broker-operator
    3. 프로젝트에 역할 바인딩을 생성합니다.

      $ oc create -f deploy/role_binding.yaml
  12. Operator의 리더 선택 역할 바인딩을 지정합니다. 역할 바인딩은 지정한 이름에 따라 이전에 생성한 서비스 계정을 리더 선택 역할에 바인딩합니다.

    1. Operator에 대한 리더 선택 역할을 생성합니다.

      $ oc create -f deploy/election_role.yaml
    2. 프로젝트에서 리더 선택 역할 바인딩을 생성합니다.

      $ oc create -f deploy/election_role_binding.yaml
  13. (선택 사항) Operator에서 여러 네임스페이스를 조사하려면 다음 단계를 완료합니다.

    참고

    OpenShift Container Platform 클러스터에 AMQ Broker용 Operator가 이미 설치된 경우 새 Operator에서 기존 Operator와 동일한 네임스페이스를 확인하지 않아야 합니다. 기존 Operator에서 조사하는 네임스페이스를 식별하는 방법에 대한 자세한 내용은 기존 Operator 에서 조사하는 네임스페이스 식별을 참조하십시오.

    1. 다운로드 및 추출한 Operator 아카이브의 배포 디렉터리에서 operator_yaml 파일을 엽니다.
    2. Operator에서 WATCH_NAMESPACE 섹션에서 클러스터의 모든 네임스페이스를 조사하려면 value 특성을 추가하고 값을 별표로 설정합니다. WATCH_NAMESPACE 섹션에서 기존 속성을 주석 처리하십시오. 예를 들면 다음과 같습니다.

      - name: WATCH_NAMESPACE
        value: "*"
      # valueFrom:
      #   fieldRef:
      #     fieldPath: metadata.namespace
      참고

      충돌을 방지하려면 여러 Operator에서 동일한 네임스페이스를 조사하지 않도록 합니다. 예를 들어 Operator를 배포하여 클러스터의 모든 네임스페이스를 조사하는 경우 다른 Operator를 배포하여 개별 네임스페이스를 조사할 수 없습니다. Operator가 클러스터에 이미 배포된 경우 다음 단계에 설명된 대로 새 Operator에서 감시하는 네임스페이스 목록을 지정할 수 있습니다.

    3. Operator에서 클러스터의 모든 네임스페이스를 WATCH_NAMESPACE 섹션에서 여러 개의 네임스페이스를 조사하려면 네임스페이스 목록을 지정합니다. 기존 Operator에서 조사하는 네임스페이스를 제외해야 합니다. 예를 들면 다음과 같습니다.

      - name: WATCH_NAMESPACE
        value: "namespace1, namespace2"`.
    4. 다운로드 및 추출한 Operator 아카이브의 배포 디렉터리에서 cluster_role_binding.yaml 파일을 엽니다.
    5. 주체 섹션에서 Operator를 배포하는 OpenShift Container Platform 프로젝트에 해당하는 네임스페이스를 지정합니다. 예를 들면 다음과 같습니다.

      Subjects:
      - kind: ServiceAccount
        name: activemq-artemis-controller-manager
        namespace: operator-project
      참고

      이전 버전의 Operator를 사용하여 브로커를 이전에 배포하고 Operator를 배포하여 여러 네임스페이스를 조사 하려면 업그레이드하기 전에 참조하십시오.

    6. 프로젝트에 클러스터 역할을 생성합니다.

      $ oc create -f deploy/cluster_role.yaml
    7. 프로젝트에 클러스터 역할 바인딩을 생성합니다.

      $ oc create -f deploy/cluster_role_binding.yaml

다음 절차에서는 프로젝트에 Operator를 배포합니다.

3.2.2. CLI를 사용하여 Operator 배포

이 섹션의 절차에서는 OpenShift CLI(명령줄 인터페이스)를 사용하여 OpenShift 프로젝트에서 AMQ Broker 7.10용 Operator의 최신 버전을 배포하는 방법을 보여줍니다.

사전 요구 사항

  • Operator 배포를 위해 OpenShift 프로젝트를 이미 준비해야 합니다. 3.2.1절. “Operator 배포 준비”을 참조하십시오.
  • AMQ Broker 7.3부터 새 버전의 Red Hat Ecosystem Catalog를 사용하여 컨테이너 이미지에 액세스합니다. 이 새 버전의 레지스트리는 인증된 사용자가 되어 이미지에 액세스할 수 있어야 합니다. 이 섹션의 절차를 수행하기 전에 먼저 Red Hat Container Registry Authentication 에 설명된 단계를 완료해야 합니다.
  • 영구 스토리지를 사용하여 브로커를 배포하고 OpenShift 클러스터에 컨테이너 네이티브 스토리지가 없는 경우 PV(영구 볼륨)를 수동으로 프로비저닝하고 Operator가 요청할 수 있는지 확인해야 합니다. 예를 들어, 영구 스토리지를 사용하여 두 브로커의 클러스터를 생성하려면 사용자 정의 리소스에서 persistenceEnabled=true 를 설정하여 두 개의 PV를 사용할 수 있어야 합니다. 기본적으로 각 브로커 인스턴스에는 2GiB의 스토리지가 필요합니다.

    사용자 정의 리소스에서 persistenceEnabled=false 를 지정하면 배포된 브로커는 임시 스토리지를 사용합니다. 임시 스토리지는 브로커 Pod를 다시 시작할 때마다 기존 데이터가 손실됩니다.

    영구 스토리지 프로비저닝에 대한 자세한 내용은 다음을 참조하십시오.

절차

  1. OpenShift CLI(명령줄 인터페이스)에서 클러스터 관리자로 OpenShift에 로그인합니다. 예를 들면 다음과 같습니다.

    $ oc login -u system:admin
  2. 이전에 Operator 배포에 준비한 프로젝트로 전환합니다. 예를 들면 다음과 같습니다.

    $ oc project <project_name>
  3. 이전에 Operator 설치 아카이브를 추출했을 때 생성된 디렉터리로 전환합니다. 예를 들면 다음과 같습니다.

    $ cd ~/broker/operator/amq-broker-operator-7.10.6-ocp-install-examples
  4. Operator에 포함된 CRD를 배포합니다. Operator를 배포하고 시작하기 전에 OpenShift 클러스터에 CRD를 설치해야 합니다.

    1. 주요 브로커 CRD를 배포합니다.

      $ oc create -f deploy/crds/broker_activemqartemis_crd.yaml
    2. 주소 CRD를 배포합니다.

      $ oc create -f deploy/crds/broker_activemqartemisaddress_crd.yaml
    3. 스케일다운 컨트롤러 CRD를 배포합니다.

      $ oc create -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
    4. 보안 CRD를 배포합니다.

      $ oc create -f deploy/crds/broker_activemqartemissecurity_crd.yaml
  5. Red Hat Ecosystem Catalog의 인증에 사용되는 계정과 연결된 풀 시크릿을 OpenShift 프로젝트의 기본,배포자빌더 서비스 계정과 연결합니다.

    $ oc secrets link --for=pull default <secret_name>
    $ oc secrets link --for=pull deployer <secret_name>
    $ oc secrets link --for=pull builder <secret_name>
  6. 다운로드 및 추출한 Operator 아카이브의 배포 디렉터리에서 operator.yaml 파일을 엽니다. 다음과 같이 spec.containers.image 속성 값이 Operator의 버전 7.10.6-opr-1에 해당하는지 확인합니다.

    spec:
        template:
            spec:
                containers:
                    #image: registry.redhat.io/amq7/amq-broker-rhel8-operator:7.10
                    image: registry.redhat.io/amq7/amq-broker-rhel8-operator@sha256:5175979c4b57586009cbcbffdcb90ef81c7a9f6520451f733cabd3e8b50c1eb2
    참고

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

  7. Operator를 배포합니다.

    $ oc create -f deploy/operator.yaml

    OpenShift 프로젝트에서 Operator는 새 포드에서 시작됩니다.

    OpenShift Container Platform 웹 콘솔에서 Operator Pod의 Events 탭에 대한 정보는 OpenShift에서 지정한 Operator 이미지를 배포하고, OpenShift 클러스터의 노드에 새 컨테이너를 할당했으며 새 컨테이너를 시작했음을 확인합니다.

    또한 Pod 내의 Logs 탭을 클릭하면 출력에는 다음과 유사한 행이 포함되어야 합니다.

    ...
    {"level":"info","ts":1553619035.8302743,"logger":"kubebuilder.controller","msg":"Starting Controller","controller":"activemqartemisaddress-controller"}
    {"level":"info","ts":1553619035.830541,"logger":"kubebuilder.controller","msg":"Starting Controller","controller":"activemqartemis-controller"}
    {"level":"info","ts":1553619035.9306898,"logger":"kubebuilder.controller","msg":"Starting workers","controller":"activemqartemisaddress-controller","worker count":1}
    {"level":"info","ts":1553619035.9311671,"logger":"kubebuilder.controller","msg":"Starting workers","controller":"activemqartemis-controller","worker count":1}

    이전 출력에서는 새로 배포된 Operator가 Kubernetes와 통신하고, 브로커 및 주소 지정에 대한 컨트롤러가 실행 중이며 이러한 컨트롤러에서 일부 작업자를 시작했는지 확인합니다.

참고

지정된 OpenShift 프로젝트에서 AMQ Broker Operator의 단일 인스턴스 만 배포하는 것이 좋습니다. Operator 배포의 spec.replicas 속성을 1 보다 큰 값으로 설정하거나 동일한 프로젝트에서 두 번 이상 Operator를 배포하는 것은 권장되지 않습니다.

추가 리소스