1. 백엔드 구성
- 백엔드 Deployment를 생성할 네임스페이스를 생성한다. 예시에서의 namespace 이름은 app으로 한다
kubectl create namespace app
- yaml 파일을 작성한다. 이름은 자유롭게 작성하되, 예시에서는 create-back-pod.yaml로 한다
- Deployment의 이름도 namespace와 동일하게 app으로 한다
# create-back-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
namespace: app
spec:
selector:
matchLabels:
# 아래 template 속성에서 지정할 metadata.labels의 값과 key, value를 일치시켜야한다
type: app
replicas: 4
strategy:
type: RollingUpdate
minReadySeconds: 10
template:
metadata:
labels:
type: app
spec:
containers:
- name: backend
# 위에서 복사한 이미지의 URI
image: <AWS ID>.dkr.ecr.ap-northeast-2.amazonaws.com/was:174
ports:
# Container가 동작할 때 사용할 Listening 포트
# gunicorn의 default 포트인 8000번을 활용
- containerPort: 8000
terminationGracePeriodSeconds: 3
- 프론트엔드 서버에서 백엔드 서버로 접근할 때 사용할 서비스 생성
- 서비스의 타입은 로드밸런서 타입으로 한다
- 생성을 위해 yaml 파일을 작성한다 예시에서는 create-back-svc-lb.yaml 으로 생성
# create-back-svc-lb.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-back
namespace: app
spec:
selector:
# Deployment의 template label과 key, value를 매칭해준다
type: app
ports:
- protocol: TCP
port: 8000
targetPort: 8000
type: LoadBalancer
kubectl apply -f create-back-svc-lb.yaml
- 여기서 이름이 다를 것이다. 왜냐하면 나는 이파일들을 전부 helm으로 묶어서 진행했다. 이건 CICD 부분에서 확인바람!