Oliver Liebel
Skalierbare Container-Infrastrukturen
Das Handbuch für Administratoren. Alle Codebeispiele zum Download
Oliver Liebel
Skalierbare Container-Infrastrukturen
Das Handbuch für Administratoren. Alle Codebeispiele zum Download
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
§Dieses umfassende Handbuch beschreibt die nächste Evolutionsstufe der Virtualisierung. Die zweite, komplett überarbeitete und deutlich erweiterte Auflage der bewährten Container-Referenz liefert Ihnen fundiertes Know-how und praxiserprobte Anleitungen zu Container Engines wie Docker, CRI-O oder cri-containerd sowie Orchestrierungstools wie Kubernetes oder OpenShift. Auf diesem Weg stellen Sie Software schneller bereit und vereinfachen das Deployment und die Wartung Ihrer Infrastruktur - nur so ist Ihre IT-Landschaft zukünftigen Anforderungen an Skalierbarkeit, Flexibilität, Hochverfügbarkeit…mehr
§Dieses umfassende Handbuch beschreibt die nächste Evolutionsstufe der Virtualisierung. Die zweite, komplett überarbeitete und deutlich erweiterte Auflage der bewährten Container-Referenz liefert Ihnen fundiertes Know-how und praxiserprobte Anleitungen zu Container Engines wie Docker, CRI-O oder cri-containerd sowie Orchestrierungstools wie Kubernetes oder OpenShift. Auf diesem Weg stellen Sie Software schneller bereit und vereinfachen das Deployment und die Wartung Ihrer Infrastruktur - nur so ist Ihre IT-Landschaft zukünftigen Anforderungen an Skalierbarkeit, Flexibilität, Hochverfügbarkeit und Planungssicherheit gewachsen!
§§Aus dem Inhalt:allation und fortgeschrittene Orchestrierung hochverfügbarer Kubernetes- und OpenShift-Cluster§Metrik-Erfassung und Autoskalierung, Monitoring und zentrales Logging mit EFK-Stacks§Cluster Services und Routing: Service Proxies, Ingress, Service Meshes, Routing- und Session-Stickiness§Intelligente Cluster Ressourcen: Das Operator-Framework§Einbindung zentraler Authenifizierungslösungen, RBAC und mehr§Security für Container-Cluster: Image Scanning, Behavior Analysis, Network Policies, Trusted Images und Registrys§Clusterfähige Storage Backends mit NFS, Ceph, StorageClasses und Provisioner
§§Aus dem Inhalt:allation und fortgeschrittene Orchestrierung hochverfügbarer Kubernetes- und OpenShift-Cluster§Metrik-Erfassung und Autoskalierung, Monitoring und zentrales Logging mit EFK-Stacks§Cluster Services und Routing: Service Proxies, Ingress, Service Meshes, Routing- und Session-Stickiness§Intelligente Cluster Ressourcen: Das Operator-Framework§Einbindung zentraler Authenifizierungslösungen, RBAC und mehr§Security für Container-Cluster: Image Scanning, Behavior Analysis, Network Policies, Trusted Images und Registrys§Clusterfähige Storage Backends mit NFS, Ceph, StorageClasses und Provisioner
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06385
- 2., aktualis. u. erw. Aufl.
- Seitenzahl: 1380
- Erscheinungstermin: 26. Oktober 2018
- Deutsch
- Abmessung: 241mm x 199mm x 61mm
- Gewicht: 2387g
- ISBN-13: 9783836263856
- ISBN-10: 3836263858
- Artikelnr.: 53015275
- Rheinwerk Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06385
- 2., aktualis. u. erw. Aufl.
- Seitenzahl: 1380
- Erscheinungstermin: 26. Oktober 2018
- Deutsch
- Abmessung: 241mm x 199mm x 61mm
- Gewicht: 2387g
- ISBN-13: 9783836263856
- ISBN-10: 3836263858
- Artikelnr.: 53015275
TEIL I Brave New World? ... 39
1. Die neue alte Welt der Virtualisierung ... 41
1.1 ... V2 ... 41
1.2 ... Vorbemerkungen ... 46
1.3 ... Was dieses Buch sein/nicht sein soll ... 47
1.4 ... Wie dieses Buch zu lesen ist ... 48
1.5 ... Welche Teile des Buchs sind neu, welche wurden stark überabeitet? ... 48
1.6 ... In welchen Kapiteln finde ich welche Themen? ... 50
1.7 ... Verwendete Plattformen und Versionsspezifikationen ... 53
2. Container ... 55
2.1 ... Warum Container? ... 55
2.2 ... Microservices, Container und der pawlowsche Hund ... 57
2.3 ... Continuous Delivery/Continuous Integration und DevOps ... 62
2.4 ... Continuous Delivery ... 64
2.5 ... DevOps: Gewaltenteilung oder Kooperation? ... 71
TEIL II Single-Node Container-Systeme ... 77
3. Container-Engines und -Plattformen, Basics und Konzepte ... 79
3.1 ... World of Tiers -- Teil 1 ... 79
3.2 ... Container -- Basics ... 80
3.3 ... VMs -- obsolet durch Container? ... 88
3.4 ... Wann sind Container sinnvoll? ... 94
3.5 ... Container-Engines/Container-Runtime und Komponenten im Überblick ... 94
3.6 ... Überblick der Container-Formate ... 108
3.7 ... Container: eine funktionale Übersicht ... 113
4. Docker ... 117
4.1 ... Docker-Versionen ... 117
4.2 ... Docker-Installation ... 123
4.3 ... Deinstallation, Upgrade oder Umstellung auf andere Storage-Backends ... 132
4.4 ... Docker und systemd-Integration ... 133
4.5 ... Docker und Proxies ... 134
4.6 ... Docker im Betrieb ... 135
4.7 ... Docker-Image-Management -- Basics ... 144
4.8 ... Trusted Images ... 165
4.9 ... Betrieb und Management von Docker-Containern ... 173
4.10 ... Prozessverwaltung im Container ... 195
4.11 ... Container-Capabilities/Privilegien ... 199
4.12 ... Docker Logging ... 202
4.13 ... Einfache Applikationen im Container ... 206
4.14 ... Image-Modifikationen committen und taggen ... 211
4.15 ... Layer-Strukturen ... 217
4.16 ... Limitierte Container-Instanzen ... 221
4.17 ... Docker-Images erstellen (docker build) und verwalten ... 226
4.18 ... Best Build Practices ... 250
4.19 ... Docker-Networking ... 254
4.20 ... Container per Docker-Netzwerk miteinander verknüpfen ... 273
4.21 ... Docker-Compose ... 280
4.22 ... Docker-Storage-Driver ... 293
4.23 ... Deep Dive in die Beziehung zwischen Images bzw. Container-Instanzen und dem Storage-Driver ... 297
4.24 ... Storage-Driver im Detail ... 304
4.25 ... Data-Sharing mit Docker-Volumes ... 335
4.26 ... SSSD to the Rescue -- konsistente ID-Mappings für Daten in Containern und Container-Clustern ... 346
5. Container Security ... 359
5.1 ... Docker mit TLS/SSL ... 359
5.2 ... Images signieren, verifizieren und verwalten mit Skopeo und Atomic ... 374
5.3 ... »Manuelle« Vulnerability-Scans ... 387
5.4 ... Fazit ... 402
6. Die private Trusted (Docker)Registry ... 403
6.1 ... Die Registry im Detail ... 403
6.2 ... Vorbereitungen zum Setup ... 407
6.3 ... Registry-Setup-Möglichkeiten ... 411
6.4 ... Registry-Setup: Vorbereitungen und Betrieb ... 412
6.5 ... Docker-Registry mit TLS ... 419
6.6 ... Zentrale Registry-Authentifizierung via LDAP/TLS ... 424
6.7 ... (Docker)Registry mit AD-Authentifizierung ... 440
6.8 ... Registry-Alternativen: Artifactory ... 441
6.9 ... Registry-Alternativen: Sonatype Nexus ... 453
6.10 ... Registry-Alternativen: VMware Harbor ... 468
6.11 ... Fazit zu den Container-Registries ... 478
7. Weitere Container-Host-Plattformen ... 481
7.1 ... Vorbetrachtungen ... 481
7.2 ... Atomic Host (RHEL/CentOS) ... 483
7.3 ... Rocket Science? -- CoreOS ... 489
7.4 ... SUSE CaaSP ... 495
7.5 ... SLAs und Preise ... 501
7.6 ... Container-Node-Plattformen in der Cloud ... 501
8. Fazit -- (Single-Node)Container-Plattformen ... 503
8.1 ... Der Wandel ... 503
8.2 ... »Die« Container-Plattform? ... 503
TEIL III Skalierbare Container-Cluster und Container-Orchestrierung ... 505
9. Container-Cluster -- von Planern und Orchestern ... 507
9.1 ... Worum es geht -- the Big Picture ... 507
9.2 ... World of Tiers -- Teil 2 ... 508
9.3 ... Vorbereitungen ... 510
9.4 ... Pre-Flight-Requirements: Zeitsynchronisation ... 513
9.5 ... Pre-Flight-Requirements: pssh ... 519
10. Schlüsselmeister im Container-Cluster: Key/Value Stores und Service Registry/Discovery ... 523
10.1 ... Key/Value Stores ... 524
10.2 ... Service Discovery/Registry ... 526
10.3 ... Key/Value Stores im Kurzüberblick ... 530
10.4 ... Key/Value-Store-Cluster am Beispiel von Consul ... 536
11. Kubernetes (K8s) ... 555
11.1 ... Kubernetes im Überblick ... 555
11.2 ... Dockerd, cri-containerD, CRI-O? -- K8s-Container-Engines, KISS, redundante KV Stores und die Zukunft ... 558
11.3 ... Kubernetes-Komponenten ... 562
11.4 ... Networking in Kubernetes ... 569
11.5 ... etcd: Key/Value Store für Kubernetes im Detail ... 574
11.6 ... Redundanter etcd-Cluster -- Installation und Setup ... 581
11.7 ... Flannel CNI für Kubernetes-Cluster ... 593
11.8 ... Kubernetes-Setup-Varianten ... 603
11.9 ... Einfaches Kubernetes-Single-Master-Setup (3 etcd-Nodes) ... 608
11.10 ... Kubernetes-Worker-Konfigurationen für Single Master ... 618
11.11 ... Redundante und hochverfügbare Kubernetes-Master: Konzepte und Möglichkeiten ... 627
11.12 ... Vorbereitendes Setup der Kubernetes-Master für Hot-Failover ... 632
11.13 ... Pacemaker-Integration der drei Kubernetes-Master ... 636
11.14 ... Setup eines K8s-Multi-Node-Clusters mit SUSE CaaSP ... 657
12. Kubernetes-Control-Plane als Microservice-Architektur ... 665
12.1 ... Vorbetrachtungen zum Setup einer Pod-basierten Kubernetes-Control-Plane ... 665
12.2 ... Setup ... 668
12.3 ... Kubernetes-Initialisierung mit kubeadm init ... 677
12.4 ... Einzelschritte des kubeadm init ... 690
12.5 ... Pod-basiertes Overlay-Netz ... 696
12.6 ... Arbeiten mit Pod-basiertem etcd ... 700
12.7 ... Verfügbarkeit und Ausfallsicherheit der K8s-Komponenten im Pod-Modell ... 702
13. Kubernetes-Cluster ohne Docker ... 711
13.1 ... Kubernetes-Cluster mit CRI-O als Container-Engine ... 711
13.2 ... Buildah, Podman und Skopeo: (Docker)Images ohne Docker erstellen und verwalten ... 722
13.3 ... Buildah: »Look Mom, no Docker ...« ... 723
13.4 ... Image Build mit Kaniko ... 740
13.5 ... Podman ... 741
13.6 ... Podman vs crictl ... 748
13.7 ... Kompose -- der Docker-Compose-Konverter für K8s ... 750
14. Kubernetes-Cluster: Ressourcen verstehen und verwalten ... 753
14.1 ... kubectl ... 753
14.2 ... Kleine Kubernetes-Cluster und »Taint Nodes« ... 770
14.3 ... (Worker)Node-Kapazitäten ... 773
14.4 ... Ressourcen im Kubernetes-Cluster ausrollen ... 780
14.5 ... Pods ... 788
14.6 ... Pod- und Container-Ressourcen, -Requests und -Limitierungen sowie QoS und Capabilities ... 814
14.7 ... Umgebungsvariablen von Pods und Containern auslesen, setzen und nutzen ... 827
14.8 ... Pods und ConfigMaps ... 833
14.9 ... Pods und Init-Container ... 841
14.10 ... Health-Checks ... 847
14.11 ... Scale-Out: von Replication Controllern zu ReplicaSets ... 859
14.12 ... Jobs ... 872
14.13 ... Deployments ... 878
14.14 ... DaemonSets ... 898
14.15 ... Namespaces: Limits, Quotas und echte Multi-Tenancy? ... 904
14.16 ... Services ... 919
14.17 ... Ingress ... 964
14.18 ... Services, Service-Proxies, NetworkPolicies und mehr: Kube-Router to the rescue? ... 979
14.19 ... Service Meshes ... 989
14.20 ... Kubernetes-Volumes ... 1007
14.21 ... PetSets, StatefulSets und Stateful Pods ... 1046
14.22 ... HPA -- Horizontaler Pod-Autoscaler ... 1048
14.23 ... Weitere K8s-Objekte und -Ressourcen ... 1060
14.24 ... K8s-Labels und -Constraints ... 1062
14.25 ... K8s-NetworkPolicies ... 1071
14.26 ... K8s-Authentifizierung und -Autorisierung ... 1080
14.27 ... Die Operator-Ressource: Skalierung von Apps in Replikations-Setups out of the box? ... 1113
14.28 ... Helm-Deployments ... 1129
14.29 ... Prometheus ... 1138
14.30 ... Zentrales Logging mit ElasticSearch, Fluentd und Kibana ... 1148
14.31 ... Metrik-Erfassung im EFK-Stack ... 1160
15. Federated- und geografisch verteilte K8s-Cluster ... 1163
15.1 ... Vorbetrachtungen ... 1163
16. K8s: Debugging, Rolling Upgrades, Fazit ... 1169
16.1 ... Debugging/Troubleshooting ... 1169
16.2 ... Rolling Upgrades des K8s-Clusters ... 1170
16.3 ... Upgrades kubeadm-basierter Setups ... 1172
TEIL IV High-Level-Orchestrierungstools für Container-Infrastrukturen (on Premise und in der Cloud) ... 1177
17. OpenShift ... 1179
17.1 ... Vorbetrachtungen und Historisches ... 1179
17.2 ... OpenShift-Flavors ... 1182
17.3 ... Unterschiede und Ergänzungen zu Kubernetes ... 1185
17.4 ... OpenShift Service Broker ... 1190
17.5 ... OpenShift-Networking ... 1192
17.6 ... OpenShift Router: Ingress made easy ... 1196
18. OpenShift-Setup ... 1201
18.1 ... OpenShift Origin 3.9 unter CentOS 7.4 -- RPM- sowie Ansible-basierte Installation ... 1201
18.2 ... Einfache und geführte Single-Master-Installation ... 1206
18.3 ... OpenShift-Multimaster-Setup (3 Master, die alle ebenfalls Nodes sind) ... 1208
18.4 ... (Nachträgliche) Metrics-Konfiguration ... 1224
18.5 ... Prometheus ... 1225
18.6 ... Setup eines Logging-Stacks (EFK) ... 1226
18.7 ... Späterer Join zusätzlicher (Worker)Nodes ... 1230
19. OpenShift-Administration ... 1233
19.1 ... CLI-Tools ... 1233
19.2 ... User-, Token- und Role-Management in OpenShift ... 1241
19.3 ... OpenShift-spezifische Ressourcen im Cluster ... 1256
19.4 ... OpenShift-Router in der Praxis ... 1263
19.5 ... Accounts, Berechtigungskonzepte und Constraints ... 1284
19.6 ... DeploymentConfig erzeugen, verwalten und versionieren ... 1289
19.7 ... OpenShift Internal Registry ... 1294
19.8 ... OpenShift-Build-Prozesse ... 1299
19.9 ... Steuerung eines kompletten Container-Lifecycles: Build plus Rollout per OpenShift-GUI ... 1303
19.10 ... Neuerungen in OpenShift 3.10 ... 1306
20. Full-Featured Container-Security am Beispiel von OpenShift und NeuVector ... 1307
20.1 ... Vorbetrachtungen ... 1307
20.2 ... Architektur der NeuVector-Security-Lösung ... 1309
21. Cloud-Hosted Kubernetes ... 1315
21.1 ... Vorbetrachtungen ... 1315
21.2 ... GKE -- Google Kubernetes Engine ... 1317
21.3 ... EKS -- Amazons Elastic Kubernetes Service ... 1322
22. Fazit zur Container-Orchestrierung ... 1325
22.1 ... Vanilla-Kubernetes ... 1325
22.2 ... OpenShift ... 1326
22.3 ... Cloud-Hosted Kubernetes: GKE ... 1326
22.4 ... Cloud-Hosted Kubernetes: EKS ... 1326
TEIL V Software-Defined Storage für verteilte Container-Infrastrukturen ... 1327
23. Ab in den Untergrund ... 1329
23.1 ... Software-Defined Storage (SDS) und Container ... 1329
23.2 ... SDS-Funktionsprinzipien ... 1331
23.3 ... Ceph ... 1334
24. Einige Checkpunkte für Planung, Aufbau und Betrieb von Container-Clustern ... 1357
24.1 ... Evaluierung im Vorfeld ... 1357
24.2 ... Plattformauswahl ... 1358
24.3 ... Plattformen für den Testbetrieb und die spätere Produktion (On-Premise) ... 1358
24.4 ... Namespace-Design ... 1358
24.5 ... Build ... 1359
24.6 ... Registries ... 1359
24.7 ... Build und Rollout ... 1360
24.8 ... Welcher Orchestrierer? ... 1360
24.9 ... Betrieb und Administration ... 1360
24.10 ... Security ... 1361
25. Was war, was ist, was sein wird: Neue Meta-Ebenen und Verkomplizierung ... 1363
25.1 ... Container-Cluster und Microservices als Allheilmittel? ... 1363
25.2 ... The Road Ahead ... 1364
Index ... 1367
1. Die neue alte Welt der Virtualisierung ... 41
1.1 ... V2 ... 41
1.2 ... Vorbemerkungen ... 46
1.3 ... Was dieses Buch sein/nicht sein soll ... 47
1.4 ... Wie dieses Buch zu lesen ist ... 48
1.5 ... Welche Teile des Buchs sind neu, welche wurden stark überabeitet? ... 48
1.6 ... In welchen Kapiteln finde ich welche Themen? ... 50
1.7 ... Verwendete Plattformen und Versionsspezifikationen ... 53
2. Container ... 55
2.1 ... Warum Container? ... 55
2.2 ... Microservices, Container und der pawlowsche Hund ... 57
2.3 ... Continuous Delivery/Continuous Integration und DevOps ... 62
2.4 ... Continuous Delivery ... 64
2.5 ... DevOps: Gewaltenteilung oder Kooperation? ... 71
TEIL II Single-Node Container-Systeme ... 77
3. Container-Engines und -Plattformen, Basics und Konzepte ... 79
3.1 ... World of Tiers -- Teil 1 ... 79
3.2 ... Container -- Basics ... 80
3.3 ... VMs -- obsolet durch Container? ... 88
3.4 ... Wann sind Container sinnvoll? ... 94
3.5 ... Container-Engines/Container-Runtime und Komponenten im Überblick ... 94
3.6 ... Überblick der Container-Formate ... 108
3.7 ... Container: eine funktionale Übersicht ... 113
4. Docker ... 117
4.1 ... Docker-Versionen ... 117
4.2 ... Docker-Installation ... 123
4.3 ... Deinstallation, Upgrade oder Umstellung auf andere Storage-Backends ... 132
4.4 ... Docker und systemd-Integration ... 133
4.5 ... Docker und Proxies ... 134
4.6 ... Docker im Betrieb ... 135
4.7 ... Docker-Image-Management -- Basics ... 144
4.8 ... Trusted Images ... 165
4.9 ... Betrieb und Management von Docker-Containern ... 173
4.10 ... Prozessverwaltung im Container ... 195
4.11 ... Container-Capabilities/Privilegien ... 199
4.12 ... Docker Logging ... 202
4.13 ... Einfache Applikationen im Container ... 206
4.14 ... Image-Modifikationen committen und taggen ... 211
4.15 ... Layer-Strukturen ... 217
4.16 ... Limitierte Container-Instanzen ... 221
4.17 ... Docker-Images erstellen (docker build) und verwalten ... 226
4.18 ... Best Build Practices ... 250
4.19 ... Docker-Networking ... 254
4.20 ... Container per Docker-Netzwerk miteinander verknüpfen ... 273
4.21 ... Docker-Compose ... 280
4.22 ... Docker-Storage-Driver ... 293
4.23 ... Deep Dive in die Beziehung zwischen Images bzw. Container-Instanzen und dem Storage-Driver ... 297
4.24 ... Storage-Driver im Detail ... 304
4.25 ... Data-Sharing mit Docker-Volumes ... 335
4.26 ... SSSD to the Rescue -- konsistente ID-Mappings für Daten in Containern und Container-Clustern ... 346
5. Container Security ... 359
5.1 ... Docker mit TLS/SSL ... 359
5.2 ... Images signieren, verifizieren und verwalten mit Skopeo und Atomic ... 374
5.3 ... »Manuelle« Vulnerability-Scans ... 387
5.4 ... Fazit ... 402
6. Die private Trusted (Docker)Registry ... 403
6.1 ... Die Registry im Detail ... 403
6.2 ... Vorbereitungen zum Setup ... 407
6.3 ... Registry-Setup-Möglichkeiten ... 411
6.4 ... Registry-Setup: Vorbereitungen und Betrieb ... 412
6.5 ... Docker-Registry mit TLS ... 419
6.6 ... Zentrale Registry-Authentifizierung via LDAP/TLS ... 424
6.7 ... (Docker)Registry mit AD-Authentifizierung ... 440
6.8 ... Registry-Alternativen: Artifactory ... 441
6.9 ... Registry-Alternativen: Sonatype Nexus ... 453
6.10 ... Registry-Alternativen: VMware Harbor ... 468
6.11 ... Fazit zu den Container-Registries ... 478
7. Weitere Container-Host-Plattformen ... 481
7.1 ... Vorbetrachtungen ... 481
7.2 ... Atomic Host (RHEL/CentOS) ... 483
7.3 ... Rocket Science? -- CoreOS ... 489
7.4 ... SUSE CaaSP ... 495
7.5 ... SLAs und Preise ... 501
7.6 ... Container-Node-Plattformen in der Cloud ... 501
8. Fazit -- (Single-Node)Container-Plattformen ... 503
8.1 ... Der Wandel ... 503
8.2 ... »Die« Container-Plattform? ... 503
TEIL III Skalierbare Container-Cluster und Container-Orchestrierung ... 505
9. Container-Cluster -- von Planern und Orchestern ... 507
9.1 ... Worum es geht -- the Big Picture ... 507
9.2 ... World of Tiers -- Teil 2 ... 508
9.3 ... Vorbereitungen ... 510
9.4 ... Pre-Flight-Requirements: Zeitsynchronisation ... 513
9.5 ... Pre-Flight-Requirements: pssh ... 519
10. Schlüsselmeister im Container-Cluster: Key/Value Stores und Service Registry/Discovery ... 523
10.1 ... Key/Value Stores ... 524
10.2 ... Service Discovery/Registry ... 526
10.3 ... Key/Value Stores im Kurzüberblick ... 530
10.4 ... Key/Value-Store-Cluster am Beispiel von Consul ... 536
11. Kubernetes (K8s) ... 555
11.1 ... Kubernetes im Überblick ... 555
11.2 ... Dockerd, cri-containerD, CRI-O? -- K8s-Container-Engines, KISS, redundante KV Stores und die Zukunft ... 558
11.3 ... Kubernetes-Komponenten ... 562
11.4 ... Networking in Kubernetes ... 569
11.5 ... etcd: Key/Value Store für Kubernetes im Detail ... 574
11.6 ... Redundanter etcd-Cluster -- Installation und Setup ... 581
11.7 ... Flannel CNI für Kubernetes-Cluster ... 593
11.8 ... Kubernetes-Setup-Varianten ... 603
11.9 ... Einfaches Kubernetes-Single-Master-Setup (3 etcd-Nodes) ... 608
11.10 ... Kubernetes-Worker-Konfigurationen für Single Master ... 618
11.11 ... Redundante und hochverfügbare Kubernetes-Master: Konzepte und Möglichkeiten ... 627
11.12 ... Vorbereitendes Setup der Kubernetes-Master für Hot-Failover ... 632
11.13 ... Pacemaker-Integration der drei Kubernetes-Master ... 636
11.14 ... Setup eines K8s-Multi-Node-Clusters mit SUSE CaaSP ... 657
12. Kubernetes-Control-Plane als Microservice-Architektur ... 665
12.1 ... Vorbetrachtungen zum Setup einer Pod-basierten Kubernetes-Control-Plane ... 665
12.2 ... Setup ... 668
12.3 ... Kubernetes-Initialisierung mit kubeadm init ... 677
12.4 ... Einzelschritte des kubeadm init ... 690
12.5 ... Pod-basiertes Overlay-Netz ... 696
12.6 ... Arbeiten mit Pod-basiertem etcd ... 700
12.7 ... Verfügbarkeit und Ausfallsicherheit der K8s-Komponenten im Pod-Modell ... 702
13. Kubernetes-Cluster ohne Docker ... 711
13.1 ... Kubernetes-Cluster mit CRI-O als Container-Engine ... 711
13.2 ... Buildah, Podman und Skopeo: (Docker)Images ohne Docker erstellen und verwalten ... 722
13.3 ... Buildah: »Look Mom, no Docker ...« ... 723
13.4 ... Image Build mit Kaniko ... 740
13.5 ... Podman ... 741
13.6 ... Podman vs crictl ... 748
13.7 ... Kompose -- der Docker-Compose-Konverter für K8s ... 750
14. Kubernetes-Cluster: Ressourcen verstehen und verwalten ... 753
14.1 ... kubectl ... 753
14.2 ... Kleine Kubernetes-Cluster und »Taint Nodes« ... 770
14.3 ... (Worker)Node-Kapazitäten ... 773
14.4 ... Ressourcen im Kubernetes-Cluster ausrollen ... 780
14.5 ... Pods ... 788
14.6 ... Pod- und Container-Ressourcen, -Requests und -Limitierungen sowie QoS und Capabilities ... 814
14.7 ... Umgebungsvariablen von Pods und Containern auslesen, setzen und nutzen ... 827
14.8 ... Pods und ConfigMaps ... 833
14.9 ... Pods und Init-Container ... 841
14.10 ... Health-Checks ... 847
14.11 ... Scale-Out: von Replication Controllern zu ReplicaSets ... 859
14.12 ... Jobs ... 872
14.13 ... Deployments ... 878
14.14 ... DaemonSets ... 898
14.15 ... Namespaces: Limits, Quotas und echte Multi-Tenancy? ... 904
14.16 ... Services ... 919
14.17 ... Ingress ... 964
14.18 ... Services, Service-Proxies, NetworkPolicies und mehr: Kube-Router to the rescue? ... 979
14.19 ... Service Meshes ... 989
14.20 ... Kubernetes-Volumes ... 1007
14.21 ... PetSets, StatefulSets und Stateful Pods ... 1046
14.22 ... HPA -- Horizontaler Pod-Autoscaler ... 1048
14.23 ... Weitere K8s-Objekte und -Ressourcen ... 1060
14.24 ... K8s-Labels und -Constraints ... 1062
14.25 ... K8s-NetworkPolicies ... 1071
14.26 ... K8s-Authentifizierung und -Autorisierung ... 1080
14.27 ... Die Operator-Ressource: Skalierung von Apps in Replikations-Setups out of the box? ... 1113
14.28 ... Helm-Deployments ... 1129
14.29 ... Prometheus ... 1138
14.30 ... Zentrales Logging mit ElasticSearch, Fluentd und Kibana ... 1148
14.31 ... Metrik-Erfassung im EFK-Stack ... 1160
15. Federated- und geografisch verteilte K8s-Cluster ... 1163
15.1 ... Vorbetrachtungen ... 1163
16. K8s: Debugging, Rolling Upgrades, Fazit ... 1169
16.1 ... Debugging/Troubleshooting ... 1169
16.2 ... Rolling Upgrades des K8s-Clusters ... 1170
16.3 ... Upgrades kubeadm-basierter Setups ... 1172
TEIL IV High-Level-Orchestrierungstools für Container-Infrastrukturen (on Premise und in der Cloud) ... 1177
17. OpenShift ... 1179
17.1 ... Vorbetrachtungen und Historisches ... 1179
17.2 ... OpenShift-Flavors ... 1182
17.3 ... Unterschiede und Ergänzungen zu Kubernetes ... 1185
17.4 ... OpenShift Service Broker ... 1190
17.5 ... OpenShift-Networking ... 1192
17.6 ... OpenShift Router: Ingress made easy ... 1196
18. OpenShift-Setup ... 1201
18.1 ... OpenShift Origin 3.9 unter CentOS 7.4 -- RPM- sowie Ansible-basierte Installation ... 1201
18.2 ... Einfache und geführte Single-Master-Installation ... 1206
18.3 ... OpenShift-Multimaster-Setup (3 Master, die alle ebenfalls Nodes sind) ... 1208
18.4 ... (Nachträgliche) Metrics-Konfiguration ... 1224
18.5 ... Prometheus ... 1225
18.6 ... Setup eines Logging-Stacks (EFK) ... 1226
18.7 ... Späterer Join zusätzlicher (Worker)Nodes ... 1230
19. OpenShift-Administration ... 1233
19.1 ... CLI-Tools ... 1233
19.2 ... User-, Token- und Role-Management in OpenShift ... 1241
19.3 ... OpenShift-spezifische Ressourcen im Cluster ... 1256
19.4 ... OpenShift-Router in der Praxis ... 1263
19.5 ... Accounts, Berechtigungskonzepte und Constraints ... 1284
19.6 ... DeploymentConfig erzeugen, verwalten und versionieren ... 1289
19.7 ... OpenShift Internal Registry ... 1294
19.8 ... OpenShift-Build-Prozesse ... 1299
19.9 ... Steuerung eines kompletten Container-Lifecycles: Build plus Rollout per OpenShift-GUI ... 1303
19.10 ... Neuerungen in OpenShift 3.10 ... 1306
20. Full-Featured Container-Security am Beispiel von OpenShift und NeuVector ... 1307
20.1 ... Vorbetrachtungen ... 1307
20.2 ... Architektur der NeuVector-Security-Lösung ... 1309
21. Cloud-Hosted Kubernetes ... 1315
21.1 ... Vorbetrachtungen ... 1315
21.2 ... GKE -- Google Kubernetes Engine ... 1317
21.3 ... EKS -- Amazons Elastic Kubernetes Service ... 1322
22. Fazit zur Container-Orchestrierung ... 1325
22.1 ... Vanilla-Kubernetes ... 1325
22.2 ... OpenShift ... 1326
22.3 ... Cloud-Hosted Kubernetes: GKE ... 1326
22.4 ... Cloud-Hosted Kubernetes: EKS ... 1326
TEIL V Software-Defined Storage für verteilte Container-Infrastrukturen ... 1327
23. Ab in den Untergrund ... 1329
23.1 ... Software-Defined Storage (SDS) und Container ... 1329
23.2 ... SDS-Funktionsprinzipien ... 1331
23.3 ... Ceph ... 1334
24. Einige Checkpunkte für Planung, Aufbau und Betrieb von Container-Clustern ... 1357
24.1 ... Evaluierung im Vorfeld ... 1357
24.2 ... Plattformauswahl ... 1358
24.3 ... Plattformen für den Testbetrieb und die spätere Produktion (On-Premise) ... 1358
24.4 ... Namespace-Design ... 1358
24.5 ... Build ... 1359
24.6 ... Registries ... 1359
24.7 ... Build und Rollout ... 1360
24.8 ... Welcher Orchestrierer? ... 1360
24.9 ... Betrieb und Administration ... 1360
24.10 ... Security ... 1361
25. Was war, was ist, was sein wird: Neue Meta-Ebenen und Verkomplizierung ... 1363
25.1 ... Container-Cluster und Microservices als Allheilmittel? ... 1363
25.2 ... The Road Ahead ... 1364
Index ... 1367
TEIL I Brave New World? ... 39
1. Die neue alte Welt der Virtualisierung ... 41
1.1 ... V2 ... 41
1.2 ... Vorbemerkungen ... 46
1.3 ... Was dieses Buch sein/nicht sein soll ... 47
1.4 ... Wie dieses Buch zu lesen ist ... 48
1.5 ... Welche Teile des Buchs sind neu, welche wurden stark überabeitet? ... 48
1.6 ... In welchen Kapiteln finde ich welche Themen? ... 50
1.7 ... Verwendete Plattformen und Versionsspezifikationen ... 53
2. Container ... 55
2.1 ... Warum Container? ... 55
2.2 ... Microservices, Container und der pawlowsche Hund ... 57
2.3 ... Continuous Delivery/Continuous Integration und DevOps ... 62
2.4 ... Continuous Delivery ... 64
2.5 ... DevOps: Gewaltenteilung oder Kooperation? ... 71
TEIL II Single-Node Container-Systeme ... 77
3. Container-Engines und -Plattformen, Basics und Konzepte ... 79
3.1 ... World of Tiers -- Teil 1 ... 79
3.2 ... Container -- Basics ... 80
3.3 ... VMs -- obsolet durch Container? ... 88
3.4 ... Wann sind Container sinnvoll? ... 94
3.5 ... Container-Engines/Container-Runtime und Komponenten im Überblick ... 94
3.6 ... Überblick der Container-Formate ... 108
3.7 ... Container: eine funktionale Übersicht ... 113
4. Docker ... 117
4.1 ... Docker-Versionen ... 117
4.2 ... Docker-Installation ... 123
4.3 ... Deinstallation, Upgrade oder Umstellung auf andere Storage-Backends ... 132
4.4 ... Docker und systemd-Integration ... 133
4.5 ... Docker und Proxies ... 134
4.6 ... Docker im Betrieb ... 135
4.7 ... Docker-Image-Management -- Basics ... 144
4.8 ... Trusted Images ... 165
4.9 ... Betrieb und Management von Docker-Containern ... 173
4.10 ... Prozessverwaltung im Container ... 195
4.11 ... Container-Capabilities/Privilegien ... 199
4.12 ... Docker Logging ... 202
4.13 ... Einfache Applikationen im Container ... 206
4.14 ... Image-Modifikationen committen und taggen ... 211
4.15 ... Layer-Strukturen ... 217
4.16 ... Limitierte Container-Instanzen ... 221
4.17 ... Docker-Images erstellen (docker build) und verwalten ... 226
4.18 ... Best Build Practices ... 250
4.19 ... Docker-Networking ... 254
4.20 ... Container per Docker-Netzwerk miteinander verknüpfen ... 273
4.21 ... Docker-Compose ... 280
4.22 ... Docker-Storage-Driver ... 293
4.23 ... Deep Dive in die Beziehung zwischen Images bzw. Container-Instanzen und dem Storage-Driver ... 297
4.24 ... Storage-Driver im Detail ... 304
4.25 ... Data-Sharing mit Docker-Volumes ... 335
4.26 ... SSSD to the Rescue -- konsistente ID-Mappings für Daten in Containern und Container-Clustern ... 346
5. Container Security ... 359
5.1 ... Docker mit TLS/SSL ... 359
5.2 ... Images signieren, verifizieren und verwalten mit Skopeo und Atomic ... 374
5.3 ... »Manuelle« Vulnerability-Scans ... 387
5.4 ... Fazit ... 402
6. Die private Trusted (Docker)Registry ... 403
6.1 ... Die Registry im Detail ... 403
6.2 ... Vorbereitungen zum Setup ... 407
6.3 ... Registry-Setup-Möglichkeiten ... 411
6.4 ... Registry-Setup: Vorbereitungen und Betrieb ... 412
6.5 ... Docker-Registry mit TLS ... 419
6.6 ... Zentrale Registry-Authentifizierung via LDAP/TLS ... 424
6.7 ... (Docker)Registry mit AD-Authentifizierung ... 440
6.8 ... Registry-Alternativen: Artifactory ... 441
6.9 ... Registry-Alternativen: Sonatype Nexus ... 453
6.10 ... Registry-Alternativen: VMware Harbor ... 468
6.11 ... Fazit zu den Container-Registries ... 478
7. Weitere Container-Host-Plattformen ... 481
7.1 ... Vorbetrachtungen ... 481
7.2 ... Atomic Host (RHEL/CentOS) ... 483
7.3 ... Rocket Science? -- CoreOS ... 489
7.4 ... SUSE CaaSP ... 495
7.5 ... SLAs und Preise ... 501
7.6 ... Container-Node-Plattformen in der Cloud ... 501
8. Fazit -- (Single-Node)Container-Plattformen ... 503
8.1 ... Der Wandel ... 503
8.2 ... »Die« Container-Plattform? ... 503
TEIL III Skalierbare Container-Cluster und Container-Orchestrierung ... 505
9. Container-Cluster -- von Planern und Orchestern ... 507
9.1 ... Worum es geht -- the Big Picture ... 507
9.2 ... World of Tiers -- Teil 2 ... 508
9.3 ... Vorbereitungen ... 510
9.4 ... Pre-Flight-Requirements: Zeitsynchronisation ... 513
9.5 ... Pre-Flight-Requirements: pssh ... 519
10. Schlüsselmeister im Container-Cluster: Key/Value Stores und Service Registry/Discovery ... 523
10.1 ... Key/Value Stores ... 524
10.2 ... Service Discovery/Registry ... 526
10.3 ... Key/Value Stores im Kurzüberblick ... 530
10.4 ... Key/Value-Store-Cluster am Beispiel von Consul ... 536
11. Kubernetes (K8s) ... 555
11.1 ... Kubernetes im Überblick ... 555
11.2 ... Dockerd, cri-containerD, CRI-O? -- K8s-Container-Engines, KISS, redundante KV Stores und die Zukunft ... 558
11.3 ... Kubernetes-Komponenten ... 562
11.4 ... Networking in Kubernetes ... 569
11.5 ... etcd: Key/Value Store für Kubernetes im Detail ... 574
11.6 ... Redundanter etcd-Cluster -- Installation und Setup ... 581
11.7 ... Flannel CNI für Kubernetes-Cluster ... 593
11.8 ... Kubernetes-Setup-Varianten ... 603
11.9 ... Einfaches Kubernetes-Single-Master-Setup (3 etcd-Nodes) ... 608
11.10 ... Kubernetes-Worker-Konfigurationen für Single Master ... 618
11.11 ... Redundante und hochverfügbare Kubernetes-Master: Konzepte und Möglichkeiten ... 627
11.12 ... Vorbereitendes Setup der Kubernetes-Master für Hot-Failover ... 632
11.13 ... Pacemaker-Integration der drei Kubernetes-Master ... 636
11.14 ... Setup eines K8s-Multi-Node-Clusters mit SUSE CaaSP ... 657
12. Kubernetes-Control-Plane als Microservice-Architektur ... 665
12.1 ... Vorbetrachtungen zum Setup einer Pod-basierten Kubernetes-Control-Plane ... 665
12.2 ... Setup ... 668
12.3 ... Kubernetes-Initialisierung mit kubeadm init ... 677
12.4 ... Einzelschritte des kubeadm init ... 690
12.5 ... Pod-basiertes Overlay-Netz ... 696
12.6 ... Arbeiten mit Pod-basiertem etcd ... 700
12.7 ... Verfügbarkeit und Ausfallsicherheit der K8s-Komponenten im Pod-Modell ... 702
13. Kubernetes-Cluster ohne Docker ... 711
13.1 ... Kubernetes-Cluster mit CRI-O als Container-Engine ... 711
13.2 ... Buildah, Podman und Skopeo: (Docker)Images ohne Docker erstellen und verwalten ... 722
13.3 ... Buildah: »Look Mom, no Docker ...« ... 723
13.4 ... Image Build mit Kaniko ... 740
13.5 ... Podman ... 741
13.6 ... Podman vs crictl ... 748
13.7 ... Kompose -- der Docker-Compose-Konverter für K8s ... 750
14. Kubernetes-Cluster: Ressourcen verstehen und verwalten ... 753
14.1 ... kubectl ... 753
14.2 ... Kleine Kubernetes-Cluster und »Taint Nodes« ... 770
14.3 ... (Worker)Node-Kapazitäten ... 773
14.4 ... Ressourcen im Kubernetes-Cluster ausrollen ... 780
14.5 ... Pods ... 788
14.6 ... Pod- und Container-Ressourcen, -Requests und -Limitierungen sowie QoS und Capabilities ... 814
14.7 ... Umgebungsvariablen von Pods und Containern auslesen, setzen und nutzen ... 827
14.8 ... Pods und ConfigMaps ... 833
14.9 ... Pods und Init-Container ... 841
14.10 ... Health-Checks ... 847
14.11 ... Scale-Out: von Replication Controllern zu ReplicaSets ... 859
14.12 ... Jobs ... 872
14.13 ... Deployments ... 878
14.14 ... DaemonSets ... 898
14.15 ... Namespaces: Limits, Quotas und echte Multi-Tenancy? ... 904
14.16 ... Services ... 919
14.17 ... Ingress ... 964
14.18 ... Services, Service-Proxies, NetworkPolicies und mehr: Kube-Router to the rescue? ... 979
14.19 ... Service Meshes ... 989
14.20 ... Kubernetes-Volumes ... 1007
14.21 ... PetSets, StatefulSets und Stateful Pods ... 1046
14.22 ... HPA -- Horizontaler Pod-Autoscaler ... 1048
14.23 ... Weitere K8s-Objekte und -Ressourcen ... 1060
14.24 ... K8s-Labels und -Constraints ... 1062
14.25 ... K8s-NetworkPolicies ... 1071
14.26 ... K8s-Authentifizierung und -Autorisierung ... 1080
14.27 ... Die Operator-Ressource: Skalierung von Apps in Replikations-Setups out of the box? ... 1113
14.28 ... Helm-Deployments ... 1129
14.29 ... Prometheus ... 1138
14.30 ... Zentrales Logging mit ElasticSearch, Fluentd und Kibana ... 1148
14.31 ... Metrik-Erfassung im EFK-Stack ... 1160
15. Federated- und geografisch verteilte K8s-Cluster ... 1163
15.1 ... Vorbetrachtungen ... 1163
16. K8s: Debugging, Rolling Upgrades, Fazit ... 1169
16.1 ... Debugging/Troubleshooting ... 1169
16.2 ... Rolling Upgrades des K8s-Clusters ... 1170
16.3 ... Upgrades kubeadm-basierter Setups ... 1172
TEIL IV High-Level-Orchestrierungstools für Container-Infrastrukturen (on Premise und in der Cloud) ... 1177
17. OpenShift ... 1179
17.1 ... Vorbetrachtungen und Historisches ... 1179
17.2 ... OpenShift-Flavors ... 1182
17.3 ... Unterschiede und Ergänzungen zu Kubernetes ... 1185
17.4 ... OpenShift Service Broker ... 1190
17.5 ... OpenShift-Networking ... 1192
17.6 ... OpenShift Router: Ingress made easy ... 1196
18. OpenShift-Setup ... 1201
18.1 ... OpenShift Origin 3.9 unter CentOS 7.4 -- RPM- sowie Ansible-basierte Installation ... 1201
18.2 ... Einfache und geführte Single-Master-Installation ... 1206
18.3 ... OpenShift-Multimaster-Setup (3 Master, die alle ebenfalls Nodes sind) ... 1208
18.4 ... (Nachträgliche) Metrics-Konfiguration ... 1224
18.5 ... Prometheus ... 1225
18.6 ... Setup eines Logging-Stacks (EFK) ... 1226
18.7 ... Späterer Join zusätzlicher (Worker)Nodes ... 1230
19. OpenShift-Administration ... 1233
19.1 ... CLI-Tools ... 1233
19.2 ... User-, Token- und Role-Management in OpenShift ... 1241
19.3 ... OpenShift-spezifische Ressourcen im Cluster ... 1256
19.4 ... OpenShift-Router in der Praxis ... 1263
19.5 ... Accounts, Berechtigungskonzepte und Constraints ... 1284
19.6 ... DeploymentConfig erzeugen, verwalten und versionieren ... 1289
19.7 ... OpenShift Internal Registry ... 1294
19.8 ... OpenShift-Build-Prozesse ... 1299
19.9 ... Steuerung eines kompletten Container-Lifecycles: Build plus Rollout per OpenShift-GUI ... 1303
19.10 ... Neuerungen in OpenShift 3.10 ... 1306
20. Full-Featured Container-Security am Beispiel von OpenShift und NeuVector ... 1307
20.1 ... Vorbetrachtungen ... 1307
20.2 ... Architektur der NeuVector-Security-Lösung ... 1309
21. Cloud-Hosted Kubernetes ... 1315
21.1 ... Vorbetrachtungen ... 1315
21.2 ... GKE -- Google Kubernetes Engine ... 1317
21.3 ... EKS -- Amazons Elastic Kubernetes Service ... 1322
22. Fazit zur Container-Orchestrierung ... 1325
22.1 ... Vanilla-Kubernetes ... 1325
22.2 ... OpenShift ... 1326
22.3 ... Cloud-Hosted Kubernetes: GKE ... 1326
22.4 ... Cloud-Hosted Kubernetes: EKS ... 1326
TEIL V Software-Defined Storage für verteilte Container-Infrastrukturen ... 1327
23. Ab in den Untergrund ... 1329
23.1 ... Software-Defined Storage (SDS) und Container ... 1329
23.2 ... SDS-Funktionsprinzipien ... 1331
23.3 ... Ceph ... 1334
24. Einige Checkpunkte für Planung, Aufbau und Betrieb von Container-Clustern ... 1357
24.1 ... Evaluierung im Vorfeld ... 1357
24.2 ... Plattformauswahl ... 1358
24.3 ... Plattformen für den Testbetrieb und die spätere Produktion (On-Premise) ... 1358
24.4 ... Namespace-Design ... 1358
24.5 ... Build ... 1359
24.6 ... Registries ... 1359
24.7 ... Build und Rollout ... 1360
24.8 ... Welcher Orchestrierer? ... 1360
24.9 ... Betrieb und Administration ... 1360
24.10 ... Security ... 1361
25. Was war, was ist, was sein wird: Neue Meta-Ebenen und Verkomplizierung ... 1363
25.1 ... Container-Cluster und Microservices als Allheilmittel? ... 1363
25.2 ... The Road Ahead ... 1364
Index ... 1367
1. Die neue alte Welt der Virtualisierung ... 41
1.1 ... V2 ... 41
1.2 ... Vorbemerkungen ... 46
1.3 ... Was dieses Buch sein/nicht sein soll ... 47
1.4 ... Wie dieses Buch zu lesen ist ... 48
1.5 ... Welche Teile des Buchs sind neu, welche wurden stark überabeitet? ... 48
1.6 ... In welchen Kapiteln finde ich welche Themen? ... 50
1.7 ... Verwendete Plattformen und Versionsspezifikationen ... 53
2. Container ... 55
2.1 ... Warum Container? ... 55
2.2 ... Microservices, Container und der pawlowsche Hund ... 57
2.3 ... Continuous Delivery/Continuous Integration und DevOps ... 62
2.4 ... Continuous Delivery ... 64
2.5 ... DevOps: Gewaltenteilung oder Kooperation? ... 71
TEIL II Single-Node Container-Systeme ... 77
3. Container-Engines und -Plattformen, Basics und Konzepte ... 79
3.1 ... World of Tiers -- Teil 1 ... 79
3.2 ... Container -- Basics ... 80
3.3 ... VMs -- obsolet durch Container? ... 88
3.4 ... Wann sind Container sinnvoll? ... 94
3.5 ... Container-Engines/Container-Runtime und Komponenten im Überblick ... 94
3.6 ... Überblick der Container-Formate ... 108
3.7 ... Container: eine funktionale Übersicht ... 113
4. Docker ... 117
4.1 ... Docker-Versionen ... 117
4.2 ... Docker-Installation ... 123
4.3 ... Deinstallation, Upgrade oder Umstellung auf andere Storage-Backends ... 132
4.4 ... Docker und systemd-Integration ... 133
4.5 ... Docker und Proxies ... 134
4.6 ... Docker im Betrieb ... 135
4.7 ... Docker-Image-Management -- Basics ... 144
4.8 ... Trusted Images ... 165
4.9 ... Betrieb und Management von Docker-Containern ... 173
4.10 ... Prozessverwaltung im Container ... 195
4.11 ... Container-Capabilities/Privilegien ... 199
4.12 ... Docker Logging ... 202
4.13 ... Einfache Applikationen im Container ... 206
4.14 ... Image-Modifikationen committen und taggen ... 211
4.15 ... Layer-Strukturen ... 217
4.16 ... Limitierte Container-Instanzen ... 221
4.17 ... Docker-Images erstellen (docker build) und verwalten ... 226
4.18 ... Best Build Practices ... 250
4.19 ... Docker-Networking ... 254
4.20 ... Container per Docker-Netzwerk miteinander verknüpfen ... 273
4.21 ... Docker-Compose ... 280
4.22 ... Docker-Storage-Driver ... 293
4.23 ... Deep Dive in die Beziehung zwischen Images bzw. Container-Instanzen und dem Storage-Driver ... 297
4.24 ... Storage-Driver im Detail ... 304
4.25 ... Data-Sharing mit Docker-Volumes ... 335
4.26 ... SSSD to the Rescue -- konsistente ID-Mappings für Daten in Containern und Container-Clustern ... 346
5. Container Security ... 359
5.1 ... Docker mit TLS/SSL ... 359
5.2 ... Images signieren, verifizieren und verwalten mit Skopeo und Atomic ... 374
5.3 ... »Manuelle« Vulnerability-Scans ... 387
5.4 ... Fazit ... 402
6. Die private Trusted (Docker)Registry ... 403
6.1 ... Die Registry im Detail ... 403
6.2 ... Vorbereitungen zum Setup ... 407
6.3 ... Registry-Setup-Möglichkeiten ... 411
6.4 ... Registry-Setup: Vorbereitungen und Betrieb ... 412
6.5 ... Docker-Registry mit TLS ... 419
6.6 ... Zentrale Registry-Authentifizierung via LDAP/TLS ... 424
6.7 ... (Docker)Registry mit AD-Authentifizierung ... 440
6.8 ... Registry-Alternativen: Artifactory ... 441
6.9 ... Registry-Alternativen: Sonatype Nexus ... 453
6.10 ... Registry-Alternativen: VMware Harbor ... 468
6.11 ... Fazit zu den Container-Registries ... 478
7. Weitere Container-Host-Plattformen ... 481
7.1 ... Vorbetrachtungen ... 481
7.2 ... Atomic Host (RHEL/CentOS) ... 483
7.3 ... Rocket Science? -- CoreOS ... 489
7.4 ... SUSE CaaSP ... 495
7.5 ... SLAs und Preise ... 501
7.6 ... Container-Node-Plattformen in der Cloud ... 501
8. Fazit -- (Single-Node)Container-Plattformen ... 503
8.1 ... Der Wandel ... 503
8.2 ... »Die« Container-Plattform? ... 503
TEIL III Skalierbare Container-Cluster und Container-Orchestrierung ... 505
9. Container-Cluster -- von Planern und Orchestern ... 507
9.1 ... Worum es geht -- the Big Picture ... 507
9.2 ... World of Tiers -- Teil 2 ... 508
9.3 ... Vorbereitungen ... 510
9.4 ... Pre-Flight-Requirements: Zeitsynchronisation ... 513
9.5 ... Pre-Flight-Requirements: pssh ... 519
10. Schlüsselmeister im Container-Cluster: Key/Value Stores und Service Registry/Discovery ... 523
10.1 ... Key/Value Stores ... 524
10.2 ... Service Discovery/Registry ... 526
10.3 ... Key/Value Stores im Kurzüberblick ... 530
10.4 ... Key/Value-Store-Cluster am Beispiel von Consul ... 536
11. Kubernetes (K8s) ... 555
11.1 ... Kubernetes im Überblick ... 555
11.2 ... Dockerd, cri-containerD, CRI-O? -- K8s-Container-Engines, KISS, redundante KV Stores und die Zukunft ... 558
11.3 ... Kubernetes-Komponenten ... 562
11.4 ... Networking in Kubernetes ... 569
11.5 ... etcd: Key/Value Store für Kubernetes im Detail ... 574
11.6 ... Redundanter etcd-Cluster -- Installation und Setup ... 581
11.7 ... Flannel CNI für Kubernetes-Cluster ... 593
11.8 ... Kubernetes-Setup-Varianten ... 603
11.9 ... Einfaches Kubernetes-Single-Master-Setup (3 etcd-Nodes) ... 608
11.10 ... Kubernetes-Worker-Konfigurationen für Single Master ... 618
11.11 ... Redundante und hochverfügbare Kubernetes-Master: Konzepte und Möglichkeiten ... 627
11.12 ... Vorbereitendes Setup der Kubernetes-Master für Hot-Failover ... 632
11.13 ... Pacemaker-Integration der drei Kubernetes-Master ... 636
11.14 ... Setup eines K8s-Multi-Node-Clusters mit SUSE CaaSP ... 657
12. Kubernetes-Control-Plane als Microservice-Architektur ... 665
12.1 ... Vorbetrachtungen zum Setup einer Pod-basierten Kubernetes-Control-Plane ... 665
12.2 ... Setup ... 668
12.3 ... Kubernetes-Initialisierung mit kubeadm init ... 677
12.4 ... Einzelschritte des kubeadm init ... 690
12.5 ... Pod-basiertes Overlay-Netz ... 696
12.6 ... Arbeiten mit Pod-basiertem etcd ... 700
12.7 ... Verfügbarkeit und Ausfallsicherheit der K8s-Komponenten im Pod-Modell ... 702
13. Kubernetes-Cluster ohne Docker ... 711
13.1 ... Kubernetes-Cluster mit CRI-O als Container-Engine ... 711
13.2 ... Buildah, Podman und Skopeo: (Docker)Images ohne Docker erstellen und verwalten ... 722
13.3 ... Buildah: »Look Mom, no Docker ...« ... 723
13.4 ... Image Build mit Kaniko ... 740
13.5 ... Podman ... 741
13.6 ... Podman vs crictl ... 748
13.7 ... Kompose -- der Docker-Compose-Konverter für K8s ... 750
14. Kubernetes-Cluster: Ressourcen verstehen und verwalten ... 753
14.1 ... kubectl ... 753
14.2 ... Kleine Kubernetes-Cluster und »Taint Nodes« ... 770
14.3 ... (Worker)Node-Kapazitäten ... 773
14.4 ... Ressourcen im Kubernetes-Cluster ausrollen ... 780
14.5 ... Pods ... 788
14.6 ... Pod- und Container-Ressourcen, -Requests und -Limitierungen sowie QoS und Capabilities ... 814
14.7 ... Umgebungsvariablen von Pods und Containern auslesen, setzen und nutzen ... 827
14.8 ... Pods und ConfigMaps ... 833
14.9 ... Pods und Init-Container ... 841
14.10 ... Health-Checks ... 847
14.11 ... Scale-Out: von Replication Controllern zu ReplicaSets ... 859
14.12 ... Jobs ... 872
14.13 ... Deployments ... 878
14.14 ... DaemonSets ... 898
14.15 ... Namespaces: Limits, Quotas und echte Multi-Tenancy? ... 904
14.16 ... Services ... 919
14.17 ... Ingress ... 964
14.18 ... Services, Service-Proxies, NetworkPolicies und mehr: Kube-Router to the rescue? ... 979
14.19 ... Service Meshes ... 989
14.20 ... Kubernetes-Volumes ... 1007
14.21 ... PetSets, StatefulSets und Stateful Pods ... 1046
14.22 ... HPA -- Horizontaler Pod-Autoscaler ... 1048
14.23 ... Weitere K8s-Objekte und -Ressourcen ... 1060
14.24 ... K8s-Labels und -Constraints ... 1062
14.25 ... K8s-NetworkPolicies ... 1071
14.26 ... K8s-Authentifizierung und -Autorisierung ... 1080
14.27 ... Die Operator-Ressource: Skalierung von Apps in Replikations-Setups out of the box? ... 1113
14.28 ... Helm-Deployments ... 1129
14.29 ... Prometheus ... 1138
14.30 ... Zentrales Logging mit ElasticSearch, Fluentd und Kibana ... 1148
14.31 ... Metrik-Erfassung im EFK-Stack ... 1160
15. Federated- und geografisch verteilte K8s-Cluster ... 1163
15.1 ... Vorbetrachtungen ... 1163
16. K8s: Debugging, Rolling Upgrades, Fazit ... 1169
16.1 ... Debugging/Troubleshooting ... 1169
16.2 ... Rolling Upgrades des K8s-Clusters ... 1170
16.3 ... Upgrades kubeadm-basierter Setups ... 1172
TEIL IV High-Level-Orchestrierungstools für Container-Infrastrukturen (on Premise und in der Cloud) ... 1177
17. OpenShift ... 1179
17.1 ... Vorbetrachtungen und Historisches ... 1179
17.2 ... OpenShift-Flavors ... 1182
17.3 ... Unterschiede und Ergänzungen zu Kubernetes ... 1185
17.4 ... OpenShift Service Broker ... 1190
17.5 ... OpenShift-Networking ... 1192
17.6 ... OpenShift Router: Ingress made easy ... 1196
18. OpenShift-Setup ... 1201
18.1 ... OpenShift Origin 3.9 unter CentOS 7.4 -- RPM- sowie Ansible-basierte Installation ... 1201
18.2 ... Einfache und geführte Single-Master-Installation ... 1206
18.3 ... OpenShift-Multimaster-Setup (3 Master, die alle ebenfalls Nodes sind) ... 1208
18.4 ... (Nachträgliche) Metrics-Konfiguration ... 1224
18.5 ... Prometheus ... 1225
18.6 ... Setup eines Logging-Stacks (EFK) ... 1226
18.7 ... Späterer Join zusätzlicher (Worker)Nodes ... 1230
19. OpenShift-Administration ... 1233
19.1 ... CLI-Tools ... 1233
19.2 ... User-, Token- und Role-Management in OpenShift ... 1241
19.3 ... OpenShift-spezifische Ressourcen im Cluster ... 1256
19.4 ... OpenShift-Router in der Praxis ... 1263
19.5 ... Accounts, Berechtigungskonzepte und Constraints ... 1284
19.6 ... DeploymentConfig erzeugen, verwalten und versionieren ... 1289
19.7 ... OpenShift Internal Registry ... 1294
19.8 ... OpenShift-Build-Prozesse ... 1299
19.9 ... Steuerung eines kompletten Container-Lifecycles: Build plus Rollout per OpenShift-GUI ... 1303
19.10 ... Neuerungen in OpenShift 3.10 ... 1306
20. Full-Featured Container-Security am Beispiel von OpenShift und NeuVector ... 1307
20.1 ... Vorbetrachtungen ... 1307
20.2 ... Architektur der NeuVector-Security-Lösung ... 1309
21. Cloud-Hosted Kubernetes ... 1315
21.1 ... Vorbetrachtungen ... 1315
21.2 ... GKE -- Google Kubernetes Engine ... 1317
21.3 ... EKS -- Amazons Elastic Kubernetes Service ... 1322
22. Fazit zur Container-Orchestrierung ... 1325
22.1 ... Vanilla-Kubernetes ... 1325
22.2 ... OpenShift ... 1326
22.3 ... Cloud-Hosted Kubernetes: GKE ... 1326
22.4 ... Cloud-Hosted Kubernetes: EKS ... 1326
TEIL V Software-Defined Storage für verteilte Container-Infrastrukturen ... 1327
23. Ab in den Untergrund ... 1329
23.1 ... Software-Defined Storage (SDS) und Container ... 1329
23.2 ... SDS-Funktionsprinzipien ... 1331
23.3 ... Ceph ... 1334
24. Einige Checkpunkte für Planung, Aufbau und Betrieb von Container-Clustern ... 1357
24.1 ... Evaluierung im Vorfeld ... 1357
24.2 ... Plattformauswahl ... 1358
24.3 ... Plattformen für den Testbetrieb und die spätere Produktion (On-Premise) ... 1358
24.4 ... Namespace-Design ... 1358
24.5 ... Build ... 1359
24.6 ... Registries ... 1359
24.7 ... Build und Rollout ... 1360
24.8 ... Welcher Orchestrierer? ... 1360
24.9 ... Betrieb und Administration ... 1360
24.10 ... Security ... 1361
25. Was war, was ist, was sein wird: Neue Meta-Ebenen und Verkomplizierung ... 1363
25.1 ... Container-Cluster und Microservices als Allheilmittel? ... 1363
25.2 ... The Road Ahead ... 1364
Index ... 1367