Do it in code (not YAML)! Unlock power of Kotlin DSL for Kubernetes February, Atlanta, GA 2019 @gamussa @gamussa || #devnexus @devnexus || @confluentincc @confluentinc

3 @gamussa | #devnexus | @confluentinc

Raffle, yay! Follow @gamussa Post some 📸 🖼 🏋 😂 Tag @gamussa Hashtag #devnexus

5 Evolution for YAML in the company Scripts - No YAML Ansible - YAML @gamussa | #devnexus Helm - YAML | ? @confluentinc

#dangerzone! Following slides may cause pain! @gamussa | #devnexus | @confluentinc

7 @gamussa | #devnexus | @confluentinc

8 @gamussa | #devnexus | @confluentinc

9 @gamussa | #devnexus | @confluentinc

10 @gamussa | #devnexus | @confluentinc

12 BASH ??? YAML @gamussa | #devnexus | @confluentinc

13 Why yaml? @gamussa | #devnexus | @confluentinc

14 Why, yaml? Why? ● Initial Release in 2001 ● Originally Yet Another Markup Language ● Repurposed as YAML Ain’t Markup Language ● From Wiki: “commonly used for configuration files” ● End goal is to declare something ● YAML is not going anywhere any time soon 😫 @gamussa | #devnexus | @confluentinc

15 Types? What are you talking about? @gamussa | #devnexus | @confluentinc

16 @gamussa | #devnexus | @confluentinc

17 Ok. There is a schema tho https://json-schema.org/ @gamussa | #devnexus | @confluentinc

18 @gamussa | #devnexus | @confluentinc

Yaml is ok… for small things

20 @gamussa | #devnexus | @confluentinc

21 @gamussa | #devnexus | @confluentinc

22 if «everything as code» Why I do write so much yaml? @gamussa | #devnexus | @confluentinc

23 Evolution for YAML in the company Ansible - YAML sh and make - No YAML @gamussa | #devnexus Helm - YAML | @confluentinc Kotlin DSL - No YAML

24 Let’s talk Kubernetes @gamussa | #devnexus | @confluentinc

KUBERNETES @gamussa | #devnexus | @confluentinc

26 Kubernetes Architecture Actually JSON image source: Janakiram MSV

27 @gamussa | #devnexus | @confluentinc

28 🤔 THINGS TO THINK ABOUT YAML FOR K8S AT SCALE ●How to avoid copy-pasting? ●How to provide common primitives? ●How to allow customization for teams? ●How to test incremental changes? ●Some tools to analyze current state of clusters @gamussa | #devnexus | @confluentinc

29 INGRESS EXAMPLE @gamussa | #devnexus | @confluentinc

30 KOTLIN DSL FOR KUBERNETES @gamussa | #devnexus | @confluentinc

31 DSL generation ●Generates DSLs from fabric8 types ●Generates fabric8 types from deployed CRDs 😅 @gamussa | #devnexus | @confluentinc

32 Confluent operator architecture @gamussa | #devnexus | @confluentinc

33 a custom Kubernetes controller PODS API Server StatefulSets PVs Controllers & Custom Controllers Custom Resources Master Node Worker Node | Applications run on Kubernetes ● Applications use objects like StatefulSets, Configmaps, PVs ● Custom Controllers create custom resources that provide unique application functionality: ConfigMaps Scheduler @gamussa ● Nodes and pods are where #devnexus | @confluentinc ○ Upgrades, elasticity, Kafka Operational Logic

34 KOTLIN POWER: BUILDERS @gamussa | #devnexus | @confluentinc

35 KOTLIN POWER: EXTENSION FUNCTIONS @gamussa | #devnexus | @confluentinc

36 KOTLIN POWER: EXTENSION FUNCTIONS @gamussa | #devnexus | @confluentinc

https://gamov.dev/devnexus-dsl-2020

https://github.com/fkorotkov/k8s-kotlin-dsl

I GUESS YOU FOLKS ARE NOT READY FOR THIS YET 39 BUT YOUR KIDS ARE GONNA LOVE IT @gamussa | #devnexus | @confluentinc

Thanks! @gamussa viktor@confluent.io https://slackpass.io/confluentcommunity #kubernetes @gamussa | @ #devnexus | @confluentinc

41