Hey, hey! Ivan's here!
As usual, last weekend of the month means it's time to share what I've been working on with my most loyal followers ❤️
Kind reminder, you subscribed to the iximiuz.com newsletter somewhere over the past six months. If you don't want to receive emails from me (very sad), just hit unsubscribe at the bottom of this email. Otherwise, welcome!
I started October from the comprehensive analysis of the existing learn-by-doing platforms offering training in the cloud-native realm - all things Linux, Containers, and Kubernetes. I'm a true believer in hands-on learning and always strive to augment my articles with working code/YAML examples. However, sometimes bootstrapping an environment to test these snippets could be a harder task than grasping the actual subject matter. So, having a platform where you could try out things right in your browser would be amazing.
I crowd-sources a list of around 15 sites offering such playgrounds and then spent two weeks trying out materials on almost all of them. Here is a lengthy blog post with the results. But to cut a long story short, I was quite disappointed with the findings. The amount of available materials is overwhelming, but the content I saw was rarely engaging - most of the tutorials were possible to complete by just blindly copying/pasting the commands from the instructions into the in-browser terminal. But if the course doesn't challenge you, it's unlikely you'll learn efficiently!
In addition to course-like offerings, there were a few very high-quality free-play sandboxes, including a totally free full-blown OpenShift Kubernetes cluster with a fancy UI dashboard. I really enjoyed these gems. However, while they should be pretty helpful for more seasoned folks, beginners will likely find it infeasible to learn such a complex matter as container orchestration without a guided approach.
On the other hand, at pretty much the same time, I accidentally stumbled upon Josh Comeau's blog. Josh teaches CSS, and it's rather off-topic for me. But I was amazed by the quality of his content! Just check out this example - it's not just plain writing augmented with code snippets and drawings. The site works as a blog and as an interactive platform simultaneously. However, Josh doesn't stop with this blog. Recently he published an online-course css-for-js, that builds upon the idea of his blog and extends it into a full-fledged multi-hour course on CSS. And what I liked the most - you get some assignments there before the material is actually explained, so it constantly challenges you to think about the solution instead of copying/pasting the instructions. And on the other hand, when/if you start feeling lost, you can easily get some guidance.
So, an ideal online course does exist! The pity is it teaches your CSS, not Docker...
Disappointed by the findings from my learn-by-doing platforms research and motivated by this CSS stuff, I decided to be Josh :) I've been thinking of turning my blog into something more interactive for quite some time already. There are a few articles that could definitely benefit from being accompanied by an interactive playground, and Service proxy, pod, sidecar, oh my could be a good candidate to start from. I wrote it almost a year ago with an idea to extend it into a full series on Traffic Management Patterns for microservices (even prepared some scripts to build envoy playgrounds). However, never followed up since then...
So, I decided to try. And here is what I managed to build after spending a couple of weekends with Vue.js and Tailwind CSS (remember, I'm no frontend developer).
The idea is super-simple - to explain how a service could improve the observed success rate of its upstream dependency by adding a client-side sidecar proxy doing transparent retries (and how everything could blow up then because of a retry storm):
The end result should be some sort of page where plain text explanation will be intermixed with drawings and with inline interactive playgrounds. A reader could click a button, and that would launch a bunch of containers with guinea-pig services on the playground server. After analyzing the observed behavior, a student could tweak some parameters of the sidecar proxy applying their former experience or the material they just learned and re-play the scenario. And on the way, it could teach the student how to configure Envoy proxy (which I find quite intimidating even though I've been doing it for a living for almost a year now):
The playground is still a work in progress, and it'll take me a while to finalize and polish. But I'm super happy with what can be achieved with the modern frontend tools! I remember when I tried to build something similar in 2011 - it was a nightmare for a server-side guy like me. I tried again in 2017, and it almost worked out, thanks to react. But still, I was hitting quite some obscure problems with the setup. And finally, in 2021, I found a frontend stack I can use - Vue.js and Tailwind CSS is one love.
I'm looking forward to sharing the link on the working playground with you, folks!
Since this issue is already taking longer than usual, I'll put the rest as a list. Here are other things I published this month:
If you find the work I do interesting, I'd be more than happy to hear from you! All forms of feedback are always appreciated!
Until next month!
Cheers
Ivan
P.S. Sharing is caring! If you liked the issue, forward it to a friend, spread the word!
Building labs.iximiuz.com - a place to help you learn Containers and Kubernetes the fun way 🚀
Hello 👋 Ivan's here with a slightly delayed September roundup of all things Linux, Containers, Kubernetes, and Server Side 🧙 What I was working on This month, I worked on an assorted set of topics. Skill Paths First off, the skill paths! I finally finished the underlying machinery, and now iximiuz Labs supports a new type of content - short roadmaps that you can use to develop or improve a specific skill: how to debug distroless containers, how to copy images from one repository to another,...
Hello friends! Ivan's here with another monthly roundup of all things Linux, Containers, Kubernetes, and Server Side 🧙 The issue's main topic is iximiuz Labs' largest-ever upgrade: Fresher and more streamlined look of the frontend UI 💙 A new 5.10 Linux kernel built with nftables support (finally, we can try out kube-proxy's nftables mode). New default playground user - laborant (yep, rootless containers learning for). New playgrounds: Ubuntu 24.04, Debian Trixie, Fedora, and Incus (yay! more...
Hello friends! Ivan's here with a slightly delayed July roundup of all things Linux, Containers, Kubernetes, and Server Side 🧙 What I was working on This month, I got nerd-sniped by cgroups. It all started when I ran into a pretty significant difference in how Docker and Kubernetes handle the OOM events. When you limit the memory usage of a multi-process Docker container, the OOM killer often terminates only one of the processes if the container runs out of memory. If this process is not the...