Kubernetes Client-Side Indexing

Kubernetes Client-Side Indexing This post is part of Kubernetes controller development. Check out the first part on Diving into controller-runtime | Manager if you are interested in controller-runtime. When working with Kubernetes Operators, read requests (get and list) to the Kubernetes API server are handled by an in-memory cache that is maintained by client-go to reduce the load on your API server. This cache can be enhanced with indexes to retrieve resources more efficiently....

October 27, 2024 · 15 min · Burak Sekili

Thread Pooling in Rust

A thread pool is a software design pattern where a set of worker threads is created to execute tasks concurrently. Instead of creating a new thread for each task, which can be resource-intensive, tasks are submitted to the pool and executed by available worker threads. This blog post will go through a simple thread pool implementation - similar to the one in Rust book - with a couple of simple enhancements....

September 6, 2024 · 13 min · Burak Sekili

Working with Custom Data Format in Rust using serde

Working with Custom Data Format in Rust using serde If you need to perform serialization or deserialization in Rust, you’ve most likely used the serde before. I’m currently learning Rust, and I found myself needing similar thing. To get familiar with the Rust ecosystem, I decided to develop a simple key-value store. Initially, the engine for this key-value store was designed to work with JSON objects, as JSON is a widely-used format that’s straightforward to use with web clients....

August 23, 2024 · 16 min · Burak Sekili

Fundamental EKS requirements

This guide is a summary of AWS EKS Best practices documentation to help me to skim through some concepts that i usually refer to. For details, please have a look to official EKS docs mentioned on Resources section. EKS (Amazon Elastic Kubernetes Service) It manages Kubernetes control-plane on behalf of you, ensures that each cluster has its own control plane. So, as an end-user, you only need to handle your workloads in worker nodes....

August 13, 2024 · 5 min · Burak Sekili

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