Posts

Hosting a Helm Chart Repository on GitHub with chart-releaser

Step-by-step guide to publish Helm charts on GitHub Pages using the helm/chart-releaser-action, with a clean repository layout that decouples the application from its chart

Hosting a Helm Chart Repository on GitHub with chart-releaser

GitHub Pages plus the helm/chart-releaser-action is the de facto way to turn a GitHub repository into a Helm chart repository. No extra hosting, no separate registry — just a gh-pages branch and a workflow file.

This post walks through the layout I use in practice: one repository for the application, a separate one for the chart.

Kubernetes helm kubernetes github

Installing the Vagrant libvirt Provider on Ubuntu 22.04 LTS

End-to-end setup for running Vagrant on top of KVM/libvirt on Ubuntu 22.04 — virtualization packages, group membership, NFS, plugin build dependencies, and the vagrant-libvirt plugin itself

Installing the Vagrant libvirt Provider on Ubuntu 22.04 LTS

Vagrant ships with VirtualBox as its default provider, but on Linux KVM/libvirt is the better fit: it’s the kernel’s native hypervisor, it’s faster, and it doesn’t require an out-of-tree kernel module. The bridge between the two is vagrant-libvirt, a Vagrant plugin that drives libvirt instead of VirtualBox.

This post walks through the full setup on Ubuntu 22.04 LTS (Desktop or Server). It is largely a distillation of Paul Neumann’s gist, which itself builds on Philippe Vanhaesendonck’s Oracle Linux write-up — kept here for my own reference and slightly reorganized.

Linux vagrant libvirt kvm

Go Project Structure: Patterns That Scale

Practical guide to structuring Go projects from flat layouts to hexagonal architecture, with examples for CLIs, APIs, and monorepos

Go doesn’t enforce a project layout. That freedom is powerful but requires discipline — start simple and let structure emerge as complexity grows.

Golang golang project-structure best-practices

gitlab-backup2s3: Encrypted GitLab Backups to S3, with Kubernetes Support

A Docker image wrapping gitlab-backup with AES-GCM encryption and Kubernetes CronJob deployment for automated, secure GitLab backups to S3

gitlab-backup2s3: Encrypted GitLab Backups to S3, with Kubernetes Support

Source code: github.com/sgaunet/gitlab-backup2s3 Helm chart: github.com/sgaunet/helm-gitlab-backup2s3

In the previous article, I covered gitlab-backup, a CLI tool for exporting GitLab projects and groups as portable archives. It handles the export, the restore, and supports both local and S3 storage natively.

But for production backup workflows — especially in a Kubernetes environment — you often want more: scheduled execution, optional encryption at rest, and a container image that bundles everything together. That’s exactly what gitlab-backup2s3 brings to the table.

DevOps gitlab backup s3

Stop Committing Secrets: A Practical Guide to Pre-Commit Secret Detection

How to combine Gitleaks as a fast pre-commit hook with TruffleHog in CI/CD for verified secret scanning, plus strategies for handling false positives

Stop Committing Secrets: A Practical Guide to Pre-Commit Secret Detection

You’ve done it. Or someone on your team has. A .env file slips into a commit, an AWS key ends up in a config file, a GitLab token gets hardcoded in a script “just for testing”. A few minutes later it’s in your git history — forever.

This post covers the current best practice for catching secrets before they ever touch your repository, without drowning your team in false positives.

DevOps security git pre-commit