-
이전 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 댓글
