deployment.yaml
<aside>
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-spring-app
spec:
replicas: 2
selector:
matchLabels:
app: my-spring-app
template:
metadata:
labels:
app: my-spring-app
spec:
containers:
- name: my-spring-app
image: 047719624346.dkr.ecr.ap-northeast-2.amazonaws.com/my-spring-app:latest
ports:
- containerPort: 8083
env:
- name: SPRING_DATASOURCE_URL
value: "jdbc:mysql://10.0.0.235:3306/myblog_db?serverTimezone=Asia/Seoul"
- name: SPRING_DATASOURCE_USERNAME
value: "root"
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: my-spring-db-secret
key: password
</aside>
ingress.yaml
<aside>
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: "alb"
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
alb.ingress.kubernetes.io/group.name: "my-app-ingress" # ALB 그룹 지정 (선택)
alb.ingress.kubernetes.io/healthcheck-path: "/health"
spec:
rules:
- host: cbnu.store # 도메인 이름 (Route 53에서 CNAME 설정 필요)
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-spring-service
port:
number: 80 # Service의 port와 일치해야 함
- host: www.cbnu.store # ✅ www 도메인 추가
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-spring-service
port:
number: 80
</aside>
service.yaml
<aside>
apiVersion: v1
kind: Service
metadata:
name: my-spring-service
spec:
selector:
app: my-spring-app
ports:
- protocol: TCP
port: 80 # Ingress가 연결할 포트
targetPort: 8083 # Spring Boot 애플리케이션 포트
type: ClusterIP # ALB를 사용할 때는 반드시 ClusterIP 사용
</aside>
my-spring-db-secret.yaml
<aside>
apiVersion: v1
kind: Secret
metadata:
name: my-spring-db-secret
type: Opaque
data:
password: MzAxNw== # DB password를 Base64로 인코딩한 값
</aside>