Cloud Console에서 클러스터에 로그인

이 페이지에서는 anthos.googleapis.com API가 사용 설정된 Anthos용 Google Cloud Console에서 등록된 Kubernetes 클러스터에 로그인하는 방법을 설명합니다.

개요

Bearer 토큰을 사용하여 Google Cloud Console을 통해 등록된 클러스터에 로그인할 수 있습니다. Kubernetes 인증에 지정된 다양한 종류의 Bearer 토큰이 지원됩니다. 가장 쉬운 방법은 클러스터에 Kubernetes 서비스 계정(KSA)을 만들고 Bearer 토큰을 사용하여 로그인하는 것입니다.

클러스터에 로그인하는 모든 계정은 최소한 클러스터에 다음 Kubernetes RBAC역할이 있어야 합니다.

시작하기 전에

클러스터마다 한 번씩 다음 단계를 완료해야 합니다.

클러스터 등록

Cloud Console을 사용하여 로그인하려면 Google Cloud로 클러스터를 등록해야 합니다. 클러스터를 등록하면 클러스터와 Google Cloud 간의 장기 연결을 설정하는 Kubernetes 배포 리소스인 Connect Agent가 배포됩니다. Connect Agent를 사용하면 클러스터에 로그인할 수 있습니다.

cloud-console-reader 역할 기반 액세스 제어(RBAC) 역할 생성 및 적용

Console에서 클러스터의 리소스를 보려면 사용자에게 관련 권한이 있어야 합니다. 이 권한 집합은 클러스터에서 ClusterRole RBAC 리소스인 cloud-console-reader를 만들어 정의합니다. cloud-console-reader는 사용자에게 클러스터의 노드, 영구 볼륨, 스토리지 클래스에 대한 get, list, watch 권한을 부여하여 관련 리소스에 대한 세부정보를 볼 수 있게 합니다. 그런 다음 아래 섹션에 설명된 대로 이 ClusterRole을 사용자의 서비스 계정에 바인딩할 수 있습니다.

  1. cloud-console-reader ClusterRole을 만들고 다음 명령어를 사용하여 적용합니다.

    cat <<EOF > cloud-console-reader.yaml
    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: cloud-console-reader
    rules:
    - apiGroups: [""]
      resources: ["nodes", "persistentvolumes"]
      verbs: ["get", "list", "watch"]
    - apiGroups: ["storage.k8s.io"]
      resources: ["storageclasses"]
      verbs: ["get", "list", "watch"]
    EOF
    kubectl apply -f cloud-console-reader.yaml
    

설정

개발자 또는 클러스터 관리자는 클러스터에 로그인하는 각 사용자마다 서비스 계정을 만들어야 합니다. Bearer 토큰 사용은 비밀번호를 사용하는 것과 마찬가지이므로 각 사용자마다 고유한 비밀번호를 사용해야 합니다. KSA의 Bearer 토큰으로 로그인하면 모든 작업이 KSA로 실행되며 KSA가 보유한 RBAC 역할에 의해 제한됩니다.

KSA에는 클러스터에 최소한 다음 RBAC 역할이 있어야 합니다.

KSA 만들기 및 승인

KSA를 만들고 권한을 바인딩하려면 다음 단계를 수행합니다.

  1. KSA 및 ClusterRoleBinding 리소스를 만들어 viewcloud-console-reader Kubernetes RBAC ClusterRole을 KSA에 바인딩합니다.

    KSA_NAME=[KSA_NAME]
    kubectl create serviceaccount ${KSA_NAME}
    kubectl create clusterrolebinding [VIEW_BINDING_NAME] \
    --clusterrole view --serviceaccount default:${KSA_NAME}
    kubectl create clusterrolebinding [CLOUD_CONSOLE_READER_BINDING_NAME] \
    --clusterrole cloud-console-reader --serviceaccount default:${KSA_NAME}
    
    

    각 매개변수는 다음과 같습니다.

    • [KSA_NAME]은 KSA를 위해 선택한 이름입니다.
    • [VIEW_BINDING_NAME]view ClusterRoleBinding 리소스에 대해 선택한 이름입니다. 이름을 원하는 대로 지정할 수 있지만 KSA를 따라 이름을 지정하는 것이 가장 쉬운 방법입니다.
    • [CLOUD_CONSOLE_READER_BINDING_NAME]cloud-console-reader ClusterRoleBinding 리소스에 대해 선택한 이름입니다. 이름을 원하는 대로 지정할 수도 있습니다.
  2. 서비스 계정에 보유해야 하는 액세스 권한에 따라 KSA에 추가 역할을 바인딩합니다. 일부 옵션에 대해서는 Kubernetes 기본 역할을 참조하세요.

    예를 들어 Cloud Marketplace에서 Kubernetes 애플리케이션을 배포하려면 cluster-admin 역할을 KSA에 바인딩해야 합니다.

    kubectl create clusterrolebinding [BINDING_NAME] \
    --clusterrole cluster-admin --serviceaccount default:[KSA_NAME]
    
    

    여기서 [BINDING_NAME]은 서비스 계정의 클러스터 역할 바인딩 이름입니다.

다른 계정 승인

클러스터에 대한 액세스 권한을 얻는 다른 모든 사용자 또는 서비스 계정은 ClusterRoleBinding 리소스를 만들어 계정에 viewcloud-console-reader 역할을 바인딩해야 합니다.

  1. viewcloud-console-reader ClusterRole을 바인딩하려면 다음 안내를 따르세요.

    ACCOUNT_NAME=[ACCOUNT_NAME]
    kubectl create clusterrolebinding [VIEW_BINDING_NAME] \
    --clusterrole view --serviceaccount default:${ACCOUNT_NAME}
    kubectl create clusterrolebinding [CLOUD_CONSOLE_READER_BINDING_NAME] \
    --clusterrole cloud-console-reader --serviceaccount default:${ACCOUNT_NAME}
    
    

    각 매개변수는 다음과 같습니다.

    • [VIEW_BINDING_NAME]view ClusterRoleBinding 리소스에 대해 선택한 이름입니다. 이름을 원하는 대로 지정할 수 있지만 사용자 또는 서비스 계정을 따라 이름을 지정하는 것이 가장 간편할 수 있습니다.
    • [CLOUD_CONSOLE_READER_BINDING_NAME]view ClusterRoleBinding 리소스에 대해 선택한 이름입니다. 이름을 원하는 대로 지정할 수도 있습니다.
    • [ACCOUNT_NAME]은 사용자 또는 서비스 계정의 이메일 주소입니다.
  2. 계정에 필요한 액세스 권한에 따라 추가 역할을 바인딩합니다. 일부 옵션에 대해서는 Kubernetes 기본 역할을 참조하세요.

    예를 들어 cluster-admin 역할을 바인딩하려면 다음 명령어를 실행합니다.

    kubectl create clusterrolebinding [BINDING_NAME] \
    --clusterrole cluster-admin --serviceaccount default:[ACCOUNT_NAME]
    
    

    여기서 [BINDING_NAME]은 서비스 계정의 클러스터 역할 바인딩 이름입니다.

KSA의 Bearer 토큰 가져오기

KSA의 Bearer 토큰을 획득하려면 다음 명령어를 실행합니다.

SECRET_NAME=$(kubectl get serviceaccount [KSA_NAME] -o jsonpath='{$.secrets[0].name}')
kubectl get secret ${SECRET_NAME} -o jsonpath='{$.data.token}' | base64 --decode

여기서 [KSA_NAME]은 선택한 이름입니다.

이 명령어 결과에서 토큰을 복사하고 다음 섹션에서 사용할 수 있도록 저장합니다.

클러스터에 로그인

클러스터에 로그인하려면 다음 단계를 따르세요.

  1. Cloud Console에서 GKE 메뉴로 이동합니다.

    GKE 메뉴로 이동

  2. 클러스터 목록에서 등록된 클러스터 옆에 있는 로그인 버튼을 클릭합니다.

  3. 로그인하려는 방식을 선택합니다.

    1. KSA 토큰을 사용하여 로그인하는 경우 토큰을 선택하고 토큰 필드에 KSA의 Bearer 토큰을 채운 다음 로그인을 클릭합니다.
    2. 기본 인증을 사용하는 경우기본 인증을 선택하고 사용자 이름비밀번호필드를 채운 뒤 로그인을 클릭합니다.
    3. OpenID Connect(OIDC)를 사용하는 경우 OpenID Connect를 선택한 다음 로그인을 클릭합니다.

인증이 성공하면 클러스터를 검사하고 해당 노드에 대한 세부정보를 가져올 수 있습니다.

다음 단계