이 페이지에서는 다음 서비스 계정의 키를 순환하는 방법을 설명합니다.
서비스 계정 키를 순환하려면 다음 안내를 따르세요.
현재 보안 비밀의 백업을 저장할 디렉터리를 만듭니다.
mkdir backup
관련 서비스 계정에 대한 다음 정보에 유의하세요.
구성요소 액세스
클러스터 보안 비밀 네임스페이스 관리 admin-cluster-creds kube-system 관리 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt 관리 private-registry-creds kube-system 사용자 private-registry-creds kube-system - 비공개 레지스트리를 사용하지 않는 경우
private-registry-creds
보안 비밀에는 구성요소 액세스 서비스 계정의 키가 포함됩니다. - 비공개 레지스트리를 사용하는 경우
private-registry-creds
보안 비밀에 구성요소 액세스 서비스 계정 키가 아니라 비공개 레지스트리에 대한 사용자 인증 정보가 포함됩니다.
Connect-register
클러스터 보안 비밀 네임스페이스 관리 admin-cluster-creds kube-system 관리 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt Logging-monitoring
클러스터 보안 비밀 네임스페이스 관리 admin-cluster-creds kube-system 관리 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt 사용자 google-cloud-credentials kube-system 사용자 stackdriver-service-account-key knative-serving 감사 로깅
클러스터 보안 비밀 네임스페이스 관리 admin-cluster-creds kube-system 관리 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt 관리 kube-apiserver CLUSTER_NAME 사용량 측정
클러스터 보안 비밀 네임스페이스 관리 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt 사용자 usage-metering-bigquery-service-account-key kube-system Stackdriver
클러스터 보안 비밀 네임스페이스 관리 admin-cluster-creds kube-system 관리 user-cluster-creds CLUSTER_NAME-gke-onprem-mgmt 사용자 google-cloud-credentials kube-system 사용자 stackdriver-service-account-key knative-serving - 비공개 레지스트리를 사용하지 않는 경우
다음 명령어를 사용하여 각 보안 비밀의 백업을 만듭니다.
kubectl get secret SECRET --namespace NAMESPACE \ --kubeconfig KUBECONFIG -o json > backup/SECRET-NAMESPACE.json
다음을 바꿉니다.
NAMESPACE
: 보안 비밀이 있는 네임스페이스입니다. 예를 들면kube-system
입니다.KUBECONFIG
: 관리자 또는 사용자 클러스터의 kubeconfig 파일 경로입니다.SECRET
: 보안 비밀의 이름입니다. 예를 들면admin-cluster-creds
입니다.
예를 들어 감사 로깅 서비스 계정에 대해 다음 명령어를 실행합니다.
kubectl get secret admin-cluster-creds --namespace kube-system \ --kubeconfig KUBECONFIG -o json > backup/admin-cluster-creds-kube-system.json kubectl get secret user-cluster-creds --namespace NAMESPACE \ --kubeconfig KUBECONFIG -o json > backup/user-cluster-creds-NAMESPACE.json kubectl get secret kube-apiserver --namespace NAMESPACE \ --kubeconfig KUBECONFIG -o json > backup/kube-apiserver-NAMESPACE.json
새 서비스 계정 키 파일을 만들려면 다음 명령어를 실행합니다.
gcloud iam service-accounts keys create NEW_KEY_FILE --iam-account IAM_ACCOUNT
다음을 바꿉니다.
NEW_KEY_FILE
: 새 서비스 계정 키 파일의 이름입니다.IAM_ACCOUNT
: 서비스 계정의 이메일 주소입니다.
관리자 클러스터 구성 파일에서
componentAccessServiceAccountKeyPath
필드,gkeConnect
섹션,stackdriver
섹션,cloudAuditLogging
섹션을 찾습니다. 해당 위치에서 서비스 계정 키 파일 경로를 바꿉니다.사용자 클러스터 구성 파일에서
componentAccessServiceAccountKeyPath
필드,gkeConnect
섹션,stackdriver
섹션,cloudAudigLogging
섹션,usageMetering
섹션을 찾습니다. 해당 위치에서 서비스 계정 키 파일 경로를 바꿉니다.다음 명령어를 실행하여 변경사항을 저장합니다. 한 번에 한 구성요소의 키를 순환하거나 구성요소를
sakeys
로 설정하여 모든 키를 한 번에 순환할 수 있습니다.gkectl update credentials COMPONENT \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG \ --admin-cluster gkectl update credentials COMPONENT \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
다음을 바꿉니다.
COMPONENT
: 다음 중 하나입니다.componentaccess
register
cloudauditlogging
usagemetering
stackdriver
sakeys
(여러 구성요소의 키 순환)
ADMIN_CLUSTER_KUBECONFIG
: 관리자 클러스터의 kubeconfig 파일 경로입니다.ADMIN_CLUSTER_CONFIG
: 관리자 클러스터 구성 파일 경로입니다.USER_CLUSTER_CONFIG
: 사용자 클러스터 구성 파일 경로입니다.
노드 재생성
일부 서비스 계정 키 순환은 노드를 다시 생성해야 하므로 시간이 더 오래 걸릴 수 있습니다.
서비스 계정 | 노드 재생성 필요 |
---|---|
구성요소 액세스 | Container Registry를 사용하는 경우: 예 비공개 레지스트리를 사용하는 경우: 아니요 |
감사 로깅 | 관리자 클러스터: 예 Contrlplane V2가 사용 설정된 사용자 클러스터: 예, 하지만 제어 영역 노드만 해당 |
Logging-monitoring | 아니요 |
Connect-register | 아니요 |
사용량 측정 | 아니요 |
노드를 다시 만들어야 하는 키 순환의 경우 순차적 업데이트 프로세스에서 노드가 교체됩니다. 즉, 노드가 하나씩 다시 생성됩니다.
키 순환 중에 발생할 수 있는 다운타임은 클러스터 업그레이드의 다운타임과 유사합니다. 자세한 내용은 업그레이드 중 다운타임을 참조하세요.
백업 복원
이전에 만든 보안 비밀의 백업을 복원해야 하는 경우 다음 명령어를 실행합니다.
kubectl apply -f backup/