서비스 계정 키 순환

이 페이지에서는 다음 서비스 계정의 키를 순환하는 방법을 설명합니다.

서비스 계정 키를 순환하려면 다음 안내를 따르세요.

  1. 현재 보안 비밀의 백업을 저장할 디렉터리를 만듭니다.

    mkdir backup
  2. 관련 서비스 계정에 대한 다음 정보에 유의하세요.

    구성요소 액세스

    클러스터 보안 비밀 네임스페이스
    관리 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
  3. 다음 명령어를 사용하여 각 보안 비밀의 백업을 만듭니다.

    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
  4. 새 서비스 계정 키 파일을 만들려면 다음 명령어를 실행합니다.

    gcloud iam service-accounts keys create NEW_KEY_FILE --iam-account IAM_ACCOUNT

    다음을 바꿉니다.

    • NEW_KEY_FILE: 새 서비스 계정 키 파일의 이름입니다.
    • IAM_ACCOUNT: 서비스 계정의 이메일 주소입니다.
  5. 관리자 클러스터 구성 파일에서 componentAccessServiceAccountKeyPath 필드, gkeConnect 섹션, stackdriver 섹션, cloudAuditLogging 섹션을 찾습니다. 해당 위치에서 서비스 계정 키 파일 경로를 바꿉니다.

  6. 사용자 클러스터 구성 파일에서 componentAccessServiceAccountKeyPath 필드, gkeConnect 섹션, stackdriver 섹션, cloudAudigLogging 섹션, usageMetering 섹션을 찾습니다. 해당 위치에서 서비스 계정 키 파일 경로를 바꿉니다.

  7. 다음 명령어를 실행하여 변경사항을 저장합니다. 한 번에 한 구성요소의 키를 순환하거나 구성요소를 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 No
Connect-register No
사용량 측정 아니요

노드를 다시 만들어야 하는 키 순환의 경우 순차적 업데이트 프로세스에서 노드가 교체됩니다. 즉, 노드가 하나씩 다시 생성됩니다.

키 순환 중에 발생할 수 있는 다운타임은 클러스터 업그레이드의 다운타임과 유사합니다. 자세한 내용은 업그레이드 중 다운타임을 참조하세요.

백업 복원

이전에 만든 보안 비밀의 백업을 복원해야 하는 경우 다음 명령어를 실행합니다.

kubectl apply -f backup/