| Ko

Homelab Build Log #2: ArgoCD GitOps

Overview In the previous post, we set up a homelab Kubernetes cluster using Dell OptiPlex Micro machines and completed the basic configuration. This post covers installing ArgoCD, a GitOps tool for declaratively managing all cluster components from a Git repository, and applying the App of Apps pattern to build a scalable infrastructure management system. Understanding GitOps What is GitOps? GitOps is an operational model first proposed by Alexis Richardson of Weaveworks in 2017. It uses a Git repository as the Single Source of Truth for infrastructure and application configurations. All infrastructure changes are tracked through Git commits, reviewed via Pull Requests, and reflected in the actual environment through automated processes, enabling infrastructure to be managed like code. ...

February 25, 2025 · 11 min · 2168 words · In-Jun

Homelab Build Log #1: Mini PC Kubernetes Cluster Setup

Overview This series is a place to record the parts of my homelab that feel worth writing down. Rather than treating it as a step-by-step guide, I want it to focus more on what I built and why I chose to put it together that way. This first post covers the hardware I used and the initial setup for a Mini PC-based Kubernetes cluster. The hardware setup uses five Dell OptiPlex Micro units as cluster nodes, with a TP-Link router and switch handling the network. The Dell OptiPlex Micro is a low-power mini PC that can be purchased affordably on the used market. The models used here are equipped with 9th-generation i5 CPUs, 16GB of memory, and 256GB SSDs, which is sufficient for handling Kubernetes workloads. ...

February 24, 2025 · 9 min · 1735 words · In-Jun

IPv6 Neighbor Discovery Protocol

In IPv4, a host needed several different protocols just to start talking. ARP found MAC addresses, ICMP Router Discovery advertised the gateway, DHCP handed out addresses, and ICMP Redirect fixed routes, each running independently. IPv6 folds these four jobs into five message types over ICMPv6, and that consolidation mechanism is NDP (Neighbor Discovery Protocol). Following what each of those five messages looks like, and the order they fly in when a host joins a network, shows how NDP works. ...

February 24, 2025 · 7 min · 1461 words · In-Jun

How ARP Protocol Works

What is ARP ARP (Address Resolution Protocol) is a network protocol defined in RFC 826 by the IETF in 1982. In TCP/IP networks, it dynamically discovers the MAC address (physical address) associated with a given IP address. It sits at the boundary between Layer 2 (Data Link Layer) and Layer 3 (Network Layer) of the OSI 7-layer model and maps logical addresses (IP) to physical addresses (MAC). In network communication, actual data transmission between devices relies on MAC addresses. The upper layer (Network Layer) works with IP addresses, but the lower layer (Data Link Layer) needs the destination’s MAC address to send packets. ARP performs this IP-to-MAC conversion. It broadcasts a query across the network, and only the device that owns the target IP responds. Because of this, ARP is an essential protocol in most local network environments, including Ethernet networks. ...

February 20, 2025 · 12 min · 2460 words · In-Jun

CIDR subnetting

Split 192.168.1.0/24 into four pieces and they start at .0, .64, .128, and .192. None can start at 50. Memorizing the subnetting table, where /26 means 64 and /27 means 32, makes the numbers feel familiar, but a nonstandard boundary or a VLSM split breaks that memory. A CIDR prefix marks where the network bits end, and every boundary calculation reduces to a bit operation at that mark. The sections below walk through that bit operation and check each result with real output from Python’s ipaddress. ...

February 20, 2025 · 6 min · 1119 words · In-Jun

Multi-container development with Docker Compose

Running a web app, a DB, and a cache each with docker run means memorizing long commands per container and wiring up networks by hand. The more common problem is that the app comes up before the DB is ready and dies on a connection error. Docker Compose declares the whole stack in one YAML file and brings it up with a single command. The thing that actually trips you up with multiple containers is service startup order. The stack below starts the app only after the DB is ready. Running docker compose up confirms the order holds in the log. The output comes from a run on Docker Compose v5.1.1. ...

February 17, 2025 · 4 min · 816 words · In-Jun

Optimizing Docker Image Size

Docker image optimization affects build times, deployment speed, storage costs, and the security profile of containerized applications. By choosing the right base image, using multi-stage builds, and cleaning up layers, you can often shrink an image by 10x or more while also improving CI/CD throughput and reducing cloud infrastructure costs. Understanding Docker Image Size Problems Why is Image Size Important? Docker image size directly affects build time, push/pull time, container startup time, storage costs, and attack surface. Image optimization is essential for efficient operations in production environments. ...

February 17, 2025 · 8 min · 1677 words · In-Jun

Docker image layers and caching

Change one line of source and the rebuild runs npm install from scratch. An image is a stack of layers, and Docker caches build results layer by layer. When one layer is invalidated, everything below it rebuilds too. So the order of instructions in a Dockerfile determines build speed. The sections below build images, catch the cache breaking in the docker build log, and measure how an ordering change moves the build time. Every output comes from a run on Docker 29.3.1. ...

February 17, 2025 · 6 min · 1134 words · In-Jun

Setting Static IP on Ubuntu 24.04 LTS

A static IP address is an IP address manually specified by a network administrator instead of being dynamically assigned from a DHCP server. It is essential in environments where the IP address must not change, such as server operation, remote access, and network service hosting. Ubuntu 24.04 LTS uses Netplan as the default network configuration tool and also supports nmcli and nmtui interfaces through NetworkManager, allowing users to configure networks in their preferred way. ...

August 10, 2024 · 6 min · 1155 words · In-Jun

Git stash apply vs pop

Switching branches with uncommitted changes that aren’t ready for a commit, Git stops you. $ 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 saves the working-tree changes onto a temporary stack and resets the working tree to HEAD. The changes aren’t lost; you reapply them later. The commands are simple, but the difference between apply and pop, and what pop does on a conflict, is where mistakes happen. ...

July 26, 2024 · 3 min · 562 words · In-Jun
[email protected]