AWS

EKS 클러스터 구축 하는법(2) - Bastion 호스트 설정 및 클러스터 구축

벌레개발자 2024. 5. 23. 13:19

Bastion host란?

Bastion Host란, 외부에서 내부 네트워크에 접근할 수 있는 일종의 게이트다.

보안성이 높은 인프라와 외부 인터넷을 연결하고 중계해준다.

모든 인바운드 트래픽은 Bastion Host를 통과해야 내부 네트워크로 들어갈 수 있다.

이를 이용해 Private Instance에서 발생되는 계정 액세스 로그들을 한곳에서 취합 및 제어하기에 관리가 용이해지고 보안성 또한 높아진다.


 

먼저 EKS를 구축하는 데 필요한 BastionHost를 위한 EC2를 생성 해줄 것이다.

OS는 상관없으나 필자는 Ubuntu20.04 로 진행하였다.

 

먼저 만들어둔 VPC의 bastion subnet(public)에 배치한다.

 

보안 그룹을 생성하고 나의 ip로만 ssh 액세스가 가능토록 한다.

 

키페어 로그인을 설정하여 주는 것이 좋다.

 


 

AWS CLI설치

키페어 로그인 설정 후 

apt install vim curl unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

명령어를 실행하여, AWS Cli 를 설치한다.

 

/usr/local/bin/aws --version

명령어를 사용해 버전을 확인한다. 출력시 잘 설치가 된 것이다.

 

aws configure
AWS Access Key ID [None]: access
AWS Secret Access Key [None]: secret
Default region name [None]: ap-northeast-1
Default output format [None]: json

 

이 명령어를 이용하여 본인 계정의 액세스 키를 입력해준다.

 

AWS 계정의 액세스키를 생성하는 방법은 

https://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/access.credentials.html

 

Amazon Keyspace용 AWS 자격 증명을 생성하고 구성하는 방법 - Amazon Keyspaces(Apache Cassandra용)

사용자 이름에는 최대 64개의 문자, 숫자 및 더하기(+), 등호(=), 쉼표(,), 마침표(.), 앳(@) 및 하이픈(-) 조합을 사용할 수 있습니다. 이름은 계정 내에서 고유해야 합니다. 대소문자는 구별하지 않습

docs.aws.amazon.com

공식 문서를 참조 하여 생성하면 된다.

 


 

Kubectl 설치

curl -LO https://dl.k8s.io/release/v1.29.0/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

명령어를 이용하여 kubectl 1.29버전을 설치한다.

 

설치 후 kubectl version을 이용하여 버전을 확인할 수 있다면 설치 완료

 


eksctl 설치 및 클러스터 구축

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

위의 명령어를 이용해 최신버전의 eksctl을 설치한다.

 

설치 후

eksctl version

을 이용하여 설치 유무 확인한다.

 

 eksctl create cluster \
> --vpc-public-subnets 'privateA subnet', 'privateC subnet' \
> --name eks-work-cluster \
> --region ap-northeast-1 \
> --nodegroup-name Cloudcrew-nodegroup \
> --version 1.29 \
> --node-type t2.medium \
> --nodes 3 \
> --nodes-min 3 \
> --nodes-max 5

위 명령어를 입력하면 간단하게 클러스터를 구축 할 수 있다. 

위와 같이 클러스터가 정상 생성 된다

노드 그룹 또한 정상 생성 되어있는 모습을 볼 수 있다.

 

aws eks update-kubeconfig \
--region ap-northeast-1 \
--name 클러스터이름

위를 입력하고 클러스터의 kubeconfig파일을 가져온다

Api Server 정보와 인증 정보를 /home/ec2-user/.kube/config 로 가져온다. Kubeconfig는 클러스터 Api Server 정보와 Api Server 접근에 대한 사용자 인증 정보를 담고 있다

위 과정을 거치면 노드 조회가 가능해질 것이다.