RSSAmplifier

Blog

Ivan on Containers, Kubernetes, and Server-Side

Want to learn Containers and Kubernetes internals? Struggle to understand what this Cloud Native buzz is about? On a mission to master the Server-Side craft? Then this site is for you!

iximiuz.comRSS feed ↗82 posts

Latest posts

A grounded take on agentic coding for production environments

iximiuz Labs founder shares a grounded, hands-on look at agentic coding in a real production codebase: massive speedups, surprising failures, and why domain knowledge still matters most.

Kubernetes Basics: Understanding Pods, Deployments, and Services

What if we don't start from Pods, Deployments, and Service, and instead take a step back and look at how things were done in the past, with good old VMs? Can it help us understand Kubernetes faster and deeper?

JavaScript or TypeScript? How To Benefit From the Dichotomy

There is no "versus" in the JavaScript and TypeScript relationship. My take on staying pragmatic and picking the right tool for the job.

On Software Design... and Good Writing

Anchoring my experiences in the wisdom of Akin's Laws of Spacecraft Design, I explore the confluence of software design and the finesse of good writing. Yes, ChatGPT wrote this description, but the article is entirely my own work.

Debugging Containers Like a Pro

This series will help you learn a few debugging tools and techniques you can use to troubleshoot Docker containers and Kubernetes workloads.

How To Publish a Port of a Running Container

How to access ports of running containers even when they are not exposed? A simple and quick solution that works for almost any container runtime including Docker Desktop, containerd, and Kubernetes.

What Actually Happens When You Publish a Container Port

Have you ever wondered what actually happens when you ask Docker to publish a port? How port publishing implementation differs between Docker Engine and Docker Desktop? How to publish a port with containerd? How nerdctl and Lima implement port forwarding?

Docker: How To Debug Distroless And Slim Containers

Slim/distroless containers often lack the much-needed exploration and debugging tools. The article shows four different ways to put your debugging tools back into the target container.

Docker: How To Extract Image Filesystem Without Running Any Containers

How to explore the filesystem of a container image using nothing but the standard Docker means (and without running any containers).

In Pursuit of Better Container Images: Alpine, Distroless, Apko, Chisel, DockerSlim, oh my!

How to make container images better? What does a better container image really mean? Image size vs the number of vulnerabilites. Pros and cons of using Alpine as a base image. Alpine and distroless alternatives.

How To Start Programming In Go: Advice For Fellow DevOps Engineers

"Starting programming", "Starting programming in Go", and "Starting programming Kubernetes controllers in Go" are there different challenges with the exponentially increasing level of complexity.

Kubernetes Ephemeral Containers And kubectl debug Command

How to use Ephemeral Containers to debug Kubernetes workloads with and without the kubectl debug command.

How To Develop Kubernetes CLIs Like a Pro

Learn how to use the k8s.io/cli-runtime library to develop Kubernetes CLI tools that behave like and are as potent as the mighty kubectl.

Cracking the Docker CLI: How to Grasp Container Management Commands

When you are new to Docker, the number of commands to study might be truly overwhelming. This article shows a way to internalize the most important Docker commands without the brute-force memorization.

Learning Docker with Docker

Containers aren't just processes - they are also files! What happens on the host's filesystem when containers are created, started, or exec-ed? Let's explore it using Docker-in-Docker!

How To Extend Kubernetes API - Kubernetes vs. Django

How Kubernetes Custom Resources, Controllers, and Admission Webhooks combined is just a fancy way to write APIs.

T-shaped Pipelines in Go - io.TeeReader and io.MultiWriter

Why and how to use io.TeeReader and io.MultiWriter in Go? How to connect a Writer to a Reader? How to scatter one write operation to multiple writer instances?

How To Call Kubernetes API from Go - Types and Common Machinery

How to deal with Kubernetes objects in Go. How to parse JSON into Kubernetes structs. How to create generic Unstructured objects. How to create a runtime.Object by its kind. What are RESTMapper and Scheme?

How To Call Kubernetes API using Simple HTTP Client

There are plenty of reasons to call the Kubernetes API using a CLI or GUI HTTP client. This article will show you how to get the API server address, authenticate requests using certificates and Service Account tokens, and call the API using kubectl in the raw mode.

Working with Kubernetes API - Resources, Kinds, and Objects

The article explains the most fundamental concepts of the Kubernetes API - Resources, API Groups, Kinds, and Objects - preparing the reader to the first access of the API from code.

OpenFaaS - Run Containerized Functions On Your Own Terms

How to turn Kubernetes cluster into FaaS platform? How can standalone VM running nothing but containerd compete with full-blow container orchestrator?

Learning Containers From The Bottom Up

What is a Container? Container vs. VM? Docker vs. Kubernetes. How to organize the learning efficiently?

Containers vs. Pods - Taking a Deeper Look

What is the difference between a Docker Container and a Kubernetes Pod? Can a Pod be created with plain Docker commands? How are Pods implemented under the hood?

List of Hands-On Cloud Native Learning Platforms

Overview of Cloud Native hands-on learning resources: best places to hone Linux, Containers, Orchestration, and Cloud skills.

Reverse Proxy, HTTP Keep-Alive Timeout, and sporadic HTTP 502s

Why a reverse proxy returns sporadic HTTP 502s? How to configure idle connection timeout for proper upstream connection reuse?

Why and How to Use containerd From Command Line

How to run containers without Docker? How to use ctr containerd client? What is nerdctl? What is crictl?

How to Expose Multiple Containers On the Same Port

How Docker publishes container ports on the host? How to use SO_REUSEPORT to make multiple containers listening on the same port? How to use iptables to make multiple containers exposed on the same port?

How to Set Go net/http Socket Options - setsockopt() example

How to get the underlying socket of a net/http server or client? How to set socket options for a Go http server or client? What is a Listener? What is a Dialer?

Disposable Local Development Environments with Vagrant, Docker, and Arkade

How to quickly setup a local development environment for a server-side project? How to keep the development environment disposable? How to spin up a local Kubernetes cluster in a matter of seconds?

DevOps, SRE, and Platform Engineering

Sharing my understanding of DevOps, SRE, and Platform Engineering based on the first-hand experience in SRE and PE domains.

My Choice of Programming Languages

What languages I put into my programming toolbox and why.

Prometheus Is Not a TSDB

What is Prometheus? Prometheus vs Graphite. Prometheus vs InfluxDB. Learning Prometheus and PromQL.

How to learn PromQL with Prometheus Playground

How to setup Prometheus playground. How to learn PromQL running example queries? How to prefill Prometheus with metric data?

Prometheus Cheat Sheet - Basics (Metrics, Labels, Time Series, Scraping)

What is a Prometheus metric? Metrics vs. Time Series. How scraping works?

Writing Parsers With nom Parser Combinator Framework

What is a parser combinator framework? How to write parsers in Rust? nom parser example. How to handle nom errors?

pq - parse and query log files as time series

How to get Nginx request rate from access.log? How to get top K failing URLs? How to query log files as time series data?

Prometheus Functions Cheat Sheet - Aggregation Over Time

How to query moving average in Prometheus? What moving window functions Prometheus has? How to convert a range vector into instant vector?

Prometheus vector matching rules visualized

How Prometheus vector matching works: one-to-one, one-to-many and many-to-one, many-to-many. What on/ignoring clause is for? group_left and group_right explained. Logical/set operations explained.

The need for slimmer containers

How not to bloat container images and decrease the cyber attack surface as a result.

Understanding Rust Privacy and Visibility Model

How to define a module in Rust? What is a root module? How to define nested modules? How pub modifier works?

Bridge vs Switch: What I Learned From a Data Center Tour

What is the difference between a bridge and a network switch? What is a managed network switch? How network can be organized in a data center?

Ethernet and IP Networking 101 (Heavily Illustrated)

What is a LAN? What is a network segment? Ethernet collision domains vs broadcast domains. How network switches work? How to send IP packets? VLAN vs VXLAN.

KiND - How I Wasted a Day Loading Local Docker Images

How to load local docker image into kind cluster node. Why loaded docker image may not work. How Kubernetes imagePullPolicy work.

Go, HTTP handlers, panic, and deadlocks

The danger of panic in Go HTTP handler code. How panic recovery can lead to a deadlock.

Exploring Kubernetes Operator Pattern

What is Kubernetes Operator? Kubernetes API design. Kubernetes Custom Resources and CRDs explained.

Making sense out of Cloud Native buzz

Everything comes at a price, and the price for microservices is a myriad of CNCF projects.

Service discovery in Kubernetes - combining the best of two worlds

Service discovery in Kubernetes takes the best of traditional client- and server-side implementations, thanks to éminence grise kube-proxy component.

API Developers Never REST

REST vs RPC vs gRPC vs protobuf

Container networking is simple

Revealing the nature of container networking - it's a simple but powerful combination of Linux virtual network facilities.

Traefik: canary deployments with weighted load balancing

Exploring the ways to balance the load between docker containers using Traefik