19.2. Mint 모드의 Cloud Credential Operator
Mint 모드는 이를 지원하는 플랫폼의 OpenShift Container Platform의 기본 CCO(Cloud Credential Operator) 인증 정보 모드입니다. Mint 모드는 AWS(Amazon Web Services) 및 GCP(Google Cloud Platform) 클러스터를 지원합니다.
19.2.1. Mint 모드 인증 정보 관리
mint 모드에서 CCO를 사용하는 클러스터의 경우 관리자 수준 인증 정보는 kube-system
네임스페이스에 저장됩니다. CCO는 admin
인증 정보를 사용하여 클러스터의 CredentialsRequest
오브젝트를 처리하고 제한된 권한으로 구성 요소에 대한 사용자를 생성합니다.
mint 모드를 사용하면 각 클러스터 구성 요소에 필요한 특정 권한만 있습니다. mint 모드에서 클라우드 인증 정보를 자동으로 조정하면 업그레이드와 같은 추가 인증 정보 또는 권한이 필요한 작업을 진행할 수 있습니다.
기본적으로 mint 모드에서는 클러스터 kube-system
네임스페이스에 관리자
인증 정보를 저장해야 합니다. 이 방법이 조직의 보안 요구 사항을 충족하지 않는 경우 클러스터를 설치한 후 인증 정보를 제거할 수 있습니다.
19.2.1.1. Mint 모드 권한 요구사항
Mint 모드에서 CCO를 사용하는 경우 제공한 인증 정보가 OpenShift Container Platform을 실행 중이거나 설치하는 클라우드의 요구 사항을 충족하는지 확인하십시오. 제공된 인증 정보가 mint 모드에 충분하지 않으면 CCO에서 IAM 사용자를 생성할 수 없습니다.
AWS(Amazon Web Services)에서 Mint 모드에 제공하는 인증 정보에는 다음과 같은 권한이 있어야 합니다.
예 19.1. 필요한 GCP 권한
-
iam:CreateAccessKey
-
iam:CreateUser
-
iam:DeleteAccessKey
-
iam:DeleteUser
-
iam:DeleteUserPolicy
-
iam:GetUser
-
iam:GetUserPolicy
-
iam:ListAccessKeys
-
iam:PutUserPolicy
-
iam:TagUser
-
iam:SimulatePrincipalPolicy
GCP(Google Cloud Platform)에서 Mint 모드에 제공하는 인증 정보에는 다음과 같은 권한이 있어야 합니다.
예 19.2. 필요한 GCP 권한
-
resourcemanager.projects.get
-
serviceusage.services.list
-
iam.serviceAccountKeys.create
-
iam.serviceAccountKeys.delete
-
iam.serviceAccountKeys.list
-
iam.serviceAccounts.create
-
iam.serviceAccounts.delete
-
iam.serviceAccounts.get
-
iam.roles.create
-
iam.roles.get
-
iam.roles.list
-
iam.roles.undelete
-
iam.roles.update
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
19.2.1.2. 관리자 인증 정보 루트 시크릿 형식
각 클라우드 공급자는 규칙에 따라 kube-system
네임 스페이스의 인증 정보 루트 시크릿을 사용하며, 이를 통해 모든 인증 정보 요청을 충족하고 해당 암호를 만드는 데 사용됩니다. 이 작업은 mint 모드를 사용하여 새 인증 정보를 생성하거나 패스스루 모드를 사용하여 인증 정보 루트 시크릿을 복사하여 수행됩니다.
시크릿의 형식은 클라우드에 따라 다르며 각 CredentialsRequest
시크릿에도 사용됩니다.
Amazon Web Services (AWS) 시크릿 형식
apiVersion: v1 kind: Secret metadata: namespace: kube-system name: aws-creds stringData: aws_access_key_id: <base64-encoded_access_key_id> aws_secret_access_key: <base64-encoded_secret_access_key>
Google Cloud Platform (GCP) 시크릿 형식
apiVersion: v1 kind: Secret metadata: namespace: kube-system name: gcp-credentials stringData: service_account.json: <base64-encoded_service_account>
19.2.2. 클라우드 공급자 인증 정보 유지 관리
어떠한 이유로 클라우드 공급자 인증 정보가 변경되면 CCO(Cloud Credential Operator)에서 클라우드 공급자 인증 정보를 관리하기 위해 사용하는 시크릿을 수동으로 업데이트해야 합니다.
클라우드 인증 정보를 교체하는 프로세스는 CCO가 사용하도록 구성된 모드에 따라 달라집니다. Mint 모드를 사용하는 클러스터의 인증 정보를 교체한 후 삭제된 인증 정보를 통해 생성된 구성 요소 인증 정보를 수동으로 제거해야 합니다.
사전 요구 사항
클러스터는 다음을 사용하는 CCO 모드로 클라우드 인증 정보 교체를 수동으로 지원하는 플랫폼에 설치됩니다.
- Mint 모드의 경우 AWS(Amazon Web Services) 및 GCP(Google Cloud Platform)가 지원됩니다.
- 클라우드 공급자와 인터페이스에 사용되는 인증 정보를 변경했습니다.
- 새 인증 정보에는 클러스터에서 사용할 수 있도록 구성된 모드 CCO에 대한 충분한 권한이 있습니다.
프로세스
-
웹 콘솔의 관리자 화면에서 워크로드
시크릿 으로 이동합니다. Secrets 페이지의 표에서 클라우드 공급자의 루트 시크릿을 찾습니다.
플랫폼 시크릿 이름 AWS
aws-creds
GCP
gcp-credentials
- 시크릿과 동일한 행에서 옵션 메뉴 를 클릭하고 시크릿 편집을 선택합니다.
- Value 필드의 내용을 기록합니다. 이 정보를 사용하여 인증서를 업데이트한 후 값이 다른지 확인할 수 있습니다.
- 클라우드 공급자에 대한 새로운 인증 정보를 사용하여 Value 필드의 텍스트를 업데이트한 다음 저장을 클릭합니다.
개별
CredentialsRequest
개체에서 참조하는 각 구성 요소 시크릿을 삭제합니다.-
cluster-admin
역할의 사용자로 OpenShift Container Platform CLI에 로그인합니다. 참조되는 모든 구성 요소 시크릿의 이름과 네임스페이스를 가져옵니다.
$ oc -n openshift-cloud-credential-operator get CredentialsRequest \ -o json | jq -r '.items[] | select (.spec.providerSpec.kind=="<provider_spec>") | .spec.secretRef'
여기서
<provider_spec>
은 클라우드 공급자의 해당 값입니다.-
AWS:
AWSProviderSpec
-
GCP:
GCPProviderSpec
AWS의 부분 예제 출력
{ "name": "ebs-cloud-credentials", "namespace": "openshift-cluster-csi-drivers" } { "name": "cloud-credential-operator-iam-ro-creds", "namespace": "openshift-cloud-credential-operator" }
-
AWS:
참조된 각 구성 요소 시크릿을 삭제합니다.
$ oc delete secret <secret_name> \1 -n <secret_namespace> 2
AWS 시크릿 삭제 예
$ oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers
공급자 콘솔에서 인증 정보를 수동으로 삭제할 필요가 없습니다. 참조된 구성 요소 시크릿을 삭제하면 CCO가 플랫폼에서 기존 인증 정보를 삭제하고 새 인증서를 생성합니다.
-
검증
인증 정보가 변경되었는지 확인하려면 다음을 수행하십시오.
-
웹 콘솔의 관리자 화면에서 워크로드
시크릿 으로 이동합니다. - 값 필드의 내용이 변경되었는지 확인합니다.