Slide 1

Slide 1 text

Kubernetes ist so viel mehr als ein Container-Orchestrierer Mastering Kubernetes 2021 @LeanderReimer #qaware #CloudNativeNerd

Slide 2

Slide 2 text

Mario-Leander Reimer Principal Software Architect @LeanderReimer #cloudnativenerd #qaware

Slide 3

Slide 3 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Quellcode und Demos 3 https://github.com/lreimer/k8s-experts-day

Slide 4

Slide 4 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Anno 2016 … 4 K be ne es 101 a d un | C e E 1 | c t ‘ n ☕ @L R 1 https://github.com/qaware/kubepad https://speakerdeck.com/lreimer/kubernetes-101-and-fun

Slide 5

Slide 5 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Das Kubernetes ABC 5 Deployment Service Replica Set 
 Pod Container Container Labels: Port Volume Con fi gMap apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: LoadBalancer ports: - port: 80 protocol: TCP selector: app: nginx apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx environment: integration spec: containers: - name: nginx image: nginx:1.19.4-alpine ports: - containerPort: 80

Slide 6

Slide 6 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 6 5:38 PM - 24. Februar 2019 10:04 PM - 27. November 2017

Slide 7

Slide 7 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Kubernetes ist eine fl exibel erweiterbare Platform mit zahlreichen APIs und SPIs die deklarativ aber auch programmatisch genutzt werden können um neue Abstraktionen und eigene Erweiterungen zu realisieren. 7

Slide 8

Slide 8 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Unser Fahrplan für heute • DRY! Declarative Management of K8s Objects with Kustomize • Continuous Everything mit Kubernetes • Wege zur Nutzung des Kubernetes APIs • Erweiterung des Kubernetes APIs mit Custom Resources • Das Operator Pattern: Entwicklung von Custom Controllern 8

Slide 9

Slide 9 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Don’t repeat yourself! • Kustomize: Kubernetes Native Con fi guration management. • A template-free way to customize your application con fi guration • Reduziert die Redundanz in Umgebungs- abhängigen Kon fi gurationen • Wird seit v1.15 ab Werk von kubectl per apply -k unterstützt • https://kustomize.io 9

Slide 10

Slide 10 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Breakout Session um 13:15 
 
 Imperative Management of K8s Objects with Pulumi 10

Slide 11

Slide 11 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Continuous Testing the Kubernetes Way • Ausgangs-Situation: High-Level Tests wie Performance, Security oder Acceptance Tests werden zu spät und zu selten ausgeführt • Integration und Ausführung der Tests als fester Bestandteil der CI Pipelines führt zu langen Feedback-Zyklen • Lösung: kontinuierliches Ausführen der Tests in der Integrations- oder QA- Umgebung mit Kubernetes Boardmitteln • Einfache Kombination aus Kubernetes Primitives mit Open Source Bausteinen • Performance: Pod, Service, CronJob, Con fi gMap + Grafana, In fl uxDB, K6 • Security: Pod, Service, Job, CronJob, Con fi gMap + ZED Attack Proxy 11

Slide 12

Slide 12 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Wege zur Nutzung des Kubernetes APIs • Das Kubernetes API erlaubt das Abfragen, Verändern und Löschen aller bekannten Kubernetes Objekte • Registrieren von Watchern auf Change Events (ADD, MOFIFY, DELETE) sind ein mächtiges Werkzeug für Custom Logik und Erweiterungen • https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/ • 3 Zugriffswege: kubectl, REST API und programmatisch • Kubernetes stellt zahlreiche o ff i zielle Client Bibliotheken bereit, u.A. für Go, Java, Python, JavaScript, … 12

Slide 13

Slide 13 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Kubernetes API Erweiterung mit Custom Resources • Nutzer-de fi nierte Erweiterung des Kubernetes APIs • Möglichkeit zur Abstraktion komplexer Konstrukte und Konzepte • De fi nition erfolgt rein deklarativ über CustomResourceDefinitions • Struktur De fi nition erfolgt als OpenAPI v3.0 Validation Schema • Default Support vieler API Features: CRUD, Watch, Discovery, json- patch, merge-patch, Admission Webhooks, Metadata, RBAC, … • Versionierung und Konvertierung per Webhook ist möglich 13

Slide 14

Slide 14 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 14 apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: LoadBalancer ports: - port: 80 protocol: TCP selector: app: nginx apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx environment: integration spec: containers: - name: nginx image: nginx:1.19.4-alpine ports: - containerPort: 80 # probe definitions # resource constraints # volumes and mounts apiVersion: k8s.qaware.de/v1alpha1 kind: Microservice metadata: name: microservice-example labels: app: nginx spec: image: nginx:1.19.4-alpine replicas: 2 serviceType: LoadBalancer ports: - 80 + =

Slide 15

Slide 15 text

// TechEx Day —> Go for Operations // @LeanderReimer #cloudnativenerd #qaware 15 Operator. - Do stuff to my Kubernetes.

Slide 16

Slide 16 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Was sind Operators? • Operators sind kodi fi zierte Ops Prozeduren! • Der Weg zu Zero-Ops: Intelligente und Anti-Fragile Infrastruktur und Applikationen. Auto-updating, self-monitoring and self-healing. • Das Operator Pattern ist im Cloud-native Universum mittlerweile weit verbreitet. Beispiele: OKD, Sealed Secrets, Kube Monkey, Weave Flux, CockroachDB, Kafka, … • Viele Wege zum Operator: Plain Java, GraalVM, Quarkus Framework, Operator SDK oder deklarativ mit Kudo 16

Slide 17

Slide 17 text

// Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21 Kubernetes Operators Explained 17 https://github.com/lreimer/graal-operators https://github.com/lreimer/go-for-operations

Slide 18

Slide 18 text

Mario-Leander Reimer Principal Software Architect, QAware GmbH [email protected] https://www.qaware.de https://speakerdeck.com/lreimer/ https://github.com/lreimer/ &