묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Argo CD Image Updater를 이용한 수업 이슈(2232) ImagePull
처음 강의부터 쭉 따라오신 분들에 한해서 제가 발견한 이슈사항 공유하고 싶어서 글을 남겼습니다. 저의 경우는 Repository를 전부 제 개인껄로 옮겨서 사용중인데요. 문제는 포크를 하지않고 제가 공부하는 Repo가 따로 있어 거기에 모아 놨다는게 문제입니다. github pull할때 path가 미친듯이 짜증나더라구요.pull하는 기준이 제가 git으로 관리하는 폴더들이 싸드리 싹싹 똑같이 생성되기 때문에 접근이 엄청 힘들었는데요. 그래서 이짓을 해야 했습니다. pipeline { agent any tools { gradle 'gradle-7.6.1' jdk 'jdk-17' } parameters { // 배포 환경 선택 choice(choices: ['dev', 'qa', 'prod'], name: 'PROFILE', description: '배포 환경 선택') } environment { // 본인의 username으로 하실 분은 수정해주세요. DOCKERHUB_USERNAME = '비밀' GITHUB_URL = '입니다' APP_VERSION = '1.1.1' BUILD_DATE = sh(script: "echo `date +%y%m%d.%d%H%M`", returnStdout: true).trim() // 위에 date 포맷 오류가 있어요. %y%m%d.%H%M%S가 맞습니다) TAG = "${APP_VERSION}-" + "${BUILD_DATE}" // 소스코드 위치 SOURCE_DIR = "kubernetes/일프로/project/kubernetes-anotherclass-api-tester-main" // 배포 및 도커관련 위치 KUBE_DIR = "kubernetes/일프로/kubernetes-anotherclass-sprint2-main" // 실습 넘버링 CLASS_NUM = '2232' } stages { stage('소스파일 체크아웃') { steps { checkout scmGit(branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: "${SOURCE_DIR}"]]]], userRemoteConfigs: [[url: "${GITHUB_URL}"]]) sh "pwd" sh "ls -al" } } stage('소스 빌드') { steps { // 755권한 필요 (윈도우에서 Git으로 소스 업로드시 권한은 644) sh "pwd" sh "ls -al" sh "cd ./${SOURCE_DIR} && chmod +x ./gradlew" sh "cd ./${SOURCE_DIR} && gradle clean build" } } stage('릴리즈파일 체크아웃') { steps { checkout scmGit(branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: "${KUBE_DIR}/${CLASS_NUM}"]]]], userRemoteConfigs: [[url: "${GITHUB_URL}"]]) } } stage('컨테이너 빌드 및 업로드') { steps { // jar 파일 복사 sh "cp ./${SOURCE_DIR}/build/libs/app-0.0.1-SNAPSHOT.jar ./${KUBE_DIR}/${CLASS_NUM}/build/docker/app-0.0.1-SNAPSHOT.jar" script{ // 도커 로그인 withCredentials([usernamePassword(credentialsId: 'docker_password', passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) { sh "echo " + '${PASSWORD}' + " | docker login -u " + '${USERNAME}' + " --password-stdin" } // 도커 빌드 및 업로드 if (DOCKERHUB_USERNAME == "1pro") { TAG = "1.0.1-231220.175735" // 1pro useranme 수강생을 위한 고정 태그명 sh "docker build ./${CLASS_NUM}/build/docker -t ${DOCKERHUB_USERNAME}/api-tester:${TAG}" } else { // 도커 빌드 sh "docker build -t ${DOCKERHUB_USERNAME}/api-tester:${TAG} ./${KUBE_DIR}/${CLASS_NUM}/build/docker" // [2] 잦은 배포 - versioning 무의미, 계획된 배포 - versioning 필수 sh "docker push ${DOCKERHUB_USERNAME}/api-tester:${TAG}" } // 도커 이미지 삭제 sh "docker rmi ${DOCKERHUB_USERNAME}/api-tester:${TAG}" } } post { always { // 도커 로그아웃 sh "docker logout" } } } } } 삽질을 몇번하니 이젠 뭐 대충 어디서 문제가 발생하는지 보이더군요... 뭐 서두는 여기까지... 급하신분은 여기부터 보시면 됩니다.싱크가 제대로 안될 경우 해결방법detail에서 annotations 작성시 image path를 잘 적었는지 확인(1pro/api-tester -> ${docker username}/api-testerrepo URL 본인 것인지 확인PATH 경로 잘 작성했는지 확인(저처럼 fork를 하지않고 특정 레포에 넣으신분들...) image pull이 안되는 경우 해결방법Jenkinsfile을 뒤져서 DOCKERHUB_USERNAME 및 GITHUB_URL변경했는지 확인2232/deploy/helm/api-tester 폴더에 들어가 values.yaml과 values-xx.yaml파일들의 images가 1pro-/api-tester가 아닌 ${docker username}/api-tester인지 확인Docker Hub에 접속해 v1.0.0으로 태그가 달려있으면 삭제 후 212 List View의 container-build했던 부분의 Jenkinsfile에서 image생성시 사용한 태그가 v1.0.0인지 확인해보고 GitHub에 들어가 v를 삭제한 1.0.0으로 커밋한 후에 컨테이너 빌드를 다시 시작(이 때 CI/CD서버에 docker에 로그인이 되어 있어야합니다.) 저는 이정도로 해결이 되었습니다. 아름다운 결과...
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
서버 컴포넌트에서의 상호작용
안녕하세요 강사님. 양질의 강의 잘 듣고 있습니다. 다름이 아니라 클라이언트 컴포넌트와 서버 컴포넌트 개념 설명에서, "상호작용(Interaction)이 지속적으로 발생하는 컴포넌트는 클라이언트 컴포넌트로 작성해야 한다" 라고 이해했었습니다. 그런데 리뷰를 작성하는 기능 또한 상호작용이 지속적으로 발생하는 것이 아닌가 하는 의문이 들었습니다. 제가 이해를 잘 못 한 부분이 있는 걸까요? 아니면 서버 컴포넌트에서도 어느정도 상호작용을 처리할 수 있는건가요?
-
해결됨React, Node.js, MongoDB로 만드는 나만의 회사 웹사이트: 완벽 가이드
import Hero from './Hero' 오류 문의
강의에서 말씀하신대로 자동완성을 이용하여서 './Hero' 가 되었는데, 오류가 납니다.Already included file name ~~ Root file specified for compliation 이라고 뜨는데 왜 그런건가요?Error lens에서 해당 오류를 출력합니다.
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
ELB도 비용이 나가나요?
요약하신 글을 읽어보니 EC2 인스턴스(조건부 무료니까) 외 다른 서비스에 Public IP를 할당하면, Public IP에 대한 비용은 부과한다.가 핵심인 것 같은데요. 앞선 강의 "[실습] 3. ELB 세팅하기 - 리스너 및 라우팅 / 헬스체크"에서 ELB는 IP를 가지고 있지 않기때문에 DNS 이름이 주소가 된다라고 설명해주신게 기억이 납니다. 지금 글을 보니, ELB도 Public IP를 부여할 수 있는 것 같이 표현된 것 같은데, 어떤 개념이 맞는 걸까요?
-
해결됨비전공자도 이해할 수 있는 AWS 입문/실전
ELB의 DNS는 HTTP에서 자동으로 HTTPS로 못가나요?
강의를 듣다가 사진처럼 ELB의 DNS를 눌러서 보니사진과 같이 리디렉션? 이 안되어서 질문드립니다.강의와 같이 진행하면서밑의 사진처럼 DNS는 http로 입력해도 자동으로 HTTPS로 변경이 되는데 ELB의 DNS는 그렇게 안되는지 궁금합니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
완강~!~! 🥳
리엑트를 이어서 넥스트까지 완강~~! 🥳강의 재밌게 잘 달렸습니다좋은 강의 감사합니다 🙇♂
-
해결됨파이썬으로 나만의 블로그 자동화 프로그램 만들기
25-3-08 키워드 경쟁강도 분석코드설계
25-3-08 키워드 경쟁강도 분석코드설계 이거 소스코드는어디에잇나요?카페에도없는거같아서요
-
미해결Tailwind CSS로 만드는 멋진 웹 UI 스타일링
유틸리티 클래스 외부 링크
html안에 style에 정의된 apply 코드들은 cdn으로 링크된 tailwindcss 스크립트가 tailwindcss 스타일로 인식해 실시간으로 빌드하여 적용되지만 외부 스타일로 링크하면 일반 css로 인식해서 빌드하지 못하기 때문에 적용되지 않는다고 하네요그래서 cli로 빌드해서 적용해야 한다고 합니다
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
checkTokenForRefresh에 대해 궁금한점
안녕하세요! 항상 강의 잘 듣고 있습니다!그런데 강의를 듣다가 checkTokenForRefresh을 해주는 메서드를 만드셨는데 제가 이해한것이 맞는지 궁금해서 질문드립니다!이 메서드에서 만료가 되면 TokenExpiredException이 일어나면 토큰이 만료되서 decode 을 하시는데 위에 메서드들 처럼 createToken을 안하는 이유가 만료된 토큰의 정보 바탕으로 바로 똑같이 바로 만들어지는 건가요?
-
해결됨배달앱 클론코딩 [with React Native]
[맥 전용]환경 설정하기 1편 & [맥 전용]환경 설정하기 2편의 영상이 안나옵니다.
안녕하세요.최근에 강좌 구매를 했는데 맥 환경설정 영상이 안나와서 진행에 어려움이 있습니다. 핸드폰으로도 확인해봤는데 소리만 나오네요. 저만 그런건지 모르겠지만 확인부탁드려도 될까요
-
미해결[프리미엄] AI와 대화하며 웹 서비스 만들기
커서 ai 노트패드가 안보여요.
최근에 커서 ai 노트패드가 지원안한다라는것같은데이 부분 어떻게 해야할까요?
-
미해결[코드팩토리] [초급] 8시간만에 끝내는 코드팩토리의 Typescript 완전정복 풀코스
union 기본기 7분 53초 질문 드립니다.
안녕하세요, 코드팩토리님!덕분에 타입스크립트 잘 배우고 있습니다.7:53초에 나오는 stringOrNumberList 타입 설정이 안되어있는데, 밑에 true, false 오류 나는 건 타입 추론 때문인가요? 헷갈려서 질문 드립니다 ㅠㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
양방향 연관관계 vs Bean을 활용한 Repository 조회
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.서비스에서 조회가 필요할때 연관관계를 설정하여 객체를 통한 조회가 그냥 Bean의 Repository를 통해 조회하는것보다 실무에서 어떤 점이 좋은지 궁금합니다.어차피 지연 로딩이면 저장소 조회가 낫지 않나 싶어서요 감사합니다
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
사전 렌더링 과정에서 질문
안녕하세요! 강의 잘 보고있습니다!사전렌더링시에 해당 페이지에 대한 HTML과 JS bundle을 받고 수화 과정을 통해 상호작용을 하는 건 이해를 하였습니다! 궁금한점은 그럼 해당 페이지가 아닌 다른 페이지의 HTML과 Js파일들은 프리페칭 과정에서 받아 CSR방식으로 동작하는건가요??
-
미해결그림으로 쉽게 배우는 운영체제
PCB들이 연결리스트로 저장되는 이유가 뭔가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. === 안녕하세요 감쟈님!!PCB들이 연결리스트로 저장되는 이유가 뭔가요?분명 이점이 있을것 같아서 연결 리스트 인것 같은데 모르겠어유!!
-
미해결[리뉴얼] 맛집 지도앱 만들기 (React Native & NestJS)
질문 있습니다.
❗질문 작성시 꼭 참고해주세요에러 메세지에서 단서를 찾을 수 있는 경우가 많습니다. 에러 메세지를 읽고 한번 검색해보시는것을 추천드립니다.질문글을 작성하실때는, 현재 문제(또는 에러)와 코드나 github을 첨부해주세요.개발중인 OS, ReactNative, Node 버전 등의 개발환경을 알려주셔야합니다.에러메세지는 일부분이 아닌 전체 상황을 올려주세요. 일부만 보여주시면 답변이 어렵습니다.(일부만 자르거나 일부만 복사하지말아주세요.) 6-7까지 강의를 본 후 깃허브 소스까지 다 확인을 하였습니다.현재 즐겨찾기를 한 후 즐겨찾기 페이지에서 클릭을 하면은 두번째 이미지처럼 오류가 발생합니다.이쪽부분은 제가 뭔가를 놓친건가요? 아니면은 구현이 아직 되지않은건가요?
-
미해결[AI 실무] AI Research Engineer를 위한 논문 구현 시작하기 with PyTorch
cuda sdk 설치 중 질문이 있습니다.(쌤~~추가질문 댓글로 올려놨으니 답변 부탁드려용~~)
cuda sdk에서 6.0을 설치할려고 하는데 pytouch install에서 링크(https://pytorch.org/get-started/previous-versions/)여기서 어느부분을 복사해야할까요?윈도우입니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
수업 코드에서 Debug에선 동작하지만 Release 모드에서는 동작하지 않습니다.
올려주신 섹션 2. 멀티쓰레드 프로그래밍 Reader-Writer Lock 수업 자료를 다운 받고 실행 해보니 Debug 모드에서는 잘 동작했습니다. 하지만 Release 모드에서는 실행이 안되던데 방법이 없을까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
sleep(10)을 넣은 이유가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 중 sleep(10) 코드를 넣고, 계산 속도가 너무 빨라서 , 다른 스레드와 동시 실행을 위해 잠깐 쉬었다가 실행을 한거라는데 이게 이해가 잘 안됩니다 제 생각엔 빨리 실행되어야 여러 스레드들이 동시에 공유변수 value에 접근해서 동시 실행될때가 많을 것 같은데, 왜 잠깐 쉬었다가 실행해야 더 충돌 횟수가 많아져서 result가 낮은 값이 나오는지 모르겠습니다. sleep(10)을 하면 실행 속도가 느려져서 오히려 경쟁 상태가 완화되어야하는거 아닌가요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
업캐스팅 사용이유 이해가 잘 안 됩니다.
다형성을 위해 사용한다는데, 어차피 상속 받으면 부모의 클래스도 접근 가능하지 않나요?업캐스팅하면 자식 클래스에만 있는 메소드는 사용할 수 없는데, 오히려 사용에 더 제한되는건 아닌지 궁금합니다. 감사합니다!