profile

Ivan Velichko

Ivan on Containers, Kubernetes, and Backend Development

Published over 2 years ago • 4 min read

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!

Ivan Velichko

Software Engineer at day. Tech Storyteller at night. Helping people master Containers.

Read more from Ivan Velichko

Hello friends! Ivan's here - with a well overdue February roundup of all things Linux, Containers, Kubernetes, and Server-Side craft 🧙 What I was working on A lot of stuff on the dev side - not so much on the content side. But things are soon to reverse 🤞 Announcing labCTL - the long-awaited iximiuz Labs CLI A dozen people have asked me over the past year-ish if there'll be access to the playgrounds from the local terminal and not only from the browser. And while I myself wanted this feature...

about 2 months ago • 7 min read

Hello there! 👋 Debugging containerized applications is... challenging. Debugging apps that use slim variants of container images is double challenging. And debugging slim containers in hardened production environments is often close to impossible. Before jumping to the DevOps problems that I prepared for you this week, let's review a few tricks that can be used to troubleshoot containers. If the container has a shell inside, running commands in it with docker exec (or kubectl exec) is...

2 months ago • 1 min read

Hey hey! Are you ready for your next DevOps challenge? Last week, we all witnessed yet another terrifying cyber-security event, and this time, it was a direct hit - researchers from Snyk discovered a way to break out of containers! 🤯 The vulnerability was found in the fundamental component of the containerization ecosystem - the most popular implementation of the (low-level) OCI container runtime - runc. Notice how, on the diagram above, most high-level container runtimes actually rely on the...

3 months ago • 1 min read
Share this post