2.2. 수동으로 유지 관리되는 인증 정보로 클러스터 업데이트 준비


CCO(Cloud Credential Operator) 수동으로 유지 관리되는 인증 정보가 있는 클러스터의 Upgradable 상태는 기본적으로 False 입니다.

  • 마이너 릴리스(예: 4.12에서 4.13로)의 경우 이 상태는 업데이트된 권한을 처리하고 CloudCredential 리소스에 주석을 달아 권한이 다음 버전에 필요한 대로 업데이트됨을 나타낼 때까지 업데이트되지 않습니다. 이 주석은 Upgradable 상태를 True로 변경합니다.
  • 예를 들어 4.13.0에서 4.13.1까지 z-stream 릴리스의 경우 권한이 추가되거나 변경되지 않으므로 업데이트가 차단되지 않습니다.

수동으로 유지 관리되는 인증 정보를 사용하여 클러스터를 업데이트하기 전에 업데이트 중인 OpenShift Container Platform 버전의 릴리스 이미지에 새 인증 정보 또는 변경된 인증 정보를 수용해야 합니다.

2.2.1. 수동으로 유지 관리되는 인증 정보를 사용하여 클러스터의 요구 사항 업데이트

CCO(Cloud Credential Operator)를 사용하여 수동으로 유지 관리되는 인증 정보를 사용하는 클러스터를 업데이트하기 전에 새 릴리스의 클라우드 공급자 리소스를 업데이트해야 합니다.

CCO 유틸리티(ccoctl)를 사용하여 클러스터의 클라우드 인증 정보 관리를 구성한 경우 ccoctl 유틸리티를 사용하여 리소스를 업데이트합니다. ccoctl 유틸리티 없이 수동 모드를 사용하도록 구성된 클러스터에는 리소스에 대한 수동 업데이트가 필요합니다.

클라우드 공급자 리소스를 업데이트한 후 클러스터의 upgradeable-to 주석을 업데이트하여 업데이트할 준비가 되었음을 표시해야 합니다.

참고

클라우드 공급자 리소스를 업데이트하는 프로세스와 upgradeable-to 주석은 명령줄 툴을 사용하여 완료할 수 있습니다.

2.2.1.1. 클라우드 인증 정보 구성 옵션 및 플랫폼 유형별 업데이트 요구 사항

일부 플랫폼은 하나의 모드에서 CCO 사용을 지원합니다. 해당 플랫폼에 설치된 클러스터의 경우 플랫폼 유형에 따라 인증 정보 업데이트 요구 사항이 결정됩니다.

여러 모드에서 CCO 사용을 지원하는 플랫폼의 경우 클러스터가 사용하도록 구성된 모드를 결정하고 해당 구성에 필요한 작업을 수행해야 합니다.

그림 2.1. 플랫폼 유형별 인증 정보 업데이트 요구 사항

구성된 CCO 인증 정보 모드에 따라 클러스터에 대한 가능한 업데이트 경로를 표시하는 의사 결정 트리입니다.
Red Hat OpenStack Platform (RHOSP) 및 VMware vSphere

이러한 플랫폼은 수동 모드에서 CCO 사용을 지원하지 않습니다. 이러한 플랫폼의 클러스터는 클라우드 공급자 리소스의 변경 사항을 자동으로 처리하고 upgradeable-to 주석을 업데이트할 필요가 없습니다.

이러한 플랫폼의 클러스터 관리자는 업데이트 프로세스의 수동으로 유지 관리되는 인증 정보 섹션을 건너뛰어야 합니다.

IBM Cloud 및 Nutanix

이러한 플랫폼에 설치된 클러스터는 ccoctl 유틸리티를 사용하여 구성됩니다.

이러한 플랫폼의 클러스터 관리자는 다음 작업을 수행해야 합니다.

  1. 새 릴리스에 대한 CredentialsRequest CR(사용자 정의 리소스)을 추출하고 준비합니다.
  2. 새 릴리스에 대해 ccoctl 유틸리티를 구성하고 이를 사용하여 클라우드 공급자 리소스를 업데이트합니다.
  3. 클러스터를 upgradeable-to 주석으로 업데이트할 준비가 되었음을 나타냅니다.
Microsoft Azure Stack Hub

이러한 클러스터는 장기 인증 정보와 함께 수동 모드를 사용하며 ccoctl 유틸리티를 사용하지 않습니다.

이러한 플랫폼의 클러스터 관리자는 다음 작업을 수행해야 합니다.

  1. 새 릴리스에 대한 CredentialsRequest CR(사용자 정의 리소스)을 추출하고 준비합니다.
  2. 새 릴리스의 클라우드 공급자 리소스를 수동으로 업데이트합니다.
  3. 클러스터를 upgradeable-to 주석으로 업데이트할 준비가 되었음을 나타냅니다.
AWS(Amazon Web Services), 글로벌 Microsoft Azure 및 GCP(Google Cloud Platform)

이러한 플랫폼에 설치된 클러스터는 여러 CCO 모드를 지원합니다.

필요한 업데이트 프로세스는 클러스터가 사용하도록 구성된 모드에 따라 다릅니다. CCO가 클러스터에서 사용하도록 구성된 모드가 확실하지 않은 경우 웹 콘솔 또는 CLI를 사용하여 이 정보를 확인할 수 있습니다.

2.2.1.2. 웹 콘솔을 사용하여 Cloud Credential Operator 모드 확인

웹 콘솔을 사용하여 CCO(Cloud Credential Operator)가 사용하도록 구성된 모드를 확인할 수 있습니다.

참고

AWS(Amazon Web Services), 글로벌 Microsoft Azure 및 GCP(Google Cloud Platform) 클러스터만 여러 CCO 모드를 지원합니다.

사전 요구 사항

  • 클러스터 관리자 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.

프로세스

  1. cluster-admin 역할의 사용자로 OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 관리 클러스터 설정으로 이동합니다.
  3. 클러스터 설정 페이지에서 구성 탭을 선택합니다.
  4. 구성 리소스에서 클라우드 인을 선택합니다.
  5. 클라우드 인증 세부 정보 페이지에서 YAML 탭을 선택합니다.
  6. YAML 블록에서 spec.credentialsMode의 값을 확인합니다. 다음 값이 모든 플랫폼에서 지원되지는 않지만 모두 지원되는 것은 아닙니다.

    • '': CCO가 기본 모드에서 작동합니다. 이 구성에서 CCO는 설치 중에 제공된 인증 정보에 따라 Mint 또는 passthrough 모드에서 작동합니다.
    • Mint: CCO가 Mint 모드에서 작동합니다.
    • passthrough: CCO가 passthrough 모드에서 작동합니다.
    • Manual: CCO가 수동 모드에서 작동합니다.
    중요

    '', Mint 또는 Manualspec.credentialsMode 가 있는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터의 특정 구성을 확인하려면 추가 조사를 수행해야 합니다.

    AWS 및 GCP 클러스터는 루트 시크릿이 삭제된 상태에서 Mint 모드 사용을 지원합니다. 클러스터가 mint 모드를 사용하도록 특별히 구성되었거나 기본적으로 mint 모드를 사용하는 경우 업데이트하기 전에 루트 시크릿이 클러스터에 있는지 확인해야 합니다.

    수동 모드를 사용하는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터는 AWS STS, GCP Workload Identity 또는 Microsoft Entra Workload ID를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 구성할 수 있습니다. 클러스터 Authentication 오브젝트를 검사하여 클러스터에서 이 전략을 사용하는지 확인할 수 있습니다.

  7. AWS 또는 GCP 클러스터만 Mint 모드를 사용하는: 클러스터가 루트 시크릿없이 작동하는지 확인하려면 워크로드 시크릿으로 이동하여 클라우드 공급자의 루트 시크릿을 찾습니다.

    참고

    프로젝트 드롭다운이 모든 프로젝트로 설정되어 있는지 확인합니다.

    플랫폼시크릿 이름

    AWS

    aws-creds

    GCP

    gcp-credentials

    • 이러한 값 중 하나가 표시되면 클러스터에서 root 시크릿이 있는 mint 또는 passthrough 모드를 사용하는 것입니다.
    • 이러한 값이 표시되지 않으면 클러스터는 루트 시크릿이 제거된 Mint 모드에서 CCO를 사용하는 것입니다.
  8. 수동 모드를 사용하는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터: 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 클러스터가 구성되었는지 확인하려면 클러스터 인증 오브젝트 YAML 값을 확인해야 합니다.

    1. 관리 클러스터 설정으로 이동합니다.
    2. 클러스터 설정 페이지에서 구성 탭을 선택합니다.
    3. 구성 리소스에서 인증을 선택합니다.
    4. 인증 세부 정보 페이지에서 YAML 탭을 선택합니다.
    5. YAML 블록에서 .spec.serviceAccountIssuer 매개변수 값을 확인합니다.

      • 클라우드 공급자와 연결된 URL이 포함된 값은 CCO가 구성 요소에 대한 단기 인증 정보가 있는 수동 모드를 사용하고 있음을 나타냅니다. 이러한 클러스터는 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하는 데 ccoctl 유틸리티를 사용하여 구성됩니다.
      • 빈 값('')은 클러스터가 수동 모드에서 CCO를 사용하고 있지만 ccoctl 유틸리티를 사용하여 구성되지 않았음을 나타냅니다.

다음 단계

  • mint 또는 passthrough 모드에서 작동하는 CCO가 있고 루트 시크릿이 있는 클러스터를 업데이트하는 경우 클라우드 공급자 리소스를 업데이트할 필요가 없으며 업데이트 프로세스의 다음 부분으로 계속 수행할 수 있습니다.
  • 클러스터에서 루트 시크릿이 제거된 mint 모드에서 CCO를 사용하는 경우 업데이트 프로세스의 다음 부분을 계속하기 전에 관리자 수준 인증 정보를 사용하여 인증 정보 시크릿을 다시 실행해야 합니다.
  • CCO 유틸리티(ccoctl)를 사용하여 클러스터를 구성한 경우 다음 작업을 수행해야 합니다.

    1. 새 릴리스에 대한 CredentialsRequest CR(사용자 정의 리소스)을 추출하고 준비합니다.
    2. 새 릴리스에 대해 ccoctl 유틸리티를 구성하고 이를 사용하여 클라우드 공급자 리소스를 업데이트합니다.
    3. upgradeable-to 주석을 업데이트하여 클러스터를 업데이트할 준비가 되었음을 나타냅니다.
  • 클러스터에서 수동 모드에서 CCO를 사용하지만 ccoctl 유틸리티를 사용하여 구성되지 않은 경우 다음 작업을 수행해야 합니다.

    1. 새 릴리스에 대한 CredentialsRequest CR(사용자 정의 리소스)을 추출하고 준비합니다.
    2. 새 릴리스의 클라우드 공급자 리소스를 수동으로 업데이트합니다.
    3. upgradeable-to 주석을 업데이트하여 클러스터를 업데이트할 준비가 되었음을 나타냅니다.

2.2.1.3. CLI를 사용하여 Cloud Credential Operator 모드 확인

CLI를 사용하여 CCO(Cloud Credential Operator)가 사용하도록 구성된 모드를 확인할 수 있습니다.

참고

AWS(Amazon Web Services), 글로벌 Microsoft Azure 및 GCP(Google Cloud Platform) 클러스터만 여러 CCO 모드를 지원합니다.

사전 요구 사항

  • 클러스터 관리자 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. cluster-admin 역할의 사용자로 클러스터에서 oc 에 로그인합니다.
  2. CCO가 사용하도록 구성된 모드를 결정하려면 다음 명령을 입력합니다.

    $ oc get cloudcredentials cluster \
      -o=jsonpath={.spec.credentialsMode}

    다음 출력 값을 사용할 수 있지만 모든 플랫폼에서 모두 지원되는 것은 아닙니다.

    • '': CCO가 기본 모드에서 작동합니다. 이 구성에서 CCO는 설치 중에 제공된 인증 정보에 따라 Mint 또는 passthrough 모드에서 작동합니다.
    • Mint: CCO가 Mint 모드에서 작동합니다.
    • passthrough: CCO가 passthrough 모드에서 작동합니다.
    • Manual: CCO가 수동 모드에서 작동합니다.
    중요

    '', Mint 또는 Manualspec.credentialsMode 가 있는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터의 특정 구성을 확인하려면 추가 조사를 수행해야 합니다.

    AWS 및 GCP 클러스터는 루트 시크릿이 삭제된 상태에서 Mint 모드 사용을 지원합니다. 클러스터가 mint 모드를 사용하도록 특별히 구성되었거나 기본적으로 mint 모드를 사용하는 경우 업데이트하기 전에 루트 시크릿이 클러스터에 있는지 확인해야 합니다.

    수동 모드를 사용하는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터는 AWS STS, GCP Workload Identity 또는 Microsoft Entra Workload ID를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 구성할 수 있습니다. 클러스터 Authentication 오브젝트를 검사하여 클러스터에서 이 전략을 사용하는지 확인할 수 있습니다.

  3. AWS 또는 GCP 클러스터만 Mint 모드를 사용하는: 클러스터가 루트 시크릿없이 작동하는지 확인하려면 다음 명령을 실행합니다.

    $ oc get secret <secret_name> \
      -n=kube-system

    여기서 <secret_name>은 AWS의 aws-creds 이거나 GCP의 gcp-credentials 입니다.

    루트 시크릿이 있으면 이 명령의 출력에서 보안에 대한 정보를 반환합니다. root 보안이 클러스터에 존재하지 않음을 나타내는 오류가 있습니다.

  4. 수동 모드를 사용하는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터: 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 클러스터가 구성되었는지 확인하려면 다음 명령을 실행합니다.

    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'

    이 명령은 클러스터 Authentication 오브젝트에서 .spec.serviceAccountIssuer 매개변수 값을 표시합니다.

    • 클라우드 공급자와 연결된 URL의 출력은 CCO가 구성 요소에 대한 단기 인증 정보가 있는 수동 모드를 사용하고 있음을 나타냅니다. 이러한 클러스터는 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하는 데 ccoctl 유틸리티를 사용하여 구성됩니다.
    • 빈 출력은 클러스터가 수동 모드에서 CCO를 사용하고 있지만 ccoctl 유틸리티를 사용하여 구성되지 않았음을 나타냅니다.

다음 단계

  • mint 또는 passthrough 모드에서 작동하는 CCO가 있고 루트 시크릿이 있는 클러스터를 업데이트하는 경우 클라우드 공급자 리소스를 업데이트할 필요가 없으며 업데이트 프로세스의 다음 부분으로 계속 수행할 수 있습니다.
  • 클러스터에서 루트 시크릿이 제거된 mint 모드에서 CCO를 사용하는 경우 업데이트 프로세스의 다음 부분을 계속하기 전에 관리자 수준 인증 정보를 사용하여 인증 정보 시크릿을 다시 실행해야 합니다.
  • CCO 유틸리티(ccoctl)를 사용하여 클러스터를 구성한 경우 다음 작업을 수행해야 합니다.

    1. 새 릴리스에 대한 CredentialsRequest CR(사용자 정의 리소스)을 추출하고 준비합니다.
    2. 새 릴리스에 대해 ccoctl 유틸리티를 구성하고 이를 사용하여 클라우드 공급자 리소스를 업데이트합니다.
    3. upgradeable-to 주석을 업데이트하여 클러스터를 업데이트할 준비가 되었음을 나타냅니다.
  • 클러스터에서 수동 모드에서 CCO를 사용하지만 ccoctl 유틸리티를 사용하여 구성되지 않은 경우 다음 작업을 수행해야 합니다.

    1. 새 릴리스에 대한 CredentialsRequest CR(사용자 정의 리소스)을 추출하고 준비합니다.
    2. 새 릴리스의 클라우드 공급자 리소스를 수동으로 업데이트합니다.
    3. upgradeable-to 주석을 업데이트하여 클러스터를 업데이트할 준비가 되었음을 나타냅니다.

2.2.2. 인증 정보 요청 리소스 추출 및 준비

수동 모드에서 CCO(Cloud Credential Operator)를 사용하는 클러스터를 업데이트하기 전에 새 릴리스에 대한 CredentialsRequest CR(사용자 정의 리소스)을 추출하고 준비해야 합니다.

사전 요구 사항

  • 업데이트된 버전과 일치하는 OpenShift CLI (oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인합니다.

프로세스

  1. 다음 명령을 실행하여 적용할 업데이트에 대한 pull 사양을 가져옵니다.

    $ oc adm upgrade

    이 명령의 출력에는 다음과 유사한 사용 가능한 업데이트에 대한 가져오기 사양이 포함됩니다.

    부분 예제 출력

    ...
    Recommended updates:
    
    VERSION IMAGE
    4.17.0  quay.io/openshift-release-dev/ocp-release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d018032
    ...

  2. 다음 명령을 실행하여 사용할 릴리스 이미지로 $RELEASE_IMAGE 변수를 설정합니다.

    $ RELEASE_IMAGE=<update_pull_spec>

    여기서 <update_pull_spec >은 사용하려는 릴리스 이미지의 풀 사양입니다. 예를 들면 다음과 같습니다.

    quay.io/openshift-release-dev/ocp-release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d018032
  3. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest CR(사용자 정의 리소스) 목록을 추출합니다.

    $ oc adm release extract \
      --from=$RELEASE_IMAGE \
      --credentials-requests \
      --included \1
      --to=<path_to_directory_for_credentials_requests> 2
    1
    --included 매개변수에는 대상 릴리스에 필요한 특정 클러스터 구성에 필요한 매니페스트만 포함됩니다.
    2
    CredentialsRequest 오브젝트를 저장할 디렉터리의 경로를 지정합니다. 지정된 디렉터리가 없으면 이 명령이 이를 생성합니다.

    이 명령을 수행하면 각 CredentialsRequest 오브젝트에 대해 YAML 파일이 생성됩니다.

  4. 릴리스 이미지의 각 CredentialsRequest CR에 대해 spec.secretRef.namespace 필드의 텍스트와 일치하는 네임스페이스가 클러스터에 있는지 확인합니다. 이 필드에는 인증 정보 구성을 보유하는 생성된 시크릿이 저장됩니다.

    샘플 AWS CredentialsRequest 오브젝트

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cloud-credential-operator-iam-ro
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - iam:GetUser
          - iam:GetUserPolicy
          - iam:ListAccessKeys
          resource: "*"
      secretRef:
        name: cloud-credential-operator-iam-ro-creds
        namespace: openshift-cloud-credential-operator 1

    1
    이 필드는 생성된 보안을 유지하기 위해 존재해야 하는 네임스페이스를 나타냅니다.

    다른 플랫폼의 CredentialsRequest CR에는 다른 플랫폼별 값이 있는 유사한 형식이 있습니다.

  5. 클러스터에 spec.secretRef.namespace 에 지정된 이름의 네임스페이스가 아직 없는 CredentialsRequest CR의 경우 다음 명령을 실행하여 네임스페이스를 생성합니다.

    $ oc create namespace <component_namespace>

다음 단계

  • 클러스터의 클라우드 인증 정보 관리가 CCO 유틸리티(ccoctl)를 사용하여 구성된 경우 클러스터 업데이트에 대해 ccoctl 유틸리티를 구성하고 이를 사용하여 클라우드 공급자 리소스를 업데이트합니다.
  • ccoctl 유틸리티를 사용하여 클러스터가 구성되지 않은 경우 클라우드 공급자 리소스를 수동으로 업데이트합니다.

2.2.3. 클러스터 업데이트에 대한 Cloud Credential Operator 유틸리티 구성

수동 모드에서 CCO(Cloud Credential Operator)를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하는 클러스터를 업그레이드하려면 CCO 유틸리티(ccoctl) 바이너리를 추출하고 준비합니다.

참고

ccoctl 유틸리티는 Linux 환경에서 실행해야 하는 Linux 바이너리입니다.

사전 요구 사항

  • 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하기 위해 ccoctl 유틸리티를 사용하여 클러스터가 구성되었습니다.
  • OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest CR(사용자 정의 리소스)을 추출하여 spec.secretRef.namespace 필드의 텍스트와 일치하는 네임스페이스가 클러스터에 있는지 확인했습니다.

프로세스

  1. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지의 변수를 설정합니다.

    $ RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})
  2. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CCO 컨테이너 이미지를 가져옵니다.

    $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
    참고

    $RELEASE_IMAGE 의 아키텍처가 ccoctl 툴을 사용할 환경의 아키텍처와 일치하는지 확인합니다.

  3. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지 내에서 ccoctl 바이너리를 추출합니다.

    $ oc image extract $CCO_IMAGE \
      --file="/usr/bin/ccoctl.<rhel_version>" \1
      -a ~/.pull-secret
    1
    & lt;rhel_version > 의 경우 호스트가 사용하는 RHEL(Red Hat Enterprise Linux) 버전에 해당하는 값을 지정합니다. 값을 지정하지 않으면 기본적으로 ccoctl.rhel8 이 사용됩니다. 다음 값이 유효합니다.
    • rhel8: RHEL 8을 사용하는 호스트에 대해 이 값을 지정합니다.
    • rhel9: RHEL 9를 사용하는 호스트에 대해 이 값을 지정합니다.
  4. 다음 명령을 실행하여 ccoctl 을 실행할 수 있도록 권한을 변경합니다.

    $ chmod 775 ccoctl.<rhel_version>

검증

  • ccoctl 을 사용할 준비가 되었는지 확인하려면 도움말 파일을 표시합니다. 명령을 실행할 때 상대 파일 이름을 사용합니다. 예를 들면 다음과 같습니다.

    $ ./ccoctl.rhel9

    출력 예

    OpenShift credentials provisioning tool
    
    Usage:
      ccoctl [command]
    
    Available Commands:
      aws          Manage credentials objects for AWS cloud
      azure        Manage credentials objects for Azure
      gcp          Manage credentials objects for Google cloud
      help         Help about any command
      ibmcloud     Manage credentials objects for {ibm-cloud-title}
      nutanix      Manage credentials objects for Nutanix
    
    Flags:
      -h, --help   help for ccoctl
    
    Use "ccoctl [command] --help" for more information about a command.

2.2.4. Cloud Credential Operator 유틸리티를 사용하여 클라우드 공급자 리소스 업데이트

CCO 유틸리티(ccoctl)를 사용하여 구성된 OpenShift Container Platform 클러스터를 업그레이드하는 프로세스는 설치 중에 클라우드 공급자 리소스를 생성하는 것과 유사합니다.

참고

AWS 클러스터에서 일부 ccoctl 명령은 AWS API를 호출하여 AWS 리소스를 생성하거나 수정합니다. --dry-run 플래그를 사용하여 API 호출을 방지할 수 있습니다. 이 플래그를 사용하면 로컬 파일 시스템에 JSON 파일이 생성됩니다. JSON 파일을 검토 및 수정한 다음 --cli-input-json 매개변수를 사용하여 AWS CLI 툴로 적용할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest CR(사용자 정의 리소스)을 추출하여 spec.secretRef.namespace 필드의 텍스트와 일치하는 네임스페이스가 클러스터에 있는지 확인했습니다.
  • 릴리스 이미지에서 ccoctl 바이너리를 추출하고 구성했습니다.

프로세스

  1. ccoctl 툴을 사용하여 클라우드 공급자에 대해 명령을 실행하여 모든 CredentialsRequest 오브젝트를 처리합니다. 다음 명령은 CredentialsRequest 오브젝트를 처리합니다.

    예 2.1. AWS(Amazon Web Services)

    $ ccoctl aws create-all \1
      --name=<name> \2
      --region=<aws_region> \3
      --credentials-requests-dir=<path_to_credentials_requests_directory> \4
      --output-dir=<path_to_ccoctl_output_dir> \5
      --create-private-s3-bucket 6
    1
    AWS 리소스를 개별적으로 생성하려면 "사용자 지정" 컨텐츠로 "AWS에 클러스터 설치" 절차의 "AWS 리소스 생성" 절차를 사용하십시오. 이 옵션은 AWS 리소스를 수정하기 전에 ccoctl 툴에서 생성하는 JSON 파일을 검토해야 하거나 ccoctl 툴에서 AWS 리소스 생성하는 데 사용하는 프로세스가 조직의 요구 사항을 자동으로 충족하지 않는 경우 유용할 수 있습니다.
    2
    추적을 위해 생성된 클라우드 리소스에 태그를 지정하는 데 사용되는 이름을 지정합니다.
    3
    클라우드 리소스가 생성될 AWS 리전을 지정합니다.
    4
    구성 요소 CredentialsRequest 오브젝트에 대한 파일이 포함된 디렉터리를 지정합니다.
    5
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.
    6
    선택사항: 기본적으로 ccoctl 유틸리티는 공개 S3 버킷에 OIDC(OpenID Connect) 구성 파일을 저장하고 공개 OIDC 엔드포인트로 S3 URL을 사용합니다. OIDC 구성을 공용 CloudFront 배포 URL을 통해 IAM ID 공급자가 액세스하는 개인 S3 버킷에 저장하려면 --create-private-s3-bucket 매개변수를 사용합니다.

    예 2.2. GCP(Google Cloud Platform)

    $ ccoctl gcp create-all \
      --name=<name> \1
      --region=<gcp_region> \2
      --project=<gcp_project_id> \3
      --credentials-requests-dir=<path_to_credentials_requests_directory> \4
      --output-dir=<path_to_ccoctl_output_dir> 5
    1
    추적에 사용되는 모든 생성된 GCP 리소스의 사용자 정의 이름을 지정합니다.
    2
    클라우드 리소스가 생성될 GCP 리전을 지정합니다.
    3
    클라우드 리소스가 생성될 GCP 프로젝트 ID를 지정합니다.
    4
    GCP 서비스 계정을 생성하려면 CredentialsRequest 매니페스트 파일이 포함된 디렉터리를 지정합니다.
    5
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.

    예 2.3. IBM Cloud

    $ ccoctl ibmcloud create-service-id \
      --credentials-requests-dir=<path_to_credential_requests_directory> \1
      --name=<cluster_name> \2
      --output-dir=<installation_directory> \3
      --resource-group-name=<resource_group_name> 4
    1
    구성 요소 CredentialsRequest 오브젝트에 대한 파일이 포함된 디렉터리를 지정합니다.
    2
    OpenShift Container Platform 클러스터의 이름을 지정합니다.
    3
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.
    4
    선택 사항: 액세스 정책의 범위를 지정하는 데 사용되는 리소스 그룹의 이름을 지정합니다.

    예 2.4. Microsoft Azure

    $ ccoctl azure create-managed-identities \
      --name <azure_infra_name> \1
      --output-dir ./output_dir \
      --region <azure_region> \2
      --subscription-id <azure_subscription_id> \3
      --credentials-requests-dir <path_to_directory_for_credentials_requests> \
      --issuer-url "${OIDC_ISSUER_URL}" \4
      --dnszone-resource-group-name <azure_dns_zone_resourcegroup_name> \5
      --installation-resource-group-name "${AZURE_INSTALL_RG}" 6
    1
    name 매개변수의 값은 Azure 리소스 그룹을 생성하는 데 사용됩니다. 새 Azure 리소스 그룹을 생성하는 대신 기존 Azure 리소스 그룹을 사용하려면 기존 그룹 이름을 값으로 사용하여 --oidc-resource-group-name 인수를 지정합니다.
    2
    기존 클러스터의 리전을 지정합니다.
    3
    기존 클러스터의 서브스크립션 ID를 지정합니다.
    4
    기존 클러스터의 OIDC 발행자 URL을 지정합니다. 다음 명령을 실행하여 이 값을 가져올 수 있습니다.
    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'
    5
    DNS 영역을 포함하는 리소스 그룹의 이름을 지정합니다.
    6
    Azure 리소스 그룹 이름을 지정합니다. 다음 명령을 실행하여 이 값을 가져올 수 있습니다.
    $ oc get infrastructure cluster \
      -o jsonpath \
      --template '{ .status.platformStatus.azure.resourceGroupName }'

    예 2.5. Nutanix

    $ ccoctl nutanix create-shared-secrets \
      --credentials-requests-dir=<path_to_credentials_requests_directory> \1
      --output-dir=<ccoctl_output_dir> \2
      --credentials-source-filepath=<path_to_credentials_file> 3
    1
    구성 요소 CredentialsRequests 오브젝트의 파일이 포함된 디렉터리의 경로를 지정합니다.
    2
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.
    3
    선택 사항: 인증 정보 데이터 YAML 파일이 포함된 디렉터리를 지정합니다. 기본적으로 ccoctl 은 이 파일이 < home_directory>/.nutanix/credentials 에 있을 것으로 예상합니다.

    CredentialsRequest 오브젝트에 대해 ccoctl 은 OpenShift Container Platform 릴리스 이미지에서 각 CredentialsRequest 오브젝트에 정의된 대로 필요한 공급자 리소스 및 권한 정책을 생성합니다.

  2. 다음 명령을 실행하여 클러스터에 보안을 적용합니다.

    $ ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}

검증

클라우드 공급자를 쿼리하여 필요한 공급자 리소스 및 권한 정책이 생성되었는지 확인할 수 있습니다. 자세한 내용은 역할 또는 서비스 계정 나열에 대한 클라우드 공급자 설명서를 참조하십시오.

다음 단계

  • upgradeable-to 주석을 업데이트하여 클러스터를 업그레이드할 준비가 되었음을 나타냅니다.

2.2.5. 클라우드 공급자 리소스 수동 업데이트

수동으로 유지 관리되는 인증 정보를 사용하여 클러스터를 업그레이드하기 전에 업그레이드하려는 릴리스 이미지의 새 인증 정보에 대한 시크릿을 생성해야 합니다. 기존 인증 정보에 필요한 권한을 검토하고 해당 구성 요소의 새 릴리스에 새 권한 요구 사항을 충족해야 합니다.

사전 요구 사항

  • OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest CR(사용자 정의 리소스)을 추출하여 spec.secretRef.namespace 필드의 텍스트와 일치하는 네임스페이스가 클러스터에 있는지 확인했습니다.

프로세스

  1. 새 릴리스 이미지가 추가하는 CredentialsRequest 사용자 정의 리소스에 대한 시크릿을 사용하여 YAML 파일을 생성합니다. 시크릿은 각 CredentialsRequest 오브젝트의 spec.secretRef에 정의된 네임 스페이스 및 시크릿 이름을 사용하여 저장해야 합니다.

    예 2.6. AWS YAML 파일 샘플

    보안이 포함된 샘플 AWS CredentialsRequest 오브젝트

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - s3:CreateBucket
          - s3:DeleteBucket
          resource: "*"
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...

    샘플 AWS Secret 오브젝트

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      aws_access_key_id: <base64_encoded_aws_access_key_id>
      aws_secret_access_key: <base64_encoded_aws_secret_access_key>

    예 2.7. Azure YAML 파일 샘플

    참고

    글로벌 Azure 및 Azure Stack Hub는 동일한 CredentialsRequest 오브젝트 및 시크릿 형식을 사용합니다.

    보안이 포함된 샘플 Azure CredentialsRequest 오브젝트

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AzureProviderSpec
        roleBindings:
        - role: Contributor
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...

    Azure Secret 오브젝트 샘플

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      azure_subscription_id: <base64_encoded_azure_subscription_id>
      azure_client_id: <base64_encoded_azure_client_id>
      azure_client_secret: <base64_encoded_azure_client_secret>
      azure_tenant_id: <base64_encoded_azure_tenant_id>
      azure_resource_prefix: <base64_encoded_azure_resource_prefix>
      azure_resourcegroup: <base64_encoded_azure_resourcegroup>
      azure_region: <base64_encoded_azure_region>

    예 2.8. GCP YAML 파일 샘플

    보안이 포함된 샘플 GCP CredentialsRequest 오브젝트

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: GCPProviderSpec
          predefinedRoles:
          - roles/iam.securityReviewer
          - roles/iam.roleViewer
          skipServiceCheck: true
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...

    샘플 GCP Secret 오브젝트

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      service_account.json: <base64_encoded_gcp_service_account_file>

  2. 시크릿에 저장된 기존 인증 정보에 대한 CredentialsRequest 사용자 정의 리소스에 변경된 권한 요구 사항이 있는 경우 필요에 따라 권한을 업데이트합니다.

다음 단계

  • upgradeable-to 주석을 업데이트하여 클러스터를 업그레이드할 준비가 되었음을 나타냅니다.

2.2.6. 클러스터를 업그레이드할 준비가 되었음을 나타냅니다.

CCO(Cloud Credential Operator) 수동으로 유지 관리되는 인증 정보가 있는 클러스터의 Upgradable 상태는 기본적으로 False 입니다.

사전 요구 사항

  • 업그레이드할 릴리스 이미지의 경우 새 인증 정보를 수동으로 처리하거나 Cloud Credential Operator 유틸리티(ccoctl)를 사용하여 처리했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. cluster-admin 역할의 사용자로 클러스터에서 oc 에 로그인합니다.
  2. CloudCredential 리소스를 편집하여 다음 명령을 실행하여 metadata 필드 내에 upgradeable-to 주석을 추가합니다.

    $ oc edit cloudcredential cluster

    추가할 텍스트

    ...
      metadata:
        annotations:
          cloudcredential.openshift.io/upgradeable-to: <version_number>
    ...

    여기서 <version_number>x.y.z 형식으로 업그레이드할 버전입니다. 예를 들어 OpenShift Container Platform 4.12.2에는 4.12.2를 사용합니다.

    주석을 추가한 후 업그레이드 가능 상태가 변경되는 데 몇 분이 소요될 수 있습니다.

검증

  1. 웹 콘솔의 관리자 화면에서 관리자 클러스터 설정으로 이동합니다.
  2. CCO 상태 세부 정보를 보려면 Cluster Operators 목록에서 cloud-credential을 클릭합니다.

    • Conditions 섹션의 Upgradeable 상태가 False인 경우 upgradeable-to 주석에 오타 오류가 없는지 확인합니다.
  3. Conditions 섹션의 Upgradeable 상태가 True 인 경우 OpenShift Container Platform 업그레이드를 시작합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.