5.3. 수동으로 Azure 용 IAM 생성

클라우드 ID 및 액세스 관리(IAM) API에 연결할 수 없는 환경에서 또는 관리자가 클러스터 kube-system 네임 스페이스에 관리자 수준의 인증 정보 시크릿을 저장하지 않는 것을 선호하는 경우 클러스터를 설치하기 전에 CCO(Cloud Credential Operator)를 수동 모드로 설정할 수 있습니다.

5.3.1. kube-system 프로젝트에 관리자 수준 시크릿을 저장하는 대안

CCO(Cloud Credential Operator)는 클라우드 공급자 인증 정보를 Kubernetes CRD(사용자 지정 리소스 정의)로 관리합니다. install-config.yaml 파일에서 credentialsMode 매개변수의 다른 값을 설정하여 조직의 보안 요구 사항에 맞게 CCO를 구성할 수 있습니다.

클러스터 kube-system 프로젝트에 관리자 수준 인증 정보 시크릿을 저장하지 않으려면 OpenShift Container Platform을 설치할 때 CCO의 credentialsMode 매개변수를 수동으로 관리할 수 있습니다.

수동 모드를 사용하면 각 클러스터 구성 요소에는 클러스터에 관리자 수준 인증 정보를 저장하지 않고 필요한 권한만 보유할 수 있습니다. 환경이 클라우드 공급자 공용 IAM 끝점에 연결되지 않은 경우 이 모드를 사용할 수도 있습니다. 그러나 업그레이드할 때마다 새 릴리스 이미지로 권한을 수동으로 조정해야 합니다. 또한 요청하는 모든 구성 요소에 대한 인증 정보를 수동으로 제공해야 합니다.

추가 리소스

  • 사용 가능한 모든 CCO 인증 정보 모드 및 지원되는 플랫폼에 대한 자세한 내용은 Cloud Credential Operator 정보를 참조하십시오.

5.3.2. 수동으로 IAM 생성

Cloud Credential Operator (CCO)는 클라우드 아이덴티티 및 액세스 관리 (IAM) API에 연결할 수 없는 환경에서 설치하기 전에 수동 모드로 전환할 수 있습니다. 또는 관리자가 클러스터 kube-system 네임 스페이스에 관리자 수준의 인증 정보 시크릿을 저장하지 않도록 합니다.

프로세스

  1. 설치 프로그램이 포함된 디렉터리로 변경하고 다음 명령을 실행하여 install-config.yaml 파일을 생성합니다.

    $ openshift-install create install-config --dir <installation_directory>

    여기서 <installation_directory> 는 설치 프로그램이 파일을 생성하는 디렉터리입니다.

  2. install-config.yaml 구성 파일을 편집하여 credentialsMode 매개 변수가 Manual로 설정되도록 합니다.

    install-config.yaml 설정 파일 예

    apiVersion: v1
    baseDomain: cluster1.example.com
    credentialsMode: Manual 1
    compute:
    - architecture: amd64
      hyperthreading: Enabled
    ...

    1
    이 행은 credentialsMode 매개변수를 Manual로 설정하기 위해 추가됩니다.
  3. 매니페스트를 생성하려면 설치 프로그램이 포함된 디렉터리에서 다음 명령을 실행합니다.

    $ openshift-install create manifests --dir <installation_directory>

    여기서 <installation_directory> 는 설치 프로그램이 파일을 생성하는 디렉터리입니다.

  4. 설치 프로그램이 포함된 디렉터리에서 다음 명령을 실행하여 openshift-install 바이너리가 사용하도록 빌드된 OpenShift Container Platform 릴리스 이미지에 대한 세부 정보를 가져옵니다.

    $ openshift-install version

    출력 예

    release image quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64

  5. 다음 명령을 실행하여 배포 중인 클라우드를 대상으로 하는 이 릴리스 이미지에서 모든 CredentialsRequest 오브젝트를 찾습니다.

    $ oc adm release extract quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64 \
      --credentials-requests \
      --cloud=azure

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

    샘플 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
      ...

  6. 이전에 생성한 openshift-install 매니페스트 디렉터리에 시크릿 YAML 파일을 만듭니다. 시크릿은 각 CredentialsRequest 오브젝트의 spec.secretRef에 정의된 네임 스페이스 및 시크릿 이름을 사용하여 저장해야 합니다.

    보안이 포함된 샘플 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>
      ...

    샘플 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>

중요

수동으로 유지 관리되는 인증 정보를 사용하는 클러스터를 업그레이드하기 전에 CCO가 업그레이드 가능한 상태인지 확인해야 합니다. 자세한 내용은 클라우드 공급자에 대한 설치 콘텐츠의 "수동으로 유지 관리되는 인증 정보를 사용하여 클러스터 업그레이드" 섹션을 참조하십시오.

5.3.3. 수동으로 유지 관리되는 인증 정보로 클러스터 업그레이드

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

  • 마이너 릴리스(예: 4.8에서 4.9로)의 경우 이 상태는 업데이트된 권한을 처리하고 CloudCredential 리소스에 주석을 달아 권한이 다음 버전에 필요에 따라 업데이트되었음을 나타낼 때까지 업그레이드되지 않도록 합니다. 이 주석은 Upgradable 상태를 True로 변경합니다.
  • 예를 들어 4.9.0에서 4.9.1으로 z-stream 릴리스의 경우 권한이 추가되거나 변경되지 않으므로 업그레이드가 차단되지 않습니다.

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

절차

  1. 새 릴리스에 대한 CredentialsRequest 사용자 지정 리소스를 추출하고 검사합니다.

    클라우드 공급자용 설치 콘텐츠의 "수동으로 IAM 생성" 섹션에서는 클라우드에 필요한 인증 정보를 획득하고 사용하는 방법을 설명합니다.

  2. 클러스터에서 수동으로 유지 관리되는 인증 정보를 업데이트합니다.

    • 새 릴리스 이미지에서 추가한 CredentialsRequest 사용자 정의 리소스에 대한 새 시크릿을 생성합니다.
    • 시크릿에 저장된 기존 인증 정보에 대한 CredentialsRequest 사용자 정의 리소스가 권한 요구 사항이 변경된 경우 필요에 따라 권한을 업데이트합니다.
  3. 모든 보안이 새 릴리스에 대해 올바른 경우 클러스터를 업그레이드할 준비가 되었음을 나타냅니다.

    1. cluster-admin 역할의 사용자로 OpenShift Container Platform CLI에 로그인합니다.
    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.8.2 의 경우 4.8.2입니다.

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

  4. CCO를 업그레이드할 수 있는지 확인합니다.

    1. 웹 콘솔의 관리자 화면에서 관리자클러스터 설정으로 이동합니다.
    2. CCO 상태 세부 정보를 보려면 Cluster Operators 목록에서 cloud-credential을 클릭합니다.
    3. Conditions 섹션의 Upgradeable 상태가 False인 경우 upgradeable-to 주석에 오타 오류가 없는지 확인합니다.

Conditions 섹션의 Upgradeable 상태가 True 이면 OpenShift Container Platform 업그레이드를 시작할 수 있습니다.

5.3.4. 다음 단계