Hi there

You’ve found my collection of 2AM ramblings and boilerplate

Creating A Webhook Provider for External DNS

Currently, while external-dns does have a provider for Cloudflare, it does not currently support Tunnel backends. Hence, I attempted to implement one using the webhook mechanism (as in-tree providers are being deprecated). While external-dns does provide some documentation, it is (in my opinion) sparse on implementation details required to develop a provider. In this article, I will walk through how I implemented external-dns-cloudflare-tunnel-webhook, omitting any provider-specific details. Specification For a high-level overview, external-dns operates with webhook providers as follows:...

June 16, 2024 · 5 min · 1037 words · Hans Song

CRUD with HTMX, Typescript, and SQLite

A while back, a little JavaScript library known as HTMX was making waves. As I had started my career in client-side rendered front-ends, communicating via HTML seemed fairly novel to me. This has a number of added benefits: No API lock-in - SPAs where the frontend is deployed with API validation and logic may need to be deployed anytime a change to the API is made. In SSR applications, changes to the API simply change the HTML rendered by the clients browser....

May 5, 2024 · 8 min · 1625 words · Hans Song

Expose Kubernetes With Cloudflare Tunnels

As a homelab or self-hoster who has deployed a couple services and would now like to access their services from outside their home network, you may have come to the dilemma of … how? If you don’t want to read my rambling, you can skip to Setting up. To make the long trek from your coffee shop / office / airport to your home network, you will need a couple things coming together:...

February 11, 2024 · 4 min · 727 words · Hans Song

Adopting Helm Resources

Recently, I undertook a big migration from CDK8S to Helm. While CDK8S provided the ability to generate Kubernetes manifests in an imperative way using my language of choice, I noticed it can encourage bad habits. In making it easy to abstract and my apps became littered with custom logic and conditionals. This goes against the principles of IAC in which your infrastructure should be declarative. During the migration, I whipped up the following script which adds annotations and labels to an existing app which allows me to use kubectl diff to cross-check my migration....

November 21, 2023 · 2 min · 268 words · Hans Song

Kubernetes OIDC Authentication

As I have started dabbling in SSO and federated identity management using Auth0, I had a thought: “could I access my Kubernetes cluster with an Auth0 user identity?”. And so, begins a new (fairly short) rabbit-hole to dive into. Prerequisites You will need: A free Auth0 account A computer A decision on your Kubernetes flavour of choice, I will be using K3S here kubectl with kubelogin installed Setup Create a machine-to-machine Auth0 Client....

September 16, 2023 · 2 min · 353 words · Hans Song