06. [AWS EKS] AWS CLI2와 kubectl

생성한 AWS EKS는 EC2 instance의 Linux 환경에서도 CLI로 제어가 가능하고

개인 노트북에서도 CLI 환경으로 제어가 가능하다.

그러기 위해서는 우선 AWS CLI2와 kubectl을 설치하여야 한다.

 

1. AWS CLI2

Windows, MacOS, 혹은 EC2 instance의 Linux 환경에 있어도 AWS CLI2를 설치할 수 있다.

공식 문서에 아주 잘 나와있기 때문에

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

위 사이트를 그대로 따라하기만 하면 된다.

Access key

설치가 완료되면 AWS console에서 IAM 메뉴 > Users > Security credentials 탭 > Access keys에서

'Create access key'를 눌러 생성한다.

이 때 생성된 acess key와 secret access key를 잘 적어둔다.

본인의 CLI 환경에서

$ aws configure

를 실행하고 access key를 입력한다.

다음 명령어로 aws configure가 제대로 설치되었는지 확인

$ aws sts get-caller-identity

 

2. kubectl 설치

kubectl의 설치도 Windows, MacOS, Linux에서 설치 가능하다.

이것 역시 공식문서가 잘 되어있어서 다음 링크를 그대로 따라하면 된다.

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html

중요한 것은 AWS EKS에 설치한 Kubernetes 버전 (Server version : 1.27)과

local의 CLI 환경에 설치하는 kubectl version (Client version : 1.27)과 일치해야한다.

일치하게 설치한다.

  

3. kubectl 사용을 위한 kubeconfig 설정

aws eks update-kubeconfig --region [region] --name [cluster 이름]
// 우리의 경우
aws eks update-kubeconfig --region ap-northeast-2 --name VENUS-X2BEE

를 실행하면 cluster server와 연결이 되고 kubectl command를 사용할 수 있다.
확인을 위해서

kubectl version

을 할 때 client와 server version이 둘 다 뜨면 성공이다.

 

혹시 나올 수도 있는 (내가 겪은) 에러가 발생할 경우 아래 참조.

  

참고 1. 에러 핸들링 (aws configure하는 user 추가)

만약 기존에 다른 user가 CLI로 제어하고 있던 EKS cluster가 있었는데,
새로운 user가 (아무리 admin이라고해도) aws configure와 위 절차만으로 제어할 수가 없다.
이 때는 우선 configmap을 가져온다.

kubectl get -n kube-system configmap/aws-auth -o yaml

이 코드를 복사해서 aws-auth.yml이라는 파일에 저장하고,
mapUsers라는 단락 4줄을 추가해준다.

apiVersion: v1
data:
  mapRoles: |
    - groups:
      - system:bootstrappers
      - system:nodes
      rolearn: arn:aws:iam::[숫자]:role/[ROLE-CLUSTER]
      username: system:node:{{EC2PrivateDNSName}}
  mapUsers: |
    - userarn: arn:aws:iam::11122223333:user/YourNewUser
      username: YourNewUser
      groups:
        - system:masters

위에 user 고유의 11122223333 숫자는 IAM 메뉴의 Users > Summary에 나와있다.
수정 후에 저장하고 이 yaml 파일을 다시 실행하면 적용이 된다.

kubectl apply -f aws-auth.yml

만약 eksctl이 설치되어있다면 위 일렬의 과정을 단 한 줄로 대체할 수 있다.

eksctl create iamidentitymapping --region region-code --cluster cluster-name --arn arn:aws:iam::11122223333:user/YourNewUser --group system:masters

 

참고 2. 에러 핸들링 (AWS CLI2 version)

설치된 지 조금 오래된 환경에서 접속하다가 이런 error가 나온다면

Unable to connect to the server: getting credentials: decoding stdout: no kind "ExecCredential" is registered for version "client.authentication.k8s.io/v1alpha1" in scheme "pkg/client/auth/exec/exec.go:62"

AWS CLI2의 버전을 확인하고 위 본문에 링크된 AWS CLI2 설치 공식 문서에 들어가 버전 업데이트를 해준다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유