DevOps & Cloud
Docker, Kubernetes, CI/CD and observability - diagnosing why it works on your machine but not in the cluster.
Sub-topics
Docker & Containers
14Images, volumes, compose networking and the permission mismatches.
Kubernetes
25Pod failures, probes, scheduling and reading what the cluster is actually telling you.
CI/CD Pipelines
26Actions, runners, caching that never hits and deploys that don't roll back.
Observability
14Logs, metrics, traces and alerts you can actually act on.
Infra as Code & GitOps
7Terraform state, Helm releases and GitOps drift.
70 articles · showing 1-9 (page 1 of 8)
Metering, model routing and the regression suite that stops your agent rotting
Two questions decide whether an AI feature survives its first year: does each request make money, and will a prompt edit break something silently? An append-only credit ledger, two-tier routing, and a suite that asserts question-to-metric mappings are the answers.
Deploying Frappe apps to a client server you're not allowed to touch
The client will not give you access to their dev server, so every code change means someone on their side pulls and migrates by hand. Here is the complete fix: a self-hosted runner they install, a deploy script they own, and no credential to their environment on your side at all.
The pull model: systemd timers and release polling
When the client's security team refuses a runner outright, you can still ship. A systemd timer on their server asks GitHub what the latest release is, compares it against what is checked out, and deploys when they differ. Nothing external can execute anything.
Push access is code execution: hardening a self-hosted runner
A self-hosted runner executes whatever the workflow file says, and the workflow file lives in a repository you control. So push access to your repository is command execution on your client's server. Here is the honest risk and the layers that contain it.
SSH deployment for Frappe: how it works, and what it costs you
SSH deployment is the right answer when you own the server, and here is a complete working pipeline for it. It is also a private key held by a third party's CI system, which is a bill worth reading before you sign it.
Secrets, environments and required reviewers
A repository secret is readable by everyone who can push to the repository. An environment secret is not released until a gate opens. Understanding that difference is what lets you hand the client the key to their own deployments.
What a runner actually is: GitHub-hosted vs self-hosted
A runner is a process that asks GitHub for work and executes it wherever it happens to live. Once that sentence is true for you, deploying to a firewalled server with no inbound access stops being a trick.
GitHub Actions from scratch: workflows, jobs, steps and triggers
A workflow file is four ideas stacked on each other. Learn them in the right order, understand why push to main is the wrong deployment trigger, and you can write your first deploy pipeline today.
ArgoCD Stuck on 'Waiting for Completion of Hook': Breaking the Deadlock
Your ArgoCD sync has waited on a PreSync Job for forty minutes and Terminate changes nothing. Here is why the hook never completes and the exact steps that clear it.