Concurrency Notes in Go

Concurrency Channels Unbuffered channel If channel is unbuffered 1 ch := make(chan struct{}) sending a data to channel will block the goroutine as the channel is nil. 1 2 3 4 5 6 7 package main func main() { ch := make(chan struct{}) ch <- struct{}{} } Output of this program is: 1 2 3 4 5 6 7 $ go run main.go fatal error: all goroutines are asleep - deadlock!...

January 24, 2024 · 3 min · Burak Sekili

Diving into controller-runtime | Manager

Introduction controller-runtime package has become a fundamental tool for most Kubernetes controllers, simplifying the creation of controllers to manage resources within a Kubernetes environment efficiently. Users tend to prefer it over client-go. The increased adoption of projects like Kubebuilder or Operator SDK has facilitated the creation of Kubernetes Operator projects. Users need to implement minimal requirements to start with Kubernetes controllers, thanks to these projects. As a developer working on Kubernetes projects, I inevitably touch code pieces utilizing controller-runtime Whenever I dive into code base, I always learn something new about the underlying mechanism of Kubernetes....

November 2, 2023 · 9 min · Burak Sekili