๋ ์ง: 2024๋ 4์ 16์ผ ์ํ: ์งํ ์ค
๐จ jasypt 3.0.5 ๋ณด๋ค ์ด์ ๋ฒ์ ์์๋ ๋น๋ ์ปค๋งจ๋๊ฐ ์ ์๋ํ์ง ์์ ํ์ฌ ์ต์ ๋ฒ์ ์ธ 3.0.5 ๋ฒ์ ์ ์ฌ์ฉํ์๋ค.implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'
tasks.named('test') {
useJUnitPlatform()
systemProperty 'jasypt.encryptor.password', findProperty("jasypt.encryptor.password")
}
FROM openjdk:17-alpine
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar", "--jasypt.encryptor.password=itty"]
์ด๋ก ์ธํด ์ํธํ๋ ๋ฏผ๊ฐ์ ๋ณด๋ค์ ๋ค์ ๋ณตํธํํ์ฌ ํ๋ก๊ทธ๋จ์ด ์ธ์ํ๋๋ก ํ๋ก๊ทธ๋จ ์ธ๋ถ์์ ๋ณตํธํ key๋ฅผ ์ ๋ฌํด์ฃผ์ด์ผ ํ๋๋ฐ,
๊ทธ key๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก CLI ํ๊ฒฝ์์ ๋น๋ํ๋ ๋ช ๋ น์ key ๊ฐ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ ํํ์๋ค.
gradle์ ์ฌ์ฉํ์ฌ ๋น๋ ์ -P
ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋ค.
./gradlew clean build -P jasypt.encryptor.password=itty
clean
: ๊ธฐ์กด์ ๋ง๋ค์ด์ง build๋ฅผ ์ง์ด ํ, ์ build ํ์ผ์ ์์ฑ
docker login
docker build -t eodud3196/backend_server .
- Docker์ eodud3196/backend_server ๋ผ๋ ์ด๋ฆ์ Dockerfile(image)๋ฅผ ์์ฑ
- ์ด๋ [eodud3196]์ ๋ณธ์ธ์ DockerHub ์์ด๋๋ก ์์ฑ
- ๋ง์ง๋ง์ .์ ๋ถ์ด๋ ์ด์ : ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ๋ Dockerfile์ ๊ธฐ์ค์ผ๋ก image ํ์ผ์ ์์ฑํ๋ค๋ ์๋ฏธ
docker push eodud3196/backend_server
- ์์ฑํ ์ด๋ฏธ์ง ํ์ผ์ ๋์ปค์ ํธ์
-
deployment ํ์ผ ์์ฑ
-
service ํ์ผ ์์ฑ
kubectl apply -f itty-project-deployment.yml
kubectl apply -f itty-project-service.yml
npm install
- ํ์ํ ๋ชจ๋ ์ข ์์ฑ์ ์ค์นํ๊ณ , ํ๋ก์ ํธ๊ฐ ์์ฐ ํ๊ฒฝ์์ ์ ๋๋ก ์คํ๋ ์ ์๋๋ก ๊ตฌ์ฑ
- ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ๋๋ฒ๊น
์ ์ํ ๋๊ตฌ๊ฐ ํ์ํ์ง๋ง, ๋ฐฐํฌ ์์๋ ์ต์ ํ๋ ์ฝ๋๊ฐ ํ์ํจ. **
npm install
**์ ํ์ํ ๋ชจ๋ ํ๊ฒฝ ์ค์ ํ์ผ๊ณผ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์นํ๋ฉฐ, ์ด๋ ๋ฐฐํฌ ๊ณผ์ ์์ ์ฝ๋๋ฅผ ์ต์ ํํ๊ณ , ํ์ํ ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋๋๋ก ํจ - ์ฌ๋ฌ ํ๋ฌ๊ทธ์ธ๊ณผ ํ์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉ
npm install axios
- HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ API๋ฅผ ์ ๊ณต
- ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ์์ฑํ๊ณ ๊ด๋ฆฌ
- ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ฉฐ, ์ค๋๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ํ๊ธฐ ์ํ ์๋ ๋ณํ ๊ธฐ๋ฅ์ ์ ๊ณต
- JSON ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ํ์ฑํ์ฌ ๊ฐ๋ฐ์๊ฐ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต์ ์ฆ์ ๊ฐ์ฒด๋ก ์ฌ์ฉํ ์ ์๊ฒ ํจ
npm run dev
- ๋ฐฐํฌ ๋ฐ์ Vue ํ์ผ ์คํ (Localhost:(ํฌํธ๋ฒํธ) ๋ก ์ง์ )
๐ก Spring Security ๋ก๊ทธ์ธ ํ ํฐ ๊ด๋ฆฌ๋ฅผ ์ํ Redis ์๋ฒ Kubernetes ์คํ ๊ณผ์
-
redis ๋๋ ํ ๋ฆฌ ์์ฑ
-
Kubernetes ์คํ์ ์ํ yml ํ์ผ ์์ฑ
- ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฆฌ์์ค
externalIPs: - 192.168.0.31
- service ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด IP๋ฅผ ์ค์ ํจ
- Backend Server์์ 192.168.0.31:6379๋ฅผ ์ด์ฉํ์ฌ ์๋ก ํต์ ๊ฐ๋ฅ ํ๊ฒ ์ ์ฉ
kubectl apply -f redis/
- redis ๋๋ ํ ๋ฆฌ ๋ฐ์์ ์์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํ ํ๋ฉด 3๊ฐ์ .yml ํ์ผ์ด ์คํ ๋จ
- ํด๋น ํ์ผ์ MariaDB ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ธฐํํ๋ ์์ ์ ์ํํจ.
- ์ด๊ธฐํ ์์ ์ ๋น๋ ์คํ ์ด์ง์์ ์ํ๋๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๋ก ์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋จ
- ๋ค์ ์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ MariaDB ์ด๋ฏธ์ง๋ก ๋ณต์ฌํ์ฌ ์ต์ข ์ด๋ฏธ์ง๋ฅผ ์์ฑ
- ํด๋น ํ์ผ์ itty Database DDL๋ฌธ์ผ๋ก Docker ์ด๋ฏธ์ง ์ด๊ธฐ ์ธํ ํ DB์ด๋ค.
docker build -t {DB image name}
docker push {DB image name}
-
db ๋๋ ํ ๋ฆฌ ์์ฑ
-
Kubernetes ์คํ์ ์ํ yml ํ์ผ ์์ฑ
- ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฆฌ์์ค
externalIPs: - 192.168.0.30
- service ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด IP๋ฅผ ์ค์ ํจ
- Backend Server์์ 192.168.0.30:3306์ ์ด์ฉํ์ฌ ์๋ก ํต์ ๊ฐ๋ฅ ํ๊ฒ ์ ์ฉ
kubectl apply -f db/
- redis ๋๋ ํ ๋ฆฌ ๋ฐ์์ ์์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํ ํ๋ฉด 3๊ฐ์ .yml ํ์ผ์ด ์คํ ๋จ
๐ก Prometheus๋ ์์คํ ๋ชจ๋ํฐ๋ง ๋ฐ ๊ฒฝ๊ณ ํดํท์ด๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋งคํธ๋ฆญ ์์ง ๋ฐ ๋์๋ณด๋ ๊ตฌ์ถ์ด ๊ฐ๋ฅํ๋ค. ์ค์๊ฐ์ผ๋ก ์์คํ ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ๋ค์ํ ์งํ๋ฅผ ์์งํ์ฌ ์์คํ ์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ๋ณด์ฅ ํ๊ธฐ ์ํจ์ด๋ค.
-
Prometheus ๋๋ ํ ๋ฆฌ ์์ฑ
-
Kubernetes ์คํ์ ์ํ yml ํ์ผ ์์ฑ
- ํ์ฌ ์ด ์์คํ ์์๋ Backend์ Jenkins Server ๋ชจ๋ํฐ๋ง์ ์งํํจ.
scrape_configs: - job_name: prometheus metrics_path: '/actuator/prometheus' static_configs: - targets: ['10.1.1.67:8888'] - job_name: jenkins metrics_path: '/prometheus/' static_configs: - targets: ['083f-183-109-114-170.ngrok-free.app'] scheme: https
- Backend ์๋ฒ๋ฅผ k8s๋ก ์คํ์ํจ ํ kubectl describe {backend pods ์ด๋ฆ}์ ํตํด IP๋ฅผ ํ์ธํจ.
- ํด๋น IP๋ฅผ prometheus.static_configs.targes ์ชฝ์ port 8888๋ก ์์ ํจ.
- jenkins ์๋ฒ ๋ชจ๋ํฐ๋ง์ ์ํด imac์์์ ๋์ํ๊ณ ์๋ jenkins๋ฅผ ngrok์ ํตํด ์ฃผ์๋ฅผ Backend์๋ฒ targets ์์ ํ๊ฒ ์ฒ๋ผ ์์ ํ๋ค.
- service ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด IP๋ฅผ ์ค์ ํจ
- Backend Server์์ 192.168.0.31:6379๋ฅผ ์ด์ฉํ์ฌ ์๋ก ํต์ ๊ฐ๋ฅ ํ๊ฒ ์ ์ฉ
kubectl apply -f prometheus/
- redis ๋๋ ํ ๋ฆฌ ๋ฐ์์ ์์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํ ํ๋ฉด 3๊ฐ์ .yml ํ์ผ์ด ์คํ ๋จ
- ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ localhost:30090์ ์คํํจ.
- targets์ ๋ค์ด๊ฐ jenkins, backend๊ฐ configmap์์ ์ค์ ํ ์ฃผ์๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง ํ์ธํจ
๐ก ์๊ณ์ด ๋งคํธ๋ฆญ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํ ํ๋๋ฐ ๊ฐ์ฅ ์ต์ ํ๋ ๋์๋ณด๋๋ฅผ ์ ๊ณตํด์ฃผ๋ ์คํ์์ค ํดํท. Prometheus์์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๋์๋ณด๋์ ์๊ฐ์ ์ผ๋ก ํํํจ์ผ๋ก์จ, ๊ด๋ฆฌ์๋ ์ค์๊ฐ์ผ๋ก ์๋น์ค์ ์ํ๋ฅผ ํ์ธํ๊ณ ์ด์ ํ์์ ์ฆ์ ํ์ ๊ฐ๋ฅ ํจ.
-
grafana ๋๋ ํ ๋ฆฌ ์์ฑ
-
Kubernetes ์คํ์ ์ํ yml ํ์ผ ์์ฑ
- ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฆฌ์์ค
kubectl apply -f grafana/
- redis ๋๋ ํ ๋ฆฌ ๋ฐ์์ ์์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์คํ ํ๋ฉด 3๊ฐ์ .yml ํ์ผ์ด ์คํ ๋จ
- localhost:30000์ผ๋ก ์ ์ํจ.
- Prometheus์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ก๋ฐ๊ธฐ ์ํด data source โ prometheus ํด๋ฆญ