1 of 19

Bootiful Kubernetes

Operators

Tiffany JerniganSenior 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): @tiffanyfayjlinkedin.com/in/tiffanyfayj

Ties van de Ven

Software Quality Expert �Alliander

www.tiesvandeven.nl X (Twitter): @ties_venlinkedin.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.