Alen Komljen

Hi, I'm Alen Komljen, I write this blog and work as a DevOps consultant. I help companies to embrace DevOps.

kubernetes, jenkins, pipeline

Set Up a Jenkins CI/CD pipeline with Kubernetes

Continuous integration and delivery or CI/CD is the most important part of DevOps, and cloud native too. CI/CD connects all the bits together. With access to Kubernetes cluster deploying Jenkins server is easy. Of course thanks to Helm. But, deploying Jenkins server is the easy part. The hard part is creating pipeline which will build, deploy and test your software. The focus of this post is understanding the Jenkins pipeline and what is happening in the background when running on Kubernetes. Deploy Jenkins on Kubernetes This is the easy part as I said at the beginning. Let's install ...

applications, kubernetes, troubleshooting

Troubleshoot applications running on Kubernetes

I'm writing a lot of about Kubernetes for a few months already. The reason for that is that I like the idea of cloud-native apps. There is a huge amount of easily installable apps for Kubernetes out there. One of the biggest resources of "Kube ready" apps is Kubeapps Hub. A week ago, when I submitted the Sematext Docker Agent to the stable charts repo there were 149 apps. At the time of writing, there is already 157 of them. It keeps growing really fast. So, all this is a good thing. But, there is also a small ...

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 a lot of stuff with it. Having a service mesh seemed like an overhead to me. You often have some API which is available only on the internal network. But, this is not the case anymore with modern apps. The API is probably exposed to the Internet as well and you will get a lot of traffic to it. You want more control of the ...

kubernetes, nginx, ingress

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. Create sample app deployment For this lab, I will create two simple web applications based on dockersamples/static-site docker image. ...

kubernetes, helm

Package your 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. I should mention that there is also another interesting tool ksonnet which does 'the same', of course in its own way. I didn't try the ksonnet yet, so I can ...

kubernetes, elasticsearch, operators

Kubernetes Elasticsearch Operator

Just after I wrote a Stateful applications on Kubernetes article which focuses on StatefulSet in general, I started to look into the Kubernetes operators. An operator is basically a custom API object registered as CustomResourceDefinition which enables you to create a custom business logic for operating with 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 than using StatefulSet, Deployment and other resources to create a production ready Elasticsearch cluster on top of Kubernetes. StatefulSet/Deployment or Elasticsearch operator? When I ...