Go for Infrastructure Engineers
Go for platform and infrastructure engineers, not computer-science depth: the language through Bash and Python eyes, error handling, command-line tools, HTTP and JSON, the concurrency patterns you'll actually use, talking to Kubernetes with client-go, writing a small controller with Kubebuilder, and testing and shipping static binaries. Ends with a cluster-audit CLI project.
What you'll be able to do
- Read and write everyday Go: types, structs, slices, maps, methods, interfaces and errors
- Build reliable command-line tools with flags, config, logging and exit codes
- Call REST APIs with timeouts, retries and JSON decoding
- Use goroutines, channels, context and errgroup without leaks or races
- List, watch and patch Kubernetes objects with client-go, and write a small controller
- Test, lint and ship Go as small static binaries in minimal images
Before you start
Comfortable with Bash or Python scripting and basic Kubernetes (Kubernetes Administration Level 1).
How it works
Each lesson: plain-language idea → how it really works → hands-on. Each section ends with a cheat sheet & self-check.
Curriculum
Lessons marked “Read” are ready; the rest are on the way.
Part 1 — The language
- 01Why Go for platform work: toolchain, modules and layoutInstall, go mod, go run/build/test, project layout, and why so much infrastructure is written in GoRead →
- 02Go through Bash and Python eyesTypes, structs, slices, maps, methods, interfaces and pointers, compared with what you already knowRead →
- 03Errors done rightErrors as values, wrapping, errors.Is and errors.As, when (not) to panicRead →
- 📋Cheat sheet & self-checkEvery command from this section on one page, then 7 questions to check yourself.Open →
Part 2 — Tools that talk to systems
- 04Building command-line toolsflag and cobra, configuration, structured logging with slog, exit codesRead →
- 05HTTP, JSON and APIshttp.Client with timeouts, decoding JSON, retries with backoff, cloud SDKsRead →
- 06Concurrency you'll actually useGoroutines, channels, WaitGroup, worker pools, context cancellation, errgroup, the race detectorRead →
- 📋Cheat sheet & self-checkEvery command from this section on one page, then 6 questions to check yourself.Open →
Part 3 — Go and Kubernetes
- 07client-go: talking to KubernetesClients and kubeconfig, list, get, patch, watch, informers and listersRead →
- 08A small controller with KubebuilderA CRD, the reconcile loop, idempotency, status, owner references and finalizersRead →
- 09Testing, linting and shippingTable-driven tests, httptest, golangci-lint, static binaries, distroless images; project: a cluster-audit CLIRead →
- 📋Cheat sheet & self-checkEvery command from this section on one page, then 6 questions to check yourself.Open →
Real-world scenarios
Work through each one: symptom → misleading signal → evidence → root cause → prevention.
An HTTP call with no timeout in a CLI used by CI. Add timeouts and context, and make it fail fast.
A worker pool that never stops after an error. Find it with pprof and fix it with context and errgroup.
This site is a public version of my personal engineering knowledge hub. It intentionally excludes confidential company information and internal operational details.