Seminarinhalt
Im Laufe des Kurses erstellen Sie aus Java-SE- und -EE-Anwendungen lauffähige Container-Images, betreiben diese in einem Kubernetes-Cluster und entwickeln eine dazugehörige realistische Build Pipeline für Continuous Delivery. Dabei wird auch auf die Möglichkeiten und Problemstellungen der lokalen Entwicklung eingegangen.
Nach diesem Seminar beherrschen Sie die Grundlagen von Docker und Kubernetes und können Java/JEE-Anwendungen damit betreiben und automatisiert qualitätsgesichert in Kubernetes-Cluster ausrollen.
Programm
Motivation für den Einsatz von Container-Images
Gegenüberstellung virtuelle Maschine vs. Container
Begrifflichkeiten
- Image
- Registry
- Container
- Docker-Images laden, verwalten, starten
- Port-Mapping
- Logs einsehen
- Kommandos im Container ausführen
- Dockerfiles
- Java/JEE-Anwendung in Image packen
- Eigene Basisimages erstellen, bspw. für provisionierte EE-Server
- Multi-Stage-Builds zur Optimierung der Image-Größe nutzen
Registrys einsetzen
Kubernetes
Motivation für die Orchestrierung von Containern mit Kubernetes
Grundsätzlicher Aufbau der Plattform
Deklarativer Ansatz
YAML-Files zur Beschreibung von Kubernetes-Objekten
Building Blocks von Kubernetes
- Pod
- Deployment, Replica Set
- Service
- Volume, Volume Claim, Persistent Volume Claim, Storage Provider
- Nodeport, Loadbalancer und Ingress
- Namespace
- Secret
- Config Map
- Stateful Set
- Job
- Init Container
- Readiness und Liveness Probe
Motivation für Automatisierung
Abgrenzung Continuous Integration, Delivery, Deployment
Überblick unterschiedliche Vorgehensweisen für Deployment
Gitlab
Docker-Build in Container
Deployment in Kubernetes-Cluster
GitOps
- Deployen von Kubernetes-Manifesten aus Git
- Grundlegende Vorgehensweise
- Überblick über Tools
- Argo-CD als Beispiel
- Deployment aus Pipeline
Generelle Problemstellung
Entwickeln von lokaler IDE gegen Kubernetes-Cluster
- Einfaches Bereitstellen von Umgebungen für lokales Testen
- Überblick Werkzeuge (Skaffold, DevSpace, Telepresence, ...)
- Vorgehensweisen für Java (EE)-Anwendungen
- Möglichkeiten der gängigen Java IDEs
Zielgruppen
Vorkenntnisse
Kenntnisse über Linux und Networking sind hilfreich, werden aber nicht vorausgesetzt.