묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
질문이 있습니다!
현재 aws ec2에서 jenkins 서버를 만들고 그안에 ansible도 같이 설치해 놓았습니다.다른 ec2에는 쿠버를 설치해놓고 젠킨스에 접속해서 kubectl apply로 yml 파일이 실행되는것은 확인하였습니다.하지만 ansible 명령어인ansible-playbook -i ./k8s/hosts /home/ec2-user/k8s-cicd-deployment-playbook.yml 과 같이 사용했을때는 안됩니다..명령어를 ec2에 접속해서 직접 입력하면 쿠버에서 pod가 생성되는것을 확인하였는데 젠킨스 페이지에 접속해서 명령어를 사용하면 Running as SYSTEM Building in workspace /var/lib/jenkins/workspace/22 [22] $ /bin/sh -xe /tmp/jenkins51145630571830578.sh + /usr/bin/ansible-playbook -i ./k8s/hosts /home/ec2-user/k8s-cicd-deployment-playbook.yml ERROR! the playbook: /home/ec2-user/k8s-cicd-deployment-playbook.yml could not be found Build step 'Execute shell' marked build as failure Finished: FAILURE이 오류가 뜹니다..젠킨스와 ansible이 하나의 ec2안에 존재하기 때문에 k8s 처럼 ssh server를 잡아줄 필요가 없지 않나요?
-
해결됨AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
프론트 백엔드간의 http 요청을 주고 받으려면
안녕하세요 선생님.저는 next.js로 만든 프론트엔드와, nestjs로 만든 백엔드를 ECS에 각각 서비스로 만들어 클러스터를 관리하고 있습니다.프론트엔드에서 fetch() 함수로 백엔드에 요청을 보내는데,이 때 백엔드 url을 결정하는데 어려움을 겪고 있습니다.처음에는, 서비스 연결 을 적용해서Request URL: http://languin-backend-container-8000-tcp.languin-cluster:8000/auth/check/email이런식으로 적용했었는데, ERR_NAME_NOT_RESOLVED 이란 에러를 만났습니다.혹시 이 문제가 fetch() 함수가 프론트엔드가 실행되고 있는 컨테이너가 아니라, 사용자 브라우저이기 때문에 Inter Service Communication이 적용이 안되는 건가요?프론트에서 백엔드로 요청을 보낼 수 있도록 하려면, 백엔드 주소를 어떻게 정해야 하나요? Route53을 사용해야 하는건가요?
-
해결됨개발자를 위한 쉬운 도커
copy-on-write 전략에 대해 질문 있습니다.
index.html 파일 혹은 nginx.conf 파일을 수정한다고 했을때 읽기 레이어에 있는 파일들을 수정하는게 아니라 읽기 레이어에 있는 파일들을 읽기/쓰기 레이어로 COPY 해오고 COPY 해온 파일들을 수정해서 사용하는 건가요?위 내용이 맞다면 굳이 읽기쪽 레이어에 있는 파일을 COPY 안하고 읽기/쓰기에 있는 파일을 바로 수정하면 안되는건지 궁금합니다.읽기/쓰기 레이어에 있는 nginx.conf 파일을 수정한다고 했을때 실무에서의 흐름이 EC2에 접속하고 docker를 설치하고 nginx 이미지를 pull 하고 nginx 컨테이너를 띄운다음 nginx 컨테이너에 접속해서 nginx.conf 파일을 수정하기 가 맞는건지 궁금합니다.
-
해결됨개발자를 위한 쉬운 도커
수업 내용 중 질문 있습니다.
2분 20초 쯤 동일한 이미지에서 실행한 컨테이너는 내부에서 모두 동일한 프로세스로 실행된다. 라고 하셨는데만약 동일한 이미지로 컨테이너 5개를 띄운다면 하나의 프로세스가 5개의 컨테이너를 감당하게 되는데 이렇게 되면 비효율적이지 않나요?
-
해결됨개발자를 위한 쉬운 도커
사진속에 이미지 별로 OS가 존재하는 부분에 대해 질문 있습니다.
안녕하세요 사진속에 이미지 별로 OS가 존재하는 부분이 궁금해서 질문글을 작성했습니다.컨테이너 가상화면 각 컨테이너에 OS가 없고 호스트 OS를 공유해서 사용하는 걸로 알고 있습니다. 그리고 컨테이너는 이미지를 바탕으로 실행되는 프로세스 개념으로 이해 했습니다.사진처럼 이미지 내부에도 결국 OS가 존재한다면 컨테이너에도 결국 OS가 존재하는게 아닌가 라는 궁금증이 생겼습니다.
-
해결됨개발자를 위한 쉬운 도커
가상머신과 프로세스에 대해 질문 있습니다.
안녕하세요기존 호스트 OS에서 프로그램을 4개 실행 시켰을때 4개의 프로세스가 생성이 되서 작업을 진행합니다 그리고호스트 OS에 하이퍼바이저를 설치하고 4개의 가상 머신을 실행시 결국에는 이 4개의 가상 머신에 대한 프로세스도 4개 할당이 되는건지 궁금합니다. 만약 할당이 된다면 맨 처음 얘기한 호스트 OS 만 있었을때의 프로세스와 가상 머신에 할당된 프로세스와 어떤 차이점이 있는지 궁금합니다.감사합니다.
-
해결됨개발자를 위한 쉬운 도커
정리
안녕하세요 선생님. 공부하면서 블로그에 정리를 하려는데, https://www.inflearn.com/course/개발자를-위한-쉬운-도커?inst=f4872931&utm_source=instructor&utm_medium=referral&utm_campaign=inflearn_트래픽_promotion-link이 출처를 남긴다면, 괜찮을까요? 다른 질문에서 가능하다고 되어 있는데, 그래도 한번더 여쭤보고 작성하는게 좋을 것 같아 연락드립니다.양질의 강의 감사드립니다!
-
해결됨개발자를 위한 쉬운 도커
로그인에 성공했는데 권한 거부와 함께 push 가 안됩니다.
로그인에 성공했는데 push 가 안됩니다. ㅠㅠ 어떻게 해야 할까요..?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
도커 이미지 생성과 푸시 명령어를 할 수 있는 이유
안녕하세요 선생님. 질문 있어 글 남깁니다.Github actions에서 도커 이미지를 생성하고, ECR에 푸시하기 위해 사용한 docker build, docker push와 같은 명령어가 어떻게 실행 될 수 있는건가요?위의 테스트 과정에서 테스트를 위해 ubuntu 서버에 node를 설치했듯이, 여기서도 이미지 생성,푸시 위해서는 ubuntu 서버에 docker를 설치해야 되지 않나요?정리하면, ubuntu 서버에서 도커 설치 없이 docker build, docker push와 같은 명령어가 실행 가능한 이유가 궁금합니다
-
해결됨개발자를 위한 쉬운 도커
이미지라는 것에 대한 궁금증
안녕하세요 강사님 ! 정말 도커에 대해서 처음 듣는데도 이해하면서 들을 수 있어 감사합니다 . 우선 궁금한 것이, 이미지라는 것이 결국 애플리케이션을 실행하는데 필요한 모든 파일과 설정을 포함하는 읽기 전용 템플릿 ? 파일 시스템이라는 것을 이해했습니다.그런데 궁금한 것이, 그렇다면 지금처럼 계속 이미지를 nginx만 넣어주고 있는데 이후에 만약 제가 따로 개발한 애플리케이션을 이미지로 넣을 수도 있는 것인가요 ? 보통 이미지에는 어떤 것이 들어가는지 궁금합니다. 말 그대로 프로그램이면 다 올라갈 수 있는 것인가요 ?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
인바운드 규칙 설정 문제
강의내용 따라서 배포까지 진행하고있습니다. 이전강의 보안그룹 설정할때 인바운드규칙 설정에서 HHTP에 기본 80포트로 하고 규칙을 저장하려고 하니 "CIDR 블록, 보안 그룹 ID 또는 접두사 목록을 지정해야 합니다." 라는 문구와함께 값을 인바운드 ip주소? 나 접두사를 입력해야하더라구요. 0.0.0.0/0 은 허용이 되지 않아 접두사목록에 있는 것 하나 그냥 선택해서 넘어갔습니다.배포 후 서버 접속 하려고하니 HTTP 인바운드규칙에 걸려서 그런지 접속이 되지 않아 일단 내IP로 설정해서 접속은 했습니다.모든 IP 주소 접속허용은 안되는건지 잘 모르겠네요...
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
aws ecs + fargate 환경에서 aws elasticache 연동 이슈
redis 생성 시, 모든 포트의 인바운드 규칙을 허용해놓았습니다.ecs service 구성 시, redis가 속해있는 sg에서 오는 요청 허용하는 인바운드 규칙 추가했습니다.task-definition 정의 시, redis port를 열어놓았습니다.서버에서 redis로 요청 시, 504 Gateway Time-out 가 발생하고 있습니다.fargate 환경에서 elastic cache 접근 시 고려해야할 부분이 있을까요?!
-
해결됨개발자를 위한 쉬운 도커
VScode 컨테이너 내부에서 개발환경 구성
안녕하세요! 데브위키님!우선 도커 강의를 잘 듣고 있고 너무 도움이 되는 강의라 강의를 만들어 주셔서 감사합니다!세션 8의 VScode 컨테이너 내부에서 개발환경 구성 강의를 듣다가 궁금한 점이 생겼는데dockerfile이.devcontainer의 dockerfile과 leafy-front 파일의 dockerfile이 두 개가 있는데강의에서처럼 VScode에 컨테이너 구성을 했을 때, leafy-front 파일의 dockerfile은 쓰이지 않는 것인지또 실제 배포를 했을 땐, leafy-front 파일의 dockerfile이 사용되고 .devcontainer의 dockerfile은 사용이 안 되는 것인지 궁금합니다.마지막으로 이 두 dockerfile은 서로에게 영향을 주진 않는지도 궁금합니다!
-
해결됨애플리케이션 배포 자동화와 CI/CD
무중단 배포시 질문
안녕하세요.질문이 있는데요, 무중단 배포 진행하는 과정에서 Nginx 설정 다음과 같이 하잖아요.upstream backend_servers {3개 서버 설정} 근데 배포할 때 1번 서버가 다운되고 재기동 되는데 10초가 걸린다하면 이 10초 사이에 클라이언트가 요청했는데 1번 서버로 가면 에러나는거 아닌가요?Nginx가 알아서 서버 헬스체크해서 에러나면 정상적인 서버로 보내는건가요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
docker volume
저 docker volume을 사용해서 app 폴더의 내용을 수정하면 , 바로 docker container안에 반영되게 하느것을 따라하고 있는데 , 저장후 반영이 안되서 , docker exec -it 를 해서 container안에 들어가 보니 , 사용자가 수정 권한이 없어서 777로 바꾸고 다시 해봐도 잘 안되네요 , cat index.ts파일해도 바뀐 파일이 container안에 반영자체가 안되는거 같습니다 도와주세
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
배포 실패
에러 메시지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 공식문서 참조less /var/log/aws/codedeploy-agent/codedeploy-agent.log / ERROR에러 메시지InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error during perform: Aws::S3::Errors::NoSuchKey - The specified key does not exist. - /opt/codedeploy-agent/vendor/gems/aws-sdk-core-3.121.1/lib/seahorse/client/plugins/raise_response_errors.rb:17:in call 혹시나 하고 CodeDeploy Agent restart 재시작EC2인스턴스 IAM 재설정yaml 마지막부분 \ 인식하게 수정다 안되네요...
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법의 스크립트 질문
- name: SSH(원격접속)로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 #env: #APPLICATION_PROPERTIES: ${{ secrets.APPLICATION_PROPERTIES }} with: #SSH로 접속할 때 필요한 값들이 있음. IP주소, ubuntu, 키페어 (EC2에 접속하기 위한 과정) host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} #envs: APPLICATION_PROPERTIES #문제가 있으면 스크립트 중단. script_stop: true script: | rm -rf /home/ubuntu/instargram-server/current mkdir /home/ubuntu/instargram-server/current mv /home/ubuntu/instargram-server/tobe/project.jar /home/ubuntu/instargram-server/current/project.jar cd /home/ubuntu/instargram-server/current sudo fuser -k -n tcp 8080 || true nohup java -jar project.jar > ./output.log 2>&1 & rm -rf /home/ubuntu/instargram-server/tobe스크립트에서 실행 순서에 대한 질문입니다.기존에 있던 서버는 current 파일의 project.jar 로 실행되고 있었을텐데 current 파일을 먼저 날리고 기존의 서버를 종료시켜 주는 부분이 이해가 되지 않습니다. 아마도 제 생각에는 current 폴더 안의 project.jar로 실행되고 있던 8080포트의 프로세스가 current 폴더를 삭제해주면 에러가 생길 것 같은데 에러가 생기지 않는 이유가 궁금합니다. 프로젝트 종료 -> 프로젝트가 담겨있던 폴더 삭제 -> 새 프로젝트 폴더 생성 순으로 가야 할 것 같은데 기존 프로젝트 폴더 삭제 -> 새 프로젝트 폴더 생성 -> 프로젝트 이동 -> 기존 프로젝트 종료 -> 새 프로젝트 실행 이런 순서로 해도 에러가 안나는 이유가 궁금합니다. 두서없이 써서 죄송합니다 ㅎㅎ;
-
미해결애플리케이션 배포 자동화와 CI/CD
젠킨스->애플리케이션 서버 접속 안됨
젠킨스서버에서 공개키를 생성하고application 서버 ~/.ssh/authorized_keys에 접속후 키를 입력을 했는데이미 키가 있어서 지우고 다시했는데도 안되고두개를 등록했는데도 안되서 문의남깁니다.ㅠㅠ
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
git action run command timeout
인스턴스 생성시 전부 프리티어로 생성을 했었는데git action run command timeout 발생했습니다혹시나 다른분들도 이런상황이라면aws ec2 메모리 용량 증설에 대해서 검색해보세요15분이 기다려도 안되던데 바로 적용이 되네요
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
Ec2 인스턴스로 요청이 안됩니다.
안녕하세요.EC2 인스턴스 및 보안 그룹 설정 후 git clone, Jar 빌드 후 run까지 되는데외부에서 IP주소:port로 요청을해도 요청이 들어오지 않아 질문드립니다.curl 을 해봐도 커넥션 타임아웃이 발생하는데따로 확인해야하는 부분이 있을까요?강의랑 다르게 한것은 AWS 에서 우분투 에서 깃 클론 후 ./gradlew 명령어가 없다고 나와서 따로 wget으로 설치 후 환경변수 설정했습니다.감사합니다.