hyunjujeong 9e722d02c4 | ||
---|---|---|
gradle/wrapper | ||
src | ||
.gitignore | ||
Dockerfile | ||
README.md | ||
build.gradle | ||
gradlew | ||
gradlew.bat | ||
settings.gradle |
README.md
[BlokWorks] Device Deployer Service
사용자에게 Command 를 입력받아 MQTT 를 발행하고 배포된 앱의 정보를 저장하고, 조회하는 Spring boot 기반 Java 애플리케이션입니다.
기반 기술
- Java 17
- Spring Boot 3.1.3
- Gradle 8.2.1
주요 의존성
- MQTT
- PostgreSQL
빌드
프로젝트 패키징
Gradle을 사용하여 패키징합니다.
$ ./gradlew clean build -x test
도커 빌드
FROM amazoncorretto:17.0.6-al2023
EXPOSE 8081
ADD ./build/libs/*.jar device-deployer.jar
ENTRYPOINT ["java", "-jar", "/device-deployer.jar"]
Image Registry로 사용할 AWS ECR에 로그인을 합니다.
$ aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 003960268191.dkr.ecr.ap-northeast-2.amazonaws.com
패키징된 jar 파일을 Docker image로 빌드합니다.
$ docker build --platform linux/amd64 -t device-deployer:0.0.7-SNAPSHOT .
$ docker tag sdt-cloud/device-deployer:0.0.7-SNAPSHOT 003960268191.dkr.ecr.ap-northeast-2.amazonaws.com/sdt-cloud/device-deployer:{{version}}
이미지 업로드
빌드 및 태깅된 Docker image를 Image Registry에 업로드 합니다.
$ docker push 003960268191.dkr.ecr.ap-northeast-2.amazonaws.com/sdt-cloud/device-deployer:{{version}}
구동
사전 구동 애플리케이션 및 모듈
- MQTT 컨테이너 모듈
- 사용자의 Command 를 Edge(Device)에게 전달하기 위한 Message Queue 입니다.
- PostgreSQL 컨테이너 모듈
- 실행된 Command 의 정보를 저장하고 조회할 수 있는 RDB 입니다.
설정 정보
설정 정보 등록은 설정 관리 애플리케이션의 POST /configuration API 를 이용합니다.
옵션 | 설명 | 필수 여부 | 기본값 |
---|---|---|---|
server.port | 서버 포트 | O | - |
inbound.mqtt.url | MQTT 모듈의 url | O | - |
inbound.mqtt.username | MQTT 모듈의 username | O | - |
inbound.mqtt.password | MQTT 모듈의 password | O | - |
inbound.mqtt.topics | MQTT 모듈이 구독할 Inference 결과 데이터 topic | O | - |
spring.datasource.uri | PostgreSQL 모듈의 연결을 위한 URI | O | - |
spring.datasource.username | PostgreSQL 모듈의 username | O | - |
spring.datasource.pssword | PostgreSQL 모듈의 password | O | - |
배포
배포는 k8s manifest로 작성한 deploy.yaml을 이용합니다.
Deployment 오브젝트에 반드시 명시해야 하는 설정 정보(env
)는 아래와 같습니다.
옵션 | 설명 | 필수 여부 | 예시 |
---|---|---|---|
SPRING_PROFILES_ACTIVE | 구동 profile | O | k8s |
SERVER_PORT | 애플리케이션이 등록될 포트 | O | 8085 |
POSTGRES_CREDENTIALS_URL | PostgreSQL의 URL | O | jdbc:postgresql://localhost:5432/blokworks |
POSTGRES_CREDENTIALS_USERNAME | PostgreSQL의 계정 | O | sdt |
POSTGRES_CREDENTIALS_PASSWORD | PostgreSQL의 비밀번호 | O | 2xxxxx |
IAM_AMQP_HOST | RabbitMQ의 URL | O | rabbitmq.sdt-cloud.svc.cluster.local |
IAM_AMQP_PORT | RabbitMQ의 포트 | O | 5672 |
IAM_AMQP_USERNAME | RabbitMQ에 접속할 계정 | O | guest |
IAM_AMQP_PASSWORD | RabbitMQ에 접속할 비밀번호 | O | guest |