<!-- .slide: data-background="" -->
# Operatoren in Rust

[tox.ninja/cl23](https://tox.ninja/cl23)
<!-- .element: style="float: right" -->
# 🏳️🌈 <!-- .element: style="float: left; margin: 40px" -->
---
<!-- .slide: data-background="#1A237E" -->

<!-- .element: style="float: right; padding-right:0px; padding-top:0px" -->
### Enno Boland
* RZ der **Uni Kassel** (Unix, Linux)
* Ausflüge in die **Software
Entwicklung**
* Seit **2016** Freiberufler
* **2018** Kubernetes DevOps
* Genosse bei **[;DenktMit](https://denktmit.de)**

<!-- .element: style="position: absolute; top: 210px; right:80px; z-index: -1" -->
<aside class="notes">
</aside>
---
* <!-- .element: class="frament" style="list-style-type: '🦀 '" -->
Rust
* <!-- .element: class="frament" style="list-style-type: '🔥 '" -->
Operatoren
* <!-- .element: class="frament" style="list-style-type: '🦄 '" -->
My Little Rust Operator
---
# Warum?
---
* <!-- .element: class="fragment" style="list-style-type: '❓ '" --> Kubernetes Operator
* <!-- .element: class="fragment" style="list-style-type: '❓ '" --> C++
* <!-- .element: class="fragment" style="list-style-type: '❓ '" --> Golang
* <!-- .element: class="fragment" style="list-style-type: '❓ '" --> Rust
---
## Rust

----
## Disclaimer
* <!-- .element: class="fragment" -->
Programmiersprachen-Nerd
* <!-- .element: class="fragment" -->
Faible für *Rust*
* <!-- .element: class="fragment" -->
Nutzt das Tool, was passt
* <!-- .element: class="fragment" -->
Vielleicht wandert einfach Rust in eure Toolbox
----
## Was ist Rust?
- Moderne Programmiersprache
- Fast, Reliable, Productive - Pick Three
- Ursprünglich von Mozilla für Browserentwicklung entworfen.
----

----
## Nachteile
- Lange Compile-Zeiten
- Sehr verboser Source
- Steile Lernkurve
<aside class="notes">
</aside>
----
## Vorteile von Rust
- Speichersicher
- Kontrolle über die Laufzeit
- Tooling
- Portabel

[crates.io](https://crates.io)
----

[crates.io/crates/kube](https://crates.io/crates/kube)
----
# 💻
<aside class="notes">
01_cpp-example
02_rust-example
03_go-example
</aside>
----
## 💀 Pointer Aliasing 💀
----
<!-- .slide: data-transition="slide-in fade-out" -->

----
<!-- .slide: data-transition="fade-in slide-out" -->

---
# ❤️🔥 Operatoren ❤️🔥
<small class="fragment">
Was wir früher mit Bash machten...
</small>
----
## Was sind Kubernetes-Operatoren?
- Erweitern die Fähigkeiten von Kubernetes und automatisieren komplexe Aufgaben
- Bieten standartisierte Interfaces (Custom Resource Definitions - CRD)
----
## Kubernetes-Operatoren
- Prometheus-Operator
- PostgresSQL-Operator
- cert-manager
----
## Wie funktionieren Kubernetes-Operatoren?
1. Überwacht Cluster Zustand
2. Löst bei definierten Zustandsänderungen eine Aktion aus
----

---

## My Little Rust Operator
----
* <!-- .element: class="" -->
Sollte dumm genug sein, um nicht genutzt zu werden
* <!-- .element: class="fragment" -->
Schlau genug, um sinnvoll zu sein
* <!-- .element: class="fragment" -->
"neu"
----
## NodeScript Operator
----
## NodeScript Operator
* führt ein Shell Script auf jedem Node aus
* Nützlich:
* `iptables` Setup
* http-only registries
* Cluster Initialisierung
* Dumm:
* Zweckentfremdet DaemonSets
* Riesige Footgun
----

----
# 💻
<aside class="notes">
04_nodescript-operator
</aside>
---
## Zusammengefasst...
* <!-- .element: class="" style="list-style-type: '🎉 '" --> Kubernetes Operatoren in Rust sind möglich
* <!-- .element: class="" style="list-style-type: '👍 '" -->Autogenerierung von CRDs
* <!-- .element: class="" style="list-style-type: '📠 '" -->Effiziente API
---
# Fragen
----
* [ @Gottox@chaos.social](https://chaos.social/@Gottox)
* [ Gottox
](http://github.com/Gottox)
* [;DenktMit](https://denktmit.de)
<!-- .element: style="float: left" -->

https://tox.ninja/cl23
<!-- .element: style="float: right" -->
{"title":"Operatoren in Rust","breaks":true,"slideOptions":"{\"fragments\":false,\"transition\":\"slide\",\"center\":true}","metaMigratedAt":"2023-06-20T18:27:01.081Z","metaMigratedFrom":"YAML","description":"tox.ninja/cl23","contributors":"[{\"id\":\"02fe341f-465d-4aed-a017-56ea7ba11229\",\"add\":11100,\"del\":6086}]"}