1 of 19

Bootiful Kubernetes

Operators

Tiffany Jernigan �Senior Developer Advocate, www.tiffanyfay.dev�

Ties van de Ven �Software Quality Expert @Alliander www.tiesvandeven.nl

sli.do #geecon

1

2 of 19

Bootiful Kubernetes Operators

Tiffany Jernigan �Senior Developer Advocate, www.tiffanyfay.dev�

Ties van de Ven �Software Quality Expert @Alliander

2

3 of 19

Who We Are

​

​

​

​

​

�

Tiffany Jernigan

Senior Developer Advocate�Open to Hire

www.tiffanyfay.dev

X (Twitter): @tiffanyfayj�linkedin.com/in/tiffanyfayj

​

​

​

​

​

​

�

Ties van de Ven

Software Quality Expert �Alliander

www.tiesvandeven.nl �X (Twitter): @ties_ven�linkedin.com/in/tiesvandeven

​

3

4 of 19

Agenda

  • What is an Operator?
  • How does Kubernetes work?
  • Custom operators
  • Building our own operator

4

5 of 19

The Operator pattern

5

6 of 19

High level overview

6

7 of 19

Control Loop

��

Controller

�SS

19�

Desired state

+

-

Input

Measured �error

Measured �temperature

Current state

�S��

​

​

​

​

​

​

​

S

24�

Output

7

8 of 19

Built-in Kubernetes Controllers

  • Deployment
  • ReplicaSet
  • DaemonSet
  • StatefulSet
  • Job
  • CronJob

8

9 of 19

Kubernetes speak

apiVersion: batch/v1

kind: CronJob

metadata:

name: hello

spec:

schedule: "* * * * *"

…

9

10 of 19

Kubernetes Controller Pattern

​

apiVersion: batch/v1

kind: CronJob

metadata:

name: hello

spec:

schedule: "* * * * *"

Control Plane

API Server

etcd (DB)

scheduler

controller manager

CronJobController

Requeue after error

11 of 19

Operator chaining

CronJobController

JobController

PodController

Kubernetes API

11

12 of 19

Custom Operators

https://spring.io/blog/2021/11/19/get-to-know-a-kubernetes-operator

12

13 of 19

Why write your own operator?

​

​

I want some functionality

Can I do this in Kubernetes?

Write your own operator

Do not write your own operator

Is there an off the shelf operator?

yes

no

yes

no

13

14 of 19

Why write your own operator?

  • Automating (complex) tasks for teams
  • Credential management

​

​

14

15 of 19

Pitfalls

  • Out of sync
  • Ownership

15

16 of 19

Building an Operator

Examples of Operator frameworks/libraries

​

​

Or just use a REST client��https://kubernetes.io/docs/reference/using-api/client-libraries/

Officially supported:

  • C
  • dotnet
  • Go
  • Haskell
  • Java
  • JavaScript
  • Perl
  • Python
  • Ruby

​

16

17 of 19

Building our own operator

17

18 of 19

What will we need

  • Custom Resource Definition (CRD)
  • Controller
    • Reconciler
  • Role bindings
  • Deployment

18

19 of 19

https://via.vmw.com/bootiful-k8s-operators

Thank You

©2023 VMware, Inc.