Infrastructure Management at Scale with Cluster API, MachineDeployments and MachinePools
I have been managing infrastructure and organisations of different shapes and sizes since early 2017. The toolset has really evolved over time, and different solutions have been developed by organisations along the way. Starting out, I saw a number of places calling cloud provider APIs directly and building CLI tooling on top of them. Background: Infrastructure management with Terraform HashiCorp really gained market share here with Terraform. AWS also had CloudFormation, but across the organisations I have worked with or observed over time, most standardised on Terraform. ...
Migrating this blog from Jekyll to Hugo
Why I started looking So it all started with me wanting to update the dependencies of my Jekyll website. I hadn’t really updated any dependencies for my website since ages and after I had changed my machine, I hadn’t also played around with ruby/ruby on rails, so it just started with installing Ruby. Yes, you got it right, I was just practically pushing markdown files for quite some time for even years maybe(?) at this point for the blog. It’s also very beautiful that GitHub just allows building such an old Jekyll website. This website is dated from 2015 but I’ve obviously updated my bundle dependencies and gems, maybe a couple of times since then. While trying to install this I also got stuck with the dependency hell loop. Which made me pause further. ...
KubeCon EU 2025, My experiences attending and speaking at it
Back in 2017, I attended my first KubeCon in Austin, which had around 1,500 attendees. Fast forward to 2025, KubeCon EU in London saw over 12,000 participants—a testament to how much the Kubernetes community and ecosystem have grown and evolved over the years. This was my 3rd kubecon, and the first time speaking at KubeCon, and it was an incredible experience! Takeaways Conference Highlights Attended a lightning talk on Kanister, a framework for application-level data management on Kubernetes. I really enjoed the talk on Kubernetes CRD design for long-term evolution. Key takeaways: Design CRDs to evolve gracefully and avoid unnecessary version upgrades. Prefer copying and adapting external API types rather than embedding them, to prevent breaking changes. Use reusable types like metav1.TypeMeta, ObjectMeta, and Conditions where appropriate. Pay attention to OpenAPI specs, deprecation policies, and CRD markers (use tools like Kubernetes API Linter). Design GitOps-friendly APIs by using list types with ownership keys. Choose clear, descriptive field names and avoid generic terms or camelcase concatenation. Take inspiration from upstream APIs and gather feedback from users. Be mindful of challenges like API removals (example issue). Nick Young has some amazing suggestions on Avoiding common Kubernetes controller mistakes. suggestions on using the Patch instead of Update to send only the changes, instead of the whole object. using a framework like controller-runtime, krt, StateDB instead of hand rolling something. versioning your CRD. Thinking how users will use your CRD API, making sure you spend good amounts of time in thinking about the API design. slides YouTube recording for 2024 talk of Nicks on Avoiding common CRD Design errors My Presentation I had the opportunity to present my talk at KubeCon EU 2025: “Resilient Multi-Cloud Strategies: Harnessing Kubernetes, Cluster API, and Cell-Based architecture” along with my colleague Javier Mosquera ...
ContainerDays 2024, Hamburg
This was my first time at containerdays, Hamburg and I feel I missed out definitely on the previous ones by not attending! This year’s conference, was a 2 days conference and I met a bunch of familiar faces from KCD Munich, which I attended this year and the last year too. Takeaways KCP There was a great talk by Marvin around KCP. kcp talk - building a platform engineering api layer with kcp ...
Oncall in product teams
I have been oncall for as long as I can remember being in the industry, so far for every organisation I have been part of. Different things have worked at different phases of the organisation and the teams priorities. I thought I would put down some notes over things which I have seen have worked well. Why do we need to have oncall rotations? Because simply put, it would help people not burn out of only being oncall unofficially over time, as they get pulled into specifics of systems which they are more aware of. ...
Keyboard setups over time
Over the years, I have used different keyboards for myself, and my setups have changed over time. This post is just me assimilating over the setups which I have used over the years to reflect back on the memories with each setup. College days I would use the laptop keyboard itself when I was in college back then, it had a really tiny keyboard and was an ultrabook which didn’t have a CD-ROM. The setup in my room was also not very ergonomic in the first place as I didn’t have a chair which was ergonomic enough for me with the desk. But it was nevertheless the first setup which I had in all fairness. ...
Renewing your root CA with a new root CA such that the older certs signed by old root CA are still valid
Context If you have a root CA which you used to sign certificates, and if the root certificate is about to expire, the certificates signed by the root CA will also become invalid after the root CA expires even if the certificates signed by it haven’t expired. As every certificate in the chain must remain valid for your certificate to be valid. Also for example the kube-apiserver when it comes up, it --client-ca-file while it comes up, where you can pass the root CA. ...
neovim setup for golang 6 months in
So far I have been using my nvim golang setup for around more than 6months now and I am still learning something new everyday while I use it. coc.vim works really well so far for me. Linting, autocomplete, jumping to definitions back and forth, code folding, checking for references for where a function/method is used, it works out for me well so far. What I am trying to fix on my setup so far The debugging experience for sure can be improved, I have tried using nvim-dap-go. ...
My vim setup for golang
Ok, not vim, but nvim tl;dr what does all this get me in my setup https://github.com/tasdikrahman/dotfiles/tree/master/vim jump to definitions jump to references jump to symbols fuzzy file search code folding jumping between test and implementation file testing specific function real time code linting Cleaning my vim config after some time and ended up removing a bunch of things and starting afresh, a couple of plugins which had been archived but worked all the while were https://t.co/lmjXtN7HbS, switched to https://t.co/7ZSoKMgwBW as it was the recommended replacement (1/n) ...
Working remotely in a geographically distributed team without burning yourself out
Context Wanted to pick ideas from folks who have worked in such setups effectively/led teams over the years across geographical continents. Given I recently took up a fully remote role, with the team that I am joining being spread across EU and in the US as of now. This post is just for documentary purposes for me to look back how I have fared over the course of this year and the next as I take this journey of working in a remote first company. ...