업그레이드


Red Hat Advanced Cluster Security for Kubernetes 4.1

Red Hat Advanced Cluster Security for Kubernetes 업그레이드

Red Hat OpenShift Documentation Team

초록

이 섹션에서는 Helm 차트 또는 roxctl 명령줄 인터페이스를 사용하여 Red Hat Advanced Cluster Security for Kubernetes 업그레이드에 대한 지침을 제공합니다.

1장. Operator를 사용하여 업그레이드

RHACS(Advanced Cluster Security for Kubernetes) Operator를 통한 업그레이드는 설치 시 선택한 업데이트 승인 옵션에 따라 자동으로 또는 수동으로 수행됩니다.

RHACS 4.0에는 중요한 아키텍처 변경 사항이 포함되어 있으며 중앙의 데이터베이스를 PostgreSQL으로 이동합니다. 이러한 변경으로 인해 RHACS 4.0 Operator는 새 서브스크립션 채널을 통해 게시됩니다. 따라서 업그레이드 지침의 일부로 RHACS 3.74에서 RHACS 4.0으로 업그레이드하도록 서브스크립션 채널을 수동으로 변경해야 합니다.

중요
  • RHACS 4.0에 도입된 데이터베이스 관련 변경 사항으로 인해 업데이트 승인 필드에서 Automatic 을 선택한 경우에도 RHACS 4.0으로 수동으로 업그레이드해야 합니다.
  • RHACS 3.74를 사용하여 RHACS 4.0으로 업그레이드해야 합니다. 3.74 이전 버전을 사용하는 경우 먼저 RHACS 3.74로 업그레이드한 다음 RHACS 4.0으로 업그레이드해야 합니다.

1.1. 업그레이드 준비

RHACS(Red Hat Advanced Cluster Security for Kubernetes) 버전을 업그레이드하기 전에 다음을 수행해야 합니다.

  • RHACS Operator 3.74의 최신 패치 릴리스 버전을 실행 중인지 확인합니다.
  • 기존 중앙 데이터베이스를 백업합니다.

1.2. 중앙 사용자 정의 리소스 수정

중앙 DB 서비스에는 영구 스토리지가 필요합니다. SSD 또는 고성능인 중앙 클러스터의 기본 스토리지 클래스를 구성하지 않은 경우 Central 사용자 지정 리소스를 업데이트하여 Central DB PVC(영구 볼륨 클레임)의 스토리지 클래스를 구성해야 합니다.

참고

Central의 기본 스토리지 클래스를 이미 구성한 경우 이 섹션을 건너뜁니다.

절차

  • 다음 구성을 사용하여 중앙 사용자 정의 리소스를 업데이트합니다.
spec:
  central:
    db:
      isEnabled: Default 1
      persistence:
        persistentVolumeClaim: 2
          claimName: central-db
          size: 100Gi
          storageClassName: <storage-class-name>
1
IsEnabled 의 값을 Enabled 로 변경하지 않아야 합니다.
2
이 클레임이 있는 경우 클러스터에서 기존 클레임을 사용하고, 그렇지 않으면 새 클레임을 생성합니다.

1.3. 외부 데이터베이스를 위한 중앙 사용자 정의 리소스 수정

중요

외부 PostgreSQL 지원은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

  • PostgreSQL 13을 지원하는 데이터베이스를 프로비저닝해야 하며 RHACS에만 사용해야 합니다.
  • 사용자는 데이터베이스를 만들고 삭제할 수 있는 슈퍼유저여야 합니다.
참고
  • 다중 테넌트 데이터베이스는 현재 지원되지 않습니다.
  • PgBouncer를 통한 연결은 지원되지 않습니다.

절차

  1. OpenShift Container Platform 웹 콘솔 또는 터미널을 사용하여 배포된 네임스페이스에 암호 보안을 생성합니다.

    • OpenShift Container Platform 웹 콘솔에서 워크로드 → 시크릿 페이지로 이동합니다. 키 암호와 프로비저닝된 데이터베이스의 슈퍼 유저 암호 가 포함된 일반 텍스트 파일의 경로로 값을 사용하여 키/값 시크릿 을 생성합니다.
    • 또는 터미널에서 다음 명령을 실행합니다.

      $ oc create secret generic external-db-password \ 1
        --from-file=password=<password.txt> 2
      1
      Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
      2
      password.txt 를 일반 텍스트 암호가 있는 파일의 경로로 바꿉니다.
  2. OpenShift Container Platform 웹 콘솔의 Red Hat Advanced Cluster Security for Kubernetes Operator 페이지로 이동합니다. 상단 탐색 모음에서 Central 을 선택하고 데이터베이스에 연결할 인스턴스를 선택합니다.
  3. YAML 편집기 보기로 이동합니다.
  4. db.passwordSecret.name 의 경우 이전 단계에서 생성한 참조된 보안을 지정합니다. 예: external-db-password.
  5. db.connectionString 의 경우 keyword=value 형식으로 연결 문자열을 지정합니다(예: host=< host> port=5432 user=postgres sslmode=verify-ca).
  6. db.persistence 의 경우 전체 블록을 삭제합니다.
  7. 필요한 경우 다음 예와 같이 최상위 사양에 TLS 블록을 추가하여 데이터베이스 인증서를 신뢰하도록 중앙 인증 기관을 지정할 수 있습니다.

    • 다음 구성을 사용하여 중앙 사용자 정의 리소스를 업데이트합니다.

      spec:
        tls:
          additionalCAs:
          - name: db-ca
            content: |
              <certificate>
        central:
          db:
            isEnabled: Default 1
            connectionString: "host=<host> port=5432 user=<user> sslmode=verify-ca"
            passwordSecret:
              name: external-db-password
      1
      IsEnabled 의 값을 Enabled 로 변경하지 않아야 합니다.
  8. 저장을 클릭합니다.

1.4. 서브스크립션 채널 변경

OpenShift Container Platform 웹 콘솔을 사용하거나 명령줄을 사용하여 RHACS Operator의 업데이트 채널을 변경할 수 있습니다. RHACS 3.74에서 RHACS 4.0으로 업그레이드하려면 업데이트 채널을 변경해야 합니다.

중요

중앙 및 모든 보안 클러스터를 포함하여 RHACS Operator를 설치한 모든 클러스터의 서브스크립션 채널을 변경해야 합니다.

사전 요구 사항

  • 최신 RHACS 3.74 Operator를 사용하고 있으며 보류 중인 수동 Operator 업그레이드가 없는지 확인해야 합니다.
  • 기존 Central 데이터베이스를 백업했는지 확인해야 합니다.
  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터 웹 콘솔에 액세스할 수 있습니다.
웹 콘솔을 사용하여 서브스크립션 채널 변경

웹 콘솔을 사용하여 서브스크립션 채널을 변경하려면 다음 지침을 사용합니다.

절차

  1. OpenShift Container Platform 웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator 로 이동합니다.
  2. RHACS Operator를 찾아 클릭합니다.
  3. 서브스크립션 탭을 클릭합니다.
  4. 업데이트 채널 아래에서 업데이트 채널 의 이름을 클릭합니다.
  5. stable 을 선택한 다음 Save 를 클릭합니다.
  6. 자동 승인 전략이 있는 서브스크립션의 경우 업데이트가 자동으로 시작됩니다. Operator → 설치된 Operator 페이지로 이동하여 업데이트 진행 상황을 모니터링합니다. 완료되면 상태가 성공최신으로 변경됩니다.

    수동 승인 전략이 있는 서브스크립션의 경우 서브스크립션 탭에서 업데이트를 수동으로 승인할 수 있습니다.

명령줄을 사용하여 서브스크립션 채널 변경

명령줄을 사용하여 서브스크립션 채널을 변경하려면 다음 지침을 사용합니다.

절차

  • 다음 명령을 실행하여 서브스크립션 채널을 stable 로 변경합니다.

    $ oc -n rhacs-operator \ 1
      patch subscriptions.operators.coreos.com rhacs-operator \
      --type=merge --patch='{ "spec": { "channel": "stable" }}'
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

업데이트 중에 RHACS Operator는 central-db 라는 새 배포를 프로비저닝하고 데이터 마이그레이션이 시작됩니다. 이 작업은 약 30분이 소요되며 업그레이드 시 한 번만 발생합니다.

1.5. 중앙 연결 PV 제거

Kubernetes 및 OpenShift Container Platform은 PV(영구 볼륨)를 자동으로 삭제하지 않습니다. 이전 버전에서 RHACS를 업그레이드하면 stackrox-db 라는 중앙 PV가 마운트된 상태로 유지됩니다. 그러나 RHACS 4.1에서는 이전에 연결된 PV가 더 이상 필요하지 않습니다.

PV에는 이전 RHACS 버전에서 사용하는 데이터 및 영구 파일이 있습니다. PV를 사용하여 RHACS 4.1 이전 버전으로 롤백할 수 있습니다. 또는 Central용 큰 RocksDB 백업 번들이 있는 경우 PV를 사용하여 해당 데이터를 복원할 수 있습니다.

이전 RocksDB 백업에서 롤백하거나 복원하지 않으려면 중앙 연결 PVC(영구 볼륨 클레임)를 제거하여 스토리지를 확보할 수 있습니다.

주의

PVC를 제거한 후에는 RHACS 4.1 전에 Central을 롤백하거나 RocksDB로 생성된 대규모 RocksDB 백업을 복원할 수 없습니다.

1.5.1. RHACS Operator를 사용하여 중앙 연결 PV 제거

중앙 연결 PVC(영구 볼륨 클레임) stackrox-db 를 제거하여 스토리지 공간을 확보합니다.

절차

  • Central에 다음 주석을 추가합니다.

    annotations:
      platform.stackrox.io/obsolete-central-pvc: "true"

검증

  • 다음 명령을 실행합니다.

    $ oc -n stackrox describe pvc stackrox-db | grep -i 'Used By'
    Used By: <none> 1
    1
    용도가 표시될 때까지 기다립니다 : <none>. 이 작업을 수행하는 데 몇 분 정도 걸릴 수 있습니다.

1.6. Operator 업그레이드 롤백

Operator 업그레이드를 롤백하려면 다음 섹션 중 하나에 설명된 단계를 수행해야 합니다. CLI 또는 OpenShift Container Platform 웹 콘솔을 사용하여 Operator 업그레이드를 롤백할 수 있습니다.

참고

RHACS 4.0에서 롤백하는 경우 RHACS 3.74의 최신 패치 릴리스 버전으로만 롤백할 수 있습니다.

1.6.1. CLI를 사용하여 Operator 업그레이드 롤백

CLI 명령을 사용하여 Operator 버전을 롤백할 수 있습니다.

절차

  1. 다음 명령을 실행하여 OLM 서브스크립션을 삭제합니다.

    • OpenShift Container Platform의 경우 다음 명령을 실행합니다.

      $ oc -n rhacs-operator delete subscription rhacs-operator
    • Kubernetes의 경우 다음 명령을 실행합니다.

      $ kubectl -n rhacs-operator delete subscription rhacs-operator
  2. 다음 명령을 실행하여 CSV(클러스터 서비스 버전)를 삭제합니다.

    • OpenShift Container Platform의 경우 다음 명령을 실행합니다.

      $ oc -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
    • Kubernetes의 경우 다음 명령을 실행합니다.

      $ kubectl -n rhacs-operator delete csv -l operators.coreos.com/rhacs-operator.rhacs-operator
  3. 다음 옵션 중 하나를 선택하여 롤백할 이전 버전을 결정합니다.

    • 현재 Central 인스턴스가 실행 중인 경우 RHACS API를 쿼리하여 다음 명령을 실행하여 롤백 버전을 가져옵니다.

      $ curl -k -s -u <user>:<password> https://<central hostname>/v1/centralhealth/upgradestatus | jq -r .upgradeStatus.forceRollbackTo
    • 현재 Central 인스턴스가 실행되고 있지 않은 경우 다음 단계를 수행합니다.

      참고

      이 절차는 Rillsdb 데이터베이스를 설치할 때 RHACS 릴리스 3.74 및 이전 버전에 만 사용할 수 있습니다.

      1. 다음 명령을 실행하여 중앙 배포가 축소되었는지 확인합니다.

        • OpenShift Container Platform의 경우 다음 명령을 실행합니다.

          $ oc scale -n <central namespace> –replicas=0 deploy/central
        • Kubernetes의 경우 다음 명령을 실행합니다.

          $ kubectl scale -n <central namespace> –replicas=0 deploy/central
      2. 다음 Pod 사양을 YAML 파일로 저장합니다.

        apiVersion: v1
        kind: Pod
        metadata:
          name: get-previous-db-version
        spec:
          containers:
          - name: get-previous-db-version
            image: registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<rollback version>
            command:
            - sh
            args:
            - '-c'
            - "cat /var/lib/stackrox/.previous/migration_version.yaml | grep '^image:' | cut -f 2 -d : | tr -d ' '"
            volumeMounts:
            - name: stackrox-db
              mountPath: /var/lib/stackrox
          volumes:
          - name: stackrox-db
            persistentVolumeClaim:
              claimName: stackrox-db
      3. 저장한 YAML 파일을 사용하여 다음 명령을 실행하여 중앙 네임스페이스에 Pod를 생성합니다.

        • OpenShift Container Platform의 경우 다음 명령을 실행합니다.

          $ oc create -n <central namespace> -f pod.yaml
        • Kubernetes의 경우 다음 명령을 실행합니다.

          $ kubectl create -n <central namespace> -f pod.yaml
      4. Pod 생성이 완료되면 다음 명령을 실행하여 버전을 가져옵니다.

        • OpenShift Container Platform의 경우 다음 명령을 실행합니다.

          $ oc logs -n <central namespace> get-previous-db-version
        • Kubernetes의 경우 다음 명령을 실행합니다.

          $ kubectl logs -n <central namespace> get-previous-db-version
  4. central-config.yaml ConfigMap 을 편집하여 다음 명령을 실행하여 maintenance.forceRollBackVersion:<version > 매개변수를 설정합니다.

    • OpenShift Container Platform의 경우 다음 명령을 실행합니다.

      $ oc get configmap -n <central namespace> central-config -o yaml | sed -e "s/forceRollbackVersion: none/forceRollbackVersion: <version>/" | oc -n <central namespace> apply -f -
    • Kubernetes의 경우 다음 명령을 실행합니다.

      $ kubectl get configmap -n <central namespace> central-config -o yaml | sed -e "s/forceRollbackVersion: none/forceRollbackVersion: <version>/" | kubectl -n <central namespace> apply -f -
  5. 3단계에 표시된 version 문자열을 이미지 태그로 사용하여 중앙 배포의 이미지를 설정합니다. 예를 들어 다음 명령을 실행합니다.

    • OpenShift Container Platform의 경우 다음 명령을 실행합니다.

      $ oc set image -n <central namespace> deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<version>
    • Kubernetes의 경우 다음 명령을 실행합니다.

      $ kubectl set image -n <central namespace> deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<version>

검증

  1. 중앙 Pod가 시작되고 준비 상태인지 확인합니다. Pod가 충돌하는 경우 로그를 확인하여 백업이 복원되었는지 확인합니다. 성공 로그 메시지는 다음 예와 유사합니다.

    Clone to Migrate ".previous", ""
  2. 롤백된 백엔드 채널에 Operator를 다시 설치합니다. 예를 들어 3.74.2rhacs-3.74 채널에 설치됩니다.

1.6.2. 웹 콘솔을 사용하여 Operator 업그레이드 롤백

OpenShift Container Platform 웹 콘솔을 사용하여 Operator 버전을 롤백할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터 웹 콘솔에 액세스할 수 있습니다.

절차

  1. Operator설치된 Operator 페이지로 이동합니다.
  2. RHACS Operator를 찾아 클릭합니다.
  3. Operator 세부 정보 페이지의 작업 목록에서 Operator 제거를 선택합니다. 이 작업 후에 Operator는 실행을 중지하고 더 이상 업데이트가 수신되지 않습니다.
  4. 다음 옵션 중 하나를 선택하여 롤백할 이전 버전을 결정합니다.

    • 현재 중앙 인스턴스가 실행 중인 경우 터미널 창에서 다음 명령을 실행하여 RHACS API를 쿼리하여 롤백 버전을 가져올 수 있습니다.

      $ curl -k -s -u <user>:<password> https://<central hostname>/v1/centralhealth/upgradestatus | jq -r .upgradeStatus.forceRollbackTo
    • 다음 단계를 수행하여 Pod를 생성하고 이전 버전을 추출할 수 있습니다.

      참고

      이 절차는 Rillsdb 데이터베이스를 설치할 때 RHACS 릴리스 3.74 및 이전 버전에 만 사용할 수 있습니다.

      1. 워크로드 → 배포 중앙 으로 이동합니다.
      2. 배포 세부 정보에서 포드 수 옆에 있는 아래쪽 화살표를 클릭하여 Pod를 축소합니다.
      3. 워크로드PodPod 생성 으로 이동하여 다음 예에 표시된 대로 Pod 사양의 내용을 편집기에 붙여넣습니다.

        apiVersion: v1
        kind: Pod
        metadata:
          name: get-previous-db-version
        spec:
          containers:
          - name: get-previous-db-version
            image: registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<rollback version>
            command:
            - sh
            args:
            - '-c'
            - "cat /var/lib/stackrox/.previous/migration_version.yaml | grep '^image:' | cut -f 2 -d : | tr -d ' '"
            volumeMounts:
            - name: stackrox-db
              mountPath: /var/lib/stackrox
          volumes:
          - name: stackrox-db
            persistentVolumeClaim:
              claimName: stackrox-db
      4. 생성을 클릭합니다.
      5. 포드가 생성되면 로그 탭을 클릭하여 버전 문자열을 가져옵니다.
  5. 다음 단계를 수행하여 롤백 구성을 업데이트합니다.

    1. 워크로드 → ConfigMaps central-config 로 이동하여 작업 목록에서 ConfigMap 편집 을 선택합니다.
    2. central-config.yaml 키 값에서 forceRollbackVersion 행을 찾습니다.
    3. none3.73.3 으로 교체한 다음 파일을 저장합니다.
  6. 다음 단계를 수행하여 이전 버전으로 중앙을 업데이트합니다.

    1. 워크로드 → 배포 중앙 으로 이동하고 작업 목록에서 배포 편집 을 선택합니다.
    2. 이미지 이름을 업데이트한 다음 변경 사항을 저장합니다.

검증

  1. 중앙 Pod가 시작되고 준비 상태인지 확인합니다. Pod가 충돌하는 경우 로그를 확인하여 백업이 복원되었는지 확인합니다. 성공 로그 메시지는 다음 예와 유사합니다.

    Clone to Migrate ".previous", ""
  2. 롤백된 백엔드 채널에 Operator를 다시 설치합니다. 예를 들어 3.74.2rhacs-3.74 채널에 설치됩니다.

1.7. Operator 업그레이드 문제 해결

이 섹션의 지침에 따라 RHACS Operator의 업그레이드 관련 문제를 조사하고 해결합니다.

1.7.1. Central DB를 예약할 수 없습니다

여기에서 지침에 따라 업그레이드 중에 실패한 중앙 DB Pod의 문제를 해결합니다.

  1. central-db Pod의 상태를 확인합니다.

    $ oc -n <namespace> get pod -l app=central-db 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  2. Pod 상태가 Pending 이면 describe 명령을 사용하여 자세한 정보를 가져옵니다.

    $ oc -n <namespace> describe po/<central-db-pod-name> 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  3. FailedScheduling 경고 메시지가 표시될 수 있습니다.

    Type     Reason            Age   From               Message
    ----     ------            ----  ----               -------
    Warning  FailedScheduling  54s   default-scheduler  0/7 nodes are available: 1 Insufficient memory, 3 node(s) had untolerated taint {node-role.kubernetes.io/master: }, 4 Insufficient cpu. preemption: 0/7 nodes are available: 3 Preemption is not helpful for scheduling, 4 No preemption victims found for incoming pod.
  4. 이 경고 메시지는 예약된 노드에 Pod의 리소스 요구 사항을 수용하기 위한 메모리가 충분하지 않음을 나타냅니다. 소규모 환경이 있는 경우 노드에서 리소스를 늘리거나 데이터베이스를 지원할 수 있는 더 큰 노드를 추가하는 것이 좋습니다.

    그렇지 않으면 중앙 → db → 리소스의 사용자 정의 리소스에서 central -db Pod에 대한 리소스 요구 사항을 줄이는 것이 좋습니다. 그러나 권장 최소값보다 적은 리소스로 중앙을 실행하면 RHACS의 성능이 저하될 수 있습니다.

1.7.2. 중앙 또는 보안 클러스터 배포 실패

RHACS Operator의 경우:

  • 중앙 또는 보안 클러스터를 배포하지 못했습니다.
  • 실제 리소스에 CR 변경 사항을 적용하지 못했습니다.

문제를 찾으려면 사용자 정의 리소스 조건을 확인해야 합니다.

  • Central의 경우 다음 명령을 실행하여 조건을 확인합니다.

    $ oc -n rhacs-operator describe centrals.platform.stackrox.io 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  • 보안 클러스터의 경우 다음 명령을 실행하여 조건을 확인합니다.

    $ oc -n rhacs-operator describe securedclusters.platform.stackrox.io 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

조건 출력에서 구성 오류를 확인할 수 있습니다.

출력 예

 Conditions:
    Last Transition Time:  2023-04-19T10:49:57Z
    Status:                False
    Type:                  Deployed
    Last Transition Time:  2023-04-19T10:49:57Z
    Status:                True
    Type:                  Initialized
    Last Transition Time:  2023-04-19T10:59:10Z
    Message:               Deployment.apps "central" is invalid: spec.template.spec.containers[0].resources.requests: Invalid value: "50": must be less than or equal to cpu limit
    Reason:                ReconcileError
    Status:                True
    Type:                  Irreconcilable
    Last Transition Time:  2023-04-19T10:49:57Z
    Message:               No proxy configuration is desired
    Reason:                NoProxyConfig
    Status:                False
    Type:                  ProxyConfigFailed
    Last Transition Time:  2023-04-19T10:49:57Z
    Message:               Deployment.apps "central" is invalid: spec.template.spec.containers[0].resources.requests: Invalid value: "50": must be less than or equal to cpu limit
    Reason:                InstallError
    Status:                True
    Type:                  ReleaseFailed

또한 RHACS Pod 로그를 보고 문제에 대한 자세한 정보를 확인할 수 있습니다. 다음 명령을 실행하여 로그를 확인합니다.

oc -n rhacs-operator logs deploy/rhacs-operator-controller-manager manager 1
1
Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

2장. Helm 차트를 사용하여 업그레이드

지원되는 이전 버전에서 Red Hat Advanced Cluster Security for Kubernetes의 최신 버전으로 업그레이드할 수 있습니다. RHACS 4.0으로 업그레이드하려면 RHACS 3.74의 최신 패치 릴리스를 사용해야 합니다. 이전 버전을 사용하는 경우 먼저 RHACS 3.74로 업그레이드해야 합니다.

Helm 차트를 사용하여 Red Hat Advanced Cluster Security for Kubernetes를 설치한 경우 최신 버전의 Red Hat Advanced Cluster Security for Kubernetes로 업그레이드하려면 다음을 수행해야 합니다.

  • 중앙 데이터베이스를 백업합니다.
  • (선택 사항) Central 데이터베이스 및 PVC(영구 볼륨 클레임)입니다.
  • (선택 사항) 중앙 서비스 Helm 차트에 대한 루트 인증서가 포함된 values-private.yaml 구성 파일을 생성합니다.
  • Helm 차트를 업데이트합니다.
  • helm upgrade 명령을 실행합니다.
중요

최적의 기능을 유지하려면 보안 클러스터 서비스 Helm 차트 및 중앙 서비스 Helm 차트에 동일한 버전을 사용하십시오.

2.1. 중앙 데이터베이스 백업

중앙 데이터베이스를 백업하고 인프라 재해 발생 시 실패한 업그레이드 또는 데이터 복원에서 해당 백업을 사용하여 롤백할 수 있습니다.

사전 요구 사항

  • Red Hat Advanced Cluster Security for Kubernetes의 모든 리소스에 대한 읽기 권한이 있는 API 토큰이 있어야 합니다. Analyst 시스템 역할에는 모든 리소스에 대한 읽기 권한이 있습니다.
  • roxctl CLI를 설치했습니다.
  • ROX_API_TOKENROX_CENTRAL_ADDRESS 환경 변수를 구성했습니다.

절차

  • backup 명령을 실행합니다.

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup

2.2. 중앙 데이터베이스 및 PVC 최적화

RHACS(Red Hat Advanced Cluster Security for Kubernetes) 4.0으로 업그레이드할 때 RHACS는 기본 PVC(영구 볼륨 클레임)를 사용하여 central-db 라는 PostgreSQL 인스턴스를 생성합니다. 선택적으로 central-db 또는 PVC 구성을 사용자 지정할 수 있습니다.

Red Hat은 다음과 같은 최소 메모리 및 CPU 요청을 권장합니다.

central:
  db:
    resources:
      requests:
        memory: 16Gi
        cpu: 8
      limits:
        memory: 16Gi
        cpu: 8

2.3. 루트 인증서 파일 생성

Red Hat Advanced Cluster Security for Kubernetes(RHACS)를 설치하는 데 사용한 값-private.yaml 구성 파일에 액세스할 수 없는 경우 다음 명령을 사용하여 루트 인증서가 포함된 values-private.yaml 구성 파일을 생성합니다.

values-private.yaml 구성 파일에 액세스할 수 있는 경우 여기에서 지침을 건너뜁니다.

중요

생성된 values-private.yaml 파일에는 중요한 구성 옵션이 있습니다. 이 파일을 안전하게 저장해야 합니다.

절차

  1. create_certificate_values_file.sh 스크립트를 다운로드합니다.
  2. create_certificate_values_file.sh 스크립트를 실행 가능하게 만듭니다.

    $ chmod +x create_certificate_values_file.sh
  3. create_certificate_values_file.sh 스크립트 파일을 실행합니다.

    $ create_certificate_values_file.sh values-private.yaml

2.4. Helm 차트 리포지터리 업데이트

Red Hat Advanced Cluster Security for Kubernetes의 새 버전으로 업그레이드하기 전에 Helm 차트를 항상 업데이트해야 합니다.

사전 요구 사항

  • Kubernetes Helm 차트 리포지터리에 대한 Red Hat Advanced Cluster Security를 이미 추가해야 합니다.
  • Helm 버전 3.8.3 이상을 사용해야 합니다.

절차

  • Red Hat Advanced Cluster Security for Kubernetes 차트 리포지토리를 업데이트합니다.

    $ helm repo update

검증

  • 다음 명령을 실행하여 추가된 차트 리포지터리를 확인합니다.

    $ helm search repo -l rhacs/

2.5. 추가 리소스

2.6. Helm upgrade 명령 실행

helm upgrade 명령을 사용하여 RHACS(Red Hat Advanced Cluster Security for Kubernetes)를 업데이트할 수 있습니다.

사전 요구 사항

  • RHACS(Red Hat Advanced Cluster Security for Kubernetes)를 설치하는 데 사용한 값-private.yaml 구성 파일에 액세스할 수 있어야 합니다. 그렇지 않으면 여기에서 명령을 진행하기 전에 values-private.yaml 구성 파일에 루트 인증서가 포함되어 있어야 합니다.

절차

  • helm upgrade 명령을 실행하고 -f 옵션을 사용하여 구성 파일을 지정합니다.

    $ helm upgrade -n stackrox stackrox-central-services \
      rhacs/central-services --version <current-rhacs-version> \ 1
      -f values-private.yaml \
      --set central.db.password.generate=true \
      --set central.db.serviceTLS.generate=true \
      --set central.db.persistence.persistentVolumeClaim.createClaim=true
    참고

    --reuse-values 옵션을 사용하여 업그레이드 중에 이전에 구성한 Helm 값을 유지할 수 있습니다. 이 작업을 수행하는 경우 다음 버전으로 업그레이드하기 전에 central-db 생성을 해제해야 합니다. 예를 들면 다음과 같습니다.

    $ helm upgrade -n stackrox stackrox-central-services \
      rhacs/central-services --version <current-rhacs-version> --reuse-values \
      -f values-private.yaml \
      --set central.db.password.generate=false \
      --set central.db.serviceTLS.generate=false \
      --set central.db.persistence.persistentVolumeClaim.createClaim=false

2.7. 중앙 연결 PV 제거

Kubernetes 및 OpenShift Container Platform은 PV(영구 볼륨)를 자동으로 삭제하지 않습니다. 이전 버전에서 RHACS를 업그레이드하면 stackrox-db 라는 중앙 PV가 마운트된 상태로 유지됩니다. 그러나 RHACS 4.1에서는 이전에 연결된 PV가 더 이상 필요하지 않습니다.

PV에는 이전 RHACS 버전에서 사용하는 데이터 및 영구 파일이 있습니다. PV를 사용하여 RHACS 4.1 이전 버전으로 롤백할 수 있습니다. 또는 Central용 큰 RocksDB 백업 번들이 있는 경우 PV를 사용하여 해당 데이터를 복원할 수 있습니다.

이전 RocksDB 백업에서 롤백하거나 복원하지 않으려면 중앙 연결 PVC(영구 볼륨 클레임)를 제거하여 스토리지를 확보할 수 있습니다.

주의

PVC를 제거한 후에는 RHACS 4.1 전에 Central을 롤백하거나 RocksDB로 생성된 대규모 RocksDB 백업을 복원할 수 없습니다.

2.7.1. Helm을 사용하여 중앙 연결 PV 제거

중앙 연결 PVC(영구 볼륨 클레임) stackrox-db 를 제거하여 스토리지 공간을 확보합니다.

절차

  • 다음 명령을 실행합니다.

    $ helm upgrade -n stackrox stackrox-central-services \
        rhacs/central-services --version <current-rhacs-version> \
        --set central.persistence.none=true

검증

  • 다음 명령을 실행합니다.

    $ oc -n stackrox describe pvc stackrox-db | grep -i 'Used By'
    Used By: <none> 1
    1 1
    용도가 표시될 때까지 기다립니다 : <none>. 이 작업을 수행하는 데 몇 분 정도 걸릴 수 있습니다.

2.8. Helm 업그레이드 롤백

새 버전으로 업그레이드할 수 없는 경우 이전 버전의 Central으로 롤백할 수 있습니다.

절차

  1. 다음 helm upgrade 명령을 실행합니다.

    $ helm upgrade -n stackrox \
      stackrox-central-services rhacs/central-services \
      --version <previous_rhacs_74_version> \ 1
      --set central.db.enabled=false
    1
    & lt;previous_rhacs_74_version >을 이전에 설치한 RHACS 버전으로 바꿉니다.
  2. central-db PVC(영구 볼륨 클레임)를 삭제합니다.

    $ oc -n stackrox delete pvc central-db 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

3장. roxctl CLI를 사용하여 수동으로 업그레이드

지원되는 이전 버전에서 최신 버전의 RHACS(Red Hat Advanced Cluster Security for Kubernetes)로 업그레이드할 수 있습니다.

중요
  • roxctl CLI를 사용하여 RHACS를 설치하는 경우에만 수동 업그레이드 절차를 수행해야 합니다.
  • RHACS 4.0으로 업그레이드하려면 RHACS 3.74의 최신 패치 릴리스를 사용해야 합니다. 이전 버전을 사용하는 경우 RHACS 4.0으로 업그레이드하기 전에 RHACS 3.74로 업그레이드해야 합니다.

Red Hat Advanced Cluster Security for Kubernetes를 최신 버전으로 업그레이드하려면 다음을 수행해야 합니다.

  • 중앙 데이터베이스 백업
  • roxctl CLI 업그레이드
  • 중앙 데이터베이스 프로비저닝 번들 생성
  • 업그레이드 중임
  • 업그레이드 스캐너
  • 업그레이드된 모든 보안 클러스터 확인

3.1. 중앙 데이터베이스 백업

중앙 데이터베이스를 백업하고 인프라 재해 발생 시 실패한 업그레이드 또는 데이터 복원에서 해당 백업을 사용하여 롤백할 수 있습니다.

사전 요구 사항

  • Red Hat Advanced Cluster Security for Kubernetes의 모든 리소스에 대한 읽기 권한이 있는 API 토큰이 있어야 합니다. Analyst 시스템 역할에는 모든 리소스에 대한 읽기 권한이 있습니다.
  • roxctl CLI를 설치했습니다.
  • ROX_API_TOKENROX_CENTRAL_ADDRESS 환경 변수를 구성했습니다.

절차

  • backup 명령을 실행합니다.

    $ roxctl -e "$ROX_CENTRAL_ADDRESS" central backup

3.2. roxctl CLI 업그레이드

roxctl CLI를 최신 버전으로 업그레이드하려면 기존 버전의 roxctl CLI를 제거한 다음 최신 버전의 roxctl CLI를 설치해야 합니다.

3.2.1. roxctl CLI 설치 제거

다음 절차에 따라 Linux에서 roxctl CLI 바이너리를 제거할 수 있습니다.

절차

  • roxctl 바이너리를 찾아 삭제합니다.

    $ ROXPATH=$(which roxctl) && rm -f $ROXPATH 1
    1
    환경에 따라 roxctl 바이너리를 삭제하려면 관리자 권한이 필요할 수 있습니다.

3.2.2. Linux에 roxctl CLI 설치

다음 절차에 따라 Linux에 roxctl CLI 바이너리를 설치할 수 있습니다.

절차

  1. roxctl CLI의 최신 버전을 다운로드합니다.

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/4.1.5/bin/Linux/roxctl
  2. roxctl 바이너리를 실행 가능하게 만듭니다.

    $ chmod +x roxctl
  3. roxctl 바이너리를 PATH 에 있는 디렉터리에 배치합니다.

    PATH를 확인하려면 다음 명령을 실행합니다.

    $ echo $PATH

검증

  • 설치한 roxctl 버전을 확인합니다.

    $ roxctl version

3.2.3. macOS에 roxctl CLI 설치

다음 절차를 사용하여 macOS에 roxctl CLI 바이너리를 설치할 수 있습니다.

절차

  1. roxctl CLI의 최신 버전을 다운로드합니다.

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/4.1.5/bin/Darwin/roxctl
  2. 바이너리에서 모든 확장 속성을 제거합니다.

    $ xattr -c roxctl
  3. roxctl 바이너리를 실행 가능하게 만듭니다.

    $ chmod +x roxctl
  4. roxctl 바이너리를 PATH 에 있는 디렉터리에 배치합니다.

    PATH를 확인하려면 다음 명령을 실행합니다.

    $ echo $PATH

검증

  • 설치한 roxctl 버전을 확인합니다.

    $ roxctl version

3.2.4. Windows에 roxctl CLI 설치

다음 절차를 사용하여 Windows에 roxctl CLI 바이너리를 설치할 수 있습니다.

절차

  • roxctl CLI의 최신 버전을 다운로드합니다.

    $ curl -O https://mirror.openshift.com/pub/rhacs/assets/4.1.5/bin/Windows/roxctl.exe

검증

  • 설치한 roxctl 버전을 확인합니다.

    $ roxctl version

3.3. 중앙 데이터베이스 프로비저닝 번들 생성

Central을 업그레이드하기 전에 먼저 데이터베이스 프로비저닝 번들을 생성해야 합니다. 이 번들은 README 파일, 몇 가지 YAML 구성 파일 및 설치 프로세스를 지원하는 일부 스크립트가 있는 tar 아카이브입니다.

사전 요구 사항

  • Admin 역할이 있는 API 토큰이 있어야 합니다.
  • roxctl CLI가 설치되어 있어야 합니다.

절차

  1. ROX_API_TOKENROX_CENTRAL_ADDRESS 환경 변수를 설정합니다.

    $ export ROX_API_TOKEN=<api_token>
    $ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
  2. central db generate 명령을 실행합니다.

    $ roxctl -e $ROX_CENTRAL_ADDRESS central db generate \
      <cluster_type> \ 1
      <storage> \ 2
      --output-dir <bundle_dir> \ 3
      --central-db-image registry.redhat.io/advanced-cluster-security/rhacs-central-db-rhel8:4.1.5
    1
    cluster-type 은 클러스터 유형이며 OpenShift Container Platform의 경우 k8s for Kubernetes 및 openshift 를 지정합니다.
    2
    스토리지 의 경우 hostpath 또는 pvc 를 지정합니다. pvc 를 사용하는 경우 추가 옵션을 사용하여 볼륨 이름, 크기 및 스토리지 클래스를 지정할 수 있습니다. 자세한 내용은 $ roxctl central db generate openshift pvc -h 를 실행합니다.
    3
    bundle-dir 의 경우 생성된 프로비저닝 번들을 저장할 경로를 지정합니다.

다음 단계

  • 중앙 DB 프로비저닝 번들을 사용하여 추가 리소스를 생성합니다.

3.4. 중앙 DB 프로비저닝 번들을 사용하여 리소스 생성

Central 클러스터를 업그레이드하기 전에 Central DB 프로비저닝 번들을 사용하여 Central 클러스터에 필요한 추가 리소스를 생성해야 합니다. 이 번들은 README 파일, 몇 가지 YAML 구성 파일 및 설치 프로세스를 지원하는 일부 스크립트가 있는 tar 아카이브입니다.

사전 요구 사항

  • 중앙 DB 프로비저닝 번들을 생성해야 합니다.
  • tar 아카이브 번들을 추출해야 합니다.

절차

  1. 추출된 번들 디렉터리를 열고 설정 스크립트를 실행합니다.

    $ ./scripts/setup.sh
  2. deploy-central-db 스크립트를 실행합니다.

    $ ./deploy-central-db.sh

3.5. 중앙 클러스터 업그레이드

중앙 데이터베이스의 백업을 생성하고 프로비저닝 번들을 사용하여 필요한 리소스를 생성한 후 다음 단계는 Central 클러스터를 업그레이드하는 것입니다. 이 프로세스는 중앙 및 스캐너를 업그레이드해야 합니다.

3.5.1. 중앙 업그레이드

업데이트된 이미지를 다운로드하여 배포하여 Central을 최신 버전으로 업데이트할 수 있습니다.

절차

  • 다음 명령을 실행하여 중앙 이미지를 업데이트합니다.

    $ oc -n stackrox set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.1.5 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

검증

  • 새 Pod가 배포되었는지 확인합니다.

    $ oc get deploy -n stackrox -o wide
    $ oc get pod -n stackrox --watch

3.5.2. 중앙 업그레이드

업데이트된 이미지를 다운로드하여 배포하여 스캐너를 최신 버전으로 업데이트할 수 있습니다.

절차

  • 다음 명령을 실행하여 스캐너 이미지를 업데이트합니다.

    $ oc -n stackrox set image deploy/scanner scanner=registry.redhat.io/advanced-cluster-security/rhacs-scanner-rhel8:4.1.5 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

검증

  • 새 Pod가 배포되었는지 확인합니다.

    $ oc get deploy -n stackrox -o wide
    $ oc get pod -n stackrox --watch

3.5.3. 중앙 클러스터 업그레이드 확인

중앙 및 스캐너를 모두 업그레이드한 후 중앙 클러스터 업그레이드가 완료되었는지 확인합니다.

절차

  • 다음 명령을 실행하여 중앙 로그를 확인합니다.

    $ oc logs -n stackrox deploy/central -c central 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

성공적인 업그레이드의 샘플 출력

No database restore directory found (this is not an error).
Migrator: 2023/04/19 17:58:54: starting DB compaction
Migrator: 2023/04/19 17:58:54: Free fraction of 0.0391 (40960/1048576) is < 0.7500. Will not compact
badger 2023/04/19 17:58:54 INFO: All 1 tables opened in 2ms
badger 2023/04/19 17:58:55 INFO: Replaying file id: 0 at offset: 846357
badger 2023/04/19 17:58:55 INFO: Replay took: 50.324µs
badger 2023/04/19 17:58:55 DEBUG: Value log discard stats empty
Migrator: 2023/04/19 17:58:55: DB is up to date. Nothing to do here.
badger 2023/04/19 17:58:55 INFO: Got compaction priority: {level:0 score:1.73 dropPrefix:[]}
version: 2023/04/19 17:58:55.189866 ensure.go:49: Info: Version found in the DB was current. We’re good to go!

3.6. 모든 보안 클러스터 업그레이드

중앙 서비스를 업그레이드한 후 모든 보안 클러스터를 업그레이드해야 합니다.

중요
  • 자동 업그레이드를 사용하는 경우:

    • 자동 업그레이드를 사용하여 모든 보안 클러스터를 업데이트합니다.
    • 이 섹션의 지침을 건너뛰고 업그레이드 확인API 토큰 취소 섹션의 지침을 따르십시오.
  • 자동 업그레이드를 사용하지 않는 경우 Central 클러스터를 포함한 모든 보안 클러스터에 대한 이 섹션의 지침을 실행해야 합니다.

    • 최적의 기능을 유지하려면 보안 클러스터에 동일한 RHACS 버전을 사용하고 Central이 설치된 클러스터를 사용합니다.

센서, 수집기 및 Admission 컨트롤러를 실행하는 각 보안 클러스터의 수동 업그레이드를 완료하려면 이 섹션의 지침을 따르십시오.

3.6.1. 다른 이미지 업데이트

자동 업그레이드를 사용하지 않는 경우 각 보안 클러스터에서 센서, 수집기 및 규정 준수 이미지를 업데이트해야 합니다.

참고

Kubernetes를 사용하는 경우 이 절차에 나열된 명령에 oc 대신 kubectl 을 사용합니다.

절차

  1. 센서 이미지를 업데이트합니다.

    $ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.1.5 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  2. Compliance 이미지를 업데이트합니다.

    $ oc -n stackrox set image ds/collector compliance=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.1.5 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  3. 수집기 이미지를 업데이트합니다.

    $ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.1.5 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
    참고

    수집기 슬림 이미지를 사용하는 경우 다음 명령을 실행합니다.

    $ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-slim-rhel8:{rhacs-version}
  4. 승인 제어 이미지를 업데이트합니다.

    $ oc -n stackrox set image deploy/admission-control admission-control=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.1.5

3.6.2. 보안 클러스터 업그레이드 확인

보안 클러스터를 업그레이드한 후 업데이트된 Pod가 작동하는지 확인합니다.

절차

  • 새 Pod가 배포되었는지 확인합니다.

    $ oc get deploy,ds -n stackrox -o wide 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
    $ oc get pod -n stackrox --watch 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

3.6.3. RHCOS 노드 스캔 활성화

OpenShift Container Platform을 사용하는 경우 RHACS(Red Hat Advanced Cluster Security for Kubernetes)를 사용하여 RHCOS(Red Hat Enterprise Linux CoreOS) 노드 검사를 활성화할 수 있습니다.

사전 요구 사항

  • Secured 클러스터의 RHCOS 노드 호스트를 스캔하려면 OpenShift Container Platform 4.10 이상에 Secured 클러스터를 설치해야 합니다. 지원되는 관리 및 자체 관리 OpenShift Container Platform 버전에 대한 자세한 내용은 Red Hat Advanced Cluster Security for Kubernetes 지원 정책을 참조하십시오.

절차

  1. 다음 명령 중 하나를 실행하여 규정 준수 컨테이너를 업데이트합니다.

    • 메트릭이 비활성화된 기본 규정 준수 컨테이너의 경우 다음 명령을 실행합니다.

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":"disabled"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
    • Prometheus 지표가 활성화된 규정 준수 컨테이너의 경우 다음 명령을 실행합니다.

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"name":"compliance","env":[{"name":"ROX_METRICS_PORT","value":":9091"},{"name":"ROX_NODE_SCANNING_ENDPOINT","value":"127.0.0.1:8444"},{"name":"ROX_NODE_SCANNING_INTERVAL","value":"4h"},{"name":"ROX_NODE_SCANNING_INTERVAL_DEVIATION","value":"24m"},{"name":"ROX_NODE_SCANNING_MAX_INITIAL_WAIT","value":"5m"},{"name":"ROX_RHCOS_NODE_SCANNING","value":"true"},{"name":"ROX_CALL_NODE_INVENTORY_ENABLED","value":"true"}]}]}}}}'
  2. 다음 단계를 수행하여 수집기 DaemonSet(DS)을 업데이트합니다.

    1. 다음 명령을 실행하여 수집기 DS에 새 볼륨 마운트를 추가합니다.

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
    2. 다음 명령을 실행하여 새 NodeScanner 컨테이너를 추가합니다.

      $ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"containers":[{"command":["/scanner","--nodeinventory","--config=",""],"env":[{"name":"ROX_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ROX_CLAIR_V4_SCANNING","value":"true"},{"name":"ROX_COMPLIANCE_OPERATOR_INTEGRATION","value":"true"},{"name":"ROX_CSV_EXPORT","value":"false"},{"name":"ROX_DECLARATIVE_CONFIGURATION","value":"false"},{"name":"ROX_INTEGRATIONS_AS_CONFIG","value":"false"},{"name":"ROX_NETPOL_FIELDS","value":"true"},{"name":"ROX_NETWORK_DETECTION_BASELINE_SIMULATION","value":"true"},{"name":"ROX_NETWORK_GRAPH_PATTERNFLY","value":"true"},{"name":"ROX_NODE_SCANNING_CACHE_TIME","value":"3h36m"},{"name":"ROX_NODE_SCANNING_INITIAL_BACKOFF","value":"30s"},{"name":"ROX_NODE_SCANNING_MAX_BACKOFF","value":"5m"},{"name":"ROX_PROCESSES_LISTENING_ON_PORT","value":"false"},{"name":"ROX_QUAY_ROBOT_ACCOUNTS","value":"true"},{"name":"ROX_ROXCTL_NETPOL_GENERATE","value":"true"},{"name":"ROX_SOURCED_AUTOGENERATED_INTEGRATIONS","value":"false"},{"name":"ROX_SYSLOG_EXTRA_FIELDS","value":"true"},{"name":"ROX_SYSTEM_HEALTH_PF","value":"false"},{"name":"ROX_VULN_MGMT_WORKLOAD_CVES","value":"false"}],"image":"registry.redhat.io/advanced-cluster-security/rhacs-scanner-slim-rhel8:4.1.5","imagePullPolicy":"IfNotPresent","name":"node-inventory","ports":[{"containerPort":8444,"name":"grpc","protocol":"TCP"}],"volumeMounts":[{"mountPath":"/host","name":"host-root-ro","readOnly":true},{"mountPath":"/tmp/","name":"tmp-volume"},{"mountPath":"/cache","name":"cache-volume"}]}]}}}}'

3.7. 중앙 연결 PV 제거

Kubernetes 및 OpenShift Container Platform은 PV(영구 볼륨)를 자동으로 삭제하지 않습니다. 이전 버전에서 RHACS를 업그레이드하면 stackrox-db 라는 중앙 PV가 마운트된 상태로 유지됩니다. 그러나 RHACS 4.1에서는 이전에 연결된 PV가 더 이상 필요하지 않습니다.

PV에는 이전 RHACS 버전에서 사용하는 데이터 및 영구 파일이 있습니다. PV를 사용하여 RHACS 4.1 이전 버전으로 롤백할 수 있습니다. 또는 Central용 큰 RocksDB 백업 번들이 있는 경우 PV를 사용하여 해당 데이터를 복원할 수 있습니다.

이전 RocksDB 백업에서 롤백하거나 복원하지 않으려면 중앙 연결 PVC(영구 볼륨 클레임)를 제거하여 스토리지를 확보할 수 있습니다.

주의

PVC를 제거한 후에는 RHACS 4.1 전에 Central을 롤백하거나 RocksDB로 생성된 대규모 RocksDB 백업을 복원할 수 없습니다.

3.7.1. roxctl CLI를 사용하여 중앙 연결 PV 제거

중앙 연결 PVC(영구 볼륨 클레임) stackrox-db 를 제거하여 스토리지 공간을 확보합니다.

절차

  • 다음 명령을 실행합니다.

    $ oc get deployment central -n stackrox -o json | jq '(.spec.template.spec.volumes[] | select(.name=="stackrox-db"))={"name": "stackrox-db", "emptyDir": {}}' | oc apply -f -

    spec.template.spec.volumesstackrox-db' 항목을 로컬 emptyDir로 대체합니다.

검증

  • 다음 명령을 실행합니다.

    $ oc -n stackrox describe pvc stackrox-db | grep -i 'Used By'
    Used By: <none> 1
    1
    용도가 표시될 때까지 기다립니다 : <none>. 이 작업을 수행하는 데 몇 분 정도 걸릴 수 있습니다.

3.8. 롤백 중부

새 버전으로 업그레이드할 수 없는 경우 이전 버전의 Central으로 롤백할 수 있습니다.

3.8.1. 일반적으로 Central 롤백

Red Hat Advanced Cluster Security for Kubernetes 업그레이드에 실패하는 경우 이전 버전의 Central으로 롤백할 수 있습니다.

사전 요구 사항

  • 롤백을 수행하려면 영구 스토리지에 사용 가능한 디스크 공간이 있어야 합니다. Red Hat Advanced Cluster Security for Kubernetes는 디스크 공간을 사용하여 업그레이드 중에 데이터베이스 복사본을 유지합니다. 디스크 공간이 복사본을 저장하기에 충분하지 않고 업그레이드가 실패하면 이전 버전으로 롤백하지 못할 수 있습니다.

절차

  • 다음 명령을 실행하여 업그레이드가 실패할 때 이전 버전으로 롤백합니다(중앙 서비스가 시작되기 전에).

    $ oc -n stackrox rollout undo deploy/central 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.

3.8.2. 중앙 집중식으로 롤백

강제 롤백을 사용하여 이전 버전의 Central(중앙 서비스가 시작된 후)으로 롤백할 수 있습니다.

중요

강제 롤백을 사용하여 이전 버전으로 다시 전환하면 데이터 및 기능이 손실될 수 있습니다.

사전 요구 사항

  • 롤백을 수행하려면 영구 스토리지에 사용 가능한 디스크 공간이 있어야 합니다. Red Hat Advanced Cluster Security for Kubernetes는 디스크 공간을 사용하여 업그레이드 중에 데이터베이스 복사본을 유지합니다. 디스크 공간이 복사본을 저장하기에 충분하지 않고 업그레이드가 실패하면 이전 버전으로 롤백할 수 없습니다.

절차

  • 다음 명령을 실행하여 강제 롤백을 수행합니다.

    • 이전에 설치한 버전으로 강제로 롤백하려면 다음을 수행합니다.

      $ oc -n stackrox rollout undo deploy/central 1
      1
      Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
    • 특정 버전으로 강제 롤백하려면 다음을 수행합니다.

      1. 중앙의 ConfigMap 편집 :

        $ oc -n stackrox edit configmap/central-config 1
        1
        Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
      2. maintenance.forceRollbackVersion 키 값을 업데이트합니다.

        data:
          central-config.yaml: |
            maintenance:
              safeMode: false
              compaction:
                 enabled: true
                 bucketFillFraction: .5
                 freeFractionThreshold: 0.75
              forceRollbackVersion: <x.x.x.x> 1
          ...
        1
        롤백할 버전을 지정합니다.
      3. 중앙 이미지 버전을 업데이트합니다.

        $ oc -n stackrox \ 1
          set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<x.x.x.x> 2
        1
        Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
        2
        롤백할 버전을 지정합니다. central-config 구성 맵의 maintenance.forceRollbackVersion 키에 지정한 버전과 동일해야 합니다.

3.9. 업그레이드 확인

업데이트된 센서 및 수집기는 각 보안 클러스터의 최신 데이터를 계속 보고합니다.

Sensor에 마지막으로 연락한 Central이 RHACS 포털에 표시됩니다.

절차

  1. RHACS 포털에서 플랫폼 구성시스템 상태로 이동합니다.
  2. Sensor Upgrade가 Central에서 최신 클러스터를 표시하는지 확인합니다.

3.10. API 토큰 취소

보안상의 이유로 중앙 데이터베이스 백업을 완료하는 데 사용한 API 토큰을 취소할 것을 권장합니다.

사전 요구 사항

  • 업그레이드 후 RHACS 포털 페이지를 다시 로드하고 RHACS 포털을 계속 사용하려면 인증서를 다시 수락해야 합니다.

절차

  1. RHACS 포털에서 플랫폼 구성통합으로 이동합니다.
  2. 인증 토큰 범주까지 아래로 스크롤하고 API 토큰 을 클릭합니다.
  3. 취소할 토큰 이름 앞에 있는 확인란을 선택합니다.
  4. Revoke 를 클릭합니다.
  5. 확인 대화 상자에서 확인 을 클릭합니다.

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.