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로 변환 -> 인터넷 세상
🎯 접속
위의 주소로 접속.
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를 배포했습니다.