[AWS] VPC 네트워크 구조 정리
·
OS/AWS
1. VPC란 무엇인가클라우드 운영 및 엔지니어를 준비하면서 가장 먼저 떠오른 부분은 "외부 요청이 서버까지 어떻게 들어오는가", "어떤 아키텍처를 가지고 있나"라는 궁금증이 먼저 들었던거 같습니다. VPC(Virtual Private Cloud)는 클라우드 환경에서 사용하는 가상 네트워크 공간으로, 서버 및 로드밸런서 등 리소스들을 하나의 네트워크 범위로 묶기 위해 사용이 됩니다. 2. 왜 Public Subnet과 Private Subnet으로 나누는가?서비스를 예로 든다면 외부 사용자와 직접 통신이 필요한 영역과 보안을 위해 외부 접근을 제한해야 하는 영역을 분리할 필요가 있습니다. Public Subnet은 외부 인터넷과 연결되어 외부 요청을 받을수 있는 영역이며, Private Subnet은 외..
[Kubernetes] 미니PC에 Prometheus + Grafana 모니터링 구축하기 (Helm 사용)
·
OS/Kubernetes
1. 개요최근 미니PC를 활용해 쿠버네티스(Kubernetes) 환경을 구축하고, 실제로 서비스하지는 않지만 운영용으로 만든 family-photo-service를 운영 하기위해 띄웠습니다. 하지만 혼자서 서비스만 겨우 띄우고 실행하는 것을 제외한 무엇을 해야할 지, 그리고 단순히 파드(Pod)가 떠 있는 것만으로는 실제 운영 환경이라고 하기 어렵습니다.시스템 리소스를 실시간으로 파악하고 장애에 대응하기 위해 가장 대중적인 모니터링 툴인 Prometheus와 Grafana를 구축해 봤습니다.아래 이미지는 파드(Pod)만 띄워놓은 이미지 입니다. 2. 구축 환경OS : Ubuntu (Mini PC)Platform : KubernetesTool : Helm (Kubernetes용 패키지 매니저) 3. 구축 ..
Kubernetes에서 Pod 재시작 전략
·
OS/Kubernetes
쿠버네티스에서 애플리케이션을 안정적으로 운영하려면 Pod 재시작 전략을 이해하는 것이 중요합니다.Restart PolicyAlways : Deployment, ReplicaSet에서 기본값, 실패 시 항상 재시작OnFailure : Job에서 사용, 실패한 경우만 재시작Never : 실패해도 재시작하지 않음Liveness Probe & Readiness ProbelivenessProbe는 애플리케이션이 정상 동작 중인지 확인 → 실패 시 자동 재시작readinessProbe는 서비스 트래픽을 받을 준비가 되었는지 확인 → 준비 안 된 Pod는 트래픽 제외CrashLoopBackOff 문제 해결환경변수/ConfigMap/Secret 설정 오류로 자주 발생 → kubectl describe pod로 원인 파..
Docker 이미지 최적화 방법
·
OS/Docker
Docker를 활용하다 보면 이미지 크기가 불필요하게 커져서 빌드 속도와 배포 속도에 영향을 주는 경우가 많습니다. 이미지 최적화를 통해 성능과 관리 효율성을 동시에 얻을 수 있습니다.불필요한 레이어 줄이기RUN apt-get update && apt-get install -y ... && rm -rf /var/lib/apt/lists/* 같이 하나의 RUN 명령어에 합치면 레이어가 줄어듭니다.멀티 스테이지 빌드 활용빌드 환경과 실행 환경을 분리하면 최종 이미지에 불필요한 빌드 도구가 포함되지 않습니다.최소 베이스 이미지 사용alpine 이미지를 활용하면 기본 Debian/Ubuntu 기반보다 훨씬 가볍습니다..dockerignore 설정불필요한 파일이 이미지에 포함되지 않도록 .dockerignore ..
효율적인 CI/CD 파이프라인 구축 가이드
·
OS/DevOps
본문:DevOps 업무에서 가장 중요한 개념 중 하나가 CI/CD입니다. CI/CD(Continuous Integration/Continuous Delivery)는 소프트웨어 배포 프로세스를 자동화하여 지속적인 통합과 배포를 가능하게 합니다.CI/CD의 주요 구성 요소CI (Continuous Integration): 코드 통합 및 자동 빌드와 테스트 과정.CD (Continuous Delivery/Deployment): 통합된 코드를 실제 환경에 배포하는 과정.효율적인 파이프라인 구축 방법소스 코드 관리(Git)모든 코드 변경 사항을 Git과 같은 버전 관리 시스템으로 관리하고 Pull Request 및 코드 리뷰를 통해 안정성을 유지합니다.자동화된 빌드 환경(Jenkins, GitLab CI)Jenk..
실무에서 알아두면 유용한 Docker Compose 활용법
·
OS/Docker
본문:Docker는 컨테이너화 기술 중 가장 널리 사용되는 도구입니다. 특히 실무에서는 여러 개의 컨테이너를 관리해야 하는 경우가 많습니다. 이런 상황에서 Docker Compose는 매우 유용한 도구입니다.Docker Compose는 여러 컨테이너를 한 번에 정의하고 관리할 수 있는 도구로, YAML 파일로 컨테이너 간 관계와 설정을 명확히 표현할 수 있습니다. 이를 통해 개발 및 배포 과정을 단순화하고 유지보수를 효율적으로 할 수 있습니다.실무에서 자주 쓰이는 Docker Compose 명령어docker-compose up: 컨테이너 실행docker-compose down: 컨테이너 정지 및 삭제docker-compose restart: 컨테이너 재시작docker-compose logs: 컨테이너 로..
리눅스 시스템 부팅 과정 한눈에 정리
·
OS/Linux
📄 본문 내용:✅ 전체 부팅 단계 요약BIOS/UEFI → 하드웨어 초기화Boot Loader (GRUB) → 커널 선택 및 실행Linux Kernel → 하드웨어 제어권 획득Init System → 서비스 시작Login Shell → 사용자 로그인✅ systemd 기반 부팅 확인systemd-analyze time부팅에 걸린 전체 시간 확인systemd-analyze blame어떤 서비스가 오래 걸렸는지 분석 가능✅ 문제 해결 시 활용journalctl -xb부팅 중 발생한 로그 확인dmesg커널 초기 메시지 확인✅ 실무 팁GRUB 수정은 /etc/default/grub → update-grub오래 걸리는 서비스는 systemctl disable 또는 mask로 제어부팅 느릴 땐 SSD 상태, 마운트..
도커에서 볼륨(Volume) 완전 이해: 데이터 유지의 핵심
·
OS/Docker
📄 본문 내용:✅ 볼륨이란?도커 컨테이너는 삭제 시 데이터도 같이 사라집니다. 이를 방지하기 위해 사용하는 것이 Docker Volume입니다.컨테이너 외부에 데이터를 보관하여 유지 및 공유가 가능해집니다.✅ 볼륨 생성 및 사용# 볼륨 생성docker volume create my-volume# 볼륨 확인docker volume ls# 컨테이너에서 볼륨 마운트docker run -d -v my-volume:/app/data busybox✅ 볼륨 vs 바인드 마운트항목볼륨바인드 마운트경로도커가 관리사용자가 지정한 경로백업/복원쉬움직접 수행권한 문제거의 없음호스트 OS에 따라 발생 가능 ✅ 볼륨 삭제# 컨테이너 중지 후docker volume rm my-volume✅ 실무 팁DB 컨테이너 실행 시 데이터 ..
kubectl 명령어 모음: 실무에서 꼭 쓰는 10가지
·
OS/Kubernetes
📄 본문 내용:✅ 1. 전체 Pod 보기kubectl get pods --all-namespaces✅ 2. 디버깅: 로그 확인kubectl logs ✅ 3. Pod 안으로 접속kubectl exec -it -- /bin/sh✅ 4. 현재 Context 확인kubectl config current-context ✅ 5. YAML 출력kubectl get pod -o yaml ✅ 6. 리소스 삭제kubectl delete pod ✅ 7. Deployment 수정kubectl edit deployment ✅ 8. 네임스페이스 변경kubectl config set-context --current --namespace=✅ 9. 리소스 설명kubectl describe pod ✅ 10. 리소스 상태 실시간..
Docker로 Nginx 웹서버 빠르게 띄우는 법
·
OS/Docker
📄 본문 내용:✅ 목적테스트용 웹서버가 필요할 때, Nginx 이미지를 활용해 1분 만에 웹서버를 띄울 수 있습니다.✅ 실행 명령어docker run -d -p 8080:80 --name webserver nginx-d: 백그라운드 실행-p 8080:80: 호스트 8080포트를 컨테이너의 80포트와 매핑--name webserver: 컨테이너 이름 지정✅ 접근 방법브라우저에서 http://localhost:8080 접속 → Nginx 기본 화면 확인 가능✅ 컨테이너 중지 및 삭제docker stop webserverdocker rm webserver✅ 실무 팁HTML 정적 페이지 테스트 용도로 활용-v 옵션으로 로컬 HTML을 마운트하면 커스텀 페이지 테스트 가능docker run -d -p 8080:..