카테고리 없음

AWS 입문 ~ EKS 설치 ~ ArgoCD 까지

parangofsky 2025. 6. 18. 18:06

 

aws를 거의 접해보지 못한 초보 기준으로 접근하는 방법과 개념을 정리한 포스트입니다.

EKS를 다뤄보는 것을 목표로 합니다.

 

💡 AWS란?

인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, AI, 보안 등 IT 자원을 제공하는 클라우드 플랫폼

 

 

💡 IAM란?

AWS 리소스에 대한 접근(Access)을 안전하게 관리(Control) 하는 AWS 서비스

 

  • 세분화된 권한을 부여
  • 인증(로그인), 인가(권한) 담당.
  • User, Group, Role, Policy를 정할 수 있다.

 

💡 VPC란?

AWS 안에 내가 직접 만든 가상 네트워크 공간
클라우드에 나만의 데이터 센터를 만드는 것

 

  • VPC에서 퍼블릭/파리아빗 서브넷, 라우팅, 보안 그룹 등을 구성한다.

 

 

우리가 사용하는 집, 회사 등의 네트워크는 사설 IP를 이용합니다. 하지만 인터넷은 공인 IP만 인식할 수 있기 때문에 중간에 변환하는 작업이 필요합니다. NAT이 중간 변환을 해주는 공유기 역할을 합니다.

 

 

💡 NAT란?

NAT는 프라이빗 서브넷에 있는 인스턴스가 인터넷에 나갈 수 있게 해주는 장치
일종의 공유기

  • 인터넷에서 직접 들어오는 요청은 차단
  • 보안성과 외부 접근을 동시에 만족시켜주는 역할

NAT의 종류로는 NAT Gateway, NAT Instance 가 있다.

NAT Gateway는 퍼블릭 쪽에 위치.

 

 

예시 : 

내부 EC2 인스턴스 -> NAT Gateway로 변환 -> 인터넷 세상

 

 

🎯 접속 

  1. https://aws.amazon.com/ko/console/

위의 주소로 접속.

 

AWS Management Console

AWS Support 플랜은 AWS로 성공하는 데 도움이 되는 다양한 도구, 프로그램 및 전문 지식에 대한 액세스의 조합을 제공합니다.

aws.amazon.com

 

로그인.

 

  2. VPC 생성

 

  3. NAT Gateway 설정

subnet1, subnet2 총 2개 생성.

 

  4. 라우팅 테이블 편집

라우팅 0.0.0.0/0 -> 디폴트 -> NAT로

 

아래는 최종 리소스 맵 입니다.

 

 

 

 

  5. 서브넷에 태그 지정

 

💡 EKS란?

AWS 클라우드에서 원활하게 Kubernetes를 실행하는 데 사용되는 완전 관리형 Kubernetes 서비스

 

 

EKS는 프라이빗 공간에 생성됩니다.

따라서 Bastion 서버를 경유하여 인스턴스에 접근하게 됩니다.

 

💡 Bastion 서버란? 

퍼블릭 서브넷에 위치한 EC2 인스턴스
이 서버를 통해서만 프라이빗 서브넷 접근

 

 

EC2의 Bastion 서버를 만들고 우분투 서버에 접속합니다. 

EC2 생성 시 키 페어 생성 파일 위치를 잘 기억해야 합니다.

 

 

1. powerShell

키페어 있는 폴더에서> ssh -i keypair.pem ubuntu@ec2의 ip

를 입력하면, 프라이빗 키 파일 오류가 발생한다.

 

2. cmd

icacls.exe keypair.pem /reset 
icacls.exe keypair.pem /grant:r %username%:(R) 
icacls.exe keypair.pem /inheritance:r

 

이렇게 완료 후, 1번을 다시 진행하면 정상적으로 접속이 된다.

 

3. 비밀번호 설정

sudo passwd root

 

4.

EKS 관리자 계정 생성

생성한 계정에 권한 부여

sudo adduser eksadmin
sudo usermod -aG sudo eksadamin

 

5. unzip 설치

sudo apt install unzip

 

6. 사용자 전환

sudo -i -u eksadmin

 

whoami 명령어를 입력해보면 생성한 사용자인 eksadmin으로 잘 나온다.

 

 

7. AWS CLI 설치

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

 

 

8. 엑세스 키 생성

aws console에서 진행.

 

 

9. configure

aws configure

 

 

10. kubectl 설치

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.30.2/2024-07-12/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && mv ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
kubectl version

 

 

11. kubeconfig 설정

aws eks update-kubeconfig --region [리전 코드] --name [설정한eks이름]

 

 

여기서, 타임아웃 발생할 확률이 큽니다. 이때 아래의 코드로 설정해야 합니다.

aws ec2 authorize-security-group-ingress \
--group-id sg-xx(eks 클러스터 보안 그룹 id) \
--protocol tcp \
--port 443 \
--cidr bastion 프라이빗 ip \
--region 자신의 리전

 

 

12. 동작 확인

 kubectl get pods-A

 

 

 

정상적으로 파드가 확인하는 것을 알 수 있습니다.

 

 

ArgoCD 접속

 

이제, EKS 클러스터에 ArgoCD를 설치해 보겠습니다.

 

1.

kubectl create ns argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

 

 

2. 접속

kubectl port-forward -n argocd svc/argocd-server 8443:443

 

포워딩.

PS C:\server> ssh -i keypair.pem -L 8443:localhost:8443 ubuntu@bastion 퍼블릭 ip

 

개인 pc 에서도 접속할 수 있는 코드이다. 이제 아래의 링크로 접속하면 argocd에 정상적으로 접속할 수 있다.

 

https://localhost:8443/

 

3. 비밀번호 확인

 kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

 

우분투에서는 base64 명령어가 있어 바로 비밀번호를 입력하면 된다.

 

dns 주소를 이용하여 백엔드 비지니스 로직에 있는 api를 호출하면 응답이 잘 오는 것을 알 수 있다.

 

이로써 aws console을 이용하여 eks, ArgoCD까지 설치해서 기존에 있던 api-gateway를 배포했습니다.