Docker/Kubernetes와 Spring-Boot 및 Redis 연결

소개



이 기사에서는 spring-boot를 사용하여 Redis DB와 연결하고 이를 Kubernetes 클러스터에 배포하는 방법에 대해 알아봅니다.

전제 조건



Editor — IntelliJ Idea/Eclipse

언어 — Java 8 이상

프레임워크 — 스프링 부트

이미지 빌드 도구 — Docker

오케스트레이션 — Kubernetes(k8)

데이터베이스 — Redis

GIT 레포



https://github.com/shethaptech/spring-boot/tree/main/redis-counter-service

이제 설계로 이동하여 구현의 개요를 그립니다.

1. 디자인



Redis DB에 연결하기 위해 spring-boot 및 jedis 클라이언트를 사용하여 마이크로서비스를 설계할 것입니다. 이 응용 프로그램은 방문자가 우리 페이지를 방문할 때마다 방문자 카운터를 증가시킵니다.


높은 수준의 디자인

위의 하이레벨 디자인을 참고하시면,

→ "redis-counter-service"및 Redis db 서버 각각에 대해 2개의 포드가 실행됩니다.

→ 두 포드가 연결되고 ClusterIP 유형 k8s 서비스를 통해 통신합니다.

→ "redis-counter-service"용 포트 8080 및 Redis DB 서버용 포트 6379를 노출했습니다.

→ "redis-counter-service"는 포트 6379에서 k8s 서비스 "reddis-db-svc"를 사용하여 Redis DB에 연결합니다.

2. 레디스 DB 서버



Docker 이미지를 사용하여 Redis DB를 설치해 보겠습니다.

2.1 컨테이너 레지스트리에서 Redis 이미지를 가져옵니다.

docker pull Redis // this will fetch from docker hub by default



2.2 Docker 컨테이너 레지스트리에서 가져온 이미지를 사용하여 Redis 컨테이너를 만듭니다.

docker run -p 6379:6379 — name redis -d redis



2.3 Redis DB가 작동하는지 확인합니다.

docker exec -it redis sh



이 명령은 Redis 컨테이너의 bash로 이동합니다. 이는 Redis 컨테이너가 작동 중이고 연결할 수 있음을 의미합니다.


Redis sh 쉘

또한 Redis DB 컨테이너의 로그를 확인하여 시작 시 오류가 있는지 확인할 수 있습니다.


Redis 설치 후 로그

Redis DB가 실행 중이므로 서비스를 만들어 봅시다.

3. 스프링 부트 서비스 설정



3.1 Redis에 대한 Spring 데이터 JPA 종속성

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>


3.2 Redis용 스프링 부트 자바 클라이언트

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.6.3</version>
</dependency>


3.3 구성

redis:
_# host: 127.0.0.1_  
host: reddis-db-svc **_#this should be the k8s service name for Redis_**  
port: 6379


코드 베이스는 git 저장소를 참조하십시오.

4. Docker 이미지 빌드 — Dockerfile



도커 이미지를 빌드하려면 아래 구성을 참조하십시오.

docker build -f <> -t <>



FROM java
ARG _ARTIFACT\_NAME_=redis-counter-service-0.0.1-SNAPSHOT.jar
ENV _ARTIFACT\_NAME_=${_ARTIFACT\_NAME_}
RUN mkdir /app
COPY target/${_ARTIFACT\_NAME_} /app/
CMD java -jar /app/${_ARTIFACT\_NAME_}


5. 컨테이너 오케스트레이션 — Kubernetes(k8s)



여기서는 컨테이너 오케스트레이션을 위해 Kubernetes(k8s)를 사용합니다.

k8s 배포 및 서비스 개체를 생성합니다.

코드 베이스는 git 저장소를 참조하십시오.

→ 아래 명령을 사용하여 K8s 개체를 배포합니다.

kubectl apply -f deployment.yaml

kubectl apply -f service.yaml



→ k8s 개체가 작동 및 사용 가능한지 확인합니다.

kubectl get svc




K8s 서비스

kubectl get pod




K8s 배치

6. 쇼타임



k8s 개체가 실행되면 아래 URL을 누르십시오. URL을 누를 때마다 방문 카운터가 증가합니다.

http://127.0.0.1:8080/counter/increment

주요 테이크 아웃



그럼 지금까지 배운 내용은,

→ 방문자 카운터 스프링 부트 서비스

→ 컨테이너화를 이용한 Redis DB 서버

→ 이미지를 구축하는 도커

→ Kubernetes 배포 및 서비스

좋은 웹페이지 즐겨찾기