Skip to content

Tag: devops

All the articles with the tag "devops".

k3s Node Upgrades Without Downtime

k3s Node Upgrades Without Downtime

Upgrade k3s without dropping workloads: the cordon and drain sequence, then system-upgrade-controller Plans that automate it, with PDB and Longhorn gotchas.

Kyverno: K8s Policy Without Rego

Kyverno: K8s Policy Without Rego

Kyverno on k3s: validate, mutate, generate, verify signed images, handle exceptions, and test policies in CI. Plus the CEL policy types replacing ClusterPolicy.

Docker Build Cache in CI: Make It Hit

Docker Build Cache in CI: Make It Hit

Docker layer cache works on your laptop but CI starts cold. Fix it with registry cache or type=gha, set scope and mode=max, and debug why hits still miss.

Pre-Commit Hooks That Catch Secrets

Pre-Commit Hooks That Catch Secrets

A secret that reaches git push is already gone. Compare gitleaks, TruffleHog, and detect-secrets as pre-commit hooks, with working configs you can copy.

Devcontainers for a Whole Team

Devcontainers for a Whole Team

Turn a devcontainer into a team standard: Compose with Postgres, pinned Features, lifecycle hooks, one prebuilt image for laptops and CI, and the UID gotcha.

Stop Handing CI Jobs Root on Your Box

Stop Handing CI Jobs Root on Your Box

Self-hosted GitHub Actions, Forgejo, and GitLab runners can hand a forked pull request root on your box. Here is the isolation ladder that actually stops it.

Cluster API for Homelab k3s

Cluster API for Homelab k3s

Cluster API turns k3s cluster lifecycle into YAML: create, scale, and upgrade whole clusters as code with a management cluster, no more one off scripts.

RabbitMQ vs NATS: Pick a Message Bus

RabbitMQ vs NATS: Pick a Message Bus

RabbitMQ vs NATS for a self-hosted app: routing, delivery guarantees, Docker Compose setups, Python code, and which broker to run for background jobs.

Helm Without the YAML Soup

Helm Without the YAML Soup

Master Helm templating sanity. Values files, smart defaults, when to skip Helm entirely, and why nested variables aren't always the answer.

Garrul: The Audit Found My Rate Limiter

Garrul: The Audit Found My Rate Limiter

A security audit of Garrul, my Cloudflare Workers comment system, found 2 critical bugs. Both had the same root cause as one I had already fixed in June.

Bots Ate 90% of My Worker Quota

Bots Ate 90% of My Worker Quota

A WordPress login bot burned 90% of my Cloudflare Workers free tier in two hours attacking a site that has never run PHP. Here's what actually stopped it.