Calico나는 왜 Calico를 사용했을까 쿠버네티스 클러스터를 구축을 하고 상태를 확인했을 때. 노드들의 상태가 NotReady상태, 즉 서로 통신도 안되고 엉망진창인 상태였다. NetworkPluginNotReay 로그를 살펴보니 네트워크 플러그인이 필요하다고 한다. 네트워크 플러그인이 뭘까? 네트워크 플러그인(CNI)네트워크 플러그인이란 쿠버네티스 클러스터에서 Pod 생성 시 Pod의 IP할당 및 IP자원에 대한 할당, 관리, 회수 노드 간 통신을 위한 라우팅 테이블 수집 및 관리. Pod에게 통신을 위한 Veth Pair 할당 등의 작업을 해주게 된다. 즉 Pod 끼리 통신을 하기 위해 필수적인 요소이다. 쿠버네티스는 설치 시 CNI를 자동으로 설치해주지 않고, 사용자가 상황에 맞게 사용하도록 ..
상황웹서버의 디스크가 다 차서 추가로 필요한 경우.EC2 인스턴스 사용 중, apt-install을 열심히 했더니 디스크의 크기가 부족한 상황AWS EBS(Elastic Block Store)AWS EBS 란?Elastic Block Store의 줄임말이다,클라우드 환경에서 인스턴스를 만드는 행위는 클라우드 서비스 제공자(CSP)로부터 자원을 할당받아 가상의 컴퓨터를 만드는 행위이다.또한 흔히 디스크, 저장장치라고 하는 부분 또한 CSP로부터 빌려서 사용하는 것이다. 즉 이 저장장치를 대여해 주는 서비스를 EBS라고 한다. 부족하면 더 대여하면 되는 것이다.기본적으로 우리는 EC2 인스턴스를 만들면서 자연스럽게 EBS 서비스 또한 사용하고 있는 것이다.클라우드 구성의 4가지 영역Control우리가 AWS..
개요 우당탕탕 환경 설정 과정EC2인스턴스의 자원 감시를 위해 모니터링 툴이 필요하다고 생각을 했다. AWS가 제공하는 CloudWatch가 있으나, 기존 로그데이터 시각화를 위한 Loki + Grafana 환경과 같이 쓰고 모니터링 서버를 따로 두기 위해 해당 기술을 선택하였다. 1. 서버의 메트릭 데이터를 뽑아야 한다. Node-Exporter를 이용. 하지만 Node-Exporter는 메트릭 데이터를 보여줄 뿐 유지를 하지 않는다.2. 데이터를 보존하지 않는 Node-Exporter의 특성을 보완하기 위해 Prometheus를 이용해 메트릭 데이터를 보존3. Prometheus에 쌓인 데이터를 시각화 하기 위해 Grafana이용환경- Ubuntu 22.04- prometheus, version 3..
VPCVPC가 뭔데!!가상 사설 클라우드(VPC)VPC는 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사한 가상 네트워크입니다. VPC를 만든 후 서브넷을 추가할 수 있습니다.-aws document- AWS에서 사용하는 나를 제외한 다른 사람들과 논리적으로 구분되고 격리되어 있는 환경을 만들기 위해 사용을 한다. 기본적으로 VPC내부에 서브넷 혹은 EC2 등이 위치하기 위해 필수적으로 필요하다 구글에 aws architecture를 검색해서 아키텍처들을 살펴보면 VPC로 감싸져 있는 걸 흔하게 볼 수 있다. VPC 생성 VPC의 IPv4 CIDR 🖥️10.0.0.0/16 CIDR 주소 VPC를 집이라고 생각을 해보자, 집 주소는 통상 부천시 중동로 122번 길 이런 식으로 돼있으나. VPC..
문제상황 😡 로컬에서 개발을 할 때는 현제 프로젝트의 최상단 디렉터리에 Logback에 의한 로그 파일이 생겼음. 하지만 베포 환경에서는 로그파일이 생성되지 않는 문제점 식별 CD 파이프 라인으로 베포 후 문제 발생로그가 잘 쌓이나 확인을 해보려고 들어간 찰나.. 폴더는 만들어져 있는데 로그가 안 쌓인다.. 환경AWSEC2(Ubuntu 22.04)Docker compose 사용 문제인지 과정 1) SSH로 베포 중이 EC2인스턴스(Ubuntu)에 접근 2) 도커 컴포즈 빌드docker-compose build --no-cache 3) 도커 컴포즈 실행docker-compose up -d 4) exec사용하여 백엔드 컨테이너에 접근(알파인 리눅스)docker exec -it /bin/..
Ubuntu 실행 및 Package 업데이트 환경과 조건 - Ubuntu 이미지 Tag = 22.04- Container 이름 = server- 업데이트 이후에도 컨테이너는 실행 중이어야 합니다 기본적인 컨테이너 상태 알아보기, 1) 아무런 옵션, 커멘드를 주지 않고 컨테이너 생성만 하기 1-a) 컨테이너의 상태를 다양한 옵션으로 확인하면서 탐구하기 컨테이너 확인 옵션을 사용했을때 알 수 있는 정보들은?docker ps Status 부분을 보았을 때 Exited(0)으로 종료됨을 확인할 수 있다.docker logs 무슨 원인인지 찾아보기 위해 logs명령어를 쳐보아도 아무 일도 일어나지 않는다! Exited(0) 이 무엇을 의미하는지 찾아보자. Contianer Exit Code 톺아보기컨테이너 ..
개요Logback을 이용한 Logging과, Logging을 하기 위해 로그를 어떻게 찍어야 할지 고민했던 부분과, 로그를 찍으면서 생긴 여러 가지 트러블 슈팅들을 기록하기 전반적으로 블로그들을 많이 찾아보았지만 Logback에 대한 이론 설명이 주를 이루고 있어서 로그를 어떻게 찍어야 할지 어떻게 시작해야 할지 감이 안 왔지만 차근차근해본 과정들을 기록해 보았다!!Logback을 선택한 이유와 Logback에 대해 예시로 ProductUpdateService라는 인터페이스를 만들고 해당 인터페이스에는public interface ProductUpdatingService { void updateProductViews(Long productId); void updateProductInfo(ProductIn..
원인 Swagger에서 Multipart/form-data 형식으로 파일과, JSON을 같이 보내면 오류가 나옴. PostMan으로 똑같이 테스트할 때는 오류가 발생하지 않음.Unsupported Media Type,Content-Type 'application/octet-stream' is not supported 해결과정 왜 발생했는지 프로토콜을 분해해 보자.Swagger에서 Multipart/form-data 형식으로 API 테스트를 할 때 오류 발생, PostMan으로 똑같이 테스트할 때는 오류가 발생하지 않음. 먼저 프로토콜을 분해해 봤다. + 추가로 알면 좋을 것들.Multipart 요청은 헤더의 Boundary 값을 지정을 해주고, Boundary값을 기준으로 본문의 데이터를 Part로 나누..