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
를 설정하는 경우 gcloud
가 gcloud
자체에 사용된 것과 동일한 사용자 인증 정보를 kubectl
에 제공합니다. 예를 들어 gcloud auth login
을 사용하는 경우 개인의 사용자 인증 정보가 kubectl
에 제공되며 userinfo.email
범위가 포함됩니다. 따라서 AWS용 GKE는 kubectl
클라이언트를 인증할 수 있습니다.
인증된 사용자 또는 Google Cloud 서비스 계정은 승인 과정도 거쳐야 AWS용 GKE에서 작업을 수행할 수 있습니다. 클러스터 관리자는 승인을 구성하기 위해 적절한 역할 기반 액세스 제어를 설정해야 합니다.