[EKS] IAM 사용자 생성 및 CloudFormation을 통한 인프라 배포

vinca·2024년 1월 30일
0

🦓 EKS

목록 보기
3/23
post-thumbnail

Introduction

EKS를 배포하는 방법에는 3가지가 있다고 했다. (관리콘솔, eksctl, IaC)

EKS 배포방식

여기서 우리는 관리콘솔eksctl을 통해서 배포하는 방법에 대해서 알아보도록 할 것이다.
(*Terraform을 이용한 IaC 배포 방식에 대해서는 추후 공부 후 정리 예정이다.)

본 글에서는 이러한 배포를 하기 위한 사전작업 IAM 사용자 생성 및 CloudFormation을 통한 인프라 배포를 수행할 것이다.

사전 준비

✅ 필수
🔑 IAM 사용자 생성 및 액세스 키 생성 작업

1. IAM 사용자 생성

  • 루트 계정으로 로그인하여 링크에 클릭하여 IAM 사용자 페이지에 진입합니다.
  • 사용자 추가 버튼을 클릭합니다.
  • 사용자 이름은 admin으로 입력하고 [AWS Management Console에 대한 사용자 액세스 권한 제공]을 체크합니다.
  • 사용자에게 콘솔 액세스 권한 제공은 [IAM 사용자를 생성하고 싶음]을 선택합니다.
  • 콘솔 암호는 [사용자 지정 암호]를 선택하고 생성 기준에 맞춰 각자 암호를 지정합니다.
  • 사용자는 다음 로그인 시 새 암호를 생성해야 합니다.를 체크 해제하고 다음 버튼을 클릭합니다.
  • 권한 옵션은 [직접 정책 연결]을 선택하고 권한 정책에서 [AdministratorAccess]를 체크한 후 아래 다음 버튼을 클릭합니다.
  • 검토 및 생성 페이지에서 사용자 생성 버튼을 클릭합니다.
  • 암호 검색 페이지에서 .csv 파일 다운로드 버튼을 클릭하여 자신의 PC의 디렉터리에 저장합니다.
  • 사용자 목록으로 돌아가기 버튼을 클릭하여 IAM 사용자 생성을 마무리합니다.

2. IAM 사용자 액세스 키 생성

  • IAM 사용자 페이지에서 생성한 사용자 이름을 클릭합니다.
  • 보안 자격 증명 탭을 클릭하고 [액세스 키] 영역에서 액세스 키 만들기 버튼을 클릭합니다.
  • 액세스 키 모범 사례 및 대안 페이지에서 [Command Line Interface(CLI)]를 선택하고 아래 체크 박스를 체크한 후 다음 버튼을 클릭합니다.
  • 액세스 키 만들기 버튼을 클릭합니다.
  • 액세스 키 검색 페이지에서 .csv 파일 다운로드 버튼을 클릭하여 자신의 PC의 디렉터리에 저장합니다.
  • 완료 버튼을 클릭하여 IAM 사용자 액세스 키 생성을 마무리합니다.

Note: IAM 사용자로 관리 콘솔에 로그인 할때 계정 ID가 필요하니 잘 메모해 둡니다.


CloudFormation으로 기본 인프라 배포

먼저 CloudFormation을 통해서 기본적인 VPC 및 my-eks-host 라는 배스천 호스트를 만든다. 이 배스천 호스트를 통해서 우리는 EKS 환경을 만들고 접근하여 작업하게 된다.

템플릿 다운로드 : Goolge Drive
AWS CloudFormation 생성 : CloudFormation

준비된 템플릿을 선택하고, 받은 템플릿을 업로드하여 그대로 CloudFormation을 생성해주면 된다.

⚠ 주의 사항

  • IAM 계정으로 로그인한 후 액세스 키를 발급받은 상태에서 진행한다.
  • SSH 접속을 위한 EC2-KeyPair가 발급되어 있어야 한다.

이 때, 미리 발급받아 두었던 EC2 key 페어가 필요하다.
키페어가 없다면 EC2-KeyPair에서 생성해 주도록 하자.

이과정이 완료되면 다음은 부분들이 전부 한번에 배포가 완료된 것을 확인할 수 있다.

배스천 호스트(EC2) 접속

이제 관리를 위해서 생성해둔 EC2 인스턴스에 접속해보자.
내 로컬 컴퓨터 CMD를 열고, 각자의 SSH 키에 해당하는 접속을 하면된다.

  • ssh 명령어 확인

  • 접속 성공

✅ 설치 확인

접속이 성공적으로 완료되었다면, 이제 제대로 설치가 완료되었는지 확인해 보자.

Ctrl + V 명령이 동작하지 않는다면, 마우스 오른쪽을 클릭하면 된다.
복사할 때도 쭉 드래그하고 마우스 오른쪽을 클릭하면 된다.

사용자 확인

whoami

whoami를 입력하여 root 사용자임을 확인합니다.

Note: root 사용자로 전환하도록 미리 설정해 두었으며, 접속 타이밍에 따라 ec2-user 사용자라면 sudo su -를 입력하여 root 사용자로 전환합니다.

기본 설치 도구 확인

// kubectl 버전 확인
kubectl version --client=true -o yaml | yh

// eksctl 버전 확인
eksctl version

// awscli 버전 확인
aws --version

// 도커 정보 확인
docker info | yh

awscli 사용을 위한 IAM 자격 증명

// awscli로 인스턴스 정보 확인 (IAM 자격 증명 X)
aws ec2 describe-instances | jq

// IAM 사용자 자격 구성
aws configure

// awscli로 인스턴스 정보 다시 확인 (IAM 자격 증명 O)
aws ec2 describe-instances | jq

IAM 사용자의 액세스 키 생성할 때 저장한 xxxx_accesskeys.csv 파일을 열어 값을 참조합니다. csv로 액세스키 비밀번호를 저장하지 않았다면, 키를 다시 생성하면 됩니다.

aws configure를 입력하여 Access Key ID, Secret Access Key, Region 코드를 입력합니다.

IAM 자격 증명이 이루어지면 awscli 도구로 인스턴스 정보를 다시 확인합니다.

EKS 배포할 VPC 정보 확인

// CLUSTER_NAME 변수 확인
echo $CLUSTER_NAME

// EKS를 배포할 myeks-VPC 정보 확인
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq

// EKS를 배포할 myeks-VPC ID 값만 확인
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq -r .Vpcs[].VpcId

EKS 배포할 VPC ID 변수 저장

// VPCID 라는 환경변수로 myeks-VPC ID 값을 저장
export VPCID=$(aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$CLUSTER_NAME-VPC" | jq -r .Vpcs[].VpcId)

// VPCID를 전역 변수로 선언
echo "export VPCID=$VPCID" >> /etc/profile

// VPCID 변수 호출
echo $VPCID

EKS 배포할 VPC의 서브넷 정보 확인

// EKS를 배포할 VPC의 전체 서브넷 정보 확인
aws ec2 describe-subnets --filters "Name=vpc-id,Values=$VPCID" --output json | jq

// EKS를 배포할 VPC의 퍼블릭 서브넷 정보 확인
aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" | jq

aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" | jq

// EKS를 배포할 VPC의 퍼블릭 서브넷 ID 값만 확인
aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" --query "Subnets[0].[SubnetId]" --output text

aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" --query "Subnets[0].[SubnetId]" --output text

EKS 배포할 퍼블릭 서브넷 ID 변수 저장

// 변수에 퍼블릭 서브넷 ID 값을 저장
export PubSubnet1=$(aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet1" --query "Subnets[0].[SubnetId]" --output text)

export PubSubnet2=$(aws ec2 describe-subnets --filters Name=tag:Name,Values="$CLUSTER_NAME-PublicSubnet2" --query "Subnets[0].[SubnetId]" --output text)

// 퍼블릭 서브넷 ID를 전역 변수로 선언
echo "export PubSubnet1=$PubSubnet1" >> /etc/profile

echo "export PubSubnet2=$PubSubnet2" >> /etc/profile

// VPCID 변수 호출
echo $PubSubnet1

echo $PubSubnet2

변수 호출 (종합)

echo $AWS_DEFAULT_REGION

echo $CLUSTER_NAME

echo $VPCID

echo $PubSubnet1,$PubSubnet2

이를 통해서 생성된 VPC 환경 및 설치된 CLI 도구들이 잘 생성된 것을 확인했다. 또한, 추후 사용할 환경 변수에도 잘 넣어주는 작업까지 완료했다.

이제 다음 과정으로 본격적으로 EKS를 배포해보도록 하자.🤩


Reference📎 | CloudNet@와 함께하는 Amazon EKS 기본 강의

profile
붉은 배 오색 딱다구리 개발자 🦃Cloud & DevOps

0개의 댓글