Working With Pull Requests in Azure Devops

I like working at the terminal. No judgement if you don’t, but for me the terminal feels like a comfortable and productive place :-) I also like to find ways to gradually improve my experience with the termina, and a while back I mentioned to Lawrence that I’d created some git aliases to help me easily check out pull requests on github. He immediately replied pointing me to github.com/ldez/prm (Pull Request Manager) which is an awesome tool for checking out pull requests locally and working with them. [Read More]

Using Event Filters with Kubebuilder

Part 2: Filtering Updates

Background As I recently posted, I’ve worked on a couple of projects that have involved using Kubebuilder to create Kubernetes operators. In last post we looked at using event filters to prevent delete notifications being processed by the reconciliation loop. Another thing I’ve noticed as I’ve been developing operators is that the flow when an object is created is typically: receive create notification, take some action, update the object Status property. [Read More]

Connection re-use in Golang with http.Client

Just before Christmas I was working with Eliise and Lawrence and we observed port exhaustion during load testing of a Golang application that makes HTTP requests against an API. I hoped for a quick win and had a quick scan of the code but that confirmed that the was correctly reading the Body and calling Close - time to dig a bit deeper. After some head-scratching we noticed that the code creates a new http. [Read More]

Using Event Filters with Kubebuilder

Part 1: Filtering Deletes

UPDATE (2020/01/08 ): After testing this in another project I discovered that the NotFound checking is still required in the case where the reconciliation has been requeued and the object is deleted in the interim period. Even with this code, I still prefer not having the NotFound output in my logs for the default case. Background A couple of projects recently have involved using Kubebuilder to create Kubernetes operators. Kubebuilder scaffolds out a go application and then lets you focus on writing the logic of the reconciliation loop which is the core part of the operator. [Read More]