| En

홈랩 구축기 #2: ArgoCD GitOps

개요 이전 글에서는 Dell OptiPlex Micro를 활용하여 홈랩 쿠버네티스 클러스터를 구성하고 기본 설정을 완료했다. 이번 글에서는 클러스터의 모든 구성요소를 Git 저장소에서 선언적으로 관리하기 위해 GitOps 도구인 ArgoCD를 설치하고 App of Apps 패턴을 적용하여 확장 가능한 인프라 관리 체계를 구축하는 방법을 다룬다. GitOps의 이해 GitOps란? GitOps는 2017년 Weaveworks의 Alexis Richardson이 처음 제안한 운영 모델로, Git 저장소를 인프라와 애플리케이션 구성의 단일 진실 공급원(Single Source of Truth)으로 활용하는 방식이며, 모든 인프라 변경 사항을 Git 커밋으로 추적하고 Pull Request를 통해 검토한 후 자동화된 프로세스를 통해 실제 환경에 반영함으로써 인프라를 코드처럼 관리할 수 있게 한다. ...

2025년 2월 25일 · 8 분 · 1691 단어 · In-Jun

홈랩 구축기 #1: 미니PC Kubernetes 클러스터 구축

개요 이 시리즈는 홈랩을 만들고 운영하면서 정리해두고 싶은 것들을 기록하는 글이다. 설치 과정만 따라가는 문서보다는, 어떤 환경을 꾸렸고 왜 그렇게 구성했는지를 중심으로 적어가려 한다. 이번 글은 그 시작점으로, 미니PC로 쿠버네티스 클러스터를 구성할 때 사용한 하드웨어와 기본 설치 과정을 정리한다. 하드웨어는 Dell OptiPlex Micro 다섯 대를 클러스터 노드로 사용하고, TP-Link 라우터와 스위치로 네트워크를 구성했다. Dell OptiPlex Micro는 전력 소모가 적은 미니 PC라 중고 시장에서 비교적 저렴하게 구할 수 있다. 사용한 모델은 9세대 i5 CPU, 16GB 메모리, 256GB SSD를 갖추고 있어 쿠버네티스 워크로드를 처리하기에 충분한 사양이다. ...

2025년 2월 24일 · 7 분 · 1349 단어 · In-Jun

IPv6 Neighbor Discovery Protocol

IPv4에서 호스트가 통신을 시작하려면 서로 다른 프로토콜 여럿이 필요했다. MAC 주소를 찾는 ARP, 게이트웨이를 알려주는 ICMP 라우터 발견, 주소를 받는 DHCP, 경로를 고쳐주는 ICMP 리다이렉트가 각각 독립적으로 돌았다. IPv6는 이 네 가지 일을 ICMPv6 위에서 다섯 종류의 메시지로 통합했고, 그 통합 메커니즘이 NDP(Neighbor Discovery Protocol)다. 다섯 메시지가 각각 어떤 모양이고 호스트가 네트워크에 붙을 때 어떤 순서로 오가는지를 따라가면 NDP의 동작이 드러난다. 다섯 가지 ICMPv6 메시지 NDP는 ICMPv6 Type 133~137, 다섯 가지 메시지로 모든 일을 처리한다. IPv4에서 따로 놀던 기능이 어떤 메시지로 흡수됐는지는 다음과 같다. ...

2025년 2월 24일 · 6 분 · 1146 단어 · In-Jun

ARP 프로토콜 동작 원리

ARP란 무엇인가 ARP(Address Resolution Protocol)는 TCP/IP 네트워크에서 IP 주소에 대응하는 MAC 주소(물리적 주소)를 동적으로 찾아내는 주소 변환 프로토콜이다. 1982년 IETF의 RFC 826 문서를 통해 공식적으로 표준화되었으며, OSI 7계층 모델로 보면 2계층(데이터 링크 계층)과 3계층(네트워크 계층) 사이의 경계에서 동작한다. 즉, 논리적 주소(IP)와 물리적 주소(MAC)를 연결하는 역할을 한다. 네트워크 통신에서 실제 데이터 전송은 MAC 주소를 기반으로 이루어진다. 하지만 상위 계층(네트워크 계층)에서는 보통 IP 주소만 알고 있으므로, 하위 계층(데이터 링크 계층)에서 패킷을 전송하려면 목적지의 MAC 주소를 먼저 알아야 한다. 이때 ARP가 IP 주소를 MAC 주소로 변환하는 과정을 담당한다. ARP는 브로드캐스트(broadcast) 방식으로 네트워크 내 모든 장치에게 질의를 보내고, 해당 IP를 가진 장치만 응답하는 구조로 동작한다. 이더넷(Ethernet)을 비롯한 대부분의 로컬 네트워크 환경에서 필수적으로 사용되는 이유가 여기에 있다. ...

2025년 2월 20일 · 10 분 · 2034 단어 · In-Jun

CIDR 서브네팅

192.168.1.0/24를 4개로 쪼개면 시작 주소가 .0, .64, .128, .192에 떨어진다. 50번지에서 시작할 수는 없다. 서브네팅을 표로 외우면 /26은 64, /27은 32 같은 숫자가 손에 익지만, 비표준 경계나 VLSM 같은 변형이 나오면 무너진다. CIDR 접두사는 네트워크 비트가 어디까지인지 가리키는 자리표시이고, 모든 경계 계산은 그 자리에서의 비트 연산으로 환원된다. 아래에서 그 비트 연산을 짚고, 파이썬 ipaddress로 실제 출력을 뽑아 검산한다. /24 뒤의 숫자가 뜻하는 것 CIDR은 IP 주소 뒤에 슬래시와 네트워크 비트 수를 붙인다. 192.168.1.0/24는 앞 24비트가 네트워크, 나머지 8비트(32 - 24)가 호스트라는 뜻이다. IPv4 주소가 32비트이므로 접두사는 /0부터 /32까지 가능하며, /0(0.0.0.0/0)은 전체 인터넷을 가리키는 디폴트 라우트, /32는 단일 호스트다. ...

2025년 2월 20일 · 5 분 · 871 단어 · In-Jun

Docker Compose 멀티 컨테이너 구성

웹·DB·캐시를 각각 docker run으로 띄우면 컨테이너마다 긴 명령어를 외워야 하고, 네트워크를 손으로 만들어 연결해야 한다. 더 흔한 문제는 DB가 아직 안 떴는데 앱이 먼저 떠서 접속 에러로 죽는 것이다. Docker Compose는 스택 전체를 YAML 한 장에 선언하고 한 명령으로 띄운다. 멀티 컨테이너에서 실제로 발목을 잡는 건 서비스 시작 순서다. 헬스체크로 DB가 준비된 다음에 앱을 띄우는 스택을 만들고 docker compose up을 돌려 그 순서가 지켜지는지 로그로 확인한다. 출력은 Docker Compose v5.1.1에서 돌린 결과다. ...

2025년 2월 17일 · 3 분 · 631 단어 · In-Jun

Docker 이미지 크기 최적화

Docker 이미지 최적화는 컨테이너 기반 애플리케이션의 빌드 시간 단축, 배포 속도 향상, 스토리지 비용 절감, 보안 취약점 감소에 직접적인 영향을 미치는 핵심 기술이다. 적절한 베이스 이미지 선택, 멀티 스테이지 빌드, 레이어 최적화 등의 기법을 적용하면 이미지 크기를 10배 이상 줄일 수 있고, 이는 CI/CD 파이프라인의 효율성과 클라우드 인프라 비용 절감에도 도움이 된다. Docker 이미지 크기 문제의 이해 왜 이미지 크기가 중요한가? Docker 이미지 크기는 빌드 시간, 푸시/풀 시간, 컨테이너 시작 시간, 스토리지 비용, 보안 공격 표면에 직접적인 영향을 미치므로, 프로덕션 환경에서 효율적인 운영을 위해서는 이미지 최적화가 필수적이다. ...

2025년 2월 17일 · 8 분 · 1551 단어 · In-Jun

Docker 이미지 레이어와 캐시

소스 코드 한 줄만 바꿨는데 빌드할 때마다 npm install이 처음부터 다시 도는 경우가 있다. 이미지는 레이어(layer)의 스택이고 Docker는 레이어 단위로 빌드 결과를 캐시하기 때문이다. 어떤 레이어가 깨지면 그 아래 레이어가 줄줄이 다시 빌드된다. 그래서 Dockerfile의 명령어 순서가 빌드 속도를 좌우한다. 아래에서는 이미지를 빌드하면서 캐시가 깨지는 순간을 docker build 로그로 확인하고, 명령어 순서가 빌드 시간을 어떻게 바꾸는지 측정한다. 모든 출력은 Docker 29.3.1에서 돌린 결과다. 이미지는 읽기 전용 레이어의 스택이다 Dockerfile의 각 명령어(RUN, COPY, ADD 등)는 직전 상태로부터의 변경분만 담은 읽기 전용 레이어를 하나씩 만든다. 컨테이너를 실행하면 이 레이어들이 OverlayFS(현재 기본 스토리지 드라이버 overlay2) 위에서 하나의 파일 시스템 뷰로 합쳐진다. ...

2025년 2월 17일 · 5 분 · 905 단어 · In-Jun

우분투 24.04 LTS 고정 IP 설정

고정 IP(Static IP) 주소는 DHCP 서버로부터 동적으로 할당받는 대신 네트워크 관리자가 수동으로 지정하는 IP 주소다. 서버 운영, 원격 접속, 네트워크 서비스 호스팅처럼 IP 주소가 바뀌면 안 되는 환경에서 필수적으로 사용된다. Ubuntu 24.04 LTS에서는 Netplan을 기본 네트워크 구성 도구로 사용하며, NetworkManager를 통한 nmcli와 nmtui도 지원한다. 따라서 사용자는 환경과 선호에 맞는 방식으로 네트워크를 설정할 수 있다. 고정 IP의 필요성 DHCP vs 고정 IP DHCP(Dynamic Host Configuration Protocol)는 네트워크에 연결된 장치에 자동으로 IP 주소를 할당하는 프로토콜이다. 클라이언트 장치에는 편리하지만, 서버나 네트워크 장비는 IP 주소가 바뀌면 서비스 연결이 끊어질 수 있으므로 고정 IP가 필수적이다. ...

2024년 8월 10일 · 5 분 · 973 단어 · In-Jun

Git stash의 apply와 pop

커밋하기 애매한 변경이 남은 상태에서 브랜치를 바꾸면 Git이 막는다. $ git checkout develop error: Your local changes to the following files would be overwritten by checkout: file.txt Please commit your changes or stash them before you switch branches. Aborting git stash는 작업 디렉터리의 변경을 임시 스택에 저장하고 디렉터리를 HEAD 상태로 되돌린다. 변경은 사라지지 않으며 나중에 다시 꺼내 적용할 수 있다. 명령 자체는 단순하지만 apply와 pop의 동작 차이, 그중에서도 pop이 충돌했을 때의 동작에서 실수가 자주 나온다. ...

2024년 7월 26일 · 3 분 · 471 단어 · In-Jun
[email protected]