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


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

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

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

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

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

3.4.1. 다른 이미지 업데이트

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

참고

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

프로세스

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

    $ oc -n stackrox set image deploy/sensor sensor=registry.redhat.io/advanced-cluster-security/rhacs-main-rhel8:4.5.4 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.5.4 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  3. 수집기 이미지를 업데이트합니다.

    $ oc -n stackrox set image ds/collector collector=registry.redhat.io/advanced-cluster-security/rhacs-collector-rhel8:4.5.4 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.5.4
중요

roxctl CLI를 사용하여 Red Hat OpenShift에 RHACS를 설치한 경우 SCC(보안 컨텍스트 제약 조건)를 마이그레이션해야 합니다.

자세한 내용은 "추가 리소스" 섹션의 "수동 업그레이드 중 SCC 마이그레이션"을 참조하십시오.

3.4.2. 수동 업그레이드 중 SCC 마이그레이션

roxctl CLI를 사용하여 수동 업그레이드 중에 SCC(보안 컨텍스트 제약 조건)를 마이그레이션하면 RHACS(Red Hat Advanced Cluster Security for Kubernetes) 서비스를 원활하게 전환하여 Red Hat OpenShift SCC를 사용하여 중앙 및 모든 보안 클러스터 전체에서 호환성과 최적의 보안 구성을 보장할 수 있습니다.

프로세스

  1. 중앙 및 모든 보안 클러스터에 배포된 모든 RHACS 서비스를 나열합니다.

    $ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'

    출력 예

    Name:      admission-control-6f4dcc6b4c-2phwd
               openshift.io/scc: stackrox-admission-control
    #...
    Name:      central-575487bfcb-sjdx8
               openshift.io/scc: stackrox-central
    Name:      central-db-7c7885bb-6bgbd
               openshift.io/scc: stackrox-central-db
    Name:      collector-56nkr
               openshift.io/scc: stackrox-collector
    #...
    Name:      scanner-68fc55b599-f2wm6
               openshift.io/scc: stackrox-scanner
    Name:      scanner-68fc55b599-fztlh
    #...
    Name:      sensor-84545f86b7-xgdwf
               openshift.io/scc: stackrox-sensor
    #...

    이 예에서는 각 Pod에 openshift.io/scc 필드를 통해 지정된 고유한 사용자 지정 SCC가 있음을 확인할 수 있습니다.

  2. RHACS 사용자 지정 SCC 대신 Red Hat OpenShift SCC를 사용하는 데 필요한 역할 및 역할 바인딩을 추가합니다.

    중앙 클러스터에 Red Hat OpenShift SCC를 사용하기 위해 필요한 역할 및 역할 바인딩을 추가하려면 다음 단계를 완료하십시오.

    1. 다음 콘텐츠를 사용하여 역할 및 역할 바인딩 리소스를 정의하는 update-central.yaml 파일을 생성합니다.

      예 3.1. YAML 파일의 예

      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role 1
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: central
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: use-central-db-scc 2
        namespace: stackrox 3
      Rules: 4
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - nonroot-v2
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: central
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/managed-by: Helm
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: use-central-scc
        namespace: stackrox
      rules:
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - nonroot-v2
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: scanner
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: use-scanner-scc
        namespace: stackrox
      rules:
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - nonroot-v2
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding 5
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: central
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.k ubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: central-db-use-scc 6
        namespace: stackrox
      roleRef: 7
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-central-db-scc
      subjects: 8
      - kind: ServiceAccount
        name: central-db
        namespace: stackrox
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: central
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: central-use-scc
        namespace: stackrox
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-central-scc
      subjects:
      - kind: ServiceAccount
        name: central
        namespace: stackrox
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: scanner
           app.kubernetes.io/instance: stackrox-central-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-central-services
           app.kubernetes.io/version: 4.4.0
        name: scanner-use-scc
        namespace: stackrox
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-scanner-scc
      subjects:
      - kind: ServiceAccount
        name: scanner
        namespace: stackrox
      - - -
      1
      Kubernetes 리소스의 유형(이 예에서는 Role ).
      2
      역할 리소스의 이름입니다.
      3
      역할이 생성되는 네임스페이스입니다.
      4
      역할 리소스에서 부여하는 권한에 대해 설명합니다.
      5
      Kubernetes 리소스 유형(이 예에서는 RoleBinding )입니다.
      6
      역할 바인딩 리소스의 이름입니다.
      7
      동일한 네임스페이스에 바인딩할 역할을 지정합니다.
      8
      역할에 바인딩된 주체를 지정합니다.
    2. 다음 명령을 실행하여 update-central.yaml 파일에 지정된 역할 및 역할 바인딩 리소스를 생성합니다.

      $ oc -n stackrox create -f ./update-central.yaml
  3. 모든 보안 클러스터에 Red Hat OpenShift SCC를 사용하기 위해 필요한 역할 및 역할 바인딩을 추가하려면 다음 단계를 완료하십시오.

    1. 다음 콘텐츠를 사용하여 역할 및 역할 바인딩 리소스를 정의하는 upgrade-scs.yaml 이라는 파일을 생성합니다.

      예 3.2. YAML 파일의 예

      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role  1
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: collector
           app.kubernetes.io/instance: stackrox-secured-cluster-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-secured-cluster-services
           app.kubernetes.io/version: 4.4.0
           auto-upgrade.stackrox.io/component: sensor
        name: use-privileged-scc  2
        namespace: stackrox 3
      rules:  4
      - apiGroups:
        - security.openshift.io
        resourceNames:
        - privileged
        resources:
        - securitycontextconstraints
        verbs:
        - use
      - - -
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding 5
      metadata:
        annotations:
           email: support@stackrox.com
           owner: stackrox
        labels:
           app.kubernetes.io/component: collector
           app.kubernetes.io/instance: stackrox-secured-cluster-services
           app.kubernetes.io/name: stackrox
           app.kubernetes.io/part-of: stackrox-secured-cluster-services
           app.kubernetes.io/version: 4.4.0
           auto-upgrade.stackrox.io/component: sensor
        name: collector-use-scc 6
        namespace: stackrox
      roleRef: 7
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: use-privileged-scc
      subjects: 8
      - kind: ServiceAccount
        name: collector
        namespace: stackrox
      - - -
      1
      Kubernetes 리소스의 유형(이 예에서는 Role ).
      2
      역할 리소스의 이름입니다.
      3
      역할이 생성되는 네임스페이스입니다.
      4
      역할 리소스에서 부여하는 권한에 대해 설명합니다.
      5
      Kubernetes 리소스 유형(이 예에서는 RoleBinding )입니다.
      6
      역할 바인딩 리소스의 이름입니다.
      7
      동일한 네임스페이스에 바인딩할 역할을 지정합니다.
      8
      역할에 바인딩된 주체를 지정합니다.
    2. 다음 명령을 실행하여 upgrade-scs.yaml 파일에 지정된 역할 및 역할 바인딩 리소스를 생성합니다.

      $ oc -n stackrox create -f ./update-scs.yaml
      중요

      upgrade-scs.yaml 파일에 지정된 역할 및 역할 바인딩을 생성하려면 각 보안 클러스터에서 이 명령을 실행해야 합니다.

  4. RHACS와 관련된 SCC를 삭제합니다.

    1. 중앙 클러스터와 관련된 SCC를 삭제하려면 다음 명령을 실행합니다.

      $ oc delete scc/stackrox-central scc/stackrox-central-db scc/stackrox-scanner
    2. 모든 보안 클러스터에 고유한 SCC를 삭제하려면 다음 명령을 실행합니다.

      $ oc delete scc/stackrox-admission-control scc/stackrox-collector scc/stackrox-sensor
      중요

      보안된 각 클러스터에서 이 명령을 실행하여 보안된 각 클러스터에 고유한 SCC를 삭제해야 합니다.

검증

  • 다음 명령을 실행하여 모든 Pod가 올바른 SCC를 사용하고 있는지 확인합니다.

    $ oc -n stackrox describe pods | grep 'openshift.io/scc\|^Name:'

    다음 표와 출력을 비교합니다.

    Component이전 사용자 정의 SCC새로운 Red Hat OpenShift 4 SCC

    Central

    stackrox-central

    nonroot-v2

    Central-db

    stackrox-central-db

    nonroot-v2

    스캐너

    stackrox-scanner

    nonroot-v2

    scanner-db

    stackrox-scanner

    nonroot-v2

    Admission Controller

    stackrox-admission-control

    restricted-v2

    수집기

    stackrox-collector

    privileged

    센서

    stackrox-sensor

    restricted-v2

3.4.2.1. 센서 배포에 대한 GOMEMLIMIT 환경 변수 편집

버전 4.4로 업그레이드하려면 GOMEMLIMIT 환경 변수를 ROX_MEMLIMIT 환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.

프로세스

  1. 다음 명령을 실행하여 센서 배포에 대한 변수를 편집합니다.

    $ oc -n stackrox edit deploy/sensor 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  2. GOMEMLIMIT 변수를 ROX_MEMLIMIT 로 바꿉니다.
  3. 파일을 저장합니다.

3.4.2.2. 수집기 배포에 대한 GOMEMLIMIT 환경 변수 편집

버전 4.4로 업그레이드하려면 GOMEMLIMIT 환경 변수를 ROX_MEMLIMIT 환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.

프로세스

  1. 다음 명령을 실행하여 수집기 배포에 대한 변수를 편집합니다.

    $ oc -n stackrox edit deploy/collector 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  2. GOMEMLIMIT 변수를 ROX_MEMLIMIT 로 바꿉니다.
  3. 파일을 저장합니다.

3.4.2.3. Admission Controller 배포를 위한 GOMEMLIMIT 환경 변수 편집

버전 4.4로 업그레이드하려면 GOMEMLIMIT 환경 변수를 ROX_MEMLIMIT 환경 변수로 교체해야 합니다. 각 배포에 대해 이 변수를 편집해야 합니다.

프로세스

  1. 다음 명령을 실행하여 Admission Controller 배포의 변수를 편집합니다.

    $ oc -n stackrox edit deploy/admission-control 1
    1
    Kubernetes를 사용하는 경우 oc 대신 kubectl 을 입력합니다.
  2. GOMEMLIMIT 변수를 ROX_MEMLIMIT 로 바꿉니다.
  3. 파일을 저장합니다.

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

보안 클러스터를 업그레이드한 후 업데이트된 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 을 입력합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.