만들기kubeconfig용 Amazon EKS - Amazon EKS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

만들기kubeconfig용 Amazon EKS

이 단원에서는 클러스터에 대한 kubeconfig 파일을 생성(또는 기존 파일을 업데이트)합니다.

이 단원에서는 kubeconfig를 생성하거나 업데이트하는 두 가지 절차를 제공합니다. AWS CLI에서 AWS CLI update-kubeconfig 명령을 사용하여 자동으로 kubeconfig를 빠르게 생성 또는 업데이트하거나, AWS CLI 또는 aws-iam-authenticator를 사용하여 수동으로 kubeconfig를 만들 수 있습니다.

Amazon EKS는aws eks get-token버전 1.16.156 이상에서 사용 가능한AWS CLI또는AWS쿠버네테스용 IAM 인증자다음으로 바꿉니다.kubectl을 클러스터 인증에 사용합니다. 를 설치한 경우AWS CLI를 실행한 다음 기본적으로AWSKubernetes용 IAM Authenticator에서는 다음 명령을 통해 반환되는 것과 동일한 자격 증명을 사용합니다.

aws sts get-caller-identity

자세한 내용은 단원을 참조하십시오.구성AWS CLIAWS Command Line Interface사용 설명서.

자동으로 kubeconfig 생성

AWS CLI로 kubeconfig를 생성하려면

  1. 버전 1.16.156 이상이 있는지 확인합니다.AWS CLI가 설치되어 있습니다. 를 설치 또는 업그레이드하려면AWS CLI자세한 내용은설치AWS CLIAWS Command Line Interface사용 설명서.

    참고

    시스템의 Python 버전이 2.7.9 이상이어야 합니다. 그렇지 않을 경우hostname doesn't match와 함께 오류AWS CLI아마존 EKS를 호출합니다.

    AWS CLI 버전은 다음 명령을 통해 확인할 수 있습니다.

    aws --version
    중요

    패키지 관리자yum,apt-get또는 Homebrew 가 종종AWS CLI. 최신 버전을 사용하려면설치AWS CLIAWS Command Line Interface사용 설명서.

  2. AWS CLI update-kubeconfig 명령을 사용하여 클러스터에 대한 kubeconfig를 생성하거나 업데이트합니다.

    • 기본적으로, 구성 파일은 홈 디렉터리의 기본 kubeconfig 경로(.kube/config)에 생성되거나 해당 위치의 기존 kubeconfig와 병합됩니다. --kubeconfig 옵션을 사용하여 다른 경로를 지정할 수 있습니다.

    • IAM 역할 ARN--role-arn옵션을 사용하면 인증에 사용할 수kubectl명령을 사용합니다. 그렇지 않으면 기본AWS CLI또는 SDK 자격 증명 체인을 사용합니다. aws sts get-caller-identity 명령을 실행하여 기본 AWS CLI 또는 SDK ID를 확인할 수 있습니다.

    • 자세한 내용은 도움말 페이지를 참조하세요aws eks update-kubeconfig help명령을 참조하거나업데이트AWS CLI명령 참조.

    참고

    다음 명령을 실행하려면 사용 권한이 있어야eks:DescribeClusterAPI 작업을 지정한 클러스터로 실행합니다. 자세한 내용은 Amazon EKS 자격 증명 기반 정책 예제 단원을 참조하세요.

    aws eks --region <region-code> update-kubeconfig --name <cluster_name>
  3. 구성을 테스트합니다.

    kubectl get svc
    참고

    권한 부여 또는 리소스 유형 오류가 표시되는 경우 문제 해결 단원에서 권한이 없거나 액세스가 거부됨(kubectl)을 참조하십시오.

    결과:

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

수동으로 kubeconfig 만들기

kubeconfig 파일을 수동으로 생성하려면

  1. ~/.kube 디렉터리가 아직 없으면 생성합니다.

    mkdir -p ~/.kube
  2. 선호하는 클라이언트 토큰 방법에 따라, 자주 사용하는 텍스트 편집기를 열고 아래의 kubeconfig 코드 블록을 복사하여 붙여 넣습니다.

    • 를 사용하려면AWS CLI aws eks get-token명령을 사용하려면 (버전 1.16.156 이상이AWS CLI):

      apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws args: - "eks" - "get-token" - "--cluster-name" - "<cluster-name>" # - "--role-arn" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
    • 를 사용하려면AWS쿠버네테스용 IAM 인증자:

      apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "<cluster-name>" # - "-r" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
  3. 를 교체합니다.<endpoint-url>을 클러스터에 대해 생성한 엔드포인트 URL로 바꿉니다.

  4. 를 교체합니다.<base64-encoded-ca-cert>를 사용하여certificateAuthority.data가 클러스터에 대해 생성된 것입니다.

  5. 를 교체합니다.<cluster-name>을 클러스터 사용자 이름으로 바꿉니다.

  6. (선택 사항) IAM 역할을 맡아 기본 작업 대신 클러스터 작업을 수행할 수 있습니다.AWS자격 증명 공급자 체인의 경우-r또는--role<role-arn>줄에 로그인하고 사용자와 함께 사용할 IAM 역할 ARN 대체합니다.

  7. (선택 사항) 항상 특정 명명 된AWS자격 증명 프로필 (기본AWS자격 증명 공급자 체인) 에서env라인 및 대체<aws-profile>를 사용할 프로파일 이름으로 바꿉니다.

  8. 파일 이름에 클러스터 이름을 넣어 파일을 기본 kubectl 폴더에 저장합니다. 예를 들어 클러스터 이름이<devel>에서 파일을~/.kube/config-<devel>.

  9. KUBECONFIG 환경 변수에 파일 경로를 추가하면 kubectl이 클러스터 구성을 찾아야 하는 곳을 알게 됩니다.

    • macOS 또는 Linux의 Bash 셸의 경우:

      export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>
    • Windows의 PowerShell의 경우:

      $ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-<devel>"
  10. (선택 사항) 셸 초기화 파일에 구성을 추가하면 셸을 열 때 구성됩니다.

    • MacOS의 Bash 셸의 경우:

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>' >> ~/.bash_profile
    • Linux의 Bash 셸의 경우:

      echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-<devel>' >> ~/.bashrc
    • Windows의 PowerShell의 경우:

      [System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')
  11. 구성을 테스트합니다.

    kubectl get svc
    참고

    권한 부여 또는 리소스 유형 오류가 표시되는 경우 문제 해결 단원에서 권한이 없거나 액세스가 거부됨(kubectl)을 참조하십시오.

    결과:

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m