Patrick D'appollonio

Notes about engineering, programming, Kubernetes, Go, Infra-as-code and other interesting things.

Cultural differences between Chile and USA (and North America)

Or learning a bit about Chile while getting shocked: all the surprising differences that took me a while to adjust!

Cultural differences between Chile and USA (and North America)

On August 2014 I made one of the most difficult choices of my life: I left my home country, my family, my friends and everything I knew to move to the United States. I arrived in Florida, and while Florida still speaks a lot of Spanish for a US State (not in a bad way, I’m not complaining! It made my life easier) it still took a bit of me to get used to this new culture.

Posted on January 21, 2024   42 minutes read, 8737 words

Benchmarking is Hard: Caddy vs Nginx Edition

Or how an evening on Twitter/X took me down the rabbit hole

Benchmarking is Hard: Caddy vs Nginx Edition

Back in November 2022 I was browsign the then Twittosphere (now Exosphere?) when I ran across an interesting tweet from @manishrjain: What is happening? Caddy is 2x outperforming NGINX in my reverse proxy test 🚀 With Caddy, there's practically no difference in HTTPS vs HTTP performance. If legit, this is clearly a David vs Goliath story. @mholt6 — Manish R Jain (Building Struct.AI) (@manishrjain) November 23, 2022 It caught my attention, but not because of the claim that Caddy outperforms Nginx by 2x, but instead because often, when it comes to benchmarking and comparing technologies, especially when it comes to Servers, Internet and Network Requests, you could often overlook specific details.

Posted on September 23, 2023   12 minutes read, 2482 words

4 alternative tools to replace Terraform in your Infrastructure as Code

Terraform is switching to a BSL license, where can we go now?

4 alternative tools to replace Terraform in your Infrastructure as Code

With Hashicorp moving a bit away from their roots in the Open Source world and going into the more locked-in, don’t-compete-with-me kinda scenario, it’s hard not to start thinking whether you should be looking at jumping ship away from your massive Terraform setup. If you’re in that boat, where can you go? What are the alternatives to Terraform? In this article, I’ll provide some of my recommendations as to where to go, with some pros and cons on each option.

Posted on August 18, 2023   13 minutes read, 2569 words

How to manage Kubernetes clusters in WSL with OpenLens on Windows

How to make them play well with each other

How to manage Kubernetes clusters in WSL with OpenLens on Windows

Recently I’ve been playing with a few different tools to make me more proficient when working with Kubernetes. Additionally, people that know me know I play lots of games – sinking more and more time into Destiny 2 – so I keep Windows as my daily desktop driver and even with all the grievances of WSL – including random loss of networking – I still use it as a daily driver to write code and do other work in a Linux environment while still retaining a Windows “desktop”.

Posted on January 27, 2023   9 minutes read, 1787 words

Mounting Secrets and ConfigMaps in a preexistent folder without deleting the folder's contents

I bet you've been there: you mounted a ConfigMap and nuked the entire preexistent directory!

Mounting Secrets and ConfigMaps in a preexistent folder without deleting the folder's contents

We’ve all been there: we’re working on our next super-hyper-duper Kubernetes operator, we’re about to deploy it but we’re doing some local testing, so we create a ConfigMap or a Secret, we mount it to the Pod, launch our app and we see the entire directory is now gone, replaced with our ConfigMap or Secret’s contents. This post will show you how to mount a ConfigMap or Secret on a preexistent folder without deleting all its data.

Posted on October 31, 2022   11 minutes read, 2229 words

Six things I wish I would've known when I started working with Istio

Service meshes and networking in Kubernetes have their tricks!

Six things I wish I would've known when I started working with Istio

Working with service meshes is really an interesting concept and sells you the benefits of, well, the service mesh itself, mutual TLS, end-to-end encryption, and more. Unfortunately though, not everything is as straightforward as you might think. In fact, Istio’s own documentation page has a full section dedicated to “common issues”. These issues are not so evident if you come from an Ingress Controller world and you assume you would understand Istio using the same knowledge as you would have when using Ingress Controllers instead.

Posted on April 22, 2022   10 minutes read, 1930 words

ArgoCD and Health Checks, or how to avoid Kubernetes "eventual consistency"

Or how health checks avoid me from running into issues with controller-managed resources

ArgoCD and Health Checks, or how to avoid Kubernetes "eventual consistency"

Here’s an interesting problem I ran into while doing some work a few days ago. I was working on a pipeline to deploy new resources using ArgoCD. Everything was going great until one of the Kubernetes resources was, in fact, a resource managed by a Kubernetes controller: that is, applying it will not create it, it will merely tell the controller to create it, eventually. In practical terms, during my time at Sourced Group, we’ve been working closely with Anthos and some of their applications, including Anthos Config Connector, a nifty little controller that allows you to declare Google Cloud resources as Kubernetes YAMLs, and have this Config Connector – or ACC for short – create them for you.

Posted on January 24, 2022   13 minutes read, 2584 words

"wait-for", a tiny utility to wait for TCP resources to be ready

Use it in your Kubernetes clusters to wait for resources to be ready, like SQL Databases

"wait-for", a tiny utility to wait for TCP resources to be ready

I know I’m not the first one to create this and, in fact, there are a plethora of options out there to use as of right now. Still, I wrote my own version of wait-for, and there are a few differences that make it to be a little more useful than the alternatives. For those of you who have never heard about this, wait-for is a very simple and tiny application with a unique purpose: it allows you to define several TCP endpoints – that is, endpoints like a MySQL Database (or MariaDB if you’re in line with the new waves), or even NoSQL ones, like Redis or MongoDB – and wait for them to be ready.

Posted on January 23, 2022   5 minutes read, 910 words

Bienvenido de vuelta!

Recuperando el blog personal y poniendo algunos objetivos para el 2022 y el futuro

Bienvenido de vuelta!

Hola! Uff, quĂ© raro se siente escribir en un blog de nuevo. DespuĂ©s de un par de dĂ­as de trabajo, he logrado recuperar el blog. Inicialmente, este blog usaba Hugo, pero por varios años de descuido – entendiendo que el Ășltimo artĂ­culo que escribĂ­ fue en Enero del 2015, 7 años atrĂĄs! – no me fue posible recuperar la tecnologĂ­a de fondo del blog. Si mal ni menos no recuerdo, el “motor” de Hugo era 0.

Publicado el 16 de Enero del 2022   7 minutos de lectura, 1297 palabras

Usa las fuentes de Google Web Fonts localmente

Descargando el CSS de las Google Web Fonts para su uso offline

Usa las fuentes de Google Web Fonts localmente

Google Web Fonts es una herramienta bastante Ăștil al momento de diseñar sitios web. No sĂłlo porque te ofrece un sinnĂșmero de beneficios, gracias a que hospeda las fuentes por ti, las optimiza para mostrarlas y, ademĂĄs, basado en el User-Agent del usuario, entrega la fuente correcta, sin enviar fuentes adicionales innecesarias. Positivamente, las web fonts o, mĂĄs correctamente, las font-face han tenido un largo trayecto. Por ejemplo, las WOFF2 ya no son un sueño, y son soportadas por Chrome y Firefox y por ende, tenemos un mismo tipo de fuente para distintos navegadores.

Publicado el 05 de Abril del 2015   4 minutos de lectura, 807 palabras