<!-- .slide: data-background="" --> # Operatoren in Rust ![](https://api.qrserver.com/v1/create-qr-code/?size=150x150&margin=10&data=https://github.com/Gottox/talk-cloudland-2023 "title") [tox.ninja/cl23](https://tox.ninja/cl23) <!-- .element: style="float: right" --> # 🏳️‍🌈 <!-- .element: style="float: left; margin: 40px" --> --- <!-- .slide: data-background="#1A237E" --> ![](https://hackmd.io/_uploads/HJgTPXeu3.png =x300) <!-- .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)** ![](https://hackmd.io/_uploads/ryexAZCDh.png =x300) <!-- .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 ![](https://hackmd.io/_uploads/HJNOMvyO2.png =x500) ---- ## 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. ---- ![](https://hackmd.io/_uploads/ryxogwy_3.png) ---- ## Nachteile - Lange Compile-Zeiten - Sehr verboser Source - Steile Lernkurve <aside class="notes"> </aside> ---- ## Vorteile von Rust - Speichersicher - Kontrolle über die Laufzeit - Tooling - Portabel ![](https://hackmd.io/_uploads/HJY0tmxOn.png) [crates.io](https://crates.io) ---- ![](https://hackmd.io/_uploads/HyJcimlun.png) [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" --> ![](https://hackmd.io/_uploads/rJRITSxdh.png) ---- <!-- .slide: data-transition="fade-in slide-out" --> ![](https://hackmd.io/_uploads/SJ8vABgO3.png) --- # ❤️‍🔥 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 ---- ![](https://hackmd.io/_uploads/SkF5pQRvn.png =800x) --- ![](https://hackmd.io/_uploads/rkYwDYy_h.png =700x) ## 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 ---- ![](https://hackmd.io/_uploads/B1mvWBADn.png) ---- # 💻 <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 ---- * [![](https://hackmd.io/_uploads/BJrUQwldn.png =x30) @Gottox@chaos.social](https://chaos.social/@Gottox) * [![](https://hackmd.io/_uploads/H1dhGPedh.png =x30) Gottox ](http://github.com/Gottox) * [;DenktMit](https://denktmit.de) <!-- .element: style="float: left" --> ![image alt](https://api.qrserver.com/v1/create-qr-code/?size=150x150&margin=10&data=https://github.com/Gottox/talk-cloudland-2023) 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}]"}
    223 views