
Graceful Shutdown on Kubernetes for Rust Services Explained
When Kubernetes stops a pod, traffic keeps arriving for a moment after SIGTERM. A correct shutdown fails readiness, waits briefly, then drains requests before exiting.
From cargo build to production: CI pipelines, slim Docker images, Linux services and what to watch afterwards.

When Kubernetes stops a pod, traffic keeps arriving for a moment after SIGTERM. A correct shutdown fails readiness, waits briefly, then drains requests before exiting.

Aya lets you write both the eBPF program and its loader in Rust. A small tracepoint program counts syscalls and a user space process reads the counters from a map.

A dev container puts the toolchain, system libraries and services in a Docker image that the editor attaches to. A new contributor opens the folder and everything works.

Logs, metrics and traces answer different questions. Wire them together with tracing and OpenTelemetry in a Rust service: one instrumentation API, a collector, context propagation across services and sensible sampling.

Run a Rust service under systemd properly: a unit file with hardening, sd_notify readiness, socket activation for zero-downtime restarts, the watchdog heartbeat and journald logging.

A one-page runbook for when a Rust service misbehaves: stabilize first, check recent changes, read the four golden signals, find the failing dependency, and use the Rust-specific evidence: panics, memory, executor stalls.

Os error 24 means the process hit its file descriptor limit. Check the limit and the live count, find the leak or the missing bound, raise the limit in systemd, Docker or code, and cap concurrency so it stays low.

Change a live schema without an outage: expand, migrate, contract. Add columns safely, backfill in batches, create indexes concurrently, and order deploys so old and new code both work against the database.

Run tests against a real PostgreSQL in a disposable container with the testcontainers crate. Start one per test run, migrate, isolate tests with transactions or databases, and keep CI fast with reuse.

cargo-release is a command you run; release-plz is a bot that opens a release pull request and publishes on merge. Compare control, review, workspaces, semver checks and which to pick.

The linker failed after compiling succeeded. Read the last lines for the missing symbol or library, then install the dev package, fix the target, or switch to a Rust-only dependency.

Containers run as root by default. Create an unprivileged user in the image, own only what the app writes, handle low ports and volumes, and check that it works.
We send one email when a new post is published. No spam.