Juliacon 2024

Kuber.jl: An OpenAPI based Kubernetes client for Julia
07-12, 15:00–15:30 (Europe/Amsterdam), For Loop (3.2)

Kubernetes is the most widely used open-source container orchestration system. Kubernetes is used by businesses, big and small the world over to deploy, scale and manage their containers. Kuber.jl is a julia client library for Kubernetes. In this talk, I will present a brief overview of the basic capabilities of Kuber.jl. We will then dive into some advanced topics such as working with Custom Resource Definitions and generating the client with OpenAPI.


Kubernetes greatly simplifies the work of deploying and managing micro services spread across many physical or virtual machines. Kubernetes can run on-premise or on public Cloud platforms like Google cloud, Amazon AWS and Microsoft Azure. Kubernetes also lets you define and work with various other resources apart from the micro service containers themselves. These include storage devices, load balancers, configuration files, secret tokens etc. All of these resources as well as custom defined resources can be deployed and managed with Kuber.jl.

The Kuber.jl methods are designed following a pattern of verbs and entities. Entities are Kubernetes resources that are identified by their class and by either their name or a selector pattern. Verbs are methods that act on these entities. Verbs include create, update, get and so on. Kuber.jl also leverages the watch API of Kubernetes. This lets us run a Julia closure on notifications from Kubernetes. Using this powerful API we can implement various monitoring and management services with Julia code. In addition, verbs can be passed to the watch API to process the notification stream in various ways.

In this talk I will go over some of the basics of Kuber.jl before delving into the advanced features. I will demonstrate the deployment of a web application to a local Kubernetes cluster. We will go over the details of working with namespaces, checking for pod and load balancer readiness and ways to update a deployment. I will demonstrate how we can generate the client code of Kuber.jl using the OpenAPI generator and some Julia scripts that we provide in the Kuber.jl GitHub repository. Using these we can modify the client if we ever need to deal with Custom Kubernetes resources.

See also:

Hello! I am Nishanth. I work in JuliaHub where I develop Cloud based solutions for hosted Julia apps. I also make occasional fixes and updates to the Julia Registrator. In my free time I play guitar and ride my bike.