구성 파일을 사용하여 로그인

GKE Identity Service를 사용하면 타사 ID 공급업체의 사용자 이름과 비밀번호를 사용하여 명령줄에서 구성된 클러스터에 로그인할 수 있습니다. 클러스터 관리자가 gcloud CLI로 인증할 때 사용할 로그인 구성 파일을 공유하도록 선택한 경우 이 페이지의 안내를 따르세요. 클러스터 액세스에 대한 자세한 내용은 클러스터에 로그인하기 위한 액세스 방법 선택을 참조하세요.

로그인 워크플로

다음은 로그인 구성 파일을 사용해서 구성된 클러스터에 로그인하기 위해 GKE Identity Service에 사용되는 워크플로입니다. 정확한 흐름은 사용되는 ID 공급업체 유형에 따라 다릅니다.

OIDC 워크플로

OIDC 공급업체를 사용하면 클러스터 관리자가 GKE Identity Service를 ID 공급업체의 클라이언트 애플리케이션으로 등록하고 각 클러스터를 설정합니다. 필요한 경우 Kubernetes 역할 기반 액세스 제어(RBAC)를 사용하여 세부적인 액세스 제어를 추가할 수 있습니다.

다음 방법으로 클러스터에 로그인할 수 있습니다.

명령줄 액세스 권한

  1. 인증: gcloud anthos auth login 명령어를 실행하고 OIDC 로그인 사용자 인증 정보를 입력합니다. 이렇게 하면 공급업체에서 ID 토큰을 가져옵니다.
  2. Kubeconfig 업데이트: 검색된 토큰이 kubeconfig 파일에 자동으로 추가됩니다.
  3. 클러스터 액세스: kubectl을 사용하여 클러스터와 상호작용합니다. Kubernetes API 서버는 GKE Identity Service를 사용하여 토큰을 검증하고 액세스를 승인합니다.

Google Cloud 콘솔 액세스

  1. 로그인 시작: Google Cloud 콘솔에서 로그인하면 ID 공급업체의 로그인 페이지로 리디렉션됩니다.
  2. 인증: 사용자 인증 정보를 입력하고 로그인합니다.
  3. 클러스터 액세스: Google Cloud 콘솔로 돌아가서 클러스터 리소스를 보고 관리합니다.

LDAP 워크플로

LDAP 공급업체를 사용하면 클러스터 관리자는 각 클러스터에 대해 LDAP 클라이언트 사용자 인증 정보를 포함하는 GKE Identity Service를 설정합니다. 클러스터 관리자는 필요한 경우 Kubernetes 역할 기반 액세스 제어(RBAC)를 사용하여 세부적인 액세스 제어를 추가할 수 있습니다.

명령줄 액세스 권한

  1. 로그인 시작: gcloud anthos auth login 명령어를 실행하고 LDAP 로그인 사용자 인증 정보를 입력합니다.
  2. 토큰 생성: GKE Identity Service는 LDAP 서버를 쿼리하고 사용자 속성을 검색하고 이러한 속성을 단기 토큰(STS)으로 패키징합니다. LDAP 사용자 인증 정보는 로컬에 저장되지 않습니다.
  3. Kubeconfig 업데이트: STS 토큰이 kubeconfig 파일에 자동으로 추가됩니다.
  4. 클러스터 액세스: kubectl을 사용하여 클러스터와 상호작용합니다. Kubernetes API 서버는 GKE Identity Service를 사용하여 토큰을 검증하고 액세스를 승인합니다. 기본적으로 토큰은 1시간 후에 만료되므로 사용자는 다시 로그인해야 합니다.

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

구성 파일 가져오기

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로 클러스터에 인증하려면 인증 구성 파일이 원격 머신에 있어야 하며 로컬 머신에서 OpenID 제공업체에 연결할 수 있어야 합니다.

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

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