728x90
웹 서비스를 구성하는 백앤드, 프론트앤드를 Amazon EKS에 배포하는 방법에 대해 알아보도록 하겠습니다.
각 서비스를 배포하는 순서는 아래와 같습니다.
① 소스 코드 다운로드
② Amazon ECR에 각 서비스에 대한 리포지토리 생성
③ Dockerfile을 포함한 소스 코드 위치에서 컨테이너 이미지 빌드 후, 리포지토리에 푸시
④ 각 서비스에 대한 Deployment, Service, Ingress 매니페스트 파일 생성 및 배포
아래의 그림은 사용자가 실제 서비스를 접근하는 순서를 나타냅니다.
1. 구성 파일 만들기
먼저 manifests 폴더 위치(/home/ec2-user/environment/manifests)로 이동하도록 하겠습니다.
cd ~/environment/manifests/
위의 순서대로 진행하기 위해서 deployment , service , Ingress 파일을 생성해보도록 하겠습니다.
vi flask-deployment.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-flask-backend
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: demo-flask-backend
template:
metadata:
labels:
app: demo-flask-backend
spec:
containers:
- name: demo-flask-backend
image: $ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/demo-flask-backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
vi flask-service.yaml
apiVersion: v1
kind: Service
metadata:
name: demo-flask-backend
annotations:
alb.ingress.kubernetes.io/healthcheck-path: "/contents/aws"
spec:
selector:
app: demo-flask-backend
type: NodePort
ports:
- port: 8080 # 서비스가 생성할 포트
targetPort: 8080 # 서비스가 접근할 pod의 포트
protocol: TCP
vi ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: "backend-ingress"
namespace: default
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- http:
paths:
- path: /contents
pathType: Prefix
backend:
service:
name: "demo-flask-backend"
port:
number: 8080
2. 배포하기
이제 위에서 생성한 매니페스트를 아래의 순서대로 배포하도록 하겠습니다.
Ingress를 생성하면 AWS Application Load Balancer(ALB)가 프로비저닝됩니다.
kubectl apply -f flask-deployment.yaml
kubectl apply -f flask-service.yaml
kubectl apply -f ingress.yaml
3. 배포 확인하기
아래의 명령어를 통해 접속 url을 확인합니다.
echo http://$(kubectl get ingress/backend-ingress -o jsonpath='{.status.loadBalancer.ingress[*].hostname}')/contents/aws
접속 url을 통해 배포가 되었는지 확인하면 됩니다.
추가적으로 ec2콘솔창 로드밸런싱탭에서도 활성화 여부를 확인 할 수 있습니다.
아래는 현재 아키텍처 구조입니다.
728x90
'Cloud > AWS' 카테고리의 다른 글
[EKS 웹 애플리케이션 구축] 서비스 배포하기 (frontend- react) (0) | 2022.08.18 |
---|---|
[EKS 웹 애플리케이션 구축] 서비스 배포하기 (backend - express) (0) | 2022.08.18 |
[EKS 웹 애플리케이션 구축] 인그레스 컨트롤러 만들기 (0) | 2022.08.17 |
[EKS 웹 애플리케이션 구축] 콘솔 크레덴셜 추가하기 (0) | 2022.08.17 |
[EKS 웹 애플리케이션 구축] EKS 클러스터 생성하기 (0) | 2022.08.16 |