Microservice들을 만들기 전 Gateway 프로젝트 먼저 생성합니다.
MSA에서 gateway는 microservice의 앞단에서 API 라우팅, 로드 밸런싱, 권한 정책 관리(Policy Management), 사용자 인증(Consumer Identity Provider) 등을 수행하는 수문장 역할을 담당합니다.
우선 게이트웨이 애플리케이션을 만들 디렉토리를 생성합니다.
mkdir gateway
생성한 디렉토리로 이동해 jhipster를 실행해 합니다.
# 디렉토리 이동
cd gateway/
# jhipster 실행
jhipster
실행하면 여러가지 선택 옵션을 입력하는 prompt가 노출되는데 각각을 선택하고 나면 애플리케이션 생성을 시작합니다.

설치가 완료되면 설치 성공 메세지가 콘솔에 출력됩니다.

Gateway를 실행하기 위해서는 필수 서비스 설치가 필요합니다.
Mariadb, keycloak, redis, kafka, zookeeper가 제가 선택한 jhipster gateway 애플리케이션 생성 옵션의 필수 서비스 입니다.
애플리케이션 실행에 앞서, 해당 필수 서비스를 먼저 설치합니다.
프로젝트 생성 시 선택 한 옵션에 따른 Mariadb, keycloak, redis, kafka, zookeeper를 한번에 설치할 수 있는 docker-compose yaml 파일입니다.
docker compose -f src/main/docker/services.yml up -d
services.yml 내용
# This configuration is intended for development purpose, it's **your** responsibility to harden it for production
name: gateway
services:
mariadb:
extends:
file: ./mysql.yml
service: mysql
elasticsearch:
extends:
file: ./elasticsearch.yml
service: elasticsearch
keycloak:
extends:
file: ./keycloak.yml
service: keycloak
redis:
extends:
file: ./redis.yml
service: redis
kafka:
extends:
file: ./kafka.yml
service: kafka
zookeeper:
extends:
file: ./kafka.yml
service: zookeeper
docker compose -f src/main/docker/keycloak.yml up -d
9080 포트로 keycloak 실행 여부 확인

src/main/resources/config/application.yml
security:
oauth2:
client:
provider:
oidc:
issuer-uri: http://localhost:9080/realms/jhipster
registration:
oidc:
client-id: web_app
client-secret: web_app
scope: openid, profile, email, offline_access # last one for refresh tokens
테스트 완료 후 realm과 client-id, client-secret 변경 예정
docker compose -f src/main/docker/elasticsearch.yml up -d
docker compose -f src/main/docker/redis.yml up -d
docker compose -f src/main/docker/mysql.yml up -d
docker compose -f src/main/docker/kafka.yml up -d
필수 서비스 외에 모니터링 및 Swagger-editor 서비스를 추가로 설치합니다.
docker compose -f src/main/docker/monitoring.yml up -d
docker compose -f src/main/docker/zipkin.yml up -d
Swagger-Editor는 Swagger api.yml 파일 편집을 위한 도구입니다.
https://www.jhipster.tech/documentation-archive/v8.7.1/doing-api-first-development/
docker compose -f src/main/docker/swagger-editor.yml up -d
설치가 완료 되고, 브라우저로 http://localhost:7742에 접속하여 Swaager-Editor를 사용할 수 있습니다.


README.md 파일을 보면 프로젝트 구조, 환경 구성 방법, 실행 방법 등을 확인 할 수 있습니다.
작성한 실행 방법도 README.md 파일을 보고, 작성한 내용입니다.
VSCode의 devContainer와 Gradle for java extention을 이용해 실행해 봤지만, 모두 build 및 실행할 때 오류가 발생해 콘솔 창에서 직접입력하여 실행하였습니다.
오류 원인은 추후에 좀 더 Tracing해보고, 원인과 해결방법을 작성해 보겠습니다.
./gradlew openApiGenerate

JHipster는 npm을 주 빌드 시스템으로 사용합니다.
./npmw install
./gradlew -x webapp

실행 도중에 에러가 발생 하는데 원인은 알지 모르겠지만, 도커 관련 에러인거 같습니다.

하지만, 서비스는 정상 실행이 됩니다.

콘솔에 찍은 url을 브라우저에서 호출하면 관리자 화면이 뜹니다.

계정 > 인증 메뉴를 클릭하면 아래 화면 처럼 keycloark(인증서버)의 로그인 페이지로 이동합니다.
로그인 페이지의 username, password에 "admin"을 입력하고, Sign in 버튼을 클릭합니다.

로그인 된 홈 화면을 노출됩니다.

관리자 메뉴의 gateway 메뉴로 들어가니, 설치한 consul 서비스가 노출되네요.
