클라우드/Docker & Kubernetes

k8s-Deployment (AWS EKS)

mini'scloud 2025. 8. 11. 01:37

k8s를 machine에 배포하는 방법에 대해 알아보자

앞에서 했던 minikube는 로컬에서 작동을 했지만 이제는 직접 machine에서 동작을 시켜볼거임

  • k8s를 배포하는 방법에는 크게 DC를 이용하든지 아니면 Cloud Provider를 사용하는 방법이 있음
  • 졸프때는 DC를 활용할거기에 이에 대해 스스로 설정을하고 할줄 알아야함
  • 이번 실습에서는 cloud provider를 활용할거임
  • 두 가지 방법이 있음
    • low level에서 직접 구현하는 방법
    • managed service를 사용하는 방법 (EKS...)
  • k8s를 EKS를 이용해 클러스터에 배포하는 것을 해볼거임

AWS EKS

  • k8s 배포에 대한 서비스 관리형 시스템임 (ECS는 컨테이너에 대한거로, k8s에 대해서는 모름)

 

실습

  • 깃허브에 main 브랜치에 있는거 다운 받고 하면됨

https://github.com/miining/k8s-study-deployment-

 

GitHub - miining/k8s-study-deployment-

Contribute to miining/k8s-study-deployment- development by creating an account on GitHub.

github.com

 

  • MongoDB에서 Free cluster를 하나 만들고
  • 거기서 Drivers를 누르면 connect URL을 얻을 수 있을거임
  • URL을 얻어서 users.yaml에서 mongoDB에 정의된 URL 링크를 내꺼로 바꿔줌
  • DB pw는 Database Access에서 설정을 할 수 있음 

  • 다음으론 Docker hub에 이미지를 업로드 할거임

 

cd users-api

docker build -t devminii/kub-dep-users .

docker push devminii/kub-dep-users

변경사항(mongo db url 같은거..)를 docker hub에 반영을 시켜줬음

 

 

EKS를 설정해보자

  • aws eks에 들어와서 로그인을 하고 클러스터 생성을 눌러보자
  • kub-dep-demo라고 이름을 만들자 (이름은 자기 맘대로 해도 되니깐..)
  • 클러스터와 노드의 IAM 역할을 부여해줘야함 (권장 생성 들어가면 EKS로 만들 수 있는게 있음 그걸 선택하면됨)
    • 클러스터 IAM
      • EKS 클러스터의 컨트롤 플레인(관리 서버)이 AWS 자원(API, 로드밸런서, VPC 등)을 대신 관리할 수 있도록 허용하는 역할
    • 노드 IAM
      • 클러스터에서 노드(EC2 인스턴스, Fargate 등)가 동작하며,
      • Pod들이 내부적으로 AWS 서비스(S3, DynamoDB 등)에 접근할 때 사용할 권한

 

  • role은 권장 생성역할에 따라 계속 설정을 해주면됨
    • node 정책은
    • eksworkernodepolicy와 cni policy와 ec2 container registry readonly를 추가해주면 됨
     

 

 

Create an Amazon VPC for your Amazon EKS cluster - Amazon EKS

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

위에 링크에서 미리 vpc cloud formation을 이용해 만드는 것을 알려주고 있음

  • public and prviate subnets 설정 링크를 복붙해주면 됨
  • AWS CloudFormation 템플릿은 JSON 또는 YAML 파일이며, 콘솔에 직접 업로드할 경우 크기 제한이 있어서 s3를 이용함

  • next를 누르고 eksVpc라고 스택 이름도 붙여줌

생성하고 나면 이렇게 나올거임


kube 폴더 안에 config 파일을 설정할거임

  • 우리가 kubectl apply 명령을 통해 minikube에게 전달이 가능했던게 config 파일 때문이었음
  • 이 config 파일을 이용해서 minkikube가 아닌 eks로 전달을 하도록 설정을 할거임
 cd ~/.kube

이렇게 하면 config 파일이 있을거임

cp ~/.kube/config ~/.kube/config.minikube

우리가 다시 minikube로 쓰기 위해서 conifg 파일을 복제본 한개 만들고 실습을 진행해볼거임

  • aws cli로 작업을 할거임
    • aws configure를 실행하고 비밀번호를 입력해주면됨
  • eks를 활성화시키고 아래 명령어를 작성해보자
aws eks --region ap-northeast-2 update-kubeconfig --name floral-funk-dinosaur

이렇게하면 기존 config 파일이 aws 정보로 채워질거임

kubectl get pods

이제 minikube대신 aws 클러스터와 통신을 하게 될거임

아래처럼 minikube를 삭제해도 이제 eks와 통신하는 것을 알 수 있음

minikube delete
이후에 
kubectl get pods


 kubectl apply -f=auth.yaml -f=users.yaml

 

kubectl get deployments

kubectl get pods

 

kubectl get services

  • minikube에서는 external-ip가 항상 열려있었지만, 이번에는 닫혀있고, loadbalancer를 통해서만 접근하는 것을 알 수 있음

'클라우드 > Docker & Kubernetes' 카테고리의 다른 글

Virtualization  (0) 2025.08.19
Managing Data & Volumes with k8s  (0) 2025.08.08
k8s core concepts & setup (2)  (0) 2025.08.07
k8s Core Concepts & setup  (0) 2025.08.07
Kubernetes Concepts  (0) 2025.08.06