1. AWS Cloud9 환경을 사용하여 EKS 환경 구성

유유·2021년 7월 6일
2

EKS

목록 보기
1/4

1. 워크 스페이스 생성하기

1.1 Cloud9 환경 생성을 위한 콘솔 접근:

https://ap-southeast-1.console.aws.amazon.com/cloud9/home?region=ap-southeast-1

1.2 Create environment 버튼을 선택

1.3 Name 지정 후 나머지는 기본값으로 환경 생성

완성 시 아래와 같은 터미널이 생깁니다.

1.4 SSH 키 생성하기

Cloud9에서 SSH 키를 생성하려면 아래 명령을 실행하세요. 필요한 경우 이 키는 작업자 노드 인스턴스에서 ssh 액세스를 허용하는 데 사용됩니다.

ssh-keygen

공개 키를 사용중인 EC2 리전에 업로드하세요:

aws ec2 import-key-pair --key-name "키이름" --public-key-material file://~/.ssh/id_rsa.pub

1.5 쿠버네티스 도구 설치

Amazon EKS 클러스터에는 쿠버네티스 클러스터에 대한 IAM 인증을 허용하기 위해 kubectl 및 kubelet 바이너리와 aws-iam-authenticator 바이너리가 필요합니다.

1.5.1 kubectl 설정을 저장하기 위한 기본 ~/.kube 디렉토리 생성

mkdir -p ~/.kube

1.5.2 kubectl 설치

sudo curl --silent --location -o /usr/local/bin/kubectl "https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/linux/amd64/kubectl"
sudo chmod +x /usr/local/bin/kubectl

1.5.3 AWS IAM Authenticator 설치

go get -u -v github.com/kubernetes-sigs/aws-iam-authenticator/cmd/aws-iam-authenticator
sudo mv ~/go/bin/aws-iam-authenticator /usr/local/bin/aws-iam-authenticator

1.5.4 설치 확인

kubectl version --short --client
aws-iam-authenticator help

1.5.5 JQ 설치

sudo yum -y install jq

1.6 워크스페이스를 위한 IAM 역할 생성

1.6.1 IAM 생성 링크: https://console.aws.amazon.com/iam/home#/roles$new?step=type&commonUseCase=EC2%2BEC2&selectedUseCase=EC2&policies=arn:aws:iam::aws:policy%2FAdministratorAccess

1.6.2 IAM 설정

AWS Service 및 EC2가 선택되었는지 확인한 다음 Next를 클릭하여 권한을 봅니다.
AdministratorAccess가 선택되어 있는지 확인한 다음 Next를 클릭하여 검토합니다.

1.7 워크스페이스에 IAM 역할 부여하기

1.7.1 Cloud9 용 EC2 인스턴스 찾기:

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Instances:tag:Name=aws-cloud9-eksworkshop*;sort=desc:launchTime

1.7.2 해당 인스턴스 체크박스 체크> Action> Security> Modify IAM role

1.7.3 드롭 다운 박스에서 아까 만든 IAM을 선택합니다.

1.8 워크스페이스의 IAM 설정 업데이트

1.8.1 우측 상단 톱니바크 클릭

1.8.2 AWS Setting 클릭 후 Credentials 비활성화

1.8.3 임시 자격 증명이 없는지 확실히 하기 위해 기존의 자격 증명 파일도 제거합니다 :

rm -vf ${HOME}/.aws/credentials

1.8.4 현재 리전을 기준으로 aws-cli를 구성해야 합니다 :

export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')
echo "export AWS_REGION=${AWS_REGION}" >> ~/.bash_profile
aws configure set default.region ${AWS_REGION}
aws configure get default.region

1.8.5 IAM 역할 확인

INSTANCE_PROFILE_NAME=`basename $(aws ec2 describe-instances --filters Name=tag:Name,Values=aws-cloud9-${C9_PROJECT}-${C9_PID} | jq -r '.Reservations[0].Instances[0].IamInstanceProfile.Arn' | awk -F "/" "{print $2}")`
aws iam get-instance-profile --instance-profile-name $INSTANCE_PROFILE_NAME --query "InstanceProfile.Roles[0].RoleName" --output text

위 결과 값이 아래와 같은지 확인

aws sts get-caller-identity

Arn 이 위의 역할 이름과 인스턴스 ID를 포함하는 경우 계속 진행할 수 있습니다.

++++
cloud9 을 사용하지 않는다면

  • aws configure을 통해 cli로 접근 후 ~/.kube/config 파일 생성
    생성 후 아래와 같은 config 파일을 만듦
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>"

  • 을 클러스터에 대해 생성한 엔드포인트 URL로 바꿉니다.
  • 를 사용하여certificateAuthority.data가 클러스터에 대해 생성된 것입니다.
  • 을 클러스터 사용자 이름으로 바꿉니다.
    (선택 사항) IAM 역할을 맡아 기본 작업 대신 클러스터 작업을 수행할 수 있습니다.AWS자격 증명 공급자 체인의 경우-r또는--role및줄에 로그인하고 사용자와 함께 사용할 IAM 역할 ARN 대체합니다.
    (선택 사항) 항상 특정 명명 된AWS자격 증명 프로필 (기본AWS자격 증명 공급자 체인) 에서env라인 및 대체를 사용할 프로파일 이름으로 바꿉니다.

1.9 eksctl 실행하기

1.9.1 eksctl 바이너리 다운로드

curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

sudo mv -v /tmp/eksctl /usr/local/bin

명령어 동작하는지 확인

ekstcl version

1.9.2 eksctl 명령어로 클러스터 생성

기본 EKS 클러스터를 생성하려면 다음을 실행하세요 (실행시 20분 정도 시간 소요됨)

eksctl create cluster --name=eksworkshop-eksctl --nodes=3 --node-ami=auto --region=${AWS_REGION}
profile
하이

0개의 댓글