Daramu
Home
  • 분류 전체보기 (109)
    • 네트워크 (15)
    • 클라우드 (23)
      • AWS (5)
      • Docker (2)
      • Kubernetes (4)
      • Istio (1)
      • Terraform (1)
      • fluent bit (4)
      • NCP (6)
    • 잡소리 (0)
    • 개발 (37)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Spring boot (11)
      • KeyCloak (9)
      • Frontend (6)
      • golang (4)
      • 기타 (0)
    • DevOps (17)
      • Kafka (4)
      • ArgoCD (5)
      • Jenkins (3)
      • Gitlab (5)
    • Devloper (4)
      • 자바JAVA (4)
    • Monitoring (11)
      • Prometheus+Grafana (2)
      • LGTM + Otel (3)
      • VictoriaMetrics Stack (6)
Home
  • 분류 전체보기 (109)
    • 네트워크 (15)
    • 클라우드 (23)
      • AWS (5)
      • Docker (2)
      • Kubernetes (4)
      • Istio (1)
      • Terraform (1)
      • fluent bit (4)
      • NCP (6)
    • 잡소리 (0)
    • 개발 (37)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Spring boot (11)
      • KeyCloak (9)
      • Frontend (6)
      • golang (4)
      • 기타 (0)
    • DevOps (17)
      • Kafka (4)
      • ArgoCD (5)
      • Jenkins (3)
      • Gitlab (5)
    • Devloper (4)
      • 자바JAVA (4)
    • Monitoring (11)
      • Prometheus+Grafana (2)
      • LGTM + Otel (3)
      • VictoriaMetrics Stack (6)
블로그 내 검색

Daramu

다람어의 블로그

  • 개발/Spring boot

    Spring Boot PROD 운영환경으로 올리기: gateway 외에 서비스

    2026. 6. 7.

    by. Daramu

    이전 Gateway는 API 관문 역할을 하기에 어쩔 수 없이 외부에서 요청을 받아야만 했다.

     

    프론트(브라우저)에서 요청을 보내는데, 내부망에 있으면 요청을 받을 수 없으니 말이다.

     

    하지만 gateway를 제외한 서비스는 굳이 외부에 노출시킬 필요가 없다.

     

    user, notification, payment...etc... 

    Spring Cloud Gateway를 사용하는 이유는 SCG 하나만 외부에 공개하고 나머지 백엔드는 SCG 뒤에 감추기 위함이다.

     

    그 통신을 위해 SCG에 CORS, JWT 등의 설정을 진행했었다.

     

    이제 나머지 백엔드 구성은 다음과 같이 진행한다.

     

    1. 쿠버네티스 리소느는 deployment, service만 만든다.(외부에 노출되지 않기에 ingress 가 필요없다.)

    2. 백엔드 통신은 SCG가 전담한다.

     

    2번을 위해 SCG에 다음과 같이 쿠버네티스 FQDN 설정을 진행했었다.

     

     

    이제 SCG가 서비스를 찾아갈 수 있도록 서비스 이름을 맞춰준다.

    사실 서비스를 먼저 생성하고 SCG를 거기에 맞췄어야 했지만, 이름은 {service_name}-service 로 정하였기에 그냥 먼저 설정했었다.

     

    apiVersion: v1
    kind: Service
    metadata:
      name: user-service
      namespace: default
      labels:
        app: user
    spec:
      type: ClusterIP
      selector:
        app: user
      ports:
        - port: 8080
          targetPort: 8080
          
     #service
     apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: user
      namespace: default
      labels:
        app: user
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: user
      template:
        metadata:
          labels:
            app: user
        spec:
        ...(생략)

     

    이런식으로 service의 이름을 SCG와 맞춰주면 된다.

     

    단 운영환경에서는 application.yaml 에 패스워드 같은게 들어가 있는게 좀 거슬릴 수 있다.

    그럴때는 secret 으로 처리가 가능하다.

    우선 application.yaml 에 다음과 같이 설정한다.

      datasource:
        url: ${DB_URL}
        username: ${DB_USERNAME}
        password: ${DB_PASSWORD}

     

    그리고 secret 으로 이 값들을 주입하면 된다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: notification-secret
      namespace: default
    type: Opaque
    stringData:
      DB_URL: "db_host"
      DB_USERNAME: "db_user"
      DB_PASSWORD: "db_passwrod"

     

    그리고 이렇게 생성한 secret을 deployment에서 심어주면 된다.

    ....(생략)
              ports:
                - containerPort: 8080
              envFrom:
                - secretRef:
                    name: notification-secret
    ....(생략)

     

    저작자표시 (새창열림)

    '개발 > Spring boot' 카테고리의 다른 글

    쿠버네티스에서 Spring boot application 파일 Secret으로 관리하기  (0) 2026.06.08
    NCP(Naver Cloud Platform) - Outbound Mailer 를 통한 SMS 발송하기  (0) 2026.06.08
    Spring Boot PROD 운영환경으로 올리기: Gateway 올리기  (0) 2026.06.07
    Keycloak, React, Spring Boot 연동 : 연동 확인  (0) 2026.06.06
    Keycloak, React, Spring Boot 연동: Notification 서비스 생성  (1) 2026.06.06

    댓글

    관련글

    • 쿠버네티스에서 Spring boot application 파일 Secret으로 관리하기 2026.06.08
    • NCP(Naver Cloud Platform) - Outbound Mailer 를 통한 SMS 발송하기 2026.06.08
    • Spring Boot PROD 운영환경으로 올리기: Gateway 올리기 2026.06.07
    • Keycloak, React, Spring Boot 연동 : 연동 확인 2026.06.06
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
Daramu

티스토리툴바