GKE Identity Service로 클러스터에 액세스

GKE Identity Service는 조직의 기존 ID 공급업체를 통해 여러 GKE Enterprise 환경의 클러스터에 인증할 수 있게 해주는 인증 서비스로, 이 서비스를 사용하면 동일한 ID로 Google Cloud, 온프레미스 및 기타 퍼블릭 클라우드에 로그인할 수 있습니다. 이 문서는 해당 서비스를 사용하여 클러스터에 액세스해야 하는 개발자 및 기타 GKE 클러스터 사용자를 대상으로 합니다. 대신 Connect 게이트웨이를 통해 Google Cloud ID를 사용하여 클러스터에 로그인해야 하는 경우 Connect 게이트웨이 사용을 참조하세요.

조직이나 팀에 GKE Identity Service를 설정해야 하는 클러스터 또는 플랫폼 관리자의 경우 지원되는 클러스터 환경, 기타 기본 요건, 관련 설정 가이드는 GKE Identity Service 개요를 참조하세요.

명령줄에서 클러스터에 로그인

명령줄에서 클러스터에 인증하려면 클러스터 관리자가 제공한 특수 로그인 구성 파일을 사용하여 gcloud 인증 명령어를 실행해야 합니다.

시작하기 전에

  1. 다음 명령줄 도구가 설치되었는지 확인합니다.

    • 최신 버전의 Google Cloud CLI(Google Cloud와의 상호작용을 위한 명령줄 도구인 gcloud 포함). Google Cloud CLI를 설치해야 하는 경우 설치 가이드를 참조하세요.
    • Kubernetes 클러스터에 명령어를 실행하기 위한 kubectl. kubectl을 설치해야 하는 경우 설치 가이드를 참조하세요.
  2. 다음 명령어를 실행하여 anthos-auth 구성요소를 설치하거나 업데이트합니다.

    gcloud components update
    gcloud components install anthos-auth
  3. 다음 명령어를 실행하여 도구가 성공적으로 설치되었는지 확인합니다.

    gcloud anthos auth version

    버전이 반환되면 설치가 성공한 것입니다.

구성 파일 가져오기

gcloud CLI는 인증 구성 파일에 대해 로컬 머신의 기본 파일 이름 및 위치를 가정합니다. 관리자가 사용자를 위해 파일을 사용자의 머신에 복사할 수 있습니다. 수동으로 파일을 제공받았고 머신에 직접 저장해야 하는 경우 기본값을 사용하여 gcloud 인증 명령어를 단순화합니다.

다음 명령어를 사용하여 인증 구성 파일을 기본 위치에 복사합니다.

Linux

mkdir -p  $HOME/.config/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/.config/google/anthos/kubectl-anthos-config.yaml

여기서 [AUTH_CONFIG_FILE]은 인증 구성 파일의 이름입니다. 예를 들면 kubectl-anthos-config.yaml입니다.

macOS

mkdir -p  $HOME/Library/Preferences/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml

여기서 [AUTH_CONFIG_FILE]은 인증 구성 파일의 이름입니다. 예를 들면 kubectl-anthos-config.yaml입니다.

Windows

md "%APPDATA%\google\anthos"
copy [AUTH_CONFIG_FILE] "%APPDATA%\google\anthos\kubectl-anthos-config.yaml"

여기서 [AUTH_CONFIG_FILE]은 인증 구성 파일의 이름입니다. 예를 들면 kubectl-anthos-config.yaml입니다.

사용자 또는 관리자가 다른 파일 이름 또는 위치를 사용하는 경우(예: 관리자가 보안 URL에서 파일을 제공하는 경우) 각 인증 요청에 --login-config 플래그를 사용하여 이를 지정할 수 있습니다. 자세한 내용은 다음 섹션을 참조하세요.

클러스터에 인증

gcloud 명령어를 실행하여 클러스터를 인증합니다.

  1. gcloud anthos auth login 명령어를 실행하여 인증 절차를 시작합니다.

    gcloud anthos auth login \
     --cluster [CLUSTER_NAME] \
     --user [USER_NAME] \
     --login-config [AUTH_CONFIG_FILE_PATH] \
     --login-config-cert [CA_CERT_PEM_FILE] \
     --kubeconfig [CLUSTER_KUBECONFIG]

    각 항목의 의미는 다음과 같습니다.

    • [CLUSTER_NAME](선택사항)은 클러스터 이름을 지정합니다. 이 플래그를 생략하면 인증 구성 파일에 지정된 클러스터 중에서 선택하라는 메시지가 나타납니다.

    • [USER_NAME](선택사항)은 kubeconfig 파일에 저장된 사용자 인증 정보의 사용자 이름을 지정합니다. 기본값은 [CLUSTER_NAME]-anthos-default-user입니다.

    • [AUTH_CONFIG_FILE_PATH](선택사항)는 인증 구성 파일이 저장되거나 호스팅되는 커스텀 경로 또는 URL을 지정합니다. 파일이 기본 위치에 있으면 이 매개변수를 생략할 수 있습니다. 예를 들면 --login-config /path/to/custom/authentication-config.yaml입니다.

    • [CA_CERT_PEM_FILE](선택사항)은 CA의 PEM 인증서 파일에 대한 경로를 지정합니다. 인증 구성 파일이 안전하게 호스팅되면 HTTPS 연결을 사용하여 파일에 액세스할 수 있습니다. 예를 들면 --login-config-cert my-cert.pem입니다.

    • [CLUSTER_KUBECONFIG](선택사항)는 클러스터의 kubeconfig 파일에 대한 커스텀 경로를 지정합니다. OpenID 제공업체에서 반환하는 OIDC ID 토큰은 kubeconfig 파일에 저장됩니다.

      kubeconfig 파일이 기본 위치 이외의 위치에 있으면 이 플래그를 사용합니다. 이 플래그를 생략하면 인증 토큰이 기본 위치의 kubeconfig 파일에 추가됩니다. 예를 들면 --kubeconfig /path/to/custom.kubeconfig입니다.

    예시:

    • 특정 클러스터를 인증합니다.

      gcloud anthos auth login --cluster my-production-cluster
      
    • 프롬프트를 사용하여 인증할 클러스터를 선택합니다.

      gcloud anthos auth login
      

      결과:

      Please use the --cluster flag to specify a cluster from the list below:
      Source: $HOME/.config/google/anthos/kubectl-anthos-config.yaml
      1. Cluster: projects/1000000000000/locations/global/memberships/gke-gcp-cluster ServerIP: https://104.198.180.50:440
      2. Cluster: projects/1000000000000/locations/global/memberships/gke-baremetal-cluster ServerIP: https://104.198.180.51:440
      3. Cluster: projects/1000000000000/locations/global/memberships/gke-onprem-cluster ServerIP: https://104.198.180.52:440
      4. Cluster: projects/1000000000000/locations/global/memberships/gke-aws-cluster ServerIP: https://104.198.180.53:440
      
    • 호스팅된 인증 구성 파일을 사용합니다.

      gcloud anthos auth login \
       --cluster my-production-cluster \
       --login-config HTTPS://my-secure-server/kubectl-anthos-config.yaml \
       --login-config-cert my-cert.pem
      
    • 프롬프트를 사용하여 인증 옵션을 선택합니다. 아래 인증 옵션 선택에서 예시를 포함하여 자세한 내용을 확인할 수 있습니다.

  2. 열려 있는 브라우저 기반 동의 화면에 사용자 인증 정보를 입력합니다. 성공하면 kubeconfig 파일에 kubectl 명령어가 클러스터의 Kubernetes API 서버로 인증하는 데 사용할 ID 토큰이 포함됩니다.

  3. 클러스터의 리소스에 액세스하도록 kubectl 명령어 중 하나를 실행하여 인증이 성공했는지 확인합니다. 예를 들어 클러스터의 '노드' 리소스에 대한 액세스 권한이 있는 경우(이 액세스 권한은 클러스터 관리자가 구성함) 다음 명령어를 실행하여 클러스터의 노드를 볼 수 있습니다.

    kubectl get nodes --kubeconfig [CLUSTER_KUBECONFIG]

사용자 액세스와 관련된 문제 해결 정보는 사용자 액세스 문제 해결을 참조하세요.

인증 방식 선택

클러스터 관리자가 클러스터에 여러 ID 공급업체(예: OIDC 공급업체 및 LDAP 서버)를 구성했지만 클러스터의 기본 공급업체를 구성하지 않은 경우 로그인 시 다음 예시와 같이 인증 옵션을 선택하라는 메시지가 표시됩니다.

gcloud anthos auth login

Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

1

Setting Preferred Authentication option to [LDAP Server]

숫자 선택사항을 입력한 다음 위의 클러스터에 인증에 설명된 대로 로그인합니다.

선택한 인증 옵션은 클러스터 관리자가 이 클러스터의 기본 제공업체를 변경하거나 사용자가 직접 변경할 때까지 저장됩니다. 선호하는 인증 옵션을 변경하려면 --set-preferred-authentication 플래그를 사용합니다.

gcloud anthos auth login --set-preferred-authentication

다음 예시와 같은 결과가 표시되며 새 기본 인증 옵션을 선택할 수 있습니다.

Your current authentication method is [1] AD Server. Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

2

Setting Preferred Authentication option to [OIDC]

SSH를 사용하여 원격 머신에서 인증

SSH를 통해 원격 머신에 연결하여 원격 머신에서 클러스터를 인증한다고 가정해 보겠습니다. 이렇게 하려면 인증 구성 파일이 원격 머신에 있어야 하며 로컬 머신에서 Open ID 제공업체에 연결할 수 있어야 합니다.

로컬 머신에서 다음 명령어를 실행합니다.

ssh [USER_NAME]@[REMOTE_MACHINE] -L [LOCAL_PORT]:localhost:[REMOTE_PORT]

각 항목의 의미는 다음과 같습니다.

  • [USER_NAME][REMOTE_MACHINE]은 SSH를 통해 로그인하는 데 사용되는 표준 값입니다.

  • [LOCAL_PORT]는 원격 머신에 액세스하는 데 사용할 로컬 머신에서 선택한 공개 포트입니다.

  • [REMOTE_PORT]는 OIDC 리디렉션 URL에 구성한 포트입니다. 인증 구성 파일의 kubectlRedirectURI 필드에서 이 포트를 확인할 수 있습니다.

SSH 셸에서 다음 명령어를 실행하여 인증을 시작합니다.

gcloud anthos auth login --login-config [AUTH_CONFIG_FILE]

여기서 [AUTH_CONFIG_FILE]은 원격 머신의 인증 구성 파일에 대한 경로입니다.

로컬 머신의 브라우저에서 http://localhost:[LOCAL_PORT]/login으로 이동하여 OIDC 로그인 절차를 완료합니다.

이제 원격 머신의 kubeconfig 파일에는 클러스터에 액세스하는 데 필요한 토큰이 있습니다.

SSH 셸에서 클러스터에 액세스했는지 확인합니다.

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get nodes

Google Cloud 콘솔에서 클러스터에 로그인(OIDC 제공업체만 해당)

Google Cloud 콘솔에서 클러스터로 작업의 안내를 따릅니다.