묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
키페어 생성 시기
EC2를 생성 완료 한 후에 해당 EC2에 키페어를 만들어서 적용하는게 가능한가요? 아니면 EC2 생성할때 키페어를 추가하는것만 가능한건가요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
ECS는 사용 안 하나요?
ECS는 사용 안 하나요? ECS도 많이 쓰이는 거 같던데..
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
백엔드 프론트엔드 배포 흐름이 이해가 안갑니다.
글을 작성하고 조금 더 공부해봤는데 저는 프론트(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%B0https://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이라는 요청을 보낸다고 했을 때 아무런 작업을 안해줘도 알아서 서로 통신을 하는지... 인프라 개념이 아직 미숙하다 보니 글도 장황한 것 같습니다 죄송합니다.. 😢정리해보면서도 스스로 구조를 잡고자 하는 중인데, 혹시 제가 놓치고 있는 개념이 있다면 알려주시면 정말 감사하겠습니다!
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
깃액션은 성공하지만 계속 서버가 Killed 됩니다.
name: Deploy TO EC2 on: push: branches: - main jobs: Deploy: runs-on: ubuntu-latest # SSH로 접속하는 명령어를 쳐주자. # 일일이 다 쳐도 되지만 불편하기때문에 github actions의 라이브러리를 사용하면 편하다 # uses는 내가 어떤 라이브러리를 쓸 건지 기재하는 곳이다. steps: # SSH는 다른 원격 컴퓨터로 접속하는 프로토콜이다. # Github Actions도 하나의 컴퓨터고, EC2도 하나의 컴퓨터이므로 SSH를 통해서 원격 접속을 진행해주자. - name: SSH(원격 접속)로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} # IP 주소를 말함 username: ${{ secrets.EC2_USERNAME }} # EC2를 연결할 때 사용자 이름 key: ${{ secrets.EC2_PRIVATE_KEY }} # EC2에 접근할 때 사용하는 키 페어 script_stop: true # run이 아닌 script로 실행하는 라이브러리도 있으니 예제파일을 참고하자 # EC2에 접속해서 실행한 명령어들을 차례대로 작성해주자 # 1. 프로젝트의 해당 경로로 이동 # 2. github에서 프로젝트 pull # 3. gradlew 재 빌드 # 4. 포트번호 8080서버를 끄거나 서버가 이미 꺼져있어도 true # 5. SNAPSHOT.jar로 끝나는 파일을 실행. 로그는 output이라는 파일에 남김 script: | cd /home/ubuntu/personal-cicd-server git pull origin main ./gradlew clean build sudo fuser -k -n tcp 8080 || true sudo java -jar /personal-cicd-server/build/libs/*SNAPSHOT.jar > ./output.log 2>&1 & 메모리 부족 문젠가 싶어서 https://velog.io/@kwontae1313/AWS-EC2-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%9A%A9%EB%9F%89-%EC%A6%9D%EC%84%A4위 링크를 보며 메모리 용량 증설도 해주었으나, 이후에도 안되어서 t3.small로 인스턴스 유형을 변경하였습니다.근데 계속 Killed이 뜨네요..ㅠㅠ 다시 서버를 실행시키면 코드가 변경은 되어있구요.. 왜 계속 프로세스가 죽는걸까요..??
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
리액트 배포하기..
안녕하세요!! 혹시 리액트로 배포하는 방법도 알려주시면 안될까요 ? ㅜ
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
팀프로젝트시
안녕하세요! 취준생입니다!교육받는 곳에서 취업을 목표로 팀프로젝트(4명)를 진행하려고 하는데, 방법4까지만 해도 괜찮을지 5까지 하면 포트폴리오로써 더 좋을지 궁금합니다..
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Dockerfile VS githubActions
안녕하세요, 강의 잘 듣고 있습니다 ! Dockerfile과 githubActions의 yml 파일의 경계를 잘 모르겠습니다.Dockerfile을 통해 jar를 만들어서 실행할 수도 있고,강의처럼 yml 파일에서 jar파일을 만들 수도 있는데,현업에서는 이 두 방식 중 어떤 걸 사용하는지 또, 어떤 이점 때문에 사용하는지 궁금합니다...! 추가로, mysql이나 redis 같은 경우는 따로 Dockerfile을 작성하지 않고compose.yml 에서 바로 이미지 생성을 하고 있는데이렇게 되는 경우, EC2에서 이미지가 만들어지니 각각의 Dockerfile을 만들어서 gitActions 단계에서 처리하는 게 좋을까요...?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
push로 자동으로 ec2로 빌드되고 갈아끼워지는건 이해했는데
현업에서는 그러면 누가 PUSH를 해서 CI/CD로 적용을 시키나요? 아무나 다 깃 푸쉬로 cicd를 적용하면 깃헙에 merge나 충돌이 날거같은데 그러면 막상 깃헙에 올라온 코드랑 ec2 올라가있는 코드가 다를거같은데 이 부분이 잘 안그려지네요... 질문이 두서가 없어서 죄송합니다 ㅠㅠ 어떤식으로 현업에선 흘러가는지 궁금합니다,.
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
AWS 비용
19일 이후에 vpc Net 삭제 그리고 codedeploy 등 삭제 했는데 계속 비용이 발생하고 있습니다. 혹시 어디를 확인 해야 비용이 발생하는 곳 알 수 있을까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
no basic auth credentials
ECR 생성도 되었고 권한 추가 했고 codeDeploy 성공 했는데 도커 로그인 안된 것 같습니다. 이럴때 어떤 것을 살펴보면 될ㄱ까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
CodeDeploy Amazon Ec2 인스턴스
ec2 러닝 중이고 탄력적 IP 까지 할당 받았는데, 키 , 값 선택이 안 뜰수가 있나요? 만약 안뜨면 그냥 직접 입력 하면 될까요??
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Error: Process completed with exit code 126.
Run ./gradlew clean build2./gradlew clean build3 shell: /usr/bin/bash -e {0}4 env:5 JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.7-6/x646 JAVA_HOME_21_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.7-6/x647/home/runner/work/_temp/24e2a6f8-136d-471b-b2ea-6203042af791.sh: line 1: ./gradlew: Permission deniedError: Process completed with exit code 126.찾아보니깐 실행 권한이 없어서 ./gradlew 스크립트를 실행하지 못했다는 뜻이라고 하는데즉, Gradle Wrapper 파일에 실행 권한이 없어서 생긴 문제가 맞을까요? - name: gradlew 실행 권한 부여 run: chmod +x ./gradlew이렇게 붙여줬더니 되긴 하더라고요. 맞는 방법이 몰라서 여쭤봅니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
EC2 와 CodeDeploy 연결 에러
The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.CodeDeploy Agent는 EC2에서 active 상태이고, S3에 업로드도 잘 되었으며, IAM 역할도 다음과 같이 설정했습니다:- EC2 인스턴스 역할: code-deploy-ec2-role (정책: code-deploy-ec2-policy세부 S3)- CodeDeploy 서비스 역할: AWSCodeDeployRole 포함하지만 배포 시 아래와 같은 에러가 납니다:> The overall deployment failed because too many individual instances failed deployment, or too few healthy instances...추가로 EC2 내에서 /var/log/aws/codedeploy-agent/ 로그 폴더가 존재하지 않습니다. appspec.yml 및 start.sh도 정상 포함했고, S3에 .tar.gz도 업로드 확인했습니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
cicd 전과정 잘 들었습니다
안녕하세요! 강의 잘 들었습니다. 저는 여기에 추가로 rds로 db 연결, 그리고 Dockerfile 세팅작업에서 나아가 compose.yml로 nginx,redis 등 세팅 해주려 하는데 그것도 이 기본 세팅 위에서 작업하면 되는건가요..? 감사합니다. 그리고 단일 프로젝트에서는 codedeploy까지는 안해도 괜찮은 건지 궁금하고 추후 무중단 배포로 갈때는 blue/green 이런 전략을 찾아보고 채택하면 되는지 질문드립니다!
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Pull requests에 대해
안녕하세요 강의 잘 봤습니다.제가 토이프로젝트에서 작업했을 때는 깃허브에 직접 들어가 Pull requests 메뉴에 들어가서 버튼누르니까 자동으로 merge하고 테스트, 실행까지 다하던데 pull requests 역할이 무슨 뜻이고, 이것도 설정을 어떻게 하는건지 궁금합니다.그리고 강의에서는 merge까지는 안 알려주시던데 deploy.yml에서 코드 작성하면 되는건가요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
aws CodeCommit에 대해
안녕하세요 강의 잘 보고 있습니다.예전 회사에서 깃허브 대신 Aws의 CodeCommit을 이용하여 코드 보관했는데 이때 git action이 사용가능한지 궁금합니다.만약에 안되면 다른 방식으로 어떻게 CI/CD 를 구현하는지 궁금합니다. 하는 방법 링크좀 부탁드립니다그리고 다른 회사들도 git hub 말고 svn 등 다른것도 쓸텐데 이때는 젠킨스를 쓸 수밖에 없는건지 궁금하네요
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
시크릿 값 확인
안녕하세요 강의 잘 보고 있습니다.settings에서 비밀값 설정시 다시 확인하고 싶을때는 어떻게 확인하나요? 공식 문서에서 찾아봐도 못찾겠네요
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
> ./output.log 2>&1 & ```
위의 명령어를 버그 잡으려고 썼다고 하셨는데 현재는 저거 안 써도 괜찮은지 확인해보고 싶습니다
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
Deploy 트리거 관련 질문드립니다.
강의를 들으면서 프로젝트로 실습해보다가 궁금한 점이 생겨 질문드립니다!강의에서는 main 브랜치에 push가 일어나는 것이 트리거가 되는 경우를 설명해주셨습니다.만약에 main 브랜치 하위에 기능별로 브랜치를 나누어서feature/login, feature/post 식으로 브랜치가 존재하며프론트엔드 React 코드, 백엔드 Spring 코드의 별도 구분 없이 각각의 브랜치에 같이 존재한다면백엔드 코드만 ec2에 deploy 되도록 설정하는 방법이 있을까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Docker scripts 질문
안녕하세요.CICD강의 잘보고있습니다.[실습] 컨테이너 기반 + 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법 까지 잘 진행해서 배포까지 완료했습니다.scripts > start-server.sh 에서 질문이 있는데요docker pull {ECR Repository 주소}/instagram-server:latest여기서 에러가 나서 정상적인 docker image를 pull받지 못합니다. 제가 작성한 코드입니다.docker pull {EC2소유자}.dkr.ecr.ap-northeast-2.amazonaws.com/github-actions:latest발생 에러 코드입니다.[stderr]Error response from daemon: Head "https://{EC2소유자}.dkr.ecr.ap-northeast-2.amazonaws.com/v2/github-actions/manifests/latest": no basic auth credentials 감사합니다.