Skip to content

Commit 555afa5

Browse files
committed
Fix: ArgoCD 정상화 ..1
GKE 새로 만들고, 재설정 Related to: #15
1 parent 4e79d9c commit 555afa5

File tree

11 files changed

+60
-114
lines changed

11 files changed

+60
-114
lines changed

.github/workflows/gke.yaml renamed to .github/workflows/gkeNotUseArgoCD.yaml

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,3 @@
1-
# This workflow will build a docker container, publish it to Google Container Registry, and deploy it to GKE when there is a push to the "main" branch.
2-
#
3-
# To configure this workflow:
4-
#
5-
# 1. Ensure that your repository contains the necessary configuration for your Google Kubernetes Engine cluster, including deployment.yml, kustomization.yml, service.yml, etc.
6-
# 2. Create and configure a Workload Identity Provider for GitHub (https://github.com/google-github-actions/auth#setting-up-workload-identity-federation)
7-
#
8-
# 3. Change the values for the GAR_LOCATION, GKE_ZONE, GKE_CLUSTER, IMAGE, REPOSITORY and DEPLOYMENT_NAME environment variables (below).
9-
#
10-
# For more support on how to run the workflow, please visit https://github.com/google-github-actions/setup-gcloud/tree/master/example-workflows/gke-kustomize
111

122
#GKE를 통해 완전 배포까지 (Argo CD는 사용 안하고)
133
name: Build and Deploy to GKE
@@ -20,11 +10,11 @@ env:
2010
GKE_PROJECT: ${{ secrets.GKE_PROJECT }}
2111
GKE_EMAIL: ${{ secrets.GKE_EMAIL }}
2212
GITHUB_SHA: ${{ github.sha }}
23-
GKE_ZONE: asia-east1-a
24-
GKE_CLUSTER: jsvill-cluster-1
25-
IMAGE: demo
13+
GKE_ZONE: ${{ secrets.GKE_ZONE }}
14+
GKE_CLUSTER: ${{ secrets.GKE_CLUSTER }}
2615
REGISTRY_HOSTNAME: gcr.io
27-
DEPLOYMENT_NAME: demo
16+
IMAGE: jsvill-fullstack
17+
DEPLOYMENT_NAME: jsvill-fullstack
2818

2919
jobs:
3020
#job을 여러개로 나누면, job마다 checkout을 중복으로 해줘야함해서 하나로함

.github/workflows/test.yaml renamed to .github/workflows/union.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
#차트 배포까지 하는중
2+
#두개를 하나로 합쳐서 빌드 후 차트 배포까지 하는중
33
name: Build and Deploy to GKE For Argo CD
44
on:
55
push:
@@ -12,12 +12,12 @@ env:
1212
GKE_PROJECT: ${{ secrets.GKE_PROJECT }}
1313
GKE_EMAIL: ${{ secrets.GKE_EMAIL }}
1414
# GITHUB_SHA: ${{ github.sha }}
15-
GKE_ZONE: asia-east1-a
16-
GKE_CLUSTER: jsvill-cluster-1
15+
GKE_ZONE: ${{ secrets.GKE_ZONE }}
16+
GKE_CLUSTER: ${{ secrets.GKE_CLUSTER }}
1717
REGISTRY_HOSTNAME: gcr.io
18-
IMAGE: jsvill
18+
IMAGE: jsvill-fullstack
1919
IMAGE_TAG: latest
20-
DEPLOYMENT_NAME: jsvill
20+
DEPLOYMENT_NAME: jsvill-fullstack
2121

2222
jobs:
2323
#job을 여러개로 나누면, job마다 checkout을 중복으로 해줘야함해서 하나로함

charts/jsvill-chart/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
image: gcr.io/lucid-sonar-418815/jsvill:latest
1+
image: gcr.io/single-quanta-422507-f2/jsvill-fullstack:latest
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.sjs.jsvill.config;
22

3+
import com.sjs.jsvill.entity.Member;
34
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
46
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
57

68
@Configuration
79
@EnableRedisHttpSession
8-
public class RedisConfig {
10+
public class RedisConfig {
911
}

src/main/java/com/sjs/jsvill/controller/group/GroupController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ public String register(GroupDTO groupDTO, @AuthenticationPrincipal MemberDTO mem
4141
}
4242
@GetMapping("/list")
4343
public String list(@AuthenticationPrincipal MemberDTO memberDTO, Model model) {
44-
Json.stringToJson(memberDTO, "group-list");
4544
model.addAttribute("result", groupService.getList(memberDTO.getMemberRowid()));
4645
return "group/list";
4746
}

src/main/java/com/sjs/jsvill/controller/kafka/ReminderApiController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ public class ReminderApiController {
2727

2828
@GetMapping(value = "/api/sse-connection", produces = "text/event-stream")
2929
public SseEmitter stream(@AuthenticationPrincipal MemberDTO memberDTO, @RequestHeader(value = "Last-Event-ID", required = false, defaultValue = "") String lastEventId) throws IOException {
30-
log.info("stream-1");
3130
return consReminderService.addEmitter(String.valueOf(memberDTO.getPhoneNumber()), lastEventId);
3231
}
3332

src/main/java/com/sjs/jsvill/service/calendar/CalendarServiceImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public List<CalendarDTO> findEventsWithinNextWeek() {
4848
public void register(CalendarDTO calendarDTO) {
4949
log.info("calendarDTO-register: " + calendarDTO);
5050
List<Calendar> calendarList = Calendar.dtoToEntities(calendarDTO, true);
51-
Json.stringToJson(calendarList, "service-register");
5251
//loopDays 루프로 등록
5352
calendarRepository.saveAll(calendarList);
5453
}

src/main/java/com/sjs/jsvill/service/kafka/ConsReminderService.java

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,44 @@
2424
public class ConsReminderService {
2525
private final ReminderService reminderService;
2626
private final EmitterRepository emitterRepository;
27-
@KafkaListener(topics = "calendar-reminder-schedule", groupId = "group_1")
28-
public void listenForSchedule(ReminderMessage reminderMessage) {
29-
try {
30-
log.info("인위적으로 폴링 간격을 늘림 -- 2초 지연");
31-
Thread.sleep(2000);
32-
} catch (InterruptedException e) {
33-
e.printStackTrace();
34-
}
3527

36-
//스케줄로 메세지를 컨슘하려면 -> 리마인더에 넣어야함
37-
Reminder reminder = Reminder.builder()
38-
.member(Member.builder().memberRowid(reminderMessage.getMemberRowid()).build())
39-
.contents(reminderMessage.getContents())
40-
.daysAgo(reminderMessage.getDaysAgo())
41-
.build();
42-
reminderService.createReminder(reminder);
28+
//브라우저에 연결
29+
public SseEmitter addEmitter(String userPhone, String lastEventId) {
30+
log.info("addEmitter-1 userPhone : {}, lastEventId : {}", userPhone, lastEventId);
31+
String emitterId = userPhone + "_" + System.currentTimeMillis();
32+
SseEmitter emitter = emitterRepository.save(emitterId, new SseEmitter(DEFAULT_TIMEOUT));
33+
log.info("emitterId : {} 사용자 emitter 연결 ", emitterId);
34+
35+
emitter.onCompletion(() -> {
36+
log.info("onCompletion callback");
37+
emitterRepository.deleteById(emitterId);
38+
});
39+
emitter.onTimeout(() -> {
40+
log.info("onTimeout callback");
41+
emitterRepository.deleteById(emitterId);
42+
});
43+
44+
sendToClient(emitter, emitterId, "connected!"); // 503 에러방지 더미 데이터
45+
46+
log.info("!lastEventId.isEmpty() : {}",!lastEventId.isEmpty());
47+
if (!lastEventId.isEmpty()) {
48+
//서버-클라이언트 간에 연결이 끊겼을 때, 클라이언트가 마지막으로 수신한 이벤트 ID를 서버에 알려주어 서버가 해당 지점부터 이벤트를 다시 전송할 수 있도록
49+
Map<String, Object> events = emitterRepository.findAllEventCacheStartWithById(userPhone);
50+
events.entrySet().stream()
51+
.filter(entry -> lastEventId.compareTo(entry.getKey()) < 0)
52+
.forEach(entry -> {
53+
sendToClient(emitter, entry.getKey(), entry.getValue());
54+
});
55+
}
56+
return emitter;
4357
}
4458

4559
//Emitter는 데이터 스트림을 클라이언트로 보내는 역할을 하는 객체이다.
4660
//SSE 연결된 클라이언트에게 실시간으로 알림을 전달한다.
4761
@KafkaListener(topics = "calendar-reminder-emitter", groupId = "group_1")
4862
public void listenForEmitter(ReminderMessage reminderMessage) {
4963
try {
50-
log.info("인위적으로 폴링 간격을 늘림 -- 2초 지연");
64+
log.info("calendar-reminder-emitter, 인위적으로 폴링 간격을 늘림 -- 2초 지연");
5165
Thread.sleep(2000);
5266
} catch (InterruptedException e) {
5367
e.printStackTrace();
@@ -88,37 +102,26 @@ private void sendToClient(SseEmitter emitter, String emitterId, Object data) {
88102
}
89103
}
90104

91-
//브라우저에 대한 연결
92-
public SseEmitter addEmitter(String userPhone, String lastEventId) {
93-
log.info("addEmitter-1 userPhone : {}, lastEventId : {}", userPhone, lastEventId);
94-
String emitterId = userPhone + "_" + System.currentTimeMillis();
95-
SseEmitter emitter = emitterRepository.save(emitterId, new SseEmitter(DEFAULT_TIMEOUT));
96-
log.info("emitterId : {} 사용자 emitter 연결 ", emitterId);
97105

98-
emitter.onCompletion(() -> {
99-
log.info("onCompletion callback");
100-
emitterRepository.deleteById(emitterId);
101-
});
102-
emitter.onTimeout(() -> {
103-
log.info("onTimeout callback");
104-
emitterRepository.deleteById(emitterId);
105-
});
106-
107-
sendToClient(emitter, emitterId, "connected!"); // 503 에러방지 더미 데이터
108-
109-
log.info("!lastEventId.isEmpty() : {}",!lastEventId.isEmpty());
110-
if (!lastEventId.isEmpty()) {
111-
//서버-클라이언트 간에 연결이 끊겼을 때, 클라이언트가 마지막으로 수신한 이벤트 ID를 서버에 알려주어 서버가 해당 지점부터 이벤트를 다시 전송할 수 있도록
112-
Map<String, Object> events = emitterRepository.findAllEventCacheStartWithById(userPhone);
113-
events.entrySet().stream()
114-
.filter(entry -> lastEventId.compareTo(entry.getKey()) < 0)
115-
.forEach(entry -> {
116-
sendToClient(emitter, entry.getKey(), entry.getValue());
117-
});
106+
@KafkaListener(topics = "calendar-reminder-schedule", groupId = "group_1")
107+
public void listenForSchedule(ReminderMessage reminderMessage) {
108+
try {
109+
log.info("calendar-reminder-schedule, 인위적으로 폴링 간격을 늘림 -- 2초 지연");
110+
Thread.sleep(2000);
111+
} catch (InterruptedException e) {
112+
e.printStackTrace();
118113
}
119-
return emitter;
114+
115+
//스케줄로 메세지를 컨슘하려면 -> 리마인더에 넣어야함
116+
Reminder reminder = Reminder.builder()
117+
.member(Member.builder().memberRowid(reminderMessage.getMemberRowid()).build())
118+
.contents(reminderMessage.getContents())
119+
.daysAgo(reminderMessage.getDaysAgo())
120+
.build();
121+
reminderService.createReminder(reminder);
120122
}
121123

124+
122125
@Scheduled(fixedRate = 180000) // 3분마다 heartbeat 메세지 전달.
123126
public void sendHeartbeat() {
124127
Map<String, SseEmitter> sseEmitters = emitterRepository.findAllEmitters();

src/main/java/com/sjs/jsvill/service/kafka/ProdReminderService.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ public ProdReminderService(KafkaTemplate<String, ReminderMessage> kafkaTemplate)
1717
}
1818

1919
public void sendToProducer(ReminderMessage reminderMessage, boolean isSchedule) {
20-
log.info("sendToProducer-1");
21-
2220
if(isSchedule) kafkaTemplate.send("calendar-reminder-schedule", reminderMessage);
2321
else kafkaTemplate.send("calendar-reminder-emitter", reminderMessage);
2422
}

src/main/resources/templates/member/login.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</head>
1212
<body>
1313
<h1>
14-
🔑🔑🔑 로그인 🔑🔑🔑
14+
🔑 로그인 🔑
1515
</h1>
1616
<p class="loginGuide">
1717
최초 로그인 시에는 휴대폰번호 인증이 필요합니다.

test.yml

Lines changed: 0 additions & 44 deletions
This file was deleted.

0 commit comments

Comments
 (0)