Posts by Year

2021

Endpoint monitoring with Prometheus and Blackbox Exporter

I am working on the migration of the CaaS (Cloudify as a Service) solution to Kubernetes (EKS), which includes monitoring of multiple critical endpoints with Prometheus/Grafana.

I will describe in this post how to do it using Prometheus Operator/Grafana and BlackBox exporter

Certified Kubernetes Administrator (CKA) Exercises, Network Policy, Namespace

I started preparation for the CKA Kubernetes exam. In this series, I will share some exercises I find useful during my preparation in order to help you better prepare for the CKA exam. I will gather all exercises in my github account, clone this repo to get all exercises at once.

This post with more advanced exercises for Network Policy and based on application with multiple tiers and separated by namespaces.

Certified Kubernetes Administrator (CKA) Exercises, Network Policy

I started preparation for the CKA Kubernetes exam. In this series, I will share some exercises I find useful during my preparation in order to help you better prepare for the CKA exam. I will gather all exercises in my github account, clone this repo to get all exercises at once.

This post with exercises for Network Policy and based on example of 3 tier application which deployed to same namespace.

Secure traffic to your application with Kubernetes and cert-manager

I am working on the creation of the Production Kubernetes (EKS) cluster with all needed mechanisms for our SaaS, including the TLS certificates issuing for secure communication to and within the k8s cluster.

In this tutorial, I will show how to secure external and internal traffic coming to your application on the Kubernetes cluster by issuing the TLS certificates with the Cert-Manager.

Back to top ↑

2020

Simple Backup for Jenkins on Kubernetes

I am building a new CI/CD pipeline based on Kubernetes and Jenkins. Recently I was dealing with the existent backup mechanism for Jenkins which stopped to work and I was in need of another solution. In this post, I will share my solution.

Running Workflows on windows with Jenkins pipeline and Kubernetes

I am building a new CI/CD pipeline based on Kubernetes and Jenkins. Recently working on one of the workflows I was in need to build artifacts (executables) on windows, and you can run pods(containers) with windows based images only on windows worker nodes. I will share my experience in this post about how to add windows worker nodes to your EKS cluster and then run windows workflows on the top of it.

Perfect PR process on Github with Jenkins CI, multi-branch pipeline, and autostatus plugin

I am building a new CI/CD pipeline based on Kubernetes and Jenkins, I am also migrating jobs from CircleCi to Jenkins and one of the things I liked in CircleCI is the status returned to Pull request on Github for every stage of the pipeline.

This is how it looks like

As you can see for each stage: build / build-rpm / docs / size / test CircleCI returns status, meaning status per stage.

Looks good, but how can you implement this kind of behavior in Jenkins with the multibranch pipeline?

Struggling to find the answer to these questions I came up with this solution, which I will showcase in this post.

Back to top ↑

2017

Back to top ↑

2016

Preventing lock of table during migration using LHM (Large Hadron Migrator)

Problem definition

Running migration which adds column to a table which has a couple million of records may be problematic, because of lock of this table during migration. Let’s say it not only may be problematic - it was problematic, because of this problem our server was down for a couple of minutes and SQL server was restarted, so to solve this problem we using ‘LHM’ gem - Large Hadron Migrator

Cache expiration by custom fields

I recently worked on the performance issue, which was solved by caching and I will describe below example of the solution which I came to.

Back to top ↑

2015

Splitting your app into smaller apps using RabbitMQ

After many years of development, we realized our app had become too complex, causing development, testing and debugging to be much harder. We decided to do something about it and the first step needed to solve this problem was splitting our app into smaller apps—starting with extracting the messaging mailer, which is responsible for sending all our messages to clients as a separate app. For this purpose, RabbitMQ was chosen as a broker.

Back to top ↑