묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
loadbalancer 문의 드립니다.
로컬 우분투 환경에서는 외부 IP 가 PENDING 상태에서 변하지 않습니다.꼭 실습환경은 구글크라우드 환경에서 해야 하는지, 아니면로컬환경에서는 LoadBalancer를 사용하지 못하는건지,못하면 다른 방법은 없는 건지 궁금합니다.참고로 우분투에서 로드밸랜서를 만들지는 못하나요?
-
해결됨개발자를 위한 쉬운 도커
하나의 가상서버에 테스트 서버와 운영 서버를 관리하는 방법
보통 운영 서버와 테스트 서버를 관리할 때, 실무에서는 어떤 방식으로 관리하는지 궁금합니다! 저도 팀 프로젝트를 하면서 테스트 서버와 운영 서버를 분리시켜서 CI/CD를 구축하고 싶은데 어떤 방법이 맞는건지 잘 모르겠어서요! 두 개의 EC2를 사용하는건 너무 부담되는데 그럼 하나의 EC2에서 컨테이너 2개(테스트용, 배포용)를 각각 운영하는 방법이 맞는걸까요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
도커 컨테이너 run 명령어 실행할 때 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 개발환경은 Windows10 입니다. 도커 데스크탑을 사용하고 있는데요, docker run --privileged -itd --name ansible-server -p 20022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/ansible:latest /usr/sbin/init강의노트에 적어주신 명령어를 보면 -v 옵션이 있습니다. 그런데 제 환경은 윈도우인데도 -v /sys/fs/cgroup:/sys/fs/cgroup 콜론을 기준으로 왼쪽이 호스트에 마운트될 경로로 알고 있는데 윈도우 경로로 바꾸면 에러가 나서 ssh 연결을 할 수가 없습니다. -v 옵션을 제거하고 해도 에러가 나구요. 반드시 저렇게 입력을 해야만 서버가 제대로 구동이 되는데 윈도우 환경인데도 되는 이유는 무엇이고 저렇게 경로를 작성하면 윈도우에서는 어디에 볼륨이 마운트 되는건가요? 강의에서는 -v 옵션에 대해서는 설명을 안하고 넘어가셔서 질문드립니다.
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
NodePord local 환경에서 안됨
안녕하세요우분투 22.04에서 cilium환경 설정이 안되어서 우분투 20.04로 다시 설치해서 사용하고 있습니다.저는 로컬환경에서 우분투 20.04 라이브서버 4대마스터 1대 워커 3대 노드포트 서비스 실습을 하면 방화벽 30001를 마스터에서 허용해도 curl ~~ 하면 curl: (7) Failed to connect to 175.207.200.124 port 30001: Connection refused로컬환경에서는 nodePort로 어떻게 하면 사용이 가능할까요?참고로 공유기 포트는 다 열어져 있습니다.➜ yaml kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIMEstarcoex-first Ready control-plane 6d18h v1.28.2 192.168.10.4 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-four Ready <none> 6d18h v1.28.2 192.168.10.102 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-second Ready <none> 6d18h v1.28.2 192.168.10.100 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-three Ready <none> 6d17h v1.28.2 192.168.10.101 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28 ➜ yaml kubectl get svc -o wideNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTORhttp-go-svc NodePort 10.110.165.249 <none> 80:30001/TCP 15m app=http-gokubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h <none> 공유기 외부 ip175.207.200.124, 112.184.55.51, 112.184.55.52, 112.184.55.57
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
혹시 수업 자료가 제공되나요?
지금 강의 수강중인데 express 소스 코드는 확인했는데 그 외 수업자료는 제공이 안될까요? 공부한 내용을 화면 캡쳐해서 정리하고 있거든요.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
Entity에 toJSON 코드 입력 후 404 에러
Entity.ts에 추가한 toJSON() { return instanceToPlain(this); }이 코드가 들어가면 404에러가 뜹니다. 저 코드를 빼면 돌아가긴 합니다만 이미지(아바타)가 안보이고요.. 그리고 이런 에러가 나서 구글링 한 후 config를 이렇게 바꿨는데, 이게 문제인가.. 싶기도 하고요.. 너무 궁금한데 제발 꼭 좀 아시는 분 답변 부탁드려요
-
미해결쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
TestEntityApi중 createTestEntity에서 질문있습니다
testService.create(request.getName(), request.getAge());를testService.create(request.name, request.age)로 바꿔도 작동하는데 혹시 차이점이 있나요?
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
kubectl apply 와 create 차이점
안녕하세요.강의들 듣다 보면 지금까지는 pod를 생성할때 kubectl create ~~ 했는데지금은 kubectl apply ~~ 차이점이 있을까요?
-
미해결실습으로 배우는 선착순 이벤트 시스템
DB Lock 대신 Redis를 이용하는 이유
DB Lock을 이용하면 시간이 오래 걸린다는 성능 저하 문제가 발생하기 때문에 Redis를 써야 한다고 이해하였습니다. 하지만 강의 영상에서는 Redis가 싱글스레드를 이용한다고 하셨는데 그럼 똑같이 DB Lock과 마찬가지로 시간이 오래걸리는 것이 아닌가요..?
-
해결됨개발자를 위한 쉬운 도커
github actions 의 steps 중 platforms 제거
안녕하세요. GitHub Actions 관련 실습 중이었는데, 아래와 같은 에러가 발생했습니다. ERROR: failed to solve: node:14: no match for platform in manifest: not found154Error: buildx failed with: ERROR: failed to solve: node:14: no match for platform in manifest: not found 일단은 platforms 를 제거해서 해결했는데요.platforms 관련하여 검색해 알아보니 특정 OS 에 최적화하는 옵셔널한 값으로 넣으면 좋고 안넣어도 괜찮은 그냥 그런 것으로 소개되고 있더라고요 제 질문은 아래와 같은데요. platforms 를 지워서 GitHub Actions 가 성공했는데, 이렇게 실습해도 되나요?실무에서는 보통 platforms 를 작성하는게 관행인가요?
-
해결됨실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
도커를 설명한기 위한 이미지에 관한 질문입니다
안녕하세요. 도커에 최근 관심을 가지고 거의 처음 접하는 수강생입니다. 방금 도커에 대한 오해와 정정 강의를 들었는데 강사님께서 들의셨던 강의의 강사님께서는 왜 os시스템이 없다고 하신 걸 까요? 그 강사님이 잘모르시는 부분이신걸까요? 그리고 왜 도커 홈페이지에서도 유저 스페이스를 빼고 이미지를 첨부/설명 하고 있을까요? 그냥 저희가 없다고 생각해야 이해하기 쉬워서 그런 것일까요? 아님 다른 이유가 있는건가요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
ECS 의 Task 업데이트 속도 문제
[섹션 10 - Self-healing! - 죽은 서버(테스크) 자동으로 살려내는 AWS ECS service 알아보기] 강의에서Task 의 RollingUpdate 하는 모습과 health check 에 의한 Task 소멸 및 생성 모습을 보여주셨는데요.ECS 의 Task 소멸 및 생성 속도가 너무 느려서 놀랐습니다.집에서 Kubernetes 로 실습해본 경험에 의하면, K8S 에서는 3초면 되는 것이, ECS Fargate 에서는 3분이 걸리는 것 같은데요.원래 ECS 의 Fargate launch type 이 아주 느린 것인가요?ECS 의 EC2 launch type 이었다면 Fargate 보다는 조금 빠른지요? 로컬에서 돌리는 Kubernetes 만큼 몇초만에 수행을 완료할 정도로 빠르게 하는 방법은 없는지요?ECS 너무 느려서 이걸 써야 되나라는 실망스런 마음이 큰데요.반응 속도가 빠른 auto scailing 을 구현하려면, 직접 K8S 쓰는 것이 더 현실적인 방법인 것인지 고민이 됩니다.
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
ECS - Service 의 Load Balancer 요금
안녕하세요, 강사님,섹션 9 : Container Orchestration - [AWS ECS - Service 사용해서 여러개의 Task 생성하고 Load balancer 연결해주기] 강의에서ECS Cluster 에 Service 를 만들 때, Service 에 적용하는 Load Balancer 도 내부적으로는 EC2 를 이용한 것인가요? Service 에 만든 Load Balancer 에도 별도의 Load Balancer 비용이 부과되나요?LightSail 에서 적용했던 Load Balancer 와 동일하게 비용이 드는지 궁금합니다. 만약, 비용이 부과된다면, ECS 에서 여러 Task 에 auto scailing 을 적용할 경우, Load Balancer 의 갯수가 많아질텐데, 그 갯수만큼 비용이 부과되는지도 궁금합니다.
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
CKA 랩 환경 vagrant up 시 에러 상황 문의
안녕하세요 강사님.강사님의 git에서 k8s-multicontext 다운로드 후,CKA 랩환경 vagrant up 시, 1. bk8s-m: Box 'sysnet4admin/Ubuntu-k8s' could not be found.-> 'sysnet4admin/Ubuntu-k8s' 찾을 수 없다고 나오는데 정상적인게 맞나요?bk8s-m ssh 접속 시도 중 private key 오류가 나는 것으로 보이는데 해당 키에 접근을 못하는지 알 수 있을까요?답변 부탁드립니다. 감사합니다.
-
해결됨개발자를 위한 쉬운 도커
컨테이너 .exe 실행파일 사용 문의
안녕하세요,수업을 듣고 있는 수강생입니다. 컨테이너 학습 하면서, 의문점이 생겨 질의드립니다. HostPC에서 exe를 cp하여 컨테이너로 넣은 후, 해당 exe 파일을 컨테이너에서 실행시킬 수 있나요? 찾아보니 이미지는 마이크로소프트에서 받아오면 되더라구요. 환경은 HostPC는 window이고, 컨테이너도 window로 세팅하고 싶습니다. 만약 exe를 실행시킬 수 있다면 복수의 컨테이너를 실행시키고 싶은데 이를 docker compose로 구성하는게 효율적일까요?이론만으론 가능 할 것 같아 실습해보던 중 cp부터 에러가 발생해 가능성 여부를 알고싶습니다. 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
14-04 Redis에서 cacheModule을 위한 @nestjs/common버전 업데이트
다른분이 질문주셨던 'app.module.ts에서 redis연결하는데 @nestjs/common에 CacheModule이 없습니다' 에 대한 답변대로 "@nestjs/common": "^9.0.0" 버전으로 업데이트해서 node_modules도 yarn install 해서 설치했습니다. yarn.lock 확인했는데 버전이 바뀌지 않아 "@nestjs/common": "9.0.0" 로 바꿔서 다시 yarn install 했구요.그런데 @nestjs/common 버전을 9.0으로 바꾸면 계속 mybackend-1(백엔드컴퓨터)에서 오류가 생깁니다. 기존버전 10.0.0이었을 때는 오류가 발생하지 않았었습니다. 실은 강의를 들으며 코드를 따라 치다 마지막에 docker-compose build후 up 했을 때 어디서 오류가 발생하는지 모르겠어서 처음부터 yarn add로 redis랑 cache-manager라이브러리 설치하는 것 부터 docker-compose build,up 하면서 확인을 해봤었는데 @nestjs/common 버전을 9.0으로 바꿨을 때 위 사진처럼 오류가 발생했습니다. package.json파일도 올려보내드립니다.@nestjs/common 버전을 바꿔야 될까요? 아님 다른 오류 원인이 있을까요..?
-
해결됨개발자를 위한 쉬운 도커
도커 볼륨 경로 지정
각 서비스들 마다 볼륨을 지정하는 경로가 정해져 있나요?강의에서는 postgresql을 사용했고 /var/lib/postgresql/data 를 볼륨위치로 지정한것은 해당 위치가 table 내용을 저장하는 위치라서 그런건가요? 그럼 mysql 이나 redis등 다른 db의 경우는 각각 경로가 지정되어있는건지 궁금합니다. 그리고 어느 경로로 지정할지는 어떻게 알 수 있나요?
-
해결됨개발자를 위한 쉬운 도커
멀티 스테이지 빌드 COPY 명령어 질문
멀티 스테이지 빌드 강의에서 사용된 Dockerfile.multistage에 관한 질문입니다!두 번째 스테이지(openjdk:11-jre-slim)에서 사용된COPY --from=build /app/target/*.jar ./app.jar에서 해당 명령어를COPY --from=build /app/target/*.jar ./라고 작성하면 안되는건가요? COPY 명령어는 로컬 컴퓨터에 있는 파일을 도커 컨테이너 내부 파일 시스템에 복사하는 명령어로 알고 있고, 명령어에 입력되는 값은 복사에 필요한 디렉토리를 설정하는 것으로 알고 있습니다. 1) 도커 컨테이너의 루트 디렉토리에 app.jar 파일을 복사하는 용도라면 위와 같이 작성해도 되는게 아닌지 궁금합니다!2) 또한 COPY 명령어의 처음 값으로 나오는 /app/target/*.jar에서 *.jar가 .jar로 끝나는 모든 파일을 지칭하는 것인지 궁금합니다! Maven으로 빌드시 생성되는 결과물이 여러개여서 그런건가요?
-
미해결대세는 쿠버네티스 [초급~중급]
cronjob 학습 수행 중 문의사항이 있습니다.
안녕하세요. CronJob 학습 중 몇 가지 애로 사항이 있어 확인 요청 드립니다. CronJob 생성하여 대시보드에서 cron-job 클릭 시 아래 오류 메시지와 함께 404 오류가 발생. 'the server could not find the requested resource' CronJob 학습 과정 중 Manual로 생성된 Job/Pod 는 CronJob을 삭제해도 삭제가 안된다고 하셨는데, 대시보드에서 Trigger로 생성된 job/pod는 삭제가 안되지만 master node 에서 아래 명령어로 생성한 job/pod 는 삭제됨 kubectl create job --from=cronjob/cron-job cron-job-manual-001 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
객체 createBoardInput을 왜 한번 더 { } 객체로 감싸서 보내는지 궁금합니다.
boards.resolver.ts 파일에서 createBoard 함수에서 boardsService클래스에 인자를 전달할때createBoardInput 객체를 보내는데낱개로 된 writer,title,contents 도 아닌데왜 굳이 한번 더 {createBoardInput} 객체로 감싸서 보내는지 이해가 잘 되지 않습니다. @Mutation(() => String) createBoard( @Args('createBoardInput') createBoardInput: CreateBoardInput, ): string { return this.boardsService.create({ createBoardInput }); //**차이점?? return this.boardsService.create(createBoardInput); } boards.service.ts 파일에서는create({ createBoardInput }: IBoardsServiceCreate): string { //**차이점?? create(createBoardInput: CreateBoardInput): string { //1.브라우저에서 보내준 데이터 확인하기 console.log(createBoardInput.writer); console.log(createBoardInput.title); console.log(createBoardInput.contents); //2. DB에 접속 후, 데이터를 저장 => 데이터 저장했다고 가정. //3. DB에 저장된 결과를 브라우저에 응답(response) 주기. return '게시물 등록에 성공하였습니다.'; }굳이 IBoardsServiceCreate의 인터페이스를 안만들어도이미 CreateBoardInput 이라는 Class를 타입으로 적용해서 받으면 되는데createBoardInput을 왜 한번 더 { } 객체에 감싸서 보내는지 궁금합니다.