Viktor Farcic

Principal DevOps Consultant at CloudBees


Making Resilient, Self-Adaptive, And Autonomous Kubernetes Clusters
Cluster Autoscaler
Horizontal Autoscaler
Custom metrics

Your rating:

What do you do after you learn Kubernetes, after you deploy your applications to a production cluster, and after you fully automate continuous deployment pipeline? You work on making your cluster self-sufficient by adding monitoring, alerting, logging, and auto-scaling.

The fact that we can run (almost) anything in Kubernetes and that it will do its best to make it fault tolerant and highly available, does not mean that our applications and clusters are bulletproof. We need to monitor the cluster, and we need alerts that will notify us of potential issues. When we do discover that there is a problem, we need to be able to query metrics and logs of the whole system. We can fix an issue only once we know what the root cause is. In highly dynamic distributed systems like Kubernetes, that is not as easy as it looks.

Further on, we need to learn how to scale (and de-scale) everything. The number of Pods of an application should change over time to accommodate fluctuations in traffic and demand. Nodes should scale as well to fulfill the needs of our applications.

Kubernetes already has the tools that provide metrics and visibility into logs. It allows us to create auto-scaling rules. Yet, we might discover that Kuberentes alone is not enough and that we might need to extend our system with additional processes and tools. We'll discuss how to make your clusters and applications truly dynamic and resilient and that they require minimal manual involvement. We'll try to make our system self-adaptive.


Continuous Deployment To Kubernetes
Wednesday 9:00 - 17:00
Continuous delivery
Continuous deployment
Your rating:

Kubernetes is becoming a de-facto standard for container orchestration. Jenkins is already the standard for continuous deployment. How can we combine both and get the most out of both worlds?

We'll discuss continuous deployment pipeline that delivers new releases on every commit. We'll explore how to ensure that the release is safe to deploy, how to leverage Jenkins and Kubernetes features to speed up the process, and how to guarantee that new versions are running in production without risk, with zero-downtime, and without human intervention.

Workshop Prerequisites

A fully operational Kubernetes cluster with NGINX Ingress controller and a default StorageClass. The following Kubernetes platforms were tested for this course. Please note that Gists are provided in case you need to create a cluster specific for this course.

If you are a Windows user, please use GitBash as a terminal for running the commands.

If you are running a local Kubernetes cluster with Docker For Mac/Windows, please install Vagrant (if you do not have it already).

Besides the cluster, you’ll need kubectl ( ).

If you have problems fulfilling the requirements, please contact me through DevOps20 ( Slack (my user is vfarcic) or send me an email to


Viktor Farcic is a Principal Consultant at CloudBees, a member of the Docker Captains group, and published author.

He coded using a plethora of languages starting with Pascal (yes, he is old), Basic (before it got Visual prefix), ASP (before it got .Net suffix), C, C++, Perl, Python, ASP.Net, Visual Basic, C#, JavaScript, Java, Scala, etc. He never worked with Fortran. His current favorite is Go.

His big passions are DevOps, Microservices, Continuous Integration, Delivery and Deployment (CI/CD) and Test-Driven Development (TDD).

He often speaks at community gatherings and conferences.

He published The DevOps Toolkit Series and Test-Driven Java Development.

His random thoughts and tutorials can be found in his blog

Create account

You need an account to save events or rate talks.

Already have an account? Sign in

Sign in

Sign in to save events or rate talks.