10장. 클라우드 공급자 인증 정보 구성 변경
보안 및 인증 요구 사항을 충족하도록 클러스터의 클라우드 공급자 인증 정보 구성을 변경할 수 있습니다. 인증 정보를 교체하거나 제거하거나 지원되는 단기 인증 정보 방법을 활성화할 수 있습니다.
지원되는 구성의 경우 OpenShift Container Platform이 클라우드 공급자로 인증하는 방법을 변경할 수 있습니다.
클러스터에서 사용하는 클라우드 인증 전략을 결정하려면 "Cloud Credential Operator 모드 결정"을 참조하십시오.
10.1. Cloud Credential Operator 유틸리티를 사용하여 클라우드 공급자 서비스 키 교체 링크 복사링크가 클립보드에 복사되었습니다!
일부 조직에서는 클러스터를 인증하는 서비스 키를 순환해야 합니다. CCO(Cloud Credential Operator) 유틸리티(ccoctl)를 사용하여 다음 클라우드 공급자에 설치된 클러스터의 키를 업데이트할 수 있습니다.
- Amazon Web Services(AWS)와 보안 토큰 서비스(STS)
- Google Cloud with GCP 워크로드 ID
- 워크로드 ID가 있는 Microsoft Azure
- IBM Cloud
10.1.1. AWS OIDC 바인딩 서비스 계정 서명자 키 교체 링크 복사링크가 클립보드에 복사되었습니다!
STS를 사용하여 수동 모드에서 CCO(Cloud Credential Operator)를 사용하는 AWS(Amazon Web Services)의 OpenShift Container Platform 클러스터에 대해 바인딩된 서비스 계정 서명 키를 회전할 수 있습니다.
키를 교체하려면 클러스터에서 기존 키를 삭제하여 Kubernetes API 서버가 새 키를 생성합니다. 이 프로세스 중에 인증 실패를 줄이려면 기존 발행자 파일에 새 공개 키를 즉시 추가해야 합니다. 클러스터에서 인증에 새 키를 사용한 후 나머지 키를 제거할 수 있습니다.
OIDC 바인딩 서비스 계정 서명자 키를 교체하는 프로세스는 중단되며 상당한 시간이 걸립니다. 일부 단계는 시간에 민감합니다. 진행하기 전에 다음 고려 사항을 고려하십시오.
- 다음 단계를 읽고 시간 요구 사항을 이해하고 수락하는지 확인하십시오. 정확한 시간 요구 사항은 개별 클러스터에 따라 다르지만 최소 1시간이 걸릴 수 있습니다.
- 인증 실패 위험을 줄이려면 시간에 민감한 단계를 이해하고 준비해야 합니다.
- 이 프로세스 중에 모든 서비스 계정을 새로 고치고 클러스터의 모든 Pod를 다시 시작해야 합니다. 이러한 작업은 워크로드에 영향을 미칩니다. 이 영향을 완화하기 위해 이러한 서비스를 일시적으로 중단한 다음 클러스터가 준비되면 다시 배포할 수 있습니다.
사전 요구 사항
-
cluster-admin역할의 사용자로 OpenShift CLI(oc)에 액세스할 수 있습니다.
ccoctl유틸리티에서 다음 권한과 함께 사용할 AWS 계정을 생성했습니다.-
s3:GetObject -
s3:PutObject -
s3:PutObjectTagging -
공용 CloudFront 배포 URL을 통해 IAM ID 공급자가 액세스하는 프라이빗 S3 버킷에 OIDC 구성을 저장하는 클러스터의 경우
ccoctl유틸리티를 실행하는 AWS 계정에cloudfront:ListDistributions권한이 필요합니다.
-
-
ccoctl유틸리티를 구성했습니다. 클러스터가 안정적인 상태에 있습니다. 다음 명령을 실행하여 클러스터가 안정적인지 확인할 수 있습니다.
$ oc adm wait-for-stable-cluster --minimum-stable-period=5s
프로세스
다음 환경 변수를 구성합니다.
INFRA_ID=$(oc get infrastructures cluster -o jsonpath='{.status.infrastructureName}') CLUSTER_NAME=${INFRA_ID%-*}다음과 같습니다.
CLUSTER_NAME이 값은 설치 중에
install-config.yaml파일의metadata.name필드에 지정된 클러스터의 이름과 일치해야 합니다.참고클러스터는 이 예제와 다를 수 있으며 리소스 이름은 클러스터 이름과 동일하게 파생되지 않을 수 있습니다. 클러스터의 올바른 리소스 이름을 지정해야 합니다.
OIDC 구성을 공용 S3 버킷에 저장하는 AWS 클러스터의 경우 다음 환경 변수를 구성합니다.
AWS_BUCKET=$(oc get authentication cluster -o jsonpath={'.spec.serviceAccountIssuer'} | awk -F'://' '{print$2}' |awk -F'.' '{print$1}')공개 CloudFront 배포 URL을 통해 IAM ID 공급자가 액세스하는 프라이빗 S3 버킷에 OIDC 구성을 저장하는 AWS 클러스터의 경우 다음 단계를 완료합니다.
다음 명령을 실행하여 공용 CloudFront 배포 URL을 추출합니다.
$ basename $(oc get authentication cluster -o jsonpath={'.spec.serviceAccountIssuer'} )출력 예
<subdomain>.cloudfront.net여기서
<subdomain>은 영숫자 문자열입니다.다음 명령을 실행하여 개인 S3 버킷 이름을 확인합니다.
$ aws cloudfront list-distributions --query "DistributionList.Items[].{DomainName: DomainName, OriginDomainName: Origins.Items[0].DomainName}[?contains(DomainName, '<subdomain>.cloudfront.net')]"출력 예
[ { "DomainName": "<subdomain>.cloudfront.net", "OriginDomainName": "<s3_bucket>.s3.us-east-2.amazonaws.com" } ]여기서
<s3_bucket>은 클러스터의 프라이빗 S3 버킷 이름입니다.다음 환경 변수를 구성합니다.
AWS_BUCKET=$<s3_bucket>여기서
<s3_bucket>은 클러스터의 프라이빗 S3 버킷 이름입니다.
다음 명령을 실행하여 사용할 임시 디렉터리를 생성하고 환경 변수를 할당합니다.
$ TEMPDIR=$(mktemp -d)Kubernetes API 서버가 새 바인딩된 서비스 계정 서명 키를 생성하도록 다음 바인딩된 서비스 계정 서명 키를 삭제합니다.
중요이 단계를 완료하면 Kubernetes API 서버가 새 키를 롤아웃하기 시작합니다. 인증 실패 위험을 줄이려면 나머지 단계를 최대한 빨리 완료하십시오. 나머지 단계는 워크로드에 방해가 될 수 있습니다.
준비가 되면 다음 명령을 실행하여 다음 바인딩된 서비스 계정 서명 키를 삭제합니다.
$ oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator다음 명령을 실행하여 Kubernetes API 서버가 생성한 서비스 계정 서명 키 시크릿에서 공개 키를 다운로드합니다.
$ oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public다음 명령을 실행하여 공개 키를 사용하여
keys.json파일을 생성합니다.$ ccoctl aws create-identity-provider \ --dry-run \ --output-dir ${TEMPDIR} \ --public-key-file=${TEMPDIR}/serviceaccount-signer.public \ --name fake \ --region us-east-1다음과 같습니다.
--dry-run-
마른 실행 모드에서는 새
keys.json파일을 포함한 파일을 API 호출 없이 디스크로 출력합니다. --public-key-file- 이전 단계에서 다운로드한 공개 키의 경로입니다.
--name-
일부 매개 변수는
--dry-run옵션이 API 호출을 수행하지 않기 때문에 실제 값이 필요하지 않습니다. --region-
유효한 모든 AWS 리전(예:
us-east-1) 이 값은 클러스터가 있는 리전과 일치하지 않아도 됩니다.
다음 명령을 실행하여
keys.json파일의 이름을 변경합니다.$ cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json여기서
<number>는 환경에 따라 달라지는 두 자리 숫자 값입니다.다음 명령을 실행하여 클라우드 공급자에서 기존
keys.json파일을 다운로드합니다.$ aws s3api get-object \ --bucket ${AWS_BUCKET} \ --key keys.json ${TEMPDIR}/jwks.current.json다음 명령을 실행하여 두 개의
keys.json파일을 결합합니다.$ jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json교체 중에 이전 키와 새 키에 대한 인증을 활성화하려면 다음 명령을 실행하여 결합된
keys.json파일을 클라우드 공급자에 업로드합니다.$ aws s3api put-object \ --bucket ${AWS_BUCKET} \ --tagging "openshift.io/cloud-credential-operator/${CLUSTER_NAME}=owned" \ --key keys.json \ --body ${TEMPDIR}/jwks.combined.jsonKubernetes API 서버가 업데이트되고 새 키를 사용할 때까지 기다립니다. 다음 명령을 실행하여 업데이트 진행 상황을 모니터링할 수 있습니다.
$ oc adm wait-for-stable-cluster이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All clusteroperators are stable클러스터의 모든 Pod가 새 키를 사용하도록 하려면 다시 시작해야 합니다.
중요이 단계에서는 여러 노드에서 고가용성을 위해 구성된 서비스의 가동 시간을 유지하지만 그렇지 않은 모든 서비스에 대해서는 다운타임이 발생할 수 있습니다.
다음 명령을 실행하여 클러스터의 모든 Pod를 다시 시작합니다.
$ oc adm reboot-machine-config-pool mcp/worker mcp/master다음 명령을 실행하여 재시작 및 업데이트 프로세스를 모니터링합니다.
$ oc adm wait-for-node-reboot nodes --all이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All nodes rebooted다음 명령을 실행하여 업데이트 진행 상황을 모니터링합니다.
$ oc adm wait-for-stable-cluster이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All clusteroperators are stable다음 명령을 실행하여 결합된
keys.json파일을 클라우드 공급자에서 업데이트된keys.json파일로 교체합니다.$ aws s3api put-object \ --bucket ${AWS_BUCKET} \ --tagging "openshift.io/cloud-credential-operator/${CLUSTER_NAME}=owned" \ --key keys.json \ --body ${TEMPDIR}/jwks.new.json
10.1.2. Google Cloud OIDC 바인딩 서비스 계정 서명자 키 교체 링크 복사링크가 클립보드에 복사되었습니다!
GCP 워크로드 ID와 함께 수동 모드에서 CCO(Cloud Credential Operator)를 사용하는 Google Cloud에서 OpenShift Container Platform 클러스터에 바인딩된 서비스 계정 서명 키를 회전할 수 있습니다.
키를 교체하려면 클러스터에서 기존 키를 삭제하여 Kubernetes API 서버가 새 키를 생성합니다. 이 프로세스 중에 인증 실패를 줄이려면 기존 발행자 파일에 새 공개 키를 즉시 추가해야 합니다. 클러스터에서 인증에 새 키를 사용한 후 나머지 키를 제거할 수 있습니다.
OIDC 바인딩 서비스 계정 서명자 키를 교체하는 프로세스는 중단되며 상당한 시간이 걸립니다. 일부 단계는 시간에 민감합니다. 진행하기 전에 다음 고려 사항을 고려하십시오.
- 다음 단계를 읽고 시간 요구 사항을 이해하고 수락하는지 확인하십시오. 정확한 시간 요구 사항은 개별 클러스터에 따라 다르지만 최소 1시간이 걸릴 수 있습니다.
- 인증 실패 위험을 줄이려면 시간에 민감한 단계를 이해하고 준비해야 합니다.
- 이 프로세스 중에 모든 서비스 계정을 새로 고치고 클러스터의 모든 Pod를 다시 시작해야 합니다. 이러한 작업은 워크로드에 영향을 미칩니다. 이 영향을 완화하기 위해 이러한 서비스를 일시적으로 중단한 다음 클러스터가 준비되면 다시 배포할 수 있습니다.
사전 요구 사항
-
cluster-admin역할의 사용자로 OpenShift CLI(oc)에 액세스할 수 있습니다.
ccoctl유틸리티에서 사용하는 Google Cloud 계정에 다음 인증 옵션 중 하나를 추가했습니다.- IAM 워크로드 ID 풀 관리자 역할
다음과 같은 세분화된 권한:
-
storage.objects.create -
storage.objects.delete
-
-
ccoctl유틸리티를 구성했습니다. 클러스터가 안정적인 상태에 있습니다. 다음 명령을 실행하여 클러스터가 안정적인지 확인할 수 있습니다.
$ oc adm wait-for-stable-cluster --minimum-stable-period=5s
프로세스
다음 환경 변수를 구성합니다.
CURRENT_ISSUER=$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}') GCP_BUCKET=$(echo ${CURRENT_ISSUER} | cut -d "/" -f4) CLUSTER_NAME=${GCP_BUCKET%-*}참고클러스터는 이 예제와 다를 수 있으며 리소스 이름은 클러스터 이름과 동일하게 파생되지 않을 수 있습니다. 클러스터의 올바른 리소스 이름을 지정해야 합니다.
다음 명령을 실행하여 사용할 임시 디렉터리를 생성하고 환경 변수를 할당합니다.
$ TEMPDIR=$(mktemp -d)Kubernetes API 서버가 새 바인딩된 서비스 계정 서명 키를 생성하도록 다음 바인딩된 서비스 계정 서명 키를 삭제합니다.
중요이 단계를 완료하면 Kubernetes API 서버가 새 키를 롤아웃하기 시작합니다. 인증 실패 위험을 줄이려면 나머지 단계를 최대한 빨리 완료하십시오. 나머지 단계는 워크로드에 방해가 될 수 있습니다.
준비가 되면 다음 명령을 실행하여 다음 바인딩된 서비스 계정 서명 키를 삭제합니다.
$ oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator다음 명령을 실행하여 Kubernetes API 서버가 생성한 서비스 계정 서명 키 시크릿에서 공개 키를 다운로드합니다.
$ oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public다음 명령을 실행하여 공개 키를 사용하여
keys.json파일을 생성합니다.$ ccoctl gcp create-workload-identity-provider \ --dry-run \ --output-dir=${TEMPDIR} \ --public-key-file=${TEMPDIR}/serviceaccount-signer.public \ --name fake \ --project fake \ --workload-identity-pool fake다음과 같습니다.
--dry-run-
마른 실행 모드에서는 새
keys.json파일을 포함한 파일을 API 호출 없이 디스크로 출력합니다. --public-key-file- 이전 단계에서 다운로드한 공개 키의 경로입니다.
--name-
일부 매개 변수는
--dry-run옵션이 API 호출을 수행하지 않기 때문에 실제 값이 필요하지 않습니다.
다음 명령을 실행하여
keys.json파일의 이름을 변경합니다.$ cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json여기서
<number>는 환경에 따라 달라지는 두 자리 숫자 값입니다.다음 명령을 실행하여 클라우드 공급자에서 기존
keys.json파일을 다운로드합니다.OIDC 키를 공개 버킷에 저장하는 Google Cloud 클러스터의 경우 다음 명령을 실행합니다.
$ gcloud storage cp gs://${GCP_BUCKET}/keys.json ${TEMPDIR}/jwks.current.jsonOIDC 키를 워크로드 ID 풀에 직접 연결하는 Google Cloud 클러스터의 경우 다음 명령을 실행합니다.
$ gcloud iam workload-identity-pools providers describe \ --format json \ --location global \ --workload-identity-pool ${CLUSTER_NAME} ${CLUSTER_NAME} \ | jq -r ".oidc.jwksJson" > ${TEMPDIR}/jwks.current.json
다음 명령을 실행하여 두 개의
keys.json파일을 결합합니다.$ jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json교체 중에 이전 키와 새 키에 대한 인증을 활성화하려면 다음 명령을 실행하여 결합된
keys.json파일을 클라우드 공급자에 업로드합니다.OIDC 키를 공개 버킷에 저장하는 Google Cloud 클러스터의 경우 다음 명령을 실행합니다.
$ gcloud storage cp ${TEMPDIR}/jwks.combined.json gs://${GCP_BUCKET}/keys.jsonOIDC 키를 워크로드 ID 풀에 직접 연결하는 Google Cloud 클러스터의 경우 다음 명령을 실행합니다.
$ gcloud iam workload-identity-pools providers update-oidc ${CLUSTER_NAME} \ --location=global \ --workload-identity-pool=${CLUSTER_NAME} \ --jwk-json-path=${TEMPDIR}/jwks.combined.json
Kubernetes API 서버가 업데이트되고 새 키를 사용할 때까지 기다립니다. 다음 명령을 실행하여 업데이트 진행 상황을 모니터링할 수 있습니다.
$ oc adm wait-for-stable-cluster이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All clusteroperators are stable클러스터의 모든 Pod가 새 키를 사용하도록 하려면 다시 시작해야 합니다.
중요이 단계에서는 여러 노드에서 고가용성을 위해 구성된 서비스의 가동 시간을 유지하지만 그렇지 않은 모든 서비스에 대해서는 다운타임이 발생할 수 있습니다.
다음 명령을 실행하여 클러스터의 모든 Pod를 다시 시작합니다.
$ oc adm reboot-machine-config-pool mcp/worker mcp/master다음 명령을 실행하여 재시작 및 업데이트 프로세스를 모니터링합니다.
$ oc adm wait-for-node-reboot nodes --all이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All nodes rebooted다음 명령을 실행하여 업데이트 진행 상황을 모니터링합니다.
$ oc adm wait-for-stable-cluster이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All clusteroperators are stable다음 명령을 실행하여 결합된
keys.json파일을 클라우드 공급자에서 업데이트된keys.json파일로 교체합니다.OIDC 키를 공개 버킷에 저장하는 Google Cloud 클러스터의 경우 다음 명령을 실행합니다.
$ gcloud storage cp ${TEMPDIR}/jwks.new.json gs://${GCP_BUCKET}/keys.jsonOIDC 키를 워크로드 ID 풀에 직접 연결하는 Google Cloud 클러스터의 경우 다음 명령을 실행합니다.
$ gcloud iam workload-identity-pools providers update-oidc ${CLUSTER_NAME} \ --location=global \ --workload-identity-pool=${CLUSTER_NAME} \ --jwk-json-path=${TEMPDIR}/jwks.new.json
10.1.3. Azure OIDC 바인딩된 서비스 계정 서명자 키 교체 링크 복사링크가 클립보드에 복사되었습니다!
Microsoft Entra Workload ID를 사용하여 수동 모드에서 CCO(Cloud Credential Operator)를 사용하는 Microsoft Azure의 OpenShift Container Platform 클러스터에 바인딩된 서비스 계정 서명 키를 회전할 수 있습니다.
키를 교체하려면 클러스터에서 기존 키를 삭제하여 Kubernetes API 서버가 새 키를 생성합니다. 이 프로세스 중에 인증 실패를 줄이려면 기존 발행자 파일에 새 공개 키를 즉시 추가해야 합니다. 클러스터에서 인증에 새 키를 사용한 후 나머지 키를 제거할 수 있습니다.
OIDC 바인딩 서비스 계정 서명자 키를 교체하는 프로세스는 중단되며 상당한 시간이 걸립니다. 일부 단계는 시간에 민감합니다. 진행하기 전에 다음 고려 사항을 고려하십시오.
- 다음 단계를 읽고 시간 요구 사항을 이해하고 수락하는지 확인하십시오. 정확한 시간 요구 사항은 개별 클러스터에 따라 다르지만 최소 1시간이 걸릴 수 있습니다.
- 인증 실패 위험을 줄이려면 시간에 민감한 단계를 이해하고 준비해야 합니다.
- 이 프로세스 중에 모든 서비스 계정을 새로 고치고 클러스터의 모든 Pod를 다시 시작해야 합니다. 이러한 작업은 워크로드에 영향을 미칩니다. 이 영향을 완화하기 위해 이러한 서비스를 일시적으로 중단한 다음 클러스터가 준비되면 다시 배포할 수 있습니다.
사전 요구 사항
-
cluster-admin역할의 사용자로 OpenShift CLI(oc)에 액세스할 수 있습니다.
ccoctl유틸리티에서 다음 권한과 함께 사용할 글로벌 Azure 계정을 생성했습니다.-
Microsoft.Storage/storageAccounts/listkeys/action -
Microsoft.Storage/storageAccounts/read -
Microsoft.Storage/storageAccounts/write -
Microsoft.Storage/storageAccounts/blobServices/containers/read -
Microsoft.Storage/storageAccounts/blobServices/containers/write
-
-
ccoctl유틸리티를 구성했습니다. 클러스터가 안정적인 상태에 있습니다. 다음 명령을 실행하여 클러스터가 안정적인지 확인할 수 있습니다.
$ oc adm wait-for-stable-cluster --minimum-stable-period=5s
프로세스
다음 환경 변수를 구성합니다.
CURRENT_ISSUER=$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}') AZURE_STORAGE_ACCOUNT=$(echo ${CURRENT_ISSUER} | cut -d "/" -f3 | cut -d "." -f1) AZURE_STORAGE_CONTAINER=$(echo ${CURRENT_ISSUER} | cut -d "/" -f4)참고클러스터는 이 예제와 다를 수 있으며 리소스 이름은 클러스터 이름과 동일하게 파생되지 않을 수 있습니다. 클러스터의 올바른 리소스 이름을 지정해야 합니다.
다음 명령을 실행하여 사용할 임시 디렉터리를 생성하고 환경 변수를 할당합니다.
$ TEMPDIR=$(mktemp -d)Kubernetes API 서버가 새 바인딩된 서비스 계정 서명 키를 생성하도록 다음 바인딩된 서비스 계정 서명 키를 삭제합니다.
중요이 단계를 완료하면 Kubernetes API 서버가 새 키를 롤아웃하기 시작합니다. 인증 실패 위험을 줄이려면 나머지 단계를 최대한 빨리 완료하십시오. 나머지 단계는 워크로드에 방해가 될 수 있습니다.
준비가 되면 다음 명령을 실행하여 다음 바인딩된 서비스 계정 서명 키를 삭제합니다.
$ oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator다음 명령을 실행하여 Kubernetes API 서버가 생성한 서비스 계정 서명 키 시크릿에서 공개 키를 다운로드합니다.
$ oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public다음 명령을 실행하여 공개 키를 사용하여
keys.json파일을 생성합니다.$ ccoctl aws create-identity-provider \ --dry-run \ --output-dir ${TEMPDIR} \ --public-key-file=${TEMPDIR}/serviceaccount-signer.public \ --name fake \ --region us-east-1다음과 같습니다.
ccoctl aws-
명령에는
--dry-run옵션이 포함되어 있지 않습니다.--dry-run옵션을 사용하려면 Azure 클러스터에 대해aws를 지정해야 합니다. --dry-run-
마른 실행 모드에서는 새
keys.json파일을 포함한 파일을 API 호출 없이 디스크로 출력합니다. --public-key-file- 이전 단계에서 다운로드한 공개 키의 경로입니다.
--name-
일부 매개 변수는
--dry-run옵션이 API 호출을 수행하지 않기 때문에 실제 값이 필요하지 않습니다. --region-
유효한 모든 AWS 리전(예:
us-east-1) 이 값은 클러스터가 있는 리전과 일치하지 않아도 됩니다.
다음 명령을 실행하여
keys.json파일의 이름을 변경합니다.$ cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json여기서
<number>는 환경에 따라 달라지는 두 자리 숫자 값입니다.다음 명령을 실행하여 클라우드 공급자에서 기존
keys.json파일을 다운로드합니다.$ az storage blob download \ --container-name ${AZURE_STORAGE_CONTAINER} \ --account-name ${AZURE_STORAGE_ACCOUNT} \ --name 'openid/v1/jwks' \ -f ${TEMPDIR}/jwks.current.json다음 명령을 실행하여 두 개의
keys.json파일을 결합합니다.$ jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json교체 중에 이전 키와 새 키에 대한 인증을 활성화하려면 다음 명령을 실행하여 결합된
keys.json파일을 클라우드 공급자에 업로드합니다.$ az storage blob upload \ --overwrite \ --account-name ${AZURE_STORAGE_ACCOUNT} \ --container-name ${AZURE_STORAGE_CONTAINER} \ --name 'openid/v1/jwks' \ -f ${TEMPDIR}/jwks.combined.jsonKubernetes API 서버가 업데이트되고 새 키를 사용할 때까지 기다립니다. 다음 명령을 실행하여 업데이트 진행 상황을 모니터링할 수 있습니다.
$ oc adm wait-for-stable-cluster이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All clusteroperators are stable클러스터의 모든 Pod가 새 키를 사용하도록 하려면 다시 시작해야 합니다.
중요이 단계에서는 여러 노드에서 고가용성을 위해 구성된 서비스의 가동 시간을 유지하지만 그렇지 않은 모든 서비스에 대해서는 다운타임이 발생할 수 있습니다.
다음 명령을 실행하여 클러스터의 모든 Pod를 다시 시작합니다.
$ oc adm reboot-machine-config-pool mcp/worker mcp/master다음 명령을 실행하여 재시작 및 업데이트 프로세스를 모니터링합니다.
$ oc adm wait-for-node-reboot nodes --all이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All nodes rebooted다음 명령을 실행하여 업데이트 진행 상황을 모니터링합니다.
$ oc adm wait-for-stable-cluster이 프로세스에는 15분 이상 걸릴 수 있습니다. 다음 출력은 프로세스가 완료되었음을 나타냅니다.
All clusteroperators are stable다음 명령을 실행하여 결합된
keys.json파일을 클라우드 공급자에서 업데이트된keys.json파일로 교체합니다.$ az storage blob upload \ --overwrite \ --account-name ${AZURE_STORAGE_ACCOUNT} \ --container-name ${AZURE_STORAGE_CONTAINER} \ --name 'openid/v1/jwks' \ -f ${TEMPDIR}/jwks.new.json
10.1.4. IBM Cloud 인증 정보 교체 링크 복사링크가 클립보드에 복사되었습니다!
기존 IBM Cloud 서비스 ID에 대한 API 키를 교체하고 해당 클러스터 시크릿을 업데이트하여 유효한 클라우드 공급자 인증 정보를 유지할 수 있습니다.
기존 서비스 ID에 대한 API 키를 교체하고 해당 시크릿을 업데이트할 수 있습니다.
사전 요구 사항
-
ccoctl유틸리티를 구성했습니다. - 라이브 OpenShift Container Platform 클러스터에 기존 서비스 ID가 설치되어 있어야 합니다.
프로세스
ccoctl유틸리티를 사용하여 서비스 ID의 API 키를 교체하고 다음 명령을 실행하여 시크릿을 업데이트합니다.$ ccoctl <provider_name> refresh-keys \ --kubeconfig <openshift_kubeconfig_file> \ --credentials-requests-dir <path_to_credential_requests_directory> \ --name <name>다음과 같습니다.
<provider_name>-
공급자의 이름입니다. 예:
ibmcloud또는powervs. <openshift_kubeconfig_file>-
클러스터와 관련된
kubeconfig파일입니다. 예를 들면<installation_directory>/auth/kubeconfig입니다. <path_to_credential_requests_directory>- 인증 정보 요청이 저장되는 디렉터리입니다.
<name>OpenShift Container Platform 클러스터의 이름입니다.
참고클러스터에서
TechPreviewNoUpgrade기능 세트에서 활성화한 기술 프리뷰 기능을 사용하는 경우--enable-tech-preview매개변수를 포함해야 합니다.