loose
이로운 개발하기
loose
전체 방문자
오늘
어제
  • 전체 (205) N
    • ☕ Java (24)
    • 📘 Effective Java (9)
    • 🍃 Spring (48)
    • 📖 ORM (9)
    • ☸️ Kubernetes (13)
    • 🐧 Linux (5)
    • 🐋 Docker (5)
    • 🛠️ CI & CD (7)
    • 🕸️ Web (6)
    • 🔗 Distributed System (3)
    • 📜 Js (10)
    • 📈 Database (11)
    • 🗂️ Etc (34)
    • 🧑 Chitchat (11) N
    • 📒 문학 (9)
    • 👜 개인 공부 창고 (1)

공지사항

반응형

최근 글

최근 댓글

loose

이로운 개발하기

[Spring] Webflux에 Mongo 연결(+Kubernetes)
🍃 Spring

[Spring] Webflux에 Mongo 연결(+Kubernetes)

2024. 9. 5. 11:12
반응형

Kubernetes에 Helm으로 Mongo 설치

설치

helm show values bitnami/mongodb > custom-values.yaml

간단하게 명령어로 설치해도 되지만 사용자 ID나 PVC의 용량을 미리 설정하기 위해 미리 yaml 파일을 수정해서 설치합니다.

auth:
  enabled: true
  rootUser: mongo-user
  rootPassword: mongo-password
  database: mydatabase
-------------------------------------
persistence:
  enabled: true
  size: 1Gi
-------------------------------------
service:
  type: LoadBalancer
  port: 27017
-------------------------------------

 

순서대로 사용자 정보와 데이터베이스 명, PVC 크기, Service 타입을 설정합니다.

여기서는 LoadBalancer로 설정합니다.

helm install my-mongodb -f custom-values.yaml bitnami/mongodb

업데이트 

helm upgrade my-mongodb -f custom-values.yaml bitnami/mongodb

삭제 

helm uninstall my-mongodb

연결 정보 확인

이제 kubectl get svc를 통해서 LoadBalancer의 External IP를 확인합니다.

해당 아이피와 27017 그리고 위에서 설정한 사용자 ID와 패스워드가 연결정보가 됩니다.

MongoDB 사용법

Pod에 직접 접속

k exec 명령어를 통해서 Pod에서 Mongo 명령어를 사용해볼 수 있습니다.

mongosh admin -u myid -p mypw

use mydb;

db.createCollection("MyCollection");

db.ProvisioningInfo.insertOne( { "id":"1", "name":"stir" });

db.ProvisioningInfo.find({});

인텔리제이에서 접속

인텔리제이에서도 똑같이 연결해서 사용 가능합니다.

Spring Webflux에 Mongo 연결해서 사용하기

설정

implementation("org.springframework.boot:spring-boot-starter-data-mongodb-reactive")
data:
    mongodb:
      host: ExternalIp
      port: 27017
      database: mydb # 사용할 데이터베이스 이름
      username: myid # MongoDB 사용자 이름 (옵션, 필요 시)
      password: mypw # MongoDB 비밀번호 (옵션, 필요 시)

yaml 파일을 연결 정보에 있던 것으로 수정해줍니다.

구현 코드

@Data
@Document(value="MyCollection")
public class MyCollection implements Serializable {
  private static final long serialVersionUID = 142466781L;

  @Id
  private String id;

  private String name;
}
@Repository
public interface MyCollectionRepository extends ReactiveMongoRepository<MyCollection, String> {
  Flux<MyCollection> findAll();
}

이제 해당 Repository를 연결해서 사용하면 됩니다.

728x90

'🍃 Spring' 카테고리의 다른 글

[Spring] 영속성 프레임워크(JPA, R2DBC)에서 save 2번 진행 시 '생성 시간' 처리 방법  (0) 2024.10.17
[Spring] R2DBC DatabaseClient 잘 사용하기  (1) 2024.09.19
[Spring] 스프링에서 가상 스레드를 이용한 부하테스트  (2) 2024.03.15
@Autowired HttpServletRequest 사용하기(+RequestContextHolder, ThreadLocal)  (0) 2023.11.10
JUnit 문법  (0) 2023.08.26
    '🍃 Spring' 카테고리의 다른 글
    • [Spring] 영속성 프레임워크(JPA, R2DBC)에서 save 2번 진행 시 '생성 시간' 처리 방법
    • [Spring] R2DBC DatabaseClient 잘 사용하기
    • [Spring] 스프링에서 가상 스레드를 이용한 부하테스트
    • @Autowired HttpServletRequest 사용하기(+RequestContextHolder, ThreadLocal)
    loose
    loose
    불만하는 사람은 90명, 해결하는 사람은 9명, 리드하는 사람은 1명 음악과 낭만을 좋아합니다.
    hELLO. 티스토리 스킨을 소개합니다.
    제일 위로

    티스토리툴바