안녕하세요 CI/CD 강의를 재미있게 수강중 입니다 수강 중 수정 사항을 요청드리기 위해 여기에 남깁니다 노션 : https://jscode.notion.site/CI-CD-c028a6824f824524bcb35b8c384c9771 appspec.yml 파일 작성 중 오타가 있습니다 이로 인해 정상적인 배포가 되지 않습니다 확인 해주시기 바랍니다
안녕하세요 우선 좋은 강의 만들어주셔서 감사드립니다. MSA 파트에서 질문 하나 있습니다. ApiGateway 서비스 depl_svc.yml Aplly 하기 - kubectl apply -f ./depl_svc.yml ingress 배포 - kubectl apply -f ./ingress.yml https.yml Aplly 하기 - kubectl apply -f ./https.yml Member 서비스 depl_svc.yml Aplly 하기 - kubectl apply -f ./depl_svc.yml deploy_ordermsa_with_k8s.yml 통해서 github push 하기 AWS ECR Repository 에 정상적으로 이미지 등록되는지 체크 API Gateway 배포 완료 member service 배포 실패 - Readiness probe failed: Get " http://172.31.47.22:8080/health ": dial tcp 172.31.47.22:8080: connect: connection refused 일단 서비스가 정상적으로 배포되었는지 자기 자신 서버로 호출 해서 체크 하는 것 같습니다. 이런데 "연결 거절" 이라는 에러가 발생되네요. 무엇이 잘못되는지 확인이 어려워서 이렇게 질문 드립니다. 다시 처음부터 했는데도 문제가 있어서 분명 제가 설정 잘못 한거 같은데... 혹시 예상되는 부분이 있을까요?
학습 도중 발견한 내용이 있어 공유합니다. appleboy/ssh-action 라이브러리에서 stop_script 설정에 대한 내용입니다. 결론부터 말하면, appleboy/ssh-action 최신 버전(작성일 기준 1.2.2)을 사용하는 경우 stop_script: true 대신 script 첫 줄에 set -e 를 사용해야 합니다. script: | set -e cd /home/ubuntu/github-actions git pull origin main 문제 상황 강의를 따라하던 중, 테스트에서 RuntimeException 을 던져 실패하는 부분에서 다음과 같이 빌드는 실패하는데 github actions가 성공하고 코드도 업데이트 되는 경우가 발생했습니다. deploy.yml 과 github actions 결과는 다음과 같습니다. name: hello application on: push: branches: - main jobs: Deploy: runs-on: ubuntu-latest steps: - name: ssh to EC2 uses: appleboy/ssh-action@v1.2.2 with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} script_stop: true script: | cd /home/ubuntu/github-actions git pull origin main ./gradlew clean build sudo fuser -k -n tcp 8080 || true nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log 2>&1 & > Task :test GithubActionsApplicationTests > contextLoads() FAILED java.lang.RuntimeException at GithubActionsApplicationTests.java:11 1 test completed, 1 failed FAILURE: Build failed with an exception. > Task :test FAILED * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///home/***/github-actions/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. BUILD FAILED in 8s 8 actionable tasks: 8 executed 8080/tcp: 4782 =============================================== ✅ Successfully executed commands to all hosts. =============================================== 문제 원인 이 차이점은 appleboy/ssh-action 버전을 최신 버전(1.2.2)으로 사용한 차이에서 발생한 것이었습니다. appleboy/ssh-action 링크에 가서 script_stop 으로 검색해보니 다음과 같은 부분이 있습니다. 1.0.3v 를 보니 해당 옵션이 있는 걸로 보아 script_stop 옵션은 제거된 것으로 보입니다. 그래서 적힌대로 set -e 를 script 첫 줄에 추가했습니다. script: | set -e cd /home/ubuntu/github-actions git pull origin main 이후 다시 푸시해보니 정상적으로 실패하는 것을 확인할 수 있습니다. 1 test completed, 1 failed FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///home/***/github-actions/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. GithubActionsApplicationTests > contextLoads() FAILED java.lang.RuntimeException at GithubActionsApplicationTests.java:11 BUILD FAILED in 8s 8 actionable tasks: 8 executed 2025/07/12 14:16:36 Process exited with status 1 Error: Process completed with exit code 1.
안녕하세요 강사님 ACM 에서 인증은 받았고 사진 1 바로아래입니다. CloudFront에 도메인 이름을 넣었습니다.(밑에 사진2) 사진 3 Route53 에 CloudFront로 배포를 했는데도 aws s3 를 통한 정적웹사이트 배포는 정말 잘 되는데 뭐가 문제인지 모르겠습니다. 이렇게 연결이 되지 않습니다. 뭐가 문제인지 잘 모르겠습니다.
안녕하세요 강사님의 AWS 강의도 들었습니다. 만약 도메인을 적용하고 배포하는 경우 CNAME을 통한 배포방식이 맞는지 블로그도 열심히 찾아보고 했는데 안되가지고 질문 드립니다. cloudfront가 기존에 pdf랑 달라서 chatgpt한테 물어보면서 배포를 해 보아도 https + domain이 동시에 적용이 되지 않아 질문 드립니다. 단순 정적 웹사이트(S3 ) 만을 이용한 것은 정말 잘 되지만 cloudfront에 htpps+ domain 을이용한 배포가 되지 않아 질문 드립니다.
공유해주신 API Gateway 아키텍처를 보면 Order 서비스가 Product 서비스에게 해당 상품 수량 어느정도인지 요청시 Order 서비스는 유레카에게 Product 서비스 위치를 질의 한다. 유레카에 등록된 Product 서비스 위치 정보를 Order 서비스에게 응답한다. Order 서비스는 Product 서비스에게 실질적으로 상품 수량 GET 요청 한다. 제가 알고 있는 일반적으로 (MAS X) 모놀리식 구조에서 Feign Client 를 사용시 유레카를 사용 하지 않는 상황에서 특정 서버에게 요청시 곧바로 해당 서버에게 요청을 했었는데요. (3 Way Handshake 생략) 그런데 @FeignClient(name = "product-service", url="http://product-service") public interface ProductFeign { } 이렇게 FeignClient 어노테이션에서 name 을 특정 서버 어플리케이션 이름으로 지정하게 된다면 알아서 유레카에게 질의하고 응답 받아서 Product 서비스에게 요청해서 총 HTTP 요청이 2번 일어 난다고 보면 되는건가요? 일단 비지니스 로직단에서는 HTTP 요청이 2번 일어난다(유레카 서버에게 호출 하고 그 다음 실질적은 요청하고자 하는 서버에게 다시 요청) 라고 로직상에서는 안보여서요. 이부분은 내부 로직(Feign client 라이브러리 내부 로직?? 이라고 해야 할까요?..)에서 처리된거라서 눈에 안보이는 부분인지 알고 싶습니다.
리소스 로드 중 오류 발생 Amazon EKS is unable to communicate with your Kubernetes cluster API server. The cluster must be in an ACTIVE state for successful connection. Please try again in few minutes. 안녕하세요 선생님 고생 많으십니다 ^^ 질문 하나 하도록 하겠습니다! 이렇게 에러가 나오는데요! 분명 활성 상태인데 왜 이런 에러가 발생되는걸까요? IAM 도 분명 잘 설정 했는데도요 ㅠㅠ
안녕하세요 강사님! Redis로 시작해 채팅 서비스를 거쳐 지금의 강의까지 도달한 학생입니다 :) 항상 유익한 강의를 제공해주셔서 정말 감사합니다. 이번 강의를 진행하기에 앞서 이전에 진행한 채팅 프로젝트를 적용해 배포해보려고 하는데요 혹시 강의를 진행하는데 있어 문제되는 부분이 생기지 않을까 싶어 미리 질문을 드렸습니다! 강의를 진행하는데 있어 프로젝트가 다르더라도 큰 문제가 없을까요?
안녕하세요 선생님! 우선 좋은 강의 만들어주셔서 감사드립니다 :) E0622 -------- ---- memcache.go:265] couldn't get current server API group list: the server has asked for the client to provide credentials error: You must be logged in to the server (the server has asked for the client to provide credentials) kubectl get nodes 이렇게 명령어를 실행하니 위에 같은 에러가 발생 됩니다. 그래서 AWS 에서 정상적으로 노드그룹이 생성 되었는지 확인 해보니깐 이렇게 에러가 발생 되었습니다. 구글링 통해 확인 해보니깐 VPN 관련 이슈가 있을 수 있다고 해서 VPN -> NAT 게이트웨이 페이지로 가보니 아무것도 생성이 되지 않는 것 같은데 혹시 NAT 게이트웨이 생성 해야지 해결 될 수 있는 부분일까요?
글을 작성하고 조금 더 공부해봤는데 저는 프론트(3000번 포트)와 백엔드(8080번 포트)간의 통신으로 웹이 배포되고 운영되는걸로 알았는데, 3000번 포트와 8080번 포트간의 통신을 하는 게 아니라고 하는 것 같아서 댓글에 다시 정리해보았습니다. 글의 내용처럼 서버가 배포되는것이 아닌, 댓글에 남긴 흐름으로 배포가 되는 게 맞는건지 궁금합니다.🥹 안녕하세요. 최근 재성 강사님의 AWS, Docker, CI/CD 강의를 수강하며, Spring Boot 프로젝트를 Docker 이미지로 패키징하고 무중단 배포하는 과정까지 직접 구축해보았습니다. Spring 서버를 EC2에 자동으로 배포하고 무중단으로 교체하는 구조는 충분히 이해하고 구현도 해보았지만, 이번 프로젝트에서 프론트엔드까지 함께 연동하려다 보니 새로운 고민이 생겼습니다. 프론트 지식이 전무한 상태에서, 프론트엔드 팀원이 React로 만든 프론트 화면까지 백엔드와 함께 배포해달라는 요청을 주셨는데, 여기서부터 개념적으로 막히기 시작했습니다. React에서 api/login 같은 요청을 보내면 Spring 서버가 응답하고, 이 데이터를 바탕으로 React가 화면을 렌더링한다는 구조를 이해하고, AWS강의를 들으며 S3, CloudFront로 프론트를 배포하는 과정도 실습하였는데 Spring과 React를 동시에 배포하려니까 흐름이 잘 이해가 가지않습니다..ㅠㅠ https://velog.io/@jwo0o0/AWS-S3%EB%A1%9C-React-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0 https://velog.io/@jwo0o0/AWS-S3-%EB%B2%84%ED%82%B7-Github-Action%EC%9C%BC%EB%A1%9C-CICD 강사님이 AWS 강의에 react 배포하는 방법으로 올려주신 블로그 포스팅을 참고해서 이해하려고 하는데 제가 이해한 흐름이 맞는 지 확인해주실 수 있나요? 현재 프로젝트에서 백엔드와 프론트를 분리해서 각각 repository에 올리고있는데요! Spring에서 workflow에 Github에 올라와있는 React 프로젝트를 S3에 업로드하고 CloudFront로 배포하도록 자동화 이후 workflow에 백엔드 Spring 프로젝트를 Docker 이미지로 패키징하여 ECR에 이미지를 Push. workflow에 SSH로 EC2에 접속하는 코드를 작성. EC2에서 ECR에 올린 이미지를 Pull받은 뒤 해당 이미지로 docker run 하여 spring server를 띄움. 이렇게 흐름을 이해하고 github Actions workflow를 작성해도 괜찮을까요? react는 3000포트를 사용하고, Spring은 8080포트를 사용하는걸로 아는데, 포트번호가 달라도 알아서 잘 통신이 되나요..?? 또 Spring workflow에서 프론트 Git 레포지토리까지 왔다갔다 하면서 S3 업로드 자동화를 해주는게 맞나요...?? 제가 프론트 지식이 아예없어서 S3에 프론트 프로젝트를 업로드하면 어떻게 백엔드와 어떻게 통신을 하는건지 잘 이해가 가지않습니다. 홈화면의 페이지가 있다면, 로그인이라는 버튼을 눌렀을 때 백엔드에 api/login이라는 요청을 보낸다고 했을 때 아무런 작업을 안해줘도 알아서 서로 통신을 하는지... 인프라 개념이 아직 미숙하다 보니 글도 장황한 것 같습니다 죄송합니다.. 😢 정리해보면서도 스스로 구조를 잡고자 하는 중인데, 혹시 제가 놓치고 있는 개념이 있다면 알려주시면 정말 감사하겠습니다!