Kubeconfig 정보

Kubernetes 구성 파일

Kubernetes는 kubeconfig라는 YAML 파일을 사용하여 kubectl의 클러스터 인증 정보를 저장합니다. kubeconfig에는 명령어를 실행할 때 kubectl이 참조하는 컨텍스트 목록이 포함됩니다. 기본적으로 파일은 $HOME/.kube/config에 저장됩니다.

컨텍스트는 액세스 매개변수 그룹입니다. 각 컨텍스트에는 Kubernetes 클러스터, 사용자, 네임스페이스가 포함되어 있습니다. 현재 컨텍스트는 현재 kubectl의 기본값인 클러스터입니다. 모든 kubectl 명령어가 이 클러스터를 대상으로 실행됩니다.

클러스터를 만든 후 kubeconfig 항목 생성에 따라 클러스터 컨텍스트를 로컬 kubeconfig에 추가합니다.

비공개 엔드포인트

모든 클러스터에는 표준 엔드포인트가 있습니다. 이 엔드포인트는 kubectl 및 기타 서비스가 TCP 포트 443을 통해 클러스터 제어 영역과 통신하기 위해 사용하는 Kubernetes API 서버를 노출합니다. AWS에서 이 엔드포인트는 클러스터 내부에서만 확인 가능한 DNS 이름입니다(예: gke-abcdefghijk-cp-ffabcdef123456.elb.us-west-1.amazonaws.com). 이 엔드포인트는 공개 인터넷에서 액세스할 수 없습니다. gcloud container aws clusters describe 명령어 결과의 endpoint 필드에서 비공개 클러스터 엔드포인트 주소를 가져올 수 있습니다.

Connect 게이트웨이 엔드포인트

기본적으로 gcloud container aws clusters get-credentials 명령어는 Connect 게이트웨이를 사용하는 kubeconfig를 생성합니다. 이 kubeconfig와 함께 kubectl은 Connect를 사용해서 트래픽을 사용자 대신 비공개 엔드포인트로 안전하게 전달합니다. Connect 게이트웨이를 사용할 때 엔드포인트는 https://connectgateway.googleapis.com/v1/projects/PROJECT_NUMBER/memberships/CLUSTER_NAME과 비슷하게 표시됩니다. 여기서 PROJECT_NUMBER는 프로젝트 번호이고 CLUSTER_NAME은 클러스터 이름입니다.

VPC를 통해 클러스터의 비공개 엔드포인트에 액세스할 수 있으면 비공개 엔드포인트에 직접 연결할 수 있습니다. 비공개 엔드포인트를 사용하여 kubeconfig를 생성하려면 gcloud container aws clusters get-credentials --private-endpoint 명령어를 사용합니다.

kubectl 인증 정보

모든 AWS용 GKE는 kubectl이 제공한 사용자 인증 정보를 검증하고 사용자 또는 서비스 계정 ID에 연결된 이메일 주소를 검색하여 Google Cloud 사용자 및 서비스 계정 ID를 수락하도록 구성됩니다. 따라서 이러한 계정의 사용자 인증 정보에 userinfo.email OAuth 범위가 포함되어야 인증이 성공합니다.

gcloud를 사용하여 신규 또는 기존 클러스터에 대해 환경의 kubeconfig를 설정하는 경우 gcloudgcloud 자체에 사용된 것과 동일한 사용자 인증 정보를 kubectl에 제공합니다. 예를 들어 gcloud auth login을 사용하는 경우 개인의 사용자 인증 정보가 kubectl에 제공되며 userinfo.email 범위가 포함됩니다. 따라서 AWS용 GKE는 kubectl 클라이언트를 인증할 수 있습니다.

인증된 사용자 또는 Google Cloud 서비스 계정은 승인 과정도 거쳐야 AWS용 GKE에서 작업을 수행할 수 있습니다. 클러스터 관리자는 승인을 구성하기 위해 적절한 역할 기반 액세스 제어를 설정해야 합니다.