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>