Kubernetes
Maîtrisez l'orchestrateur des infrastructures du futur
Kelsey Hightower
Brendan Burns
Joe Beda
Lachlan Everson
Dominique Maniez
Dunod
Préface
V
1 Introduction1
1.1 Vitesse2
1.2 Évolutivité de votre service et de vos équipes6
1.3 Abstraction de votre infrastructure10
1.4 Efficacité10
1.5 Écosystème cloud native12
1.6 Résumé12
2 Création et exécution de conteneurs15
2.1 Images de conteneurs16
2.2 Création d'images d'application avec Docker18
2.3 Génération d'images en plusieurs étapes22
2.4 Stockage d'images dans un registre distant24
2.5 L'interface du runtime de conteneur25
2.6 Nettoyage27
2.7 Résumé28
3 Déploiement d'un cluster Kubernetes29
3.1 Installation de Kubernetes sur un fournisseur de cloud public30
3.2 Installation de Kubernetes en local à l'aide de minikube32
3.3 Exécution de Kubernetes dans Docker32
3.4 Client Kubernetes33
3.5 Composants du cluster36
3.6 Résumé38
4 Commandes kubectl courantes39
4.1 Espaces de noms39
4.2 Contextes39
4.3 Affichage d'objets API kubernetes40
4.4 Création, mise à jour et suppression d'objets Kubernetes41
4.5 Étiquetage et annotation d'objets42
4.6 Commandes de débogage43
4.7 Gestion des clusters45
4.8 Auto-complétion des commandes45
4.9 Autres modes d'affichage de votre cluster46
4.10 Résumé46
5 Pods47
5.1 Pods dans Kubernetes48
5.2 Penser en termes de pods49
5.3 Le manifeste de pod49
5.4 Exécution des pods52
5.5 Accès à votre pod54
5.6 Contrôles d'intégrité56
5.7 Gestion des ressources58
5.8 Persistance des données avec des volumes62
5.9 Synthèse64
5.10 Résumé65
6 Étiquettes et annotations67
6.1 Étiquettes67
6.2 Annotations74
6.3 Nettoyage75
6.4 Résumé75
7 Découverte des services77
7.1 Qu'est-ce que la découverte des services ?77
7.2 L'objet service78
7.3 Dépasser les limites du cluster82
7.4 Intégration d'un équilibreur de charge83
7.5 Fonctionnalités avancées85
7.6 Connexion à d'autres environnements89
7.7 Nettoyage91
7.8 Résumé91
8 Équilibrage de charge HTTP avec Ingress93
8.1 Spécifications ou contrôleurs ?94
8.2 Installation de contour95
8.3 Utilisation d'Ingress97
8.4 Fonctionnalités avancées d'Ingress101
8.5 Implémentations alternatives d'Ingress104
8.6 L'avenir d'Ingress105
8.7 Résumé105
9 ReplicaSets107
9.1 Boucles de rapprochement108
9.2 Rapport entre les pods et les ReplicaSets108
9.3 Conception avec des ReplicaSets109
9.4 Spécifications des ReplicaSets110
9.5 Création d'un ReplicaSet111
9.6 Inspection d'un ReplicaSet112
9.7 Mise à l'échelle des ReplicaSets113
9.8 Suppression des ReplicaSets116
9.9 Résumé116
10 Déploiements117
10.1 Votre premier déploiement118
10.2 Création de déploiements120
10.3 Gestion des déploiements121
10.4 Mise à jour des déploiements123
10.5 Stratégies de déploiement127
10.6 Suppression d'un déploiement133
10.7 Surveillance d'un déploiement133
10.8 Résumé133
11 DaemonSets135
11.1 Ordonnanceur DaemonSet136
11.2 Création des DaemonSets137
11.3 Limitation des DaemonSets à des nouds particuliers139
11.4 Mise à jour d'un DaemonSet141
11.5 Suppression d'un DaemonSet142
11.6 Résumé142
12 Jobs143
12.1 Lobjet Job143
12.2 Modèles de jobs144
12.3 CronJob155
12.4 Résumé156
13 ConfigMaps et secrets157
13.1 ConfigMaps157
13.2 Secrets162
13.3 Contraintes de nommage166
13.4 Gestion des ConfigMaps et des secrets166
13.5 Résumé169
14 Contrôle d'accès basé sur les rôles pour Kubernetes171
14.1 Contrôle d'accès basé sur les rôles172
14.2 Techniques de gestion de RBAC175
14.3 Options avancées176
14.4 Résumé179
16 Maillage de services181
15.1 Chiffrement et authentification avec Mutal TLS182
15.2 Régulation du trafic182
15.3 Introspection183
15.4 Avez-vous vraiment besoin d'un maillage de services ?184
15.5 Introspection d'une implémentation de maillage de services184
15.6 Panorama des maillages de services185
15.7 Résumé186
16 Intégration des solutions de stockage à Kubernetes187
16.1 Importation de services externes188
16.2 Exécution de singletons fiables191
16.3 Stockage natif Kubernetes avec des StatefulSets197
16.4 Résumé205
17 Extension de Kubernetes207
17.1 Implications de l'extension de Kubernetes207
17.2 Possibilités d'extension208
17.3 Modèles de ressources personnalisées217
17.4 Résumé218
18 Accéder à Kubernetes à partir de langages de programmation courants219
18.1 L'API Kubernetes du point de vue d'un client219
18.2 Programmer I'API Kubernetes221
18.3 Résumé232
19 Sécuriser les applications Kubernetes233
19.1 Comprendre SecurityContext233
19.2 Sécurité des pods240
19.3 Gestion des comptes de service244
19.4 Contrôle d'accès basé sur les rôles244
19.5 RuntimeClass245
19.6 Stratégie réseau246
19.7 Maillage de services250
19.8 Outils d'évaluation de la sécurité250
19.9 Sécurité des images252
19.10 Résumé252
20 Stratégie et gouvernance des clusters Kubernetes253
20.1 Pourquoi la stratégie et la gouvernance sont importantes253
20.2 Flux d'admission254
20.3 Stratégie et gouvernance avec GateKeeper255
20.4 Résumé268
21 Déploiements d'applications multiclusters269
21.1 Avant même de commencer270
21.2 Commencer par une approche d'équilibrage de charge272
21.3 Création d'applications multiclusters273
21.4 Résumé278
22 Organisation de votre application279
22.1 Principes pour nous guider279
22.2 Gestion de votre application dans le contrôle de source282
22.3 Structurer votre application pour le développement, les tests et le déploiement285
22.4 Paramétrer votre application avec des modèles287
22.5 Déployer votre application dans le monde entier289
22.6 Résumé292
Annexe : Construction de votre propre cluster Kubernetes
293
Liste de courses293
Génération des images293
Premier démarrage295
Résumé300
Index
301