kubernetes, service mesh

Kubernetes Service Mesh

A few months ago my colleague asked me what I think about integrating Linkerd to our new application running on Kubernetes. My first thought was, heck, isn't Kubernetes service and ingress enough? You can do much stuff with it. Having a service mesh seemed like overhead to me. You often have some API which is available only on the internal network. However, this is not the case anymore with modern applications. The API is probably exposed to the Internet as ...

kubernetes, ingress, nginx

Kubernetes Nginx Ingress Controller

Ingress is the built‑in Kubernetes load‑balancing framework for HTTP traffic. With Ingress, you control the routing of external traffic. When running on public clouds like AWS or GKE, the load-balancing feature is available out of the box. You don't need to define Ingress rules. In this post, I will focus on creating Kubernetes Nginx Ingress controller running on Vagrant or any other non-cloud based solution, like bare metal deployments. I deployed my test cluster on Vagrant, with kubeadm. ...

kubernetes, helm

Package Kubernetes Applications with Helm

Writing a bunch of Kubernetes configuration files is not so much fun. For a few containers, you will end up with 10+ yaml files. Maintaining them is only one issue, but running in different environments or using the same files for CI/CD is a nightmare. You can always use some bash tricks to replace some values, but that is a bad practice. Here is where Helm comes into place. In this post, I will show you why Helm is ...

kubernetes, operators, elasticsearch

Kubernetes Elasticsearch Operator

Just after I wrote a Stateful Applications on Kubernetes post which focuses on stateful set in general, I started to look into the Kubernetes operators. An operator is a custom API object registered as Custom Resource Definition or CRD which enables you to create a custom business logic for operating with a particular service, in this case, Elasticsearch. This post will go through Elasticsearch operator in more details to show you why using an operator is probably a better idea ...

kubernetes, kube tips

Kubernetes Tips - Part 3

This post is about supported Kubernetes API versions on your cluster and services port forwarding to your localhost which can be really useful when troubleshooting or testing apps running on Kubernetes. Check other Kubernetes tips articles on my blog by using this tag kube-tips. Kubernetes API Versions If you are familiar with Kubernetes resources config files you already saw the apiVersion field at the beginning of each file. It can be confusing, because you will see a lot of different ...

career, tips, devops

What is DevOps?

I'm a DevOps engineer, and that is how others see my role in the team. But, often nobody in the organization doesn't really know what that means or how to proceed with DevOps. DevOps is often confused with a modern sysadmin, the person who "deploys" the software and helps developers to create environments. DevOps is a methodology on how modern software organizations should do software development. The DevOps team works on automating things by using different tools and ...

kubernetes, kube tips

Kubernetes Tips - Part 2

This post is about writing Kubernetes configuration files with syntax checking and how to run a private Docker images on Kubernetes. Check other Kubernetes tips articles on my blog by using this tag kube-tips. Writing Kubernetes Configuration Files Kubernetes configuration files are pretty complex to write and mostly you will just copy/paste some existing resource and try to manage it to work for a new one. This approach is fine unless you need to add some new configuration options ...

kubernetes, env variables

Kubernetes Environment Variables

When building your application stack to work on Kubernetes, the basic pod configuration is usually done by setting different environment variables. Sometimes you want to configure just a few of them for a particular pod or to define a set of environment variables that can be shared by multiple pods. Later is usually done by creating a ConfigMap as a shared resource. Instead of specifying each environment variable individually we can reference the whole config map. Set Environment Variables To ...

kubernetes, stateful apps

Stateful Applications on Kubernetes

Kubernetes and stateless applications work just out of the box. You can create a replicated application fast. The stateless application doesn't store any data, and simple load balancing does the job when it comes to scaling it. However, if you want to run any application that stores the data somewhere, you care about the order how the application starts or you want a stable hostname and network ID, then we are talking about the stateful applications and in Kubernetes world ...

kubernetes, kube tips

Kubernetes Tips - Part 1

Working with Kubernetes can be hard at the beginning. It is a complex orchestrator and you will probably spend a lot of time dealing with or finding a solution for a particular problem. I do the same, and I decided to write a series of posts which will cover different Kubernetes features. I will try to post at least two tips in each post. You will be able to find all tips using the tag kube-tips. Expose External Service Migrating ...

aws, terraform, spot instances

Terraform and AWS Spot Instances

Terraform is my tool of choice for cloud provisioning. The difference compared to the similar tools for cloud provisioning is that Terraform saves the state. Terraform supports AWS and can provision spot instances also. Spot instances are great to save some money in the cloud. They could be used for any service, but it is really hard to manage stateful services like databases. If you have a stateless service spot instances are a great choice. You need to automate spot ...

career, blogging

A Fresh Start

This is not the first time that I created a personal website, but it is the first time I know what to do with it. I mostly wrote how-to guides, but less about what is the DevOps and why we need it as a process in software development. On this blog, I will write about Infrastructure as a Code, modern DevOps tools, and container technologies, and some other interesting tech related stuff. Why DevOps? DevOps is a process of moving ...