Amazon EKS 클러스터용 kubeconfig
파일 생성 또는 업데이트
이 주제에서는 클러스터에 대한 kubeconfig
파일을 생성하거나 기존 파일을 업데이트합니다.
kubectl
명령줄 도구는 kubeconfig
파일의 구성 정보를 사용하여 클러스터의 API 서버와 통신합니다. 자세한 내용을 알아보려면 Kubernetes 문서의 kubeconfig 파일을 사용하여 클러스터 접근 구성하기kubeconfig
파일을 생성하거나 업데이트하는 두 가지 절차를 제공합니다.
-
AWS CLI
update-kubeconfig
명령을 사용하여 자동으로 생성 -
AWS CLI 또는
aws-iam-authenticator
를 사용하여 수동으로 생성
Amazon EKS는 AWS CLI의 버전 1.16.156
이상 또는 AWS용 IAM AuthenticatorKubernetesaws eks get-token
명령을 클러스터 인증을 위한 kubectl
과 함께 사용합니다. 시스템에 AWS CLI를 설치한 경우에는 기본적으로 Kubernetes용 AWS IAM Authenticator에서 다음 명령을 통해 반환되는 것과 동일한 자격 증명을 사용합니다.
aws sts get-caller-identity
필수 조건
기존 Amazon EKS 클러스터. 배포하려면 Amazon EKS 시작하기 섹션을 참조하세요.
디바이스 또는 AWS CloudShell에 설치된
kubectl
명령줄 도구. 버전은 클러스터의 Kubernetes 버전과 동일하거나 최대 하나 이전 또는 이후의 마이너 버전일 수 있습니다. 예를 들어 클러스터 버전이1.26
인 경우kubectl
버전1.25
,1.26
또는1.27
를 함께 사용할 수 있습니다.kubectl
을 설치하거나 업그레이드하려면 kubectl 설치 또는 업데이트 부분을 참조하세요.
자동으로 kubeconfig
파일 생성
필수 조건
AWS CLI 버전
2.12.3
이상 또는1.27.160
이상이 디바이스나 AWS CloudShell에 설치 및 구성되어 있습니다.aws --version | cut -d / -f2 | cut -d ' ' -f1
을 사용하여 현재 버전을 확인할 수 있습니다. macOS용yum
,apt-get
또는 Homebrew와 같은 패키지 관리자는 최신 버전의 AWS CLI보다 여러 버전 이전인 경우가 많습니다. 최신 버전을 설치하려면 AWS Command Line Interface 사용 설명서의 최신 버전의 AWS CLI 설치 또는 업데이트와aws configure
를 통한 빠른 구성을 참조하세요. AWS CloudShell에 설치된 AWS CLI 버전도 최신 버전보다 여러 버전 이전일 수도 있습니다. 업데이트하려면 AWS CloudShell 사용 설명서의 홈 디렉터리에 AWS CLI 설치를 참조하세요.지정한 클러스터에 대해
eks:DescribeCluster
API 작업을 사용할 수 있는 권한. 자세한 내용은 Amazon EKS 자격 증명 기반 정책 예제 섹션을 참조하세요.
AWS CLI로 kubeconfig
를 생성하려면
-
클러스터에 대해
kubeconfig
파일을 생성 또는 업데이트합니다.region-code
을 해당 클러스터가 있는 AWS 리전으로 바꾸고,my-cluster
를 클러스터의 이름으로 바꿉니다.aws eks update-kubeconfig --region
region-code
--namemy-cluster
기본적으로 구성 파일은 홈 디렉터리의 기본
kubeconfig
경로(.kube
)에 생성되거나 해당 위치의 기존config
파일과 병합됩니다.--kubeconfig
옵션을 사용하여 다른 경로를 지정할 수 있습니다.--role-arn
옵션으로 IAM 역할 ARN을 지정하면kubectl
명령을 실행할 때 인증에 사용할 수 있습니다. 그렇지 않으면 기본 AWS CLI 또는 SDK 자격 증명 체인의 IAM 보안 주체가 사용됩니다.aws sts get-caller-identity
명령을 실행하여 기본 AWS CLI 또는 SDK ID를 확인할 수 있습니다.사용 가능한 모든 옵션을 알아보려면
aws eks update-kubeconfig help
명령을 실행하거나 AWS CLI Command Reference( 명령 참조)의 update-kubeconfig를 참조하세요. -
구성을 테스트합니다.
kubectl get svc
예제 출력은 다음과 같습니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
권한 부여 또는 리소스 유형 오류가 표시되는 경우 문제 해결 주제의 권한이 없거나 액세스가 거부됨(kubectl) 부분을 참조하세요.
수동으로 kubeconfig
파일 생성
kubeconfig
파일을 수동으로 생성하려면
-
을 고유한 값으로 바꾼 다음 수정된 명령을 실행하여 몇 가지 변수에 대한 값을 설정합니다.example values
export region_code=
region-code
export cluster_name=my-cluster
export account_id=111122223333
-
클러스터의 엔드포인트를 검색하고 값을 변수에 저장합니다.
cluster_endpoint=$(aws eks describe-cluster \ --region $region_code \ --name $cluster_name \ --query "cluster.endpoint" \ --output text)
-
클러스터와 통신하는 데 필요한 Base64 인코딩 인증서 데이터를 검색하고 값을 변수에 저장합니다.
certificate_data=$(aws eks describe-cluster \ --region $region_code \ --name $cluster_name \ --query "cluster.certificateAuthority.data" \ --output text)
-
기본
~/.kube
디렉터리가 아직 없으면 생성합니다.mkdir -p ~/.kube
-
기본 클라이언트 토큰 메서드(AWS CLI 또는 Kubernetes용 AWS IAM Authenticator)에 대해 다음 명령 중 하나를 실행하고
~/.kube
디렉터리에서config
파일을 생성합니다. 다음을 포함하도록 명령을 수정하여 명령 중 하나를 실행하기 전에 다음을 지정할 수 있습니다.-
IAM 역할(An IAM role) -
args:
아래 줄의 시작 부분에서#
을 제거합니다.
을 기본 AWS 보안 인증 제공업체 체인 대신 클러스터 작업을 수행하려는 IAM 역할의 이름으로 바꿉니다. 자세한 내용을 알아보려면 GitHub의 Kubernetes용 AWS IAM Authenticator에서 제공하는 인증 토큰을 사용하도록my-role
kubectl
설정을 참조하세요. -
AWS CLI 명명된 프로필 -
env:
줄의 시작 부분에서#
을 제거하고 그 아래 줄의 시작 부분에서#
을 제거합니다.
을 사용할 프로필의 이름으로 바꿉니다. 프로필을 지정하지 않은 경우 기본 프로필이 사용됩니다. 자세한 내용을 알아보려면 GitHub의 보안 인증 정보 지정 및 AWS 프로필 사용aws-profile
을 참조하세요.
-
-
KUBECONFIG
환경 변수에 파일 경로를 추가하므로kubectl
은 클러스터 구성을 찾아야 하는 위치를 알 수 있습니다.-
MacOS 또는 Linux의 Bash 셸의 경우:
export KUBECONFIG=$KUBECONFIG:~/.kube/config
-
Windows의 PowerShell의 경우:
$ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config"
-
-
(선택 사항) 셸 초기화 파일에 구성을 추가하면 셸을 열 때 구성됩니다.
-
MacOS의 Bash 셸의 경우:
echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config' >> ~/.bash_profile
-
Linux의 Bash 셸의 경우:
echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config' >> ~/.bashrc
-
Windows의 PowerShell의 경우:
[System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')
-
-
구성을 테스트합니다.
kubectl get svc
예제 출력은 다음과 같습니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
권한 부여 또는 리소스 유형 오류가 표시되는 경우 문제 해결 주제의 권한이 없거나 액세스가 거부됨(kubectl) 부분을 참조하세요.