Setting up Workload Identity Federation between Kubernetes and Google Cloud.
November 11, 2025 - Patrick KerwoodIn 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 MoreSetting up Workload Identity Federation between Keycloak and Google Cloud.
November 4, 2025 - Patrick KerwoodIn 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 MoreSetting Up Keycloak SAML Federation with Azure Entra ID
October 10, 2025 - Patrick KerwoodIn 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 MoreSetting Up Keycloak with Docker Compose
September 24, 2025 - Patrick KerwoodIn 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 MoreSetting Up an HA VPN Between Google Cloud and CentOS 9 with strongSwan and BIRD
September 14, 2025 - Patrick KerwoodIn 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 MoreUsing Caddy as a Simple HTTP File Server
August 18, 2025 - Patrick KerwoodLooking 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 MoreSingle Sign-On with OAuth2 Proxy and Traefik Using Azure Entra ID
May 19, 2025 - Patrick KerwoodSecure 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 MoreRunning a Terraform Workflow in GitHub with Slack Notifications
March 11, 2025 - Patrick KerwoodAutomating 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 MoreTraefik v3 Configuration with Let's Encrypt
March 5, 2025 - Patrick KerwoodIn 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 MoreConfluence Updater
February 2, 2025 - Patrick KerwoodIf 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