[Jenkins] Built-In Node 오프라인 에러, Disk space is below threshold of 1.00GiB
·
Infra
1. 문제1) 문제 상황Jenkins의 Built-In Node가 Disk space is below threshold 경고와 함께 오프라인 상태로 바뀌었습니다.빌드는 대기상태로 바뀌었고 Jenkins 화면에는 디스크 부족 경고가 떠 있었습니다. Jenkins의 내부 모니터링 로직이 /var/jenkins_home에 충분한 공간이 없다고 판단하고 오프라인 상태로 바꿔버린것 이었습니다.Jenkins로 빌드할때 주로 Docker를 사용하기에 Docker 사용상태를 확인해보았습니다.# docker 사용상태 확인docker system df  확인 결과 Build Cache가 엄청나게 쌓여있는것을 확인하였습니다. 2) 문제 발생 원인먼저 Docker로 이미지를 빌드할때는 레이어라는게 계층적으로 쌓여서 최종 이미..
[Infra] Grafana, Loki로 Docker 컨테이너 모니터링 하기, 로그 모니터링 시스템 구축하기
·
Infra
블로그에 새로운 스킨을 적용해봤습니다.적응 안되긴하는데 조금씩 커스텀해가면서 사용해보려고합니다.1. 배경 및 목표여러가지 문제가 있었습니다.기존에는 docker logs와 grep을 활용하여 컨테이너 로그를 확인하곤 하였습니다.CLI 환경에서 로그를 확인하는것이 불편하고 원하는 내용만 필터링하기 어려웠습니다. 로그백을 활용하여 error 로그만을 저장하고 확인하였지만 의미있는 내용을 탐색하기 쉽지 않았습니다.또한 Blue, Green 방식의 무중단 배포를 적용하였고 번갈아 올라오는 두 컨테이너의 로그를 한번에 확인하고 저장하여야 하였습니다. 이러한 애로사항을 해결하기 위해 설정한 목표는 다음과 같습니다.Docker 컨테이너의 로그를 사용로그를 저장하여 관리Blue, Green 두 컨테이너의 로그를 하나로..
[Infra] Docker Certbot 인증서 발급 에러, Connection refused status: 400 에러, docker compose certbot 에러
·
Infra
요즘 회사 서비스에 blue, green 무중단 배포를 적용하고 있습니다.오늘 터진 문제는 개발 환경을 만드는 상황에서 터진 문제입니다. 문제docker compose를 이용해 Let's encrypt 인증을 받고, nginx를 띄우려는데 400에러가 발생하였습니다.docker-compose 파일에는 spring project, nginx, certbot, redis 컨테이너에 대한 내용이 있었습니다.docker-compose.yml, nginx.conf 파일을 도메인 부분을 변경하는 등 테스트 환경에 맞게 수정 후 실행했습니다.docker ps 명령어로 제대로 작동하는지 확인했지만 nginx에서 문제가 발생하는듯 했습니다. 자꾸 nginx가 재시작 하고있었습니다.nginx 로그를 확인했습니다.로그를 확..
[Infra] npm Unable to authenicate 에러, npm ERR! code401, .npmrc 에러
·
Infra
현재 관광데이터 활용 공모전에 참가중입니다.저는 인프라, 백엔드를 맡았습니다.오늘은 배포 과정에서 있었던 문제에 관해 포스팅 해보겠습니다. 문제문제는 프론트엔드 프로젝트 빌드 중 일어났습니다. 배포 실패 알림이 왔고 Jenkins를 확인해 보았습니다.  보면 npm install을 하던 도중 authenticate 관련 오류가 발생한것을 확인할 수 있었습니다. 프론트엔드의 Dockerfile은 다음과 같이 작성되어 있었습니다.FROM node:18.17.1-alpine AS builder# 컨테이너 내부 작업 디렉토리 설정WORKDIR /usr/src/app# 컨테이너 내부로 package.json 파일들 복사COPY package* .# package.json 및 package-lock.json 파일에..
[Infra] Jenkins로 Slack에 알림 보내기
·
Infra
현재 저는 관광데이터 활용 공모전에 참가하고 있습니다.맡은 직무는 Backend와 Infra 입니다.요새 정말 많은 기술들을 공부하고 테스트 해보고 있습니다. 싱글노드로 구성된 k8s, Jenkins, Nginx 등등인데프로젝트가 끝나면 꼭 다 포스팅 해보겠습니다!배경 저희 팀원들은 Slack을 활용하여 협업 및 소통을 하고 있습니다.저는 인프라 담당인 만큼 CI/CD를 구축해야 했고 해당과정에서 Jenkins를 사용했습니다.문제는 팀원들의 push가 제대로 빌드 되었는지 팀원들에게 확인시켜줘야 한다 는 것이었습니다.이에 저는 Slack에 #배포 채널을 통해 빌드가 성공적으로 완료되었는지 알림을 보내기로 하였습니다.구현방법 1. Slack에서 Jenkins CI 설치먼저 Slack에서 Jenkins CI..
[Infra] Ngrok 사용법, 외부에서 내 로컬에 접속, local에서 Jenkins Webhooks 설정, Mac
·
Infra
저번 프로젝트때 인프라를 경험해보고 재밌기도 하고 해서 요새 공부를 좀 하고 있습니다.. ㅎㅎ현재 공부중인 부분은 Jenkins를 활용한 CI/CD 입니다.제가 가지고 있는 무료 인스턴스는 사양이 안좋은 관계로 로컬에서 진행을 하고있습니다.로컬에서 Jenkins container를 docker를 이용해 띄워놓고 GitHub에 올려놓은 test 프로젝트를 CI/CD 해보는 연습을 하는중입니다.잘 마무리 되면 해당 부분도 포스팅 해보겠습니다!문제 저는 현재 localhost:8080 포트에 Jenkins를 띄워놨습니다.GitHub의 Webhooks를 활용해 Jenkins에서 CI/CD를 구현하려 했지만 저는 현재 로컬에서 테스트를 진행중이고 GitHub Webhooks 설정 시 localhost로 설정할 수..