Go Container Images and Kubernetes Deployments with .ko.yaml
How ko builds small container images from Go import paths and integrates them directly into Kubernetes manifests through .ko.yaml.
Notes and articles from operations, homelab work, and infrastructure. The archive is chronological and filterable.
8 posts
How ko builds small container images from Go import paths and integrates them directly into Kubernetes manifests through .ko.yaml.
Where AI concretely speeds up DevOps workflows: incident analysis with MCP, production-like prototypes with local Kubernetes, GitOps assistance, code reviews, and the guardrails this requires.
Local development against a real Kubernetes instead of mocks: a KinD cluster running the same Helm chart as production, a one-command bootstrap script, and the DevSpace hot-reload loop with file sync across several services. Why prod parity makes development more consistent.
Notes on chapter 7 of Learning Go: named types, methods with receivers, embedding instead of inheritance, implicit interfaces, accept interfaces return structs, the nil-interface trap, type assertions and switches.
Notes on chapter 6 of Learning Go: pointer syntax, pointers as mutability signals, stack and heap, escape analysis, and mechanical sympathy.
Notes on chapters 4 and 5 of Learning Go: blocks, shadowing, for, switch, multiple return values, the if err != nil pattern, defer, closures, call by value.
Notes on chapter 3 of Learning Go: arrays, slices, maps, and structs. Focus on shared backing storage in slices and the comma-ok idiom in maps.
Notes on chapter 2 of Learning Go: built-in types, variable declarations, zero values, explicit type conversion, truthiness, and constants.
12 posts
Installing BigBlueButton 3.0 with bbb-install.sh, system requirements and ports, Greenlight as the frontend, your own TLS certificate behind a reverse proxy, handling an internal CA and the full certificate chain.
etcd as the state store of Kubernetes, consistent snapshots with etcdctl, restore with etcdutl, procedures for single-node and multi-node control planes, quorum and downtime.
Structure of a Velero backup, BackupStorageLocation and VolumeSnapshotLocation, filesystem backups, exporting volume data to S3 with snapshot-move-data, immutability, encryption, RestoreResourceModifiers, migrations, Helm setup and monitoring.
Anomaly detection in logs with OpenSearch and the Random Cut Forest algorithm, setup with Data Prepper and OpenTelemetry, creating a detector, numeric features and count() on Kubernetes logs.
Deleting versioned S3 objects with the MinIO client, delete markers, deletion variants via version-id and versions, pruning by age, object lock retention and cross-provider observations.
The Loki ruler, rulerConfig in the Helm chart values, a Kustomize JSON6902 patch to mount a rules ConfigMap into the Loki StatefulSet, a ConfigMap with LogQL alerting rules and the per-tenant rules path layout.
DNS resolution with getent, tool detection with command -v, TCP connections via /dev/tcp, process and socket inspection via /proc, resolver configuration, recursive globbing and ephemeral debug containers with kubectl debug.
Daily PostgreSQL dumps from Kubernetes via CronJob, rolling retention with the MinIO client, S3 Object Lock and the conflict with rotation, hybrid approach with an archive, restrictive bucket policy.
Setting a static identifier on logs, metrics and traces, resource processor, environment variables in Kubernetes, attributes processor, transform processor with OTTL.
Repository layout as an organizational decision with examples, bootstrap via the Flux CLI or the Flux Operator, and a set of antipatterns with the better pattern for each: secrets, CRD ordering, cluster duplication and version updates.
Preparing VMs on Proxmox with cloud-init, baking the Kubernetes prerequisites into the image, running kubespray from the official container, inventory and group_vars, fetching the kubeconfig, upgrades and version pinning.
Bare-metal Proxmox with Ansible: a preseeded Debian image as the installer, Proxmox VE with IOMMU GPU passthrough, ZFS pools over stable by-id devices, ARC tuning and ZED alerting, Proxmox storage on ZFS, a reproducible flow from the bare machine to VM storage.