1. node server.js 명령어 미실행 오류 해결 백엔드 서버 파드는 생성 후 바로 'node server.js' 명령어를 실행해야 동작하고 프론트 엔드로부터 오는 api request를 받을 수 있다. 그렇기 때문에 도커파일을 아래와 같이 구성하여 컨테이너 생성 후 곧바로 서버 파드가 작동하도록 했다. Backend Dockerfile FROM debian:buster RUN apt-get -y update && apt-get -y upgrade && apt-get -y installnodejs npm curl git RUN npm cache clean -f && npm install -g n && npm update -g && n 16.17.1 WORKDIR /home RUN git clone..
쿠버네티스 배포 프로젝트를 진행하면서 도커 이미지를 사용해 각 컨테이너를 구성했는데 이 과정에서 도커 이미지를 여러 번 초기화해 빌드하고 도커 허브에 Push 해야 했다. 이 일련의 과정들을 기록해두고자 한다. 🔗내가 진행한 쿠버네티스 배포 프로젝트 개요 [Kubernetes] 쿠버네티스와 도커를 활용하여 웹서비스 배포하기 프로젝트 1주차 : 프로젝트 개요 2023 클라우드 컴퓨팅 1팀 프로젝트 쿠버네티스를 처음 다루면서 정말 많이 헤매고 힘들었다. 아직 진행 중인 미완성 프로젝트지만 더 열심히 해보려고 블로그에 기록해보려고 한다. 프로젝트 최 yuejeong.tistory.com 1. 도커 이미지에 사용할 소스 코드 작성 컨테이너에 올릴 기존 서비스의 소스 코드를 준비한다. 직접 컨테이너에 소스 파일을..
1. Ingress External IP로 접속 시 502 Bad gateway 에러 해결 저번 2주 차 회고에서 인그레스의 external IP로 접속했을 때 프론트엔드 파드 통신조차 동작하지 않았다. (원인은 502 gateway) 원인을 풀어보자면 Ingress ➡️ 프론트엔드 서비스 ➡️ 프론트엔드 파드로 포워딩이 이뤄지지 않은 것인데 구체적으로 어떤 걸 고쳐야 하는지 전혀 알 수 없어서 정말 많이 헤맸다. 크롬의 개발자 도구를 띄워보아도 도움 될만한 힌트는 찾을 수 없었다. 이 과정에서 Kubectl이 제공하는 기능 중 '파드의 로그'를 확인할 수 있는 명령어가 있어서 프론트엔드 파드를 확인해 보았다. kubectl logs -f [파드 명] -f를 붙이면 로그가 실시간으로 출력된다. 여기서 빨..
본 포스팅은 인프런 김영한 강사님의 스프링 부트 핵심 원리 강의 섹션 7을 수강하고 배운 점을 정리했습니다. 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! 📢 www.inflearn.com 다양한 의존관계 주입 방법 1. 생성자 주입 ✅ 생성자를 통해서 의존 관계를 주입받는 방법이다. ✅ 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. ✅ 불변, 필수 의존관계에 사용 @Component public class OrderServiceImpl implements OrderService { private final Membe..
본 포스팅은 인프런 김영한 강사님의 스프링 부트 핵심 원리 강의 섹션 6을 수강하고 배운 점을 정리했습니다. 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! 📢 www.inflearn.com 컴포넌트 스캔과 의존 관계 자동 주입 이전까지 스프링 빈을 등록하던 방법: 자바 코드에 @Bean 애노테이션을 일일이 작성하거나 XML의 를 통해서 설정정보를 직접 등록했다. 수동 등록의 단점: 등록할 빈이 많을수록 설정 정보가 커지고 누락하는 문제 발생 ➡️ 설정 정보 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능 제공한다. ..
1. Database를 구성하는 StatefulSet 프론트, 백엔드, 데이터 베이스 각각의 모든 오브젝트 매니페스트 파일을 만들고 실행 한 뒤 파드 로그를 띄웠을 때 백엔드 서버 파드가 가동되자마자 죽는 CrashLoopBackOff 에러가 발생했다. 또한 인그레스와 서비스가 잘 연결됐는지 확인하는 명령어를 실행했을 때 아래와 같이 백엔드 서비스가 빈칸으로 비워져 있었다. 당연히 인그레스의 External IP로 접속하면 오류가 나왔다. 나는 위에서 언급한 이유들로 인해 현재 오류가 백엔드 파드에서 발생했다고 생각했다. 백엔드 파드에서 오류가 발생하는 여러 원인을 생각해 봤는데, 우리가 구성한 백엔드 파드는 DB 파드가 제대로 동작하지 않으면 절대 작동할 수 없다. 또한 백엔드의 디플로이먼트와 서비스 ..
Backend Pod : CrashLoopBackOff 에러 Backend 디플로이먼트를 작성하고 apply 한 뒤, 생성된 파드들을 띄워보니 모두 정상적인 'Running' status가 아닌 ' CrashLoopBackOff'로 비정상적인 가동을 하고 있었다. 이렇게 오류가 나는 파드들의 정확한 원인을 알고 싶다면, kubectl describe pod [파드 명] 명령어를 입력해서 exit code를 확인하면 된다. 문제의 파드에 대한 디테일 정보를 확인해 보니 exit code가 0이다. 이는 보통 백엔드 서버 역할을 하는 컨테이너에서 주로 일어나는 오류인데 '컨테이너가 기동되자마자 실행할 프로세스가 없어서 발생하는 오류'이다. 해결 방법은 디플로이먼트에 아래 명령어를 추가해 컨테이너가 기동 되자..
2023 클라우드 컴퓨팅 1팀 프로젝트 쿠버네티스를 처음 다루면서 정말 많이 헤매고 힘들었다. 아직 진행 중인 미완성 프로젝트지만 더 열심히 해보려고 블로그에 기록해보려고 한다. 프로젝트 최종 발표를 약 일주일 남겨두고 있는 시점, 아직 여기저기서 에러가 터지지만 그래도 여러 가지 시도를 기록해 보겠다! 꼭 완성하자 화이팅 ⚓ 배포할 서비스 설명 및 Github 🔗 배포할 기존 서비스 Source: GitHub - ash0814/sc_chatting Contribute to ash0814/sc_chatting development by creating an account on GitHub. github.com ⚓ 클러스터 구성 우리 서비스는 크게 프론트엔드, 백엔드, 데이터베이스 부분으로 나눌 수 있다...
💡 너디너리 원데이 프로덕트 챌린지 - Law For All ( SpringBoot / IOS) 스프링부트를 공부한 지도 어느덧 2개월이 되었다. 내가 지금까지 공부한 내용을 프로젝트에 적용하고 싶다는 갈망이 깊어지던 차에 Neodinary가 인하대 창업 지원단과 함께 개최하는 원데이 프로덕트 챌린지 | 실험실 창업 경진대회에 좋은 기회로 참여하게 되었다. 오랜만에 프로젝트에 참여해서 얻은 것도 많았던 유용한 시간이었기 때문에 회고록을 작성해보려고 한다. 우선 해당 경진 대회는 23일에 인하대학교에서 오전 9시부터 오후 7시까지 열리는 원데이 프로덕트 챌린지로 하나의 프로젝트를 온전히 완성하기에는 시간이 턱없이 부족하다. 그렇기에 우리 팀은 월요일과 수요일 이틀 동안 온라인 미팅을 통해 프로젝트의 틀을 ..
백준 #20310 타노스 20310번: 타노스 어느 날, 타노스는 0과 1로 이루어진 문자열 $S$를 보았다. 신기하게도, $S$가 포함하는 0의 개수와 $S$가 포함하는 1의 개수는 모두 짝수라고 한다. 갑자기 심술이 난 타노스는 $S$를 구성하는 문자 www.acmicpc.net 🔒 문제 설명 어느 날, 타노스는 0과 1로 이루어진 문자열 S를 보았다. 신기하게도, S가 포함하는 0의 개수와 S가 포함하는 1의 개수는 모두 짝수라고 한다. 갑자기 심술이 난 타노스는 S를 구성하는 문자 중 절반의 0과 절반의 1을 제거하여 새로운 문자열 S'를 만들고자 한다. S'로 가능한 문자열 중 사전순으로 가장 빠른 것을 구하시오. ⌨️ 입력 문자열 S가 주어진다. 🖥️ 출력 S'로 가능한 문자열 중 사전순으로 ..