Slide 1

Slide 1 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Building Kubernetes Operators in Rust: A New Operator SDK Plugin Aykut M. Bulgu Principal Software Engineer @ Red Hat @SystemCraftsman

Slide 2

Slide 2 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com About Me #oc apply -f aykutbulgu.yaml apiVersion: redhat/v7 kind: Principal Software Engineer metadata: name: Aykut Bulgu namespace: Red Hat Ansible Engineering (previously Kafka) annotations: twitter: @SystemCraftsman bsky: @SystemCraftsman.com email: - [email protected] - [email protected] ex-organizer: Software Craftsmanship Turkey founder: System Craftsman labels: married: yes children: 2 interests: - basketball/nba/rockets - gamification - stoicism spec: replicas: 1 containers: - image: aykut:latest

Slide 3

Slide 3 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Schedule ● Operators ● Developing Operators β—‹ Kubebuilder β—‹ Operator SDK ● Why Not Rust? ● Why Rust? ● Developing Operators with Rust β—‹ Kube-rs β—‹ Rust Operator SDK Plugin ● Demo

Slide 4

Slide 4 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Operators

Slide 5

Slide 5 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com The Control Loop In robotics and automation, a control loop is a non-terminating loop that regulates the state of a system. In Kubernetes, controllers are control loops that watch the state of your cluster, then make or request changes where needed.

Slide 6

Slide 6 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com The Controller Pattern Observe Analyze Act

Slide 7

Slide 7 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com The Operator Pattern https://kubernetes.io/docs/concepts/extend-kubernetes/operator/

Slide 8

Slide 8 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com OperatorHub.io

Slide 9

Slide 9 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com An example: Strimzi Kafka Operator

Slide 10

Slide 10 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Developing Operators

Slide 11

Slide 11 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Ways of Developing Operators ● Calling the API directly => πŸ₯·πŸ₯·πŸ₯· ● Using the Clients => πŸ₯·πŸ₯· ● Using Operator Development Frameworks => πŸ₯·

Slide 12

Slide 12 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Calling the API (Pure Bash)

Slide 13

Slide 13 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Kubernetes Clients

Slide 14

Slide 14 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Operator Development Frameworks ● Kubebuilder ● Operator SDK ● Metacontroller ● Charmed Operator SDK ● KubeOps

Slide 15

Slide 15 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Kubebuilder

Slide 16

Slide 16 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Kubebuilder $ kubebuilder init … Kubebuilder is a framework for building Kubernetes APIs using custom resource definitions (CRDs).

Slide 17

Slide 17 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Kubebuilder as a Library https://github.com/kubernetes-sigs/kubebuilder

Slide 18

Slide 18 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Operator SDK

Slide 19

Slide 19 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Operator SDK

Slide 20

Slide 20 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Operator SDK ● Ansible ● Helm ● Go ● Java (Quarkus) Java Operator SDK (with Quarkus Extension)

Slide 21

Slide 21 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Operator SDK $ operator-sdk init … … --plugins helm … --plugins ansible … --plugins quarkus

Slide 22

Slide 22 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Why Not Rust?

Slide 23

Slide 23 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Why Rust?

Slide 24

Slide 24 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Rust is Fast! ● Zero-cost abstractions: Rust compiles high-level constructs down to efficient machine code without runtime overhead. ● No garbage collector: Unlike Go, Rust has no GC pauses. This is critical in latency-sensitive workloads like operators or controllers managing many custom resources. ● Predictable performance: No hidden allocations, background threads, or GC behavior makes Rust predictable in both throughput and latency.

Slide 25

Slide 25 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Rust is Safe ● Ownership model: Eliminates entire classes of bugs like use-after-free, null pointer dereferencing, and data races at compile time. ● Concurrency safety: Thread safety is enforced by the type system, making it harder to write racy code even in multithreaded operators. ● Immutable-by-default: Encourages safe patterns by default, reducing unexpected side effects during reconciliations or retries.

Slide 26

Slide 26 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Rust is Sane ● Strong static typing + pattern matching: Leads to clearer, more expressive logic in state machines like reconcile loops. ● Excellent tooling: cargo, clippy, rust-analyzer, and fmt provide a top-tier developer experience out of the box. ● Compiler as a mentor: The Rust compiler guides developers toward better code. The errors are verbose but educational.

Slide 27

Slide 27 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Rust in CNCF

Slide 28

Slide 28 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Developing Operators with Rust

Slide 29

Slide 29 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com kube-rs

Slide 30

Slide 30 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Kube-rs Crates

Slide 31

Slide 31 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Spec and API Access

Slide 32

Slide 32 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Controller and Reconciliation

Slide 33

Slide 33 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Using the Clients => πŸ₯·πŸ₯· Using Operator Development Frameworks => πŸ₯·

Slide 34

Slide 34 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Recalling the Operator SDK ● Ansible ● Helm ● Go ● Java (Quarkus)

Slide 35

Slide 35 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Rust Operator SDK Plugin

Slide 36

Slide 36 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Rust Operator SDK Plugin

Slide 37

Slide 37 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Initializing the Operator

Slide 38

Slide 38 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Creating the API and Reconcilers

Slide 39

Slide 39 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Talk is Cheap, Let’s See the Demo!

Slide 40

Slide 40 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Demo on GitHub

Slide 41

Slide 41 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com What’s Next? ● Moving to Operator SDK org. ● RBAC files ● Release pipeline (artifacts only) ● Webhooks ● … Feel free to contribute!

Slide 42

Slide 42 text

X: @systemcraftsman | πŸ¦‹: @systemcraftsman.com Thank You! Xwitter: @systemcraftsman πŸ¦‹Bluesky: @systemcraftsman.com Email: [email protected] Linkedin: https://www.linkedin.com/in/mabulgu/ Website: https://www.systemcraftsman.com/ GitHub: https://github.com/mabulgu