-
[AWS] EKS 시작하기(2) - EKS 시작Infra/AWS 2020. 7. 24. 19:10
2020/07/24 - [aws] - [AWS] EKS 시작하기(1) - 사전 준비과정 (ECR & Tools)
이번엔 앞 포스터에 이어서
EKS로 서버를 배포해본다.
IAM Role 생성
EKS 생성시 적용시킬 Role을 만든다.
'Create role' 버튼 클릭
AWS service -> EKS -> EKS = Cluster 선택
다음
다음
완료
CloudFormation Stack 생성
Create stack -> With new resources(standard)
아래 주소 복사
https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-06-10/amazon-eks-vpc-private-subnets.yaml
Amazon S3 URL에 붙여넣기
이름 지정
파라메터 기본 유지
다음
생성!
Resources 탭에서 확인
subnet: Private 2개 / public 2개
EKS Cluster 생성
metadata / vpc.id / vpc.subnets 각각 입력
// cluster.yml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: EKS-Demo-Cluster region: ap-northeast-2 vpc: id: vpc-09ee0ce943b8c8d63 cidr: "192.168.0.0/16" subnets: public: ap-southeast-1a: id: subnet-00cf893 ap-southeast-1b: id: subnet-0cd40d2 private: ap-southeast-1a: id: subnet-007c9552 ap-southeast-1b: id: subnet-046c55 nodeGroups: - name: EKS-public-workers instanceType: t2.medium desiredCapacity: 2 - name: EKS-private-workers instanceType: t2.medium desiredCapacity: 1 privateNetworking: true
권한을 추가해줘야한다.
(나의 경우 관리자권한 하나로 끝냈다.)
EKS 클러스터 생성 명령어
$ eksctl create cluster -f cluster.yml --kubeconfig=~/.kube/config
확인
EC2 인스턴스 확인
에러 발생
$ kubectl get svc
Unable to connect to the server: dial tcp 192.168.99.100:8443: i/o timeout
$ kubectl config view
minikube를 설치하여 에러 해결
$ brew install minikube $ brew link minikube
$ minikube start
또 다른 에러
$ kubectl get svc
error: You must be logged in to the server (Unauthorized)
$ aws sts get-caller-identity
$ aws eks update-kubeconfig --name eks-test-cluster --region ap-northeast-2
$ kubectl config view --minify
다시 명령
$ kubectl get svc
정상 동작 확인
deployment.yml 파일 작성
// deployment.yml apiVersion: apps/v1 kind: Deployment metadata: name: server-demo namespace: default spec: replicas: 2 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: back-end image: 42323423423.dkr.ecr.ap-northeast-2.amazonaws.com/eks-demo:latest ports: - containerPort: 3000
배포승인
$ kubectl apply -f deployment.yml
deployment.apps/server-demo created
확인
$ kubectl get deployments
시간이지나면 바뀜
만약 상태가 계속 바뀌지 않을 경우
node.js 서버가 제대로 동작하는지 로컬에서 확인해본다.
service.yml 파일 작성
만약 로드밸런서 사용시, spec.type을 NodePort에서 LoadBalancer로 바꿔준다.
// service.yml apiVersion: v1 kind: Service metadata: name: backend-service spec: type: NodePort selector: app: web ports: - nodePort: 31479 port: 8080 targetPort: 3000
서비스 승인
$ kubectl apply -f service.yml
service/backend-service created
서비스 확인
$ kubectl get services
pods 확인
$ kubectl get pods -o wide
node 확인
public node의 external-ip 확인(이 EC2 인스턴스 주소로 접속한다)
$ kubectl get nodes -o wide
public EC2 인스턴스의
Security Group에 inbound 추가
브라우저 접속확인!
'Infra > AWS' 카테고리의 다른 글