Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes ist so viel mehr als ein Container-Orchestrierer

Kubernetes ist so viel mehr als ein Container-Orchestrierer

Wer an Kubernetes denkt, sieht erstmal die Features zur Orchestrierung von Containern auf vielen Hosts. Allerdings kann Kubernetes so viel mehr, was sowohl bei Dev- als auch bei Ops-Aufgaben helfen kann.

In diesem Vortrag werden die Fähigkeiten näher beleuchtet, die sonst ein Schattendasein fristen.

M.-Leander Reimer

January 20, 2021
Tweet

More Decks by M.-Leander Reimer

Other Decks in Technology

Transcript

  1. Kubernetes ist so viel mehr als ein Container-Orchestrierer Kubernetes Experts

    Day @LeanderReimer #qaware #CloudNativeNerd #ConCon21 Dev Ops API SPI
  2. // 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
  3. // 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
  4. // 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: <K,V> 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
  5. // 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
  6. // 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
  7. // 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 • Imperative Management of K8s Objects (Teaser) • Continuous Testing mit Kubernetes • Wege zur Nutzung des Kubernetes APIs • Erweiterung des Kubernetes APIs mit Custom Resources • Das Operator Pattern: Entwicklung von Custom Controllern 8
  8. // 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
  9. // 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
  10. // 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
  11. // 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
  12. // 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
  13. // 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 + =
  14. // TechEx Day —> Go for Operations // @LeanderReimer #cloudnativenerd

    #qaware 15 Operator. - Do stuff to my Kubernetes.
  15. // 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
  16. // 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