묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
소스파일이 안가져와지네요?
jenkinsfile을 보면코드가 주신대로 아래와 같고요여기에서 [소스파일 체크아웃] 부분이 지나면 jenkins디렉토리 workspace 밑으로 해당 소스파일이 가져와서 폴더가 생성되어야 하는게 아닌지..궁금합니다. 폴더가 일단 생성이 안되구요...맨밑에 이미지 추가한것처럼 helm쪽 파일만 릴리즈파일 체크아웃통해 받아진것 같아요.또한가지는 [소스빌드] 스텝인데 echo로만 그냥 찍는거지 실제 빌드하는거 아니죠?체크아웃자체도 안받아져서 빌드도 안될것 같구요.마지막으로 [컨테이너빌드] cp부분도 echo로 찍는부분이지 실제 copy명령어를 실행하는것도 아니고..그런데 docker build 명령어는 실제로 하는데...위에서 빌드도 문자열만 찍는거고 ...소스도 안받아졌는데 어떻게 docker build는 또 실제로 할수잇는지도 궁금합니다. stage('소스파일 체크아웃') { steps { // 소스코드를 가져올 Github 주소 git branch: 'main', url: 'https://inf.run/M45Zm' } } stage('소스 빌드') { steps { // 755권한 필요 (윈도우에서 Git으로 소스 업로드시 권한은 644) echo "chmod +x ./gradlew" echo "gradle clean build" } } stage('릴리즈파일 체크아웃') { steps { checkout scmGit(branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: "/${CLASS_NUM}"]]]], userRemoteConfigs: [[url: "${GITHUB_URL}"]]) } } stage('컨테이너 빌드') { steps { // jar 파일 복사 echo "cp ./build/libs/app-0.0.1-SNAPSHOT.jar ./${CLASS_NUM}/build/docker/app-0.0.1-SNAPSHOT.jar" // 도커 빌드 echo "docker build -t ${DOCKERHUB_USERNAME}/api-tester:v1.0.0 ./${CLASS_NUM}/build/docker" } }
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
여러개의 was를 compose를 활용하여 실행할때
여러개의 was를 compose를 활용하여 실행 할 때1개의 was만 update 해야하는 상황이 라면docker compose up --build -d 를 사용해도 괜찮은건가요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
short 옵션 안되네요?
[jenkins@cicd-server api-tester]$ kubectl version --shorterror: unknown flag: --shortSee 'kubectl version --help' for usage.short옵션이 안먹힙니다. ㅠㅠ
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
helm압축푼후 권한
curl -O https://inf.run/NjQJ4tar -zxvf helm-v3.13.2-linux-amd64.tar.gzmv linux-amd64/helm /usr/bin/helm 압축푼후 파일 소유권한으보면-rwxr-xr-x. 1 1001 docker 51220480 Nov 8 2023 helm네요..이걸 /usr/bin으로 옮겨놔도..권한땜에 안되는데요..root root 여야하나요?jenkins jenkins여야하나요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
구버전 명령어
최신 도커 버전부터(2~3년전?)는명령어가 달라진걸로 아는데구/신 버전 명령어를 혼합해서 사용해도 괜찮을까요?조금 헷갈리는 부분도 있네요
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
nginx를 모든 컨테이너에 설치를 해줘야하나요??
아직 강의를 다 듣진않았지만...nginx에서 각 컨테이너로 프록시를 해주려면어떻게 해야하나요?혹시 강의내에 내용이 있을까요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
maxSurge 와 maxUnavailable 과 관련한 질문입니다.
현재의 서비스 되고 있는 POD 의 갯수와 지정된 %를 곱했을 때 이것이 정수로 나누어 떨어지지 않을 경우 maxUnavailable 은 소수내림을 하고 maxSurge 는 소수올림을 하는 것으로 이해했는데이제 맞는 건지요? 좋은 강의 감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
secret type_docker-registry
"이름 때문에 기대가 너무 컸던 Secret" 강의 내용에 대한 질문 입니다. secret type 중 docker-registry 를 소개해주셨는데 공식 문서에서 해당 타입을 사용하는 예로 써 kubectl 명령어를 이용한 생성에 대한 언급만 있습니다. docker-registry 유형은 yaml 로 생성하여 사용 가능한것인지가 궁금합니다 ..! cafe:https://inf.run/X6Tbp
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
docker hub에서 이미지못가져와요 ㅠㅠ
강의대로 그대로 하고 마지막까지 왔는데2121-deploy 하니까 파드 ImagePullBackOff 상태가 되네요...혹시 dockerhub사이트에서 accessToken 발생하고 secret생성하고 sa등록해주는 그런 절차같은게 필요하나요?
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
실무 개발 환경
안녕하세요. 재밌고 좋은 강의를 해주셔서 감사합니다. 아직 70%정도 보고 있지만 궁금하게 있습니다.현재 백엔드 개발자로 근무하고 있는데 저희 환경은 aws의 ec2에 직접 올려백엔드 서버(spring-boot)를 운영하고 있습니다. 점차 쿠버네티스 환경으로 변경하려고인프라담당자들과 백엔드 개발자들이 스터디 및 환경 구축하고 있는데요. 만약 실무에서쿠버네티스 환경으로 바뀐다면 개발자들의 로컬 개발 환경은 어떻게 하시는지 궁금합니다.대부분 자바, 스프링 환경이면 인텔리제이등으로 개발 후 테스트를 해볼텐데 컨테이너에서 다른 개발자들과 다 같은 환경에서 테스트를 해보고 빌드해보고 해야 하지 않는가 싶어서요. 실무에선어떤식으로 개발자들이 개발하는지 개발, 테스트 , 운영 배포 까지 플로우가 어떻게 되는지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
교육자료 혹시 공유가 가능하실까요
안녕하세요. 교육 잘 받았습니다. 제가 받았던 교육자료 문서로 받아 볼 수 있을까요? 아니면 온라인으로 찾아볼 수 있는지 확인 부탁드립니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
AWS 배포 시 docker-compose.yml 관리 방법 질문입니다.
현재 강의에서는 aws 인스턴스 에서 직접 compose.yml을 작성하는데 제가 현재 spring boot 프로젝트 루트 경로에 compose.yml을 구현해뒀어도 프로젝트 빌드시에는 yml이 포함되지 않아서 강의와 같이 인스턴스가 직접 생성해줘야하는 지 궁금합니다. 그리고 나중에 ci/cd를 하게 되면 github Actions같은 CI/CD 도구를 이용해야 yml파일이나 .env이런 파일을 직접 인스턴스에 구현하지 않아도 되는 것이 맞는 지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
sudo가 안먹혀요
3강 진행 중에 sudo lsof -i:3306 명령어를 사용했는데 ""Sudo가 이 컴퓨터에서 사용하지 않도록 설정되어 있습니다. 사용하도록 설정하려면 으로 이동하세요. Developer Settings page 설정 앱의"" 이렇게 나와서 시작을 못하고 있습니다. 그리고 다른 질문인데 현재 프로젝트를 하고 있는데 db를 mysql을 사용하고 있는 상황이라 만약 실습을 위해서 포트를 끄면 프로젝트할때 영향이 가는지도 궁금합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
maxUnavailable, maxSurge 25% 이해좀 부탁드려요
강의중 파드가 5개인데..처음에 2개가 생성되는건 maxSurge 25% 5개 파드의 25% 여서 2개인건가요?그런다음에 왜 maxUnavailable 25%에 대해서는 2개 삭제가 아닌 1개만 삭제되는지도 이해가 안되구요 같은 25%인데요...그럼 그상태에서는 4개만 서비스가 되는건가요? 아니면 추가로 생성된 2개도 서비스가 같이 되고있는건가요?그럼 총 6개가 서비스되고 있는상태에서 또 몇개가 생성되고 몇개가 죽나요?이게 일단 기동시간이 같다는 전제하에 블루그린방식과 같다는게 좀 이해가 안갑니다.새로 올라온 서버는 서비스가 안되는건가요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
configmap, secret실시간 반영
secret은 수정하고 파일 열어보면 반영되어잇던데...5초간격으로 조회하는 로직이 있다고 하셨는데 이로직은 원래 파드에 있는 기능인가요? 별도로 만드신건가요? 아니면 파일로 시크릿을 만들었을때 5초간격으로 조회하는게 기본 메카니즘인가요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Probe에 대한 이해
중요하다고 생각해서 여러번 보는데도 api입장에서는 이해가 잘 안되네요..제가 생각한 결론은 liveniessProbe는 pod재기동을 위한 api 상태체크같고 readinessProbe는 service에 pod를 연결시킬거냐 말거냐를 결정하는거 같은데...이걸 호출하는 api 를 봤을땐 liveness와 readiness의 api를 실무에서 어떻게 각각 구별해서 만들수가 있을까 싶은거에요...또한 app초기화 user초기화로 구분했던것도 실은 서버가 올라옴과 동시에 거의 강사님이 말씀하신 app초기화와 user초기화는 거의 순식간에 끝나는거 아닌지요? 막말로 톰캣서버올라오는 순간 모든 api들은 정상호출되는거 아닌지요..그리고 그렇게 user초기화를 위한 과정이 서버 기동시 그렇게 오래 올라올까 싶기도 하고..만약 실제로 그렇다면 굳이 startupProbe가 왜 필요할까 싶기도 해요...어차피 startupProbe가 성공하던 말던 중요한건 readiness에서 서비스연결할지 여부를 결정할거고 liveness에서 재기동까지 결정할텐데..굳이 startupProbe까지 넣을필요있는지.....설명은 이해가 되지만 실제로 의미가 있을까 하는 생각뿐이에요..
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
그라파나에서 볼려는데
주신 app 설치후부터 그라파다 대시보드에서 메트릭정보 보는게 너무 늦고 그러다보니 fetch에러납니다. cpu, memory 노드 상태를 보면최대 70~80%까지는 가도..ㅇ그이상은 안가는데 너무 버벅대고...그라파나 매트릭정보를 볼수가 없는데요....?app 설치 후부터 그라파나가 맛이가네요 ㅠㅠ컨테이너도 떨어지구요 ㅠㅠ 0/1 로 바뀌고 나서는 컨테이너는 안올라오네요상태를 볼수잇는게 있을가요? 노드 리소스사용량은 full은아닌데
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
대시보드 loki 연결
그라파나 접속은 성공했습니다.대시보드에서 데이타소스 생성시http://loki-stack.loki-stack:3100하면 에러가납니다.그런데 어떻게 저 dns로 찾을수있게 되는지 궁금합니다.그라파나 파드안의 resolv.conf도 dns정보가 없어요grafana-6d965864db-w6d76:/usr/share/grafana$ cat /etc/resolv.confsearch monitoring.svc.cluster.local svc.cluster.local cluster.localnameserver 10.96.0.10options ndots:5logger=tsdb.loki endpoint=checkHealth pluginId=loki dsName=loki dsUID=cegalnku8hgxsd uname=admin fromAlert=false t=2025-03-19T09:00:57.17355809Z level=error msg="Error received from Loki" error="Get \"http://loki-stack.loki-stack:3100/loki/api/v1/query?direction=backward&query=vector%281%29%2Bvector%281%29&time=4000000000\": dial tcp: lookup loki-stack.loki-stack on 10.96.0.10:53: no such host" status=error duration=305.216958ms stage=databaseRequest start=1970-01-01T00:00:01Z end=1970-01-01T00:00:04Z step=1s query=vector(1)+vector(1) queryType=instant direction=backward maxLines=0 supportingQueryType=none lokiHost=loki-stack.loki-stack:3100 lokiPath=/loki/api/v1/querylogger=tsdb.loki endpoint=checkHealth t=2025-03-19T09:00:57.17573486Z level=error msg="Loki health check failed" error="error from loki: Get \"http://loki-stack.loki-stack:3100/loki/api/v1/query?direction=backward&query=vector%281%29%2Bvector%281%29&time=4000000000\": dial tcp: lookup loki-stack.loki-stack on 10.96.0.10:53: no such host" 게다가 loki-stack service 의 ip를 이용해서http://10.~:3100으로 하면 다음 에러가 보이구요왜 syntax error가 나오는지...404 not found라서 그럴까요? 혹시 loki git yaml에서 특별히 수정하신부분이 있을까요? on=12.351705ms queriesLength=1 stage=prepareRequest runInParallel=falselogger=tsdb.loki endpoint=checkHealth pluginId=loki dsName=loki dsUID=cegalnku8hgxsd uname=admin fromAlert=false t=2025-03-19T09:10:30.171955345Z level=error msg="Error received from Loki" duration=169.402576ms stage=databaseRequest statusCode=400 contentLength=65 start=1970-01-01T00:00:01Z end=1970-01-01T00:00:04Z step=1s query=vector(1)+vector(1) queryType=instant direction=backward maxLines=0 supportingQueryType=none lokiHost=10.110.135.91:3100 lokiPath=/loki/api/v1/query status=error error="parse error at line 1, col 1: syntax error: unexpected IDENTIFIER" statusSource=downstreamlogger=tsdb.loki endpoint=checkHealth t=2025-03-19T09:10:30.172189572Z level=error msg="Loki health check failed" error="error from loki: parse error at line 1, col 1: syntax error: unexpected IDENTIFIER"마지막으로 그라파나 서버 들어가서 curl날린결과입니다.
-
해결됨개발자를 위한 쉬운 도커
강의 이미지 사용
안녕하세요. 강의 잘 듣고 있습니다. 다름이 아니라 저는 공부할때 공부한 내용을 정리하고 벨로그에 포스팅하는데요. pdf 이미지 (에를 들어 컨테이너의 라이프 사이클) 를 캡처 해서 같이 올려도 괜찮을 까요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
그라파나 접속이 안되네요 ㅠㅠ
아무리 grafana접속해봐도 안뜨네요 ㅠㅠgrafana삭제하고 재성성해봐도 똑같아요.아래는 pod로그입니다. info 레벨만 제외하고 로그 추출해봤어요 로컬로 실행해도 아래처럼 나와요강의대로 하다보면 kubernetes-dashboard는 30000 노드포트가 열려있고,grafana는 30001 저는 30010으로 했는데 여튼, 로컬에서 telnet 으로 해보면 30000포트는 열리는데 30010 은 안열립니다. 겉에서 봤을때는 서비스가 떠있지만 제대로 외부에서 날려보면 응답이 없는상태입니다. 그런데 마스터서버 들어가서 curl날려보면 302가 나옵니다. 검색해보고 찾다찾다 안되서 다시 글남겨봅니다 ㅠㅠ