All blog posts

Container Lifecycle Hooks

The concept of hooks is well-known in the tech world. Events usually trigger hooks, and they allow developers to react to those events and run some custom code. But how can you do the same in the context of Kuberentes and containers?
Read more

Maybe Convert Wasm Extension Config?

Have you ever said "THIS WORKED YESTERDAY!!". Yeah, me too. This could also be titled Living on the edge with Wasm or The tale of a stray character or How I spent way more time I would like to admit, fixing an issue that was completely my fault
Read more

GetIstio - CLI, training, and community

GetIstio CLI was released this week. GetIstio features aCLI that offers an easier way to install and upgrade Istio, a free Istio Fundamentals training, and a community, with the first meeting coming up on February 18th.
Read more

Attach multiple VirtualServices to Istio Gateway

In this post, you'll learn how to expose multiple Kubernetes services running inside your cluster using Istio' Gateway and VirtualService resources.
Read more

Exploring Kubernetes Volumes

Running stateful workloads inside Kubernetes is different from running stateless services. The reason being is that the containers and Pods can get created and destroyed at any time. If any of the cluster nodes go down or a new node appears, Kubernetes needs to reschedule the Pods. When Pods get rescheduled, what happens with data? This article talks about Kubernetes Volumes and how to use them to store the data outside of your containers.
Read more

Send a Slack message when Docker images are updated

I needed a way to send a notification to a Slack channel, whenever I push new versions of Docker images to the registry. This post, I explain how I created a function that uses a container registry webhook to call a serverless function that sends a message to a Slack channel.
Read more

Kubernetes Network Policy

Using the NetworkPolicy resource, you can control the traffic flow for your applications in the cluster, at the IP address level or port level (OSI layer 3 or 4).
Read more

Ambassador Container Pattern

The ambassador container pattern aims to hide the primary container's complexity and provide a unified interface through which the primary container can access services outside of the Pod.
Read more

Start Kubernetes Release

Start Kubernetes will teach you everything you need to know to use Kubernetes effectively.
Read more

Sidecar Container Pattern

The sidecar container aims to add or augment an existing container's functionality without changing the container. In comparison to the init container from the previous article, the sidecar container starts and runs simultaneously as your application container. The sidecar is just a second container you have in your container list, and the startup order is not guaranteed.
Read more

Kubernetes Init Containers

Init containers allow you to separate your application from the initialization logic and provide a way to run the initialization tasks such as setting up permissions, database schemas, or seeding data for the main application, etc. The init containers may also include any tools or binaries that you don't want to have in your primary container image due to security reasons.
Read more

Deploying multiple Istio Ingress Gateways

Istio allows you to enable or disable different components, as well as tweak the configuration for them. However, what do you do if you want to deploy another ingress gateway? In this article, I go through a couple of exercises and try to deploy a second ingress gateway.
Read more

Branch by Abstraction Pattern

The strangler pattern is useful for scenarios where you can intercept the calls at the edge of your monolithic application. But what do you do in a scenario where the functionality you're trying to extract is not called directly from the outside, rather it is being called from multiple other places inside the monolith?
Read more

The Strangler Pattern

The strangler pattern is used in scenarios when you're migrating from monolithic systems by extracting pieces of functionality and moving that functionality into new services. This article explains how the pattern works and how to implement it.
Read more

Kubernetes Development Environment with Skaffold

One part of the Start Kubernetes course I am working on (in addition to the book and videos) is the interactive labs. The purpose of these labs is to help you learn Kubernetes by solving different tasks, such as creating pods, scaling deployments, and so on. What follows is a quick explanation of how the end-user experience looks like and how I've set up my development environment for it.
Read more

Securing Kubernetes Ingress with Ambassador and Let's Encrypt

In addition to routing the incoming requests or exposing service API's through a single endpoint, the ingress gateways does other tasks, such as rate limiting, SSL termination, load balancing, authentication, circuit breaking and more. In this article I will show you how to install the Ambassador Gateway and other components to be able to obtain an SSL certificate for your application.
Read more

All About the Ingress Resource

You deployed your applications to Kubernetes and now you need a way for your users to access them. You can do that with a Kubernetes Ingress resource and an Ingress controller. This article explains all about the Ingress resource and shows you how to expose multiple applications through a domain, subdomain and on a different URL path.
Read more

How to quarantine Kubernetes pods?

To investigate and debug the containers within a pod you need to remove the pod from the load balancing pool, so none of the traffic gets sent to it. This tip shows you how to do that.
Read more

Getting started with Kubernetes

In this multi-part series of articles I'll try and capture everything I think someone who wants to learn and work with Kubernetes should know about. If you have read any of my previous articles or courses you know that I like to learn by practice and trying things out. I'll explain theoretical things, but will focus more on the practical parts.
Read more

Horizontal partitioning in MongoDB

In this article, I'll talk a bit about data partitioning. Specifically, I'll talk about horizontal data partitioning or sharding. After a brief 'theoretical' part, I'll show you an example of how you can configure sharding with MongoDB. You will be able to run three MongoDB shards, a configuration server, and a router on your computer, using Docker compose.
Read more

Docker image tagging scheme

In this short article I'll talk about two things - the latest tag in Docker and why you should be careful when using it and how you should come up with your own tagging scheme for your Docker images.
Read more

Six things to keep in mind when working with Dockerfiles

I have been using Docker directly or indirectly for years now. During that time I shot myself in the foot multiple times by not following suggestions and good practices. I have collected tips and practices and separated them into multiple categories. I am calling these categories Dockerfiles, images, and containers. The first part talks about Dockerfiles - I have included 6 tips and practices you should try and adopt.
Read more

Beginners guide to Docker

Understanding concepts around Docker images and containers is crucial for anyone starting in cloud-native. Regardless if you're in development, DevOps or program management (or any other technical role :). Once you grasp the basics of Docker it will be so much easier for you to understand things like Kubernetes, service meshes and pretty much any other cloud-native tool works. You can think of this guide as the first practical guide to learning about cloud-native.
Read more

Beginners guide to gateways and proxies

Have you heard of gateways, proxies, load balancer, API gateways? This article explains what gateways are, what is their purpose and how they work with practical examples
Read more

Deploying and Operating Multiple Disparate Istio Meshes on a Single Kubernetes Cluster

The rising demand for hard kubernetes multitenancy, either for customers of a SaaS offering or to support disparate internal teams within an organization, coupled with mass adoption of service-meshes (Istio being the more popular of the choices), we are starting to notice a need for supporting multiple meshes within a single Kubernetes cluster.
Read more

Managing service meshes with Meshery

If you ever wanted to quickly evaluate service meshes and even run a couple of performace tests, you might want to look into Meshery. Meshery is a multi-service mesh management plane for lifecycle, config and performance management of service meshes.
Read more

What is circuit breaking?

A circuit breaker is an automatically operated electrical switch designed to protect an electrical circuit from damage caused by excess current from an overload or short circuit. How does that apply to your services and Istio service mesh?
Read more

Build and push your Docker images using Github Actions

This article explains how to build a simple CI using Github Actions. It involves triggering the workflow only on version file changes, parsing the image names and then building, tagging and pushing the images to the Docker registry.
Read more

Kubernetes and Istio service mesh workshop materials

In the past year, I have done multiple workshops on Kubernetes, Istio and cloud-native development. As part of my workshops I usually start with theory and explain the concepts using slides, show some demos, but then it's on you, the participant to try out the technology yourself.
Read more

Build your own Netlify-like deployment for React app using multi-container Kubernetes pod

Ever wondered how you can build your own system that automatically updates your React app each time you push changes to the repository where your app is hosted? In this article I explain how you can use build a Netlify-like deployment for React apps using a multi-container Kubernetes pod.
Read more

Six exciting enhancements in Istio 1.4.0

Istio 1.4.0 was released on November 14th and it came with a lot of new features and enhancements. In this article I go through my favorite six improvements, including the new and simple way of installing Istio and opening dashboards.
Read more

Setting up SSL certificates with Istio Gateway - Part 1

SSL certificates are a must these days. They helps protect the data being sent between the server and the client by encrypting it, which gives your website more credibility. In this blog post I will explore a couple of different ways you can obtain SSL certificates and configure the Istio Gateway to use them.
Read more

The Basics - Fallacies of Distributed Systems

The fallacies of distributed computing or distributed system are a collection of eight statements made by [L. Peter Deutsch](https://en.wikipedia.org/wiki/L._Peter_Deutsch) and others at Sun Microsystems about false assumptions people new to developing distributed applications make. Here's the list of 8 fallacies of distributed systems
Read more

The Basics - CAP Theorem Explained

The CAP theorem, also named Brewer's theorem after computer scientist Eric Brewer, states that it is impossible for a distributed system to simultaneously provide more than two out of the following three guarantees - consistency, high availability, and partition tolerance.
Read more

Master the Kubernetes CLI (kubectl) - Cheatsheet

This Kubernetes CLI (kubectl) cheatsheet contains the most common commands you will use when working with Kubernetes clusters and Kubernetes resources. If you're working with Kubernetes on daily basis or if you're just learning about Kubernetes you will run into a set of commands that are used often than the other commands. The ones used more often are also usually easy to remember (especially if you're typing them out multiple times a day).
Read more

Minikube Basics and How to Get Started with Kubernetes

This post and accompanying video guides you through the Minikube installation process. It explains and introduces a couple of essential Minikube commands you can use to work with your Kubernetes cluster, and shows you how to access your applications inside the cluster when using Minikube.
Read more

5 Tips to Be More Productive with Kubernetes

I like to read and see how people set up their environments and any tools, tips, and tricks they use to be more productive when working with Kuberentes and Istio. What follows is a collection of 5 tips and tools that I use daily and I think it makes me be more productive with Kuberentes and Istio.
Read more

What are sticky sessions and how to configure them with Istio?

The idea behind sticky sessions is to route the requests for a particular session to the same endpoint that served the first request. That way to can associate a service instance with the caller, based on HTTP headers or cookies. You might want to use sticky sessions if your service is doing an expensive operation on first request, but later caching the value. That way, if the same user makes the request, the expensive operation will not be performed and value from the cache will be used.
Read more

Debugging Kubernetes applications using Istio

This article explains how you can use Istio in combination with ngrok to debug a service running locally on your machine while the production version of the service is running in the cluster
Read more

Kubernetes Ingress and Istio Gateway Resource

By default, any service running inside the service mesh is not automatically exposed outside of the cluster which means that we can’t get to it from the public Internet. Similarly, services within the mesh don’t have access to anything running outside of the cluster either.
Read more

Zero Downtime Releases using Kubernetes and Istio

The idea behind zero downtime release is to release a new version of the service, without affecting any users — i.e., users don’t even know when a new version of the service is released. A practical example would be if you have a website running, how can you can you release a new version without taking the site down?
Read more

Traffic Mirroring with Istio Service Mesh

In addition to more “traditional” traffic routing between different service versions, that can be based on a variety of incoming requests properties, such as portions of the URL, header values, request method, etc., Istio also supports traffic mirroring.
Read more

Expose a Kubernetes service on your own custom domain

You have finally deployed your app to Kubernetes and you bought a cool domain name — ever wondered how to point your cool domain like www.mydomain.com, but cooler, to an application running inside Kubernetes? Well, read on and I’ll try to explain how to do just that!
Read more