Setting up Workload Identity Federation between Kubernetes and Google Cloud.

November 11, 2025 - Patrick Kerwood

In this blog post, I’ll show how to set up Workload Identity Federation between Kubernetes and Google Cloud Platform. This setup allows an application running in Kubernetes to use its Kubernetes service account to impersonate a Google service account and access cloud resources.

Read More

Setting up Workload Identity Federation between Keycloak and Google Cloud.

November 4, 2025 - Patrick Kerwood

In this blog post, I’ll demonstrate how to set up a Workload Identity Federation between Keycloak and Google Cloud Platform, allowing a Keycloak client to impersonate a Google service account to create a Cloud Storage bucket.

Read More

Setting Up Keycloak SAML Federation with Azure Entra ID

October 10, 2025 - Patrick Kerwood

In this guide, we’ll walk through setting up federated authentication between Azure Entra ID and Keycloak using SAML 2.0. By the end, you’ll have Entra ID as an identity provider and Keycloak properly configured to consume claims and group memberships.

Read More

Setting Up Keycloak with Docker Compose

September 24, 2025 - Patrick Kerwood

In this post, I’ll guide you through installing Keycloak with Docker Compose, with or without an SQL backend, and configuring it using my default Traefik setup. We’ll set up a dedicated URL for a realm and add a redirect from the realm’s root URL to its admin console.

Read More

Setting Up an HA VPN Between Google Cloud and CentOS 9 with strongSwan and BIRD

September 14, 2025 - Patrick Kerwood

In this guide, I’ll walk through setting up a site-to-site VPN between Google Cloud and a CentOS 9 VM hosted on DigitalOcean. We’ll use strongSwan to establish the IPsec tunnel, and the BIRD Internet Routing Daemon to peer with a Google Cloud Router and exchange routes dynamically using BGP.

Read More

Using Caddy as a Simple HTTP File Server

August 18, 2025 - Patrick Kerwood

Looking for a simple way to serve files over HTTP? In this guide, I'll walk through setting up a file server using Caddy, a modern web server written in Go. With minimal configuration, built-in directory browsing, and optional basic authentication, Caddy makes it easy to share files.

Read More

Single Sign-On with OAuth2 Proxy and Traefik Using Azure Entra ID

May 19, 2025 - Patrick Kerwood

Secure your application with OAuth2 Proxy and Microsoft Entra ID. In this post, I’ll walk you through configuring OAuth2 Proxy to authenticate users via Entra ID, both as a reverse proxy in front of your application and as a forward authentication provider using Traefik.

Read More

Running a Terraform Workflow in GitHub with Slack Notifications

March 11, 2025 - Patrick Kerwood

Automating infrastructure deployments using Terraform and GitHub Actions is a common practice. In this post, we’ll walk through setting up a Terraform workflow in GitHub that runs a Terraform Plan and sends a Slack notification with the diff whenever there are changes detected.

Read More

Traefik v3 Configuration with Let's Encrypt

March 5, 2025 - Patrick Kerwood

In this post, we’ll walk through setting up Traefik as an application proxy with Docker Compose, including automatic provisioning of Let's Encrypt TLS certificates via HTTP and DNS validation.

Read More

Confluence Updater

February 2, 2025 - Patrick Kerwood

If you prefer keeping your documentation in Git, love writing in Markdown, but need to publish it in Confluence, Confluence Updater is the perfect solution. This tool allows you to set up a CI/CD pipeline that automatically converts Markdown to HTML and uploads it to Confluence Cloud whenever changes are made.

Read More