묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
docker AWS EC2 Redis,Mysql를 통한 배포
안녕하세요 강사님 제가 강사님 강의를 즐겨듣는 수강생입니다.질문1)제가 채팅과 로그인 에 관해서 서버 배포를 하고 싶은데 채팅내용이나 이런거는 Redis를 이용해 배포하고 로그인 회원가입등은 Mysql 을 이용한다고 가정했을 때 Redis는 RDS를 이용하는 게 나을까요?-- 이 부분이 아예 감이 안 잡혀서 구조 한번만 설명좀 해 주시면 감사하겠습니다. 질문2) 만약 협업 프로젝트를 한다고 가정하면 EC2에 직접 들어가서 compose.yml을 작성하는 거 외에는 답이 없을까요? (제가 만약 채팅을 담당한다고 가정했을때 질문1)과 연관지어서 설명좀 해 주시면 감사하겠습니다. 현업에서는 어떻게 하는 건가요? 일단 CI/CD를 들어볼 예정입니다.)
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
VM 환경을 직접 구성하였을 때 강의 내용을 따라가는 것에 지장이 없을까요?
[👍좋은 질문을 했을 때 좋은 답변이 돌아 옵니다]안녕하세요 강의를 들으면서 환경 세팅을 위해 준비 중인데 궁금한 점이 있어 질문드립니다.저는 해당 강의를 통해 k8s 에 대해 알아보고 이를 통해 실험 환경을 구축하고자 수강 중에 있는 대학원생입니다..! 추후 진행활 실험은 GPU 가속이 필요해서, 영상에서 소개해주시는 VM 솔루션 처럼 Type2 하이퍼바이저가 아닌 Type 1 하이퍼바이저 VM의 사용이 필요한 상황입니다. 그래서 Windows의 Hyper-V 가상화를 통해 VM을 구축하여 강의를 진행하고자 하는데요. 궁금한 점은 다음과 같습니다. 해당 환경에서도 강의 내용을 따라가는 데 지장이 없을까요?- 특히 Vagrant의 경우, Vagrant 에 작성된 내용을 참고하여 직접 환경을 구성할 수 있다면 사용하지 않아도 무방하다고 다른 질문글에 답을 남기신 것을 보았는데요. 해당 환경에서도 말씀하신 것이 동일하게 적용될 수 있는지 여쭙고자 합니다.Linux 의 경우 Ubuntu 를 사용하는 것이 너무 손에 익어서,, 혹시 Ubuntu 리눅스를 사용하였을 때에도 강의 내용을 해수편까지 따라가는 데 지장이 없을까요? (알려주시는 명령어는 직접 우분투 배포판에 맞춰서 바꿀 생각입니다..!)
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
docker html 하고 css 같이 올리는 거 문제가 생깁니다.
안녕하세요 강사님 그 html css 를 로컬에서 돌리는데 자꾸 nginx 이 화면만 나와가지고 문제가 발생합니다.(시크릿 창 새로고침 해봤습니다.) 코드는 FROM nginx COPY ./ /usr/share/nginx/html <!DOCTYPE html> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> </head> <body> <h1>My Web Page</h1> </body> </html>index.html *{ color:blue; }style.css pdf 에 있는 대로 해도 오류가 그대로 뜹니다... ㅠㅠ 도와주세요
-
해결됨실리콘밸리 엔지니어와 함께하는 Docker
apache spark -> airflow
안녕하세요. 질문할 곳이 없어서 여기다 남깁니다!도커 수업을 듣고 데이터엔지니어 코스로 강의를 결제해서 수강할려고 하는데,제 컴퓨터가 윈도우인데 스파크와 airflow 강의를 들을때 문제가 없을까요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
EC2의 docker compose up에서는 localhost를 컨테이너 이름으로 변경하지 않아도 왜 잘 돌아가나요?
EC2로 여러 개의 container를 docker compose up으로 배포를 하는 것은, EC2라는 가상의 컴퓨터에서 springboot, mysql, redis container를 실행시키는 것이잖아요. 이전 다른 실습에서는 springboot에서 localhost는 자기 자신의 포트를 가리키기 때문에 docker에서 container의 이름인 my-db와 my-redis-server로 바꿔주어야 한다고 하셨는데, 현재 인텔리제이에서 docker로 빌드한 이미지에는 .properties 파일과 gradle 파일을 맞춰서 작성하지 않았는데, db나 redis를 못찾는다는 에러 없이 왜 잘 돌아가는지 궁금합니다.
-
해결됨쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Image Updater에서 새 Image가 감지되지 않아요
안녕하세요.질문은 아니고, 혹시나 저와 같은 현상을 겪는 분들이 계실 것 같아 글 남겨둡니다. 게시글과 계속 똑같이 진행해봐도 ImageUpdater에서 새로운 Image가 감지되지 않아 아무런 반응이 없는 현상을 겪었습니다. ChatGPT나 여러 레퍼런스들을 찾아봤을 때, Details > Annotations 에 정의한 내용과 Helm에서 정의한 내용이 일치하지 않으면 ImageUpdater에서 해당 작업을 건너뛴다는 내용이었습니다. 그래서, 결과적으로는 Release Repo의 2232/deploy/helm/api-tester경로에 있는 values-*.yaml 파일 내의 내용 중, 아래의 부분을 수정하는 것으로 정상적으로 작동하는 것을 확인했습니다.### 기존 내용 image: repository: 1pro/api-tester pullPolicy: Always tag: 1.0.0 ### 수정 후, 내용 image: repository: {username}/api-tester pullPolicy: Always tag: 1.0.0(물론, {username} 은 그대로 쓰시면 안 되고 자신의 Docker Username이 들어가야 합니다.) 제가 이전 강의에서 놓친 부분일 수도 있지만, 비슷한 현상을 겪는 분들이 꽤 계신 것 같아 조금이나마 도움이 되고자 글 남깁니다..!
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
30000 Port로 접속이 안됩니다 ㅠㅠ
포트포워딩 실습할때는 정상적으로 접속이 됐는데 service를 통한 접속은 안되네요 ㅠㅠ pod 로그를 찍어보니 요청 자체가 안간거 같아요 ㅠminikube service --url spring-service위의 명령어로 만들어지는 url로는 정상적으로 접근이 됩니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
docker compose up -d --build
안녕하세요![실습] AWS EC2에 Spring Boot 배포하기 수업을 듣다가 궁금한 점이 생겨서 질문드립니다.이전의 강의에서 docker compose -d --build여기서 --build 옵션은 코드가 수정된 것을 실시간으로 반영하기 위해서 컨테이너를 띄울 때 마다 이미지를 매번 새롭게 빌드한다는 뜻이라고 하셨는데요EC2에 스프링 부트를 배포할 때는로컬에서 이미 빌드된 이미지를 ECR 에 push 하고, EC2에서는 그 이미지를 pull 땡겨서 사용하는데컨테이너를 띄울 때 꼭 --build 옵션을 적어줘야 하는건가요?수업하시면서 --build 옵션을 강조하셔서 그 부분이 헷갈려서 여쭤봅니당 또 비슷하게 한가지 궁금한건 compose.yml 파일에build: . 이 아닌 image: <이미지명>이 있을 땐 --build 옵션을 쓰지 않아도 되는걸까요?
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
안녕하세요. 실습 환경 질문드립니다.
안녕하세요~ 강사님. 강의 잘 듣고 있습니다.섹션 7, 8은 꼭 AWS를 이용해야만 실습이 가능한 섹션일까요? (아직 안들어봐서 모르겠는데 AWS가 아닌 다른 개인 클라우드 서버를 갖고 있다면 대체가 가능할지 여쭙고 싶어요.)
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
컨테이너가 생성과 동시에 꺼집니다.
안녕하세요. docker 공부를 하고있는데 redis를 강사님과 똑같이 docker run -d -p 6379:6379 redis 라고 생성했더니 생성은 되나 자동으로 꺼지네요.CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES be795dd1b69f redis "docker-entrypoint.s…" 4 seconds ago Exited (1) 4 seconds ago my-redis ce1e514748c0 redis "docker-entrypoint.s…" 3 minutes ago Exited (1) 3 minutes ago gallant_davinci M1칩 맥북을 사용하고있는데 아키텍처 불일치 문제일 수도 있다고 하여 구글링해서 아래와 같이 입력도 해보았으나 계속 자동으로 꺼집니다..ㅠㅠdocker run --platform linux/arm64 --name test-redis -d -p 6379:6379 redis 전에 Docker Desktop을 깔아두어서 사용중인데 이것때문에 문제가 발생할수도있나요? nginx 이미지를 통해 컨테이너를 생성하면 안꺼지는데 redis, mysql, mariadb같은 데이터베이스 이미지만 사용하면 꺼지네요.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
jenkins pipeline step 3 실습 진행 중 VM 다운 및 에러 발생에 관한 질문 드립니다.
[👍좋은 질문을 했을 때 좋은 답변이 돌아 옵니다] 안녕하세요 일프로님!혼자서 해결해보려다가 하루종일 해봤는데 계속 같은 문제가 반복 되어서 질문드립니다. 현재까지 트러블 슈팅 해본 경험으로는 VM의 시스템 단의 문제 인걸로 파악이 됩니다.계속해서 일어나는 현상이 VM이 CPU 사용률이 높아서 K8s kube-system 내의 오브젝트들이 죽는 것이 반복 되는데죽었다 살았다가 지속 되다가 VM도 멈춰버립니다.이 환경을 최적화 하고 리소스 낭비가 있는 곳이 있다면 줄여서 정상적으로 실습을 하고 싶습니다. 참고로 제 노트북은 14코어에 렘 16Gb 입니다. CPU는 CICD 서버와 master node가 있는 서버가 돌아가도 50% 미만으로 여유가 있습니다. 렘 사용률은 90% ~ 95% 정도를 유지합니다. 1. 실습 중 본인의 환경이 가이드와 다른 부분이 있었다면 말씀해주세요. Jenkins step3 blue-green 배포 진행 하다가 VM이 커널이 뻗어 버려서 리소스들이 부족한가 생각이 들어서 VM 종료 후 VitualBox 설정에서 VCPU 프로세서를 6 -> 12로 고쳐 다시 기동했습니다.Deployment들이 startupProbe 밑 설정들이 파드 로그들을 봤을 때 java 앱 기동도 전에 재시작이 되어 10초마다 60번 까지 체크 하는 걸로 고쳤습니다. 2. 해당 문제의 발생 빈도(재설치 여부)와 문제 해결을 위해 시도해본 케이스를 말씀해 주시면 원인 파악에 큰 도움이 됩니다. 지속적으로 VM에 문제가 발생합니다. [root@k8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE app-1-2-2-1-78cbbff668-7vkls 0/1 Unknown 1 2d app-1-2-2-1-78cbbff668-jvzxq 0/1 Error 5 2d [root@k8s-master ~]# Message from syslogd@k8s-master at Jun 12 15:42:16 ... kernel:watchdog: BUG: soft lockup - CPU#2 stuck for 21s! [portmap:50410] 커널이 멈춰버리는 치명적인 버그가 있어서 검색해보니 사용 중인 리눅스 배포판(Rocky Linux 등)의 커널 버전에 알려진 버그일 수 있다고 들었습니다.그래서 sudo dnf update -y위 명령어로 커널 업데이트 했습니다. 업데이트 후에도 계속에서 top으로 조회 해도 cpu 사용률이 100% 를 넘어 가는 경우가 많아서 그럴 때 마다여러번 VM을 재시작했습니다. 재시작 후kubelet 과 containerd 도 재시작 하고 정상작동할 때 까지 기다리고 실습을 다시 진행했습니다.혹시나 전에 배포 했던 오브 젝트들이 차지 하고 있는 리소스 때문에 그런가 해서anotherclass-2** 으로 시작하는 네임 스페이스들을 anotherclass-221 제외하고 모두 삭제했습니다. 3. 에러 메시지만 봐서는 저도 모르는 경우가 많아요. 그전에 했던 작업이 포함된 캡쳐 화면도 부탁 드려요. 반복해서 kubeapi-server가 죽습니다. 제 기동 되면 다시 kubectl 명령어가 됬다가 일정 시간이 지나고 다시 재시작 됩니다.그 동안 VM 이 느리지 않았는데 오늘 실습을 하고나서 kubectl 명령실행 시 꽤나 시간 약 (5초~30초) 후에 실행이 되거나 60초가 지나서 명령이 실행되지 않습니다.AI 한테 kube-apiserver 에러로그를 보여주고 답변 받은 내용도 보냅니다 3번 overflow는 2번 이 발생 해서 일어나는 현상이라고 생각이 되어서 3번 오류에 대한 AI 의 답변은 캡쳐 하지 않았습니다.4. 영상 내용에 대한 질문 시 해당 시간을 같이 올려 주시면 답변을 드리는 시간이 더 빨라집니다.5. 긴 로그는 제 메일로 보내주세요. (k8s.1pro@gmail.com)6. 카페 [강의 자료실]에도 많은 질문과 답변들이 있어요!
-
해결됨쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Project URL와 Repository URL의 차이가 궁금합니다.
안녕하세요.젠킨스 파이프라인 기본 구성 및 배포 세분화 강의를 보던 중 궁금한 점이 생겨 질문을 남기게 되었습니다. 강의 영상의 8분 25초쯤을 보시면, Github project에 Project url을 지정하는 곳이 보입니다.그리고, 9분쯤에 Repository URL이라는 부분도 보입니다. 이 두 속성의 차이점이 궁금합니다. 제 개인적인 생각으로는 Project URL의 경우 해당 Repo가 Private일 경우 Jenkins에서 접근할 방법이 없기 때문에 단순히 명세의 개념이라고 생각했습니다.반대로, 실제로 Project 소스를 가져오기 위해 참조되는 것은 Credentials 속성을 가지고 있는 Repository URL일 것이구요. 혹시나, 제가 잘못 알고 있는 부분이 있다면 알려주시면 감사하겠습니다 !!
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
강사님 한번에 질문을 하게 되면 좋은데 그렇지 못해 죄송합니다.
인그레스서비스를 blue/green 배포하는 것은 잘 이해했습니다. 그럼 만약 ArgoCD를 여기에 사용 가능한지도 궁금합니다. 일반적인 blue/green 배포에서는 ArgoCD가 레이블을 자동으로 조정하는 것으로 알고 있는데 인그레스에서는 어떻게 동작하는지 설명 부탁드릴 수 있는지요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
현업에서 startupProbe 사용에 대한 질문입니다.
안녕하세요, 강의 내용과는 큰 관련 없는 질문이지만 지식 공유자님의 경험이 듣고 싶어서 질문 드립니다.저희 회사에는 EKS가 구축되어 있고, 기존에 사용하던 템플릿이 있어서 확인해 보았는데,startupProbe 없이 livenessProbe, readinessProbe만 최초 5초 정도 지난 후 동작하도록 세팅이 되어 있더라구요.저는 JVM 개발자이지만, 아직까지 다른 올라가있는 모든 App들이 파이썬 기반이라서 가능한 것으로 추측이 되었습니다.따라서 파이썬 기반이어서 최초 기동 시간이 필요가 없는 경우 등등 실제로 이런 식으로 startupProbe 없이 사용해도 무방한지가 궁금했고, 사용하는 경우가 자주 있다면 어떤 경우에 주로 사용되는지도 궁금합니다.감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
강사님 질문 드립니다.
만약 ingress 서비스를 실제 업무에 사용하게 되면 blue/green 배포시에 어떻게 동작하는지 궁금합니다. 아울러 ingress 서비스가 사용되는 경우에 대한 설명 부탁드립니다. 감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
강사님 인그레스와 관련하여 질문 드립니다.
좋은 강의 정말 감사합니다. 다른 책이나 강의에서 들을 수 없었던 내용을 알게 되는 재미로 매일 듣고 있습니다.강사님 인그레스 관련하여 궁금한게 있어 질문 드립니다.인그레스와 nginx 사이의 관게를 클래스로 매칭 시킨다는 것은 어렴풋이 이해가 가는데 nginx 가 매칭된 인그레스의 패스정보 등은 어떻게 가져오는지 그 메카니즘이 궁금해서 문의 드립니다.감사합니다
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
argo image updater 이미지명 규칙 수정 문의
88. ArgoCD Image Updater를 이용한 이미지 자동배포 (💻 실습)강의 실습 도중 발생한 문제와 해결 방법에 대해서 공유 드립니다. ArgoCD를 통해서 2232 Application을 배포할 때values-dev.yaml 파일을 사용하여 helm chart 앱을 생성했습니다. 강사님께서 제공해주신 git 코드(fork한 코드 repo, 하기 코드 블록)를 통해서 application 생성 했을 때,자연스럽게 1pro/api-tester:1.0.0 이미지를 가지고 와서 pod를 생성했습니다. 2232/deploy/helm/api-tester/values-dev.yamlimage: repository: 1pro/api-tester pullPolicy: Always tag: 1.0.0이후 Image-updater를 사용하여 image의 변경사항을 감지하려고 했으나 image-updater 파드에서는 감지되지 않았고, 당연히 argo cd에서도 sync 되지 않았습니다. 해당 문제를 찾아보니 regex 식의 규칙과 기존 이미지의 이미지명 형태가 동일해야 image updater가 인지를 하는 것 같아 하기 argo application과 연결된 git 디렉토리의 코드(2232/deploy/helm/api-tester/values-dev.yaml)를 같게 변경했더니 image-updater가 정상동작하면서 auto sync도 제대로 실행되었습니다. image: repository: alchdliodd/api-tester pullPolicy: Always tag: 1.1.1-250604.171111 강의 영상에서는 이렇게 맞추지 않아도 정상적으로 동작하는 것 같았는데,이 현상이 argo image updater의 버그인지, 아니면 원래 해당 규칙을 맞추어야 하는 것인지 문의 드립니다.
-
해결됨쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
PV/PVC (local, hostPath) 강의에 대한 질문입니다.
안녕하세요 !강의 5분에 hostPath, local 사용 목적에 관한 질문이 있어 글을 남기게 되었습니다.사용 목적 2번에서 노드의 디스크 공간이 한정적이라 디스크 공간이 부족해져서 노드가 죽어버리면 그 노드 위에 다른 Pod들도 함께 죽는다고 말씀해주셨습니다. 여기서 생긴 의문은 hostPath로 node의 Volume을 사용하든 PVC/PV를 이용하여 Volume을 사용하든 특정 Pod에서 사용량이 많으면 어떤 경우든 죽어버릴 것 같다는 것입니다.아니면, hostPath는 용량을 설정하지 않는데 비해, PVC/PV에서는 용량을 설정해주는 옵션이 있어 해당하는 Pod만 죽고 다른 Pod에는 영향이 없는 걸까요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Jenkins 파일 - 파라미터 사용법 차이
안녕하세요섹션 18 - 82번 강의 : 배포 파이프라인 구축 후 마주하게 되는 고민들(실습)수강 중 Jenkins 파일에 대한 질문이 있어 문의 드립니다. Jenkins 파일을 작성할 때, parameter로 PROFILE(배포환경선택)과 DOCKERHUB_USERNAME(도커허브유저명)을 설정하셨는데 하기 코드를 보시면 parameters { // 배포 환경 선택 choice(choices: ['dev', 'qa', 'prod'], name: 'PROFILE', description: '배포 환경 선택') // DockerHub 사용자명 입력 string(name: 'DOCKERHUB_USERNAME', defaultValue: '', description: 'DockerHub 사용자명을 입력하세요.') // GitHub 사용자명 입력 string(name: 'GITHUB_USERNAME', defaultValue: '', description: 'GitHub 사용자명을 입력하세요.') } stage('헬름 배포') { steps { // helm 명령 사용 - [1] 중요 데이터 암호화 관리 withCredentials([file(credentialsId: 'k8s_master_config', variable: 'KUBECONFIG')]) { sh "helm upgrade api-tester-${CLASS_NUM} ./${CLASS_NUM}/deploy/helm/api-tester -f ./${CLASS_NUM}/deploy/helm/api-tester/values-${params.PROFILE}.yaml" + " -n anotherclass-222-${params.PROFILE} --install --kubeconfig " + '${KUBECONFIG}' + // [5] Helm 부가기능 " --wait --timeout=10m" + // 최대 10분으로 설정 // [2] 잦은 배포 - versioning 무의미, 계획된 배포 - versioning 필수 " --set image.tag=${TAG}" + " --set image.repository=${DOCKERHUB_USERNAME}/api-tester" } } } PROFILE은 앞에 "params"가 붙어있고 (${params.PROFILE}),DOCKERHUB_USERNAME은 환경변수처럼 그냥 ${DOCKERHUB_USERNAME}로 사용하신 것을 볼 수 있습니다. 혹시 choice문을 사용하여 사용자가 선택하는 prarmeter의 경우 params를 붙인다던가 하는 규칙이 있는 걸까요? 위 두 개 사용 방법이 다른 것에 원인이 있는지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
jar 파일 생성과 컨테이너 생성 순서
이번 강의에서 NestJS는 컨테이너를 생성하면서 npm install + npm run build로 컨테이너 내에서 애플리케이션을 빌드하는 것을 배웠습니다.하지만 왜 Spring Boot는 컨테이너를 생성하기 전에 먼저 빌드를 하고 이 jar 파일을 컨테이너로 복사하는 것인가요?Spring Boot도 NestJS처럼 컨테이너 내에서 빌드하면 docker compose up -d --build 전에 ./gradlew clean build도 생략할 수 있으니 더 편리하지 않을까 싶어 혹시 이유가 있는지 질문 드립니다. 감사합니다.