업그레이드
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.3. 외부 데이터베이스를 위한 중앙 사용자 정의 리소스 수정
외부 PostgreSQL 지원은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
- PostgreSQL 13을 지원하는 데이터베이스를 프로비저닝해야 하며 RHACS에만 사용해야 합니다.
- 사용자는 데이터베이스를 만들고 삭제할 수 있는 슈퍼유저여야 합니다.
- 다중 테넌트 데이터베이스는 현재 지원되지 않습니다.
- PgBouncer를 통한 연결은 지원되지 않습니다.
절차
OpenShift Container Platform 웹 콘솔 또는 터미널을 사용하여 배포된 네임스페이스에 암호 보안을 생성합니다.
-
OpenShift Container Platform 웹 콘솔에서 워크로드 → 시크릿 페이지로 이동합니다. 키 암호와 프로비저닝된 데이터베이스의 슈퍼 유저
암호
가 포함된 일반 텍스트 파일의 경로로 값을 사용하여 키/값 시크릿 을 생성합니다. 또는 터미널에서 다음 명령을 실행합니다.
$ oc create secret generic external-db-password \ 1 --from-file=password=<password.txt> 2
-
OpenShift Container Platform 웹 콘솔에서 워크로드 → 시크릿 페이지로 이동합니다. 키 암호와 프로비저닝된 데이터베이스의 슈퍼 유저
- OpenShift Container Platform 웹 콘솔의 Red Hat Advanced Cluster Security for Kubernetes Operator 페이지로 이동합니다. 상단 탐색 모음에서 Central 을 선택하고 데이터베이스에 연결할 인스턴스를 선택합니다.
- YAML 편집기 보기로 이동합니다.
-
db.passwordSecret.name
의 경우 이전 단계에서 생성한 참조된 보안을 지정합니다. 예:external-db-password
. -
db.connectionString
의 경우keyword=value
형식으로 연결 문자열을 지정합니다(예: host=<host> port=5432 user=postgres sslmode=verify-ca
). -
db.persistence
의 경우 전체 블록을 삭제합니다. 필요한 경우 다음 예와 같이 최상위 사양에 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
로 변경하지 않아야 합니다.
- 저장을 클릭합니다.
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 클러스터 웹 콘솔에 액세스할 수 있습니다.
웹 콘솔을 사용하여 서브스크립션 채널 변경
웹 콘솔을 사용하여 서브스크립션 채널을 변경하려면 다음 지침을 사용합니다.
절차
- OpenShift Container Platform 웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator 로 이동합니다.
- RHACS Operator를 찾아 클릭합니다.
- 서브스크립션 탭을 클릭합니다.
- 업데이트 채널 아래에서 업데이트 채널 의 이름을 클릭합니다.
- stable 을 선택한 다음 Save 를 클릭합니다.
자동 승인 전략이 있는 서브스크립션의 경우 업데이트가 자동으로 시작됩니다. 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 버전을 롤백할 수 있습니다.
절차
다음 명령을 실행하여 OLM 서브스크립션을 삭제합니다.
OpenShift Container Platform의 경우 다음 명령을 실행합니다.
$ oc -n rhacs-operator delete subscription rhacs-operator
Kubernetes의 경우 다음 명령을 실행합니다.
$ kubectl -n rhacs-operator delete subscription rhacs-operator
다음 명령을 실행하여 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
다음 옵션 중 하나를 선택하여 롤백할 이전 버전을 결정합니다.
현재 Central 인스턴스가 실행 중인 경우 RHACS API를 쿼리하여 다음 명령을 실행하여 롤백 버전을 가져옵니다.
$ curl -k -s -u <user>:<password> https://<central hostname>/v1/centralhealth/upgradestatus | jq -r .upgradeStatus.forceRollbackTo
현재 Central 인스턴스가 실행되고 있지 않은 경우 다음 단계를 수행합니다.
참고이 절차는 Rillsdb 데이터베이스를 설치할 때 RHACS 릴리스 3.74 및 이전
버전에
만 사용할 수 있습니다.다음 명령을 실행하여 중앙 배포가 축소되었는지 확인합니다.
OpenShift Container Platform의 경우 다음 명령을 실행합니다.
$ oc scale -n <central namespace> –replicas=0 deploy/central
Kubernetes의 경우 다음 명령을 실행합니다.
$ kubectl scale -n <central namespace> –replicas=0 deploy/central
다음 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
저장한 YAML 파일을 사용하여 다음 명령을 실행하여 중앙 네임스페이스에 Pod를 생성합니다.
OpenShift Container Platform의 경우 다음 명령을 실행합니다.
$ oc create -n <central namespace> -f pod.yaml
Kubernetes의 경우 다음 명령을 실행합니다.
$ kubectl create -n <central namespace> -f pod.yaml
Pod 생성이 완료되면 다음 명령을 실행하여 버전을 가져옵니다.
OpenShift Container Platform의 경우 다음 명령을 실행합니다.
$ oc logs -n <central namespace> get-previous-db-version
Kubernetes의 경우 다음 명령을 실행합니다.
$ kubectl logs -n <central namespace> get-previous-db-version
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 -
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>
검증
중앙 Pod가 시작되고
준비
상태인지 확인합니다. Pod가 충돌하는 경우 로그를 확인하여 백업이 복원되었는지 확인합니다. 성공 로그 메시지는 다음 예와 유사합니다.Clone to Migrate ".previous", ""
-
롤백된 백엔드 채널에 Operator를 다시 설치합니다. 예를 들어
3.74.2
는rhacs-3.74
채널에 설치됩니다.
1.6.2. 웹 콘솔을 사용하여 Operator 업그레이드 롤백
OpenShift Container Platform 웹 콘솔을 사용하여 Operator 버전을 롤백할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터 웹 콘솔에 액세스할 수 있습니다.
절차
- Operator → 설치된 Operator 페이지로 이동합니다.
- RHACS Operator를 찾아 클릭합니다.
- Operator 세부 정보 페이지의 작업 목록에서 Operator 제거를 선택합니다. 이 작업 후에 Operator는 실행을 중지하고 더 이상 업데이트가 수신되지 않습니다.
다음 옵션 중 하나를 선택하여 롤백할 이전 버전을 결정합니다.
현재 중앙 인스턴스가 실행 중인 경우 터미널 창에서 다음 명령을 실행하여 RHACS API를 쿼리하여 롤백 버전을 가져올 수 있습니다.
$ curl -k -s -u <user>:<password> https://<central hostname>/v1/centralhealth/upgradestatus | jq -r .upgradeStatus.forceRollbackTo
다음 단계를 수행하여 Pod를 생성하고 이전 버전을 추출할 수 있습니다.
참고이 절차는 Rillsdb 데이터베이스를 설치할 때 RHACS 릴리스 3.74 및 이전
버전에
만 사용할 수 있습니다.- 워크로드 → 배포 → 중앙 으로 이동합니다.
- 배포 세부 정보에서 포드 수 옆에 있는 아래쪽 화살표를 클릭하여 Pod를 축소합니다.
워크로드 → Pod → Pod 생성 으로 이동하여 다음 예에 표시된 대로 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
- 생성을 클릭합니다.
- 포드가 생성되면 로그 탭을 클릭하여 버전 문자열을 가져옵니다.
다음 단계를 수행하여 롤백 구성을 업데이트합니다.
- 워크로드 → ConfigMaps → central-config 로 이동하여 작업 목록에서 ConfigMap 편집 을 선택합니다.
-
central-config.yaml
키 값에서forceRollbackVersion
행을 찾습니다. -
none
을3.73.3
으로 교체한 다음 파일을 저장합니다.
다음 단계를 수행하여 이전 버전으로 중앙을 업데이트합니다.
- 워크로드 → 배포 → 중앙 으로 이동하고 작업 목록에서 배포 편집 을 선택합니다.
- 이미지 이름을 업데이트한 다음 변경 사항을 저장합니다.
검증
중앙 Pod가 시작되고
준비
상태인지 확인합니다. Pod가 충돌하는 경우 로그를 확인하여 백업이 복원되었는지 확인합니다. 성공 로그 메시지는 다음 예와 유사합니다.Clone to Migrate ".previous", ""
-
롤백된 백엔드 채널에 Operator를 다시 설치합니다. 예를 들어
3.74.2
는rhacs-3.74
채널에 설치됩니다.
1.7. Operator 업그레이드 문제 해결
이 섹션의 지침에 따라 RHACS Operator의 업그레이드 관련 문제를 조사하고 해결합니다.
1.7.1. Central DB를 예약할 수 없습니다
여기에서 지침에 따라 업그레이드 중에 실패한 중앙 DB Pod의 문제를 해결합니다.
central-db
Pod의 상태를 확인합니다.$ oc -n <namespace> get pod -l app=central-db 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
Pod 상태가
Pending
이면 describe 명령을 사용하여 자세한 정보를 가져옵니다.$ oc -n <namespace> describe po/<central-db-pod-name> 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
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.
이 경고 메시지는 예약된 노드에 Pod의 리소스 요구 사항을 수용하기 위한 메모리가 충분하지 않음을 나타냅니다. 소규모 환경이 있는 경우 노드에서 리소스를 늘리거나 데이터베이스를 지원할 수 있는 더 큰 노드를 추가하는 것이 좋습니다.
그렇지 않으면 중앙 →
db
→ 리소스의 사용자 정의 리소스에서central
-db그러나 권장 최소값보다 적은 리소스로 중앙을 실행하면 RHACS의 성능이 저하될 수 있습니다.
1.7.2. 중앙 또는 보안 클러스터 배포 실패
RHACS Operator의 경우:
- 중앙 또는 보안 클러스터를 배포하지 못했습니다.
- 실제 리소스에 CR 변경 사항을 적용하지 못했습니다.
문제를 찾으려면 사용자 정의 리소스 조건을 확인해야 합니다.
조건 출력에서 구성 오류를 확인할 수 있습니다.
출력 예
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_TOKEN
및ROX_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
파일에는 중요한 구성 옵션이 있습니다. 이 파일을 안전하게 저장해야 합니다.
절차
-
create_certificate_values_file.sh
스크립트를 다운로드합니다. create_certificate_values_file.sh
스크립트를 실행 가능하게 만듭니다.$ chmod +x create_certificate_values_file.sh
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
2.8. Helm 업그레이드 롤백
새 버전으로 업그레이드할 수 없는 경우 이전 버전의 Central으로 롤백할 수 있습니다.
절차
다음
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 버전으로 바꿉니다.
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_TOKEN
및ROX_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 바이너리를 설치할 수 있습니다.
절차
roxctl
CLI의 최신 버전을 다운로드합니다.$ curl -O https://mirror.openshift.com/pub/rhacs/assets/4.1.5/bin/Linux/roxctl
roxctl
바이너리를 실행 가능하게 만듭니다.$ chmod +x roxctl
roxctl
바이너리를PATH
에 있는 디렉터리에 배치합니다.PATH
를 확인하려면 다음 명령을 실행합니다.$ echo $PATH
검증
설치한
roxctl
버전을 확인합니다.$ roxctl version
3.2.3. macOS에 roxctl CLI 설치
다음 절차를 사용하여 macOS에 roxctl
CLI 바이너리를 설치할 수 있습니다.
절차
roxctl
CLI의 최신 버전을 다운로드합니다.$ curl -O https://mirror.openshift.com/pub/rhacs/assets/4.1.5/bin/Darwin/roxctl
바이너리에서 모든 확장 속성을 제거합니다.
$ xattr -c roxctl
roxctl
바이너리를 실행 가능하게 만듭니다.$ chmod +x roxctl
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가 설치되어 있어야 합니다.
절차
ROX_API_TOKEN
및ROX_CENTRAL_ADDRESS
환경 변수를 설정합니다.$ export ROX_API_TOKEN=<api_token>
$ export ROX_CENTRAL_ADDRESS=<address>:<port_number>
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
아카이브 번들을 추출해야 합니다.
절차
추출된 번들 디렉터리를 열고
설정
스크립트를 실행합니다.$ ./scripts/setup.sh
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. 모든 보안 클러스터 업그레이드
중앙 서비스를 업그레이드한 후 모든 보안 클러스터를 업그레이드해야 합니다.
센서, 수집기 및 Admission 컨트롤러를 실행하는 각 보안 클러스터의 수동 업그레이드를 완료하려면 이 섹션의 지침을 따르십시오.
3.6.1. 다른 이미지 업데이트
자동 업그레이드를 사용하지 않는 경우 각 보안 클러스터에서 센서, 수집기 및 규정 준수 이미지를 업데이트해야 합니다.
Kubernetes를 사용하는 경우 이 절차에 나열된 명령에 oc
대신 kubectl
을 사용합니다.
절차
센서 이미지를 업데이트합니다.
$ 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
을 입력합니다.
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
을 입력합니다.
수집기 이미지를 업데이트합니다.
$ 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}
승인 제어 이미지를 업데이트합니다.
$ 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가 작동하는지 확인합니다.
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 지원 정책을 참조하십시오.
절차
다음 명령 중 하나를 실행하여 규정 준수 컨테이너를 업데이트합니다.
메트릭이 비활성화된 기본 규정 준수 컨테이너의 경우 다음 명령을 실행합니다.
$ 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"}]}]}}}}'
다음 단계를 수행하여 수집기 DaemonSet(DS)을 업데이트합니다.
다음 명령을 실행하여 수집기 DS에 새 볼륨 마운트를 추가합니다.
$ oc -n stackrox patch daemonset/collector -p '{"spec":{"template":{"spec":{"volumes":[{"name":"tmp-volume","emptyDir":{}},{"name":"cache-volume","emptyDir":{"sizeLimit":"200Mi"}}]}}}}'
다음 명령을 실행하여 새
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.volumes
의stackrox-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
을 입력합니다.
특정 버전으로 강제 롤백하려면 다음을 수행합니다.
중앙의
ConfigMap
편집 :$ oc -n stackrox edit configmap/central-config 1
- 1
- Kubernetes를 사용하는 경우
oc
대신kubectl
을 입력합니다.
maintenance.forceRollbackVersion
키 값을 업데이트합니다.data: central-config.yaml: | maintenance: safeMode: false compaction: enabled: true bucketFillFraction: .5 freeFractionThreshold: 0.75 forceRollbackVersion: <x.x.x.x> 1 ...
- 1
- 롤백할 버전을 지정합니다.
중앙 이미지 버전을 업데이트합니다.
$ oc -n stackrox \ 1 set image deploy/central central=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:<x.x.x.x> 2
3.9. 업그레이드 확인
업데이트된 센서 및 수집기는 각 보안 클러스터의 최신 데이터를 계속 보고합니다.
Sensor에 마지막으로 연락한 Central이 RHACS 포털에 표시됩니다.
절차
- RHACS 포털에서 플랫폼 구성 → 시스템 상태로 이동합니다.
- Sensor Upgrade가 Central에서 최신 클러스터를 표시하는지 확인합니다.
3.10. API 토큰 취소
보안상의 이유로 중앙 데이터베이스 백업을 완료하는 데 사용한 API 토큰을 취소할 것을 권장합니다.
사전 요구 사항
- 업그레이드 후 RHACS 포털 페이지를 다시 로드하고 RHACS 포털을 계속 사용하려면 인증서를 다시 수락해야 합니다.
절차
- RHACS 포털에서 플랫폼 구성 → 통합으로 이동합니다.
- 인증 토큰 범주까지 아래로 스크롤하고 API 토큰 을 클릭합니다.
- 취소할 토큰 이름 앞에 있는 확인란을 선택합니다.
- Revoke 를 클릭합니다.
- 확인 대화 상자에서 확인 을 클릭합니다.