Continuous Lifecycle | ContainerConf, Januar 2021, Vortrag von Mario-Leander Reimer (@LeanderReimer, Chief Software Architect bei QAware)
=== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ===
Abstract: 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.
Enterprise-level Kubernetes Security mit Open Source Tools - geht das?
Kubernetes ist so viel mehr als ein Container-Orchestrierer
1. Kubernetes ist so viel mehr als ein
Container-Orchestrierer
Kubernetes Experts Day
@LeanderReimer #qaware #CloudNativeNerd #ConCon21
Dev Ops
API SPI
3. // 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
4. // Kubernetes Experts Day // Kubernetes ist so viel mehr als ein Container Orchestrierer // @LeanderReimer #cloudnativenerd #qaware #ConCon21
Anno 2016 …
4
Kubernetes 101
and Fun
| ContainerCon Europe 2016 | created with ☁ and ☕ by @LeanderReimer 1
https://github.com/qaware/kubepad
https://speakerdeck.com/lreimer/kubernetes-101-and-fun
5. // 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
6. // 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
7. // 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
8. // 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
9. // 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
10. // 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
11. // 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
12. // 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
ffi
zielle Client Bibliotheken bereit, u.A. für
Go, Java, Python, JavaScript, …
12
13. // 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
15. // TechEx Day —> Go for Operations // @LeanderReimer #cloudnativenerd #qaware
15
Operator.
- Do stuff to my Kubernetes.
16. // 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
17. // 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