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 등)에 접근할 때 사용할 권한
- 클러스터 IAM

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

- VPC를 설정해보자
- 원래는 IP를 직접 다 작성해줘야하지만 cloudformation을 사용하면 쉽게 작성할 수 있음
- cloudformation에서 스택 생성을 누르고 기존 탬플릿에서 s3 URL을 입력해줘야함
- https://docs.aws.amazon.com/eks/latest/userguide/creating-a-vpc.html#create-vpc
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 |