Najlepsze praktyki w Kubernetes. Jak budować udane aplikacje - ebook
Najlepsze praktyki w Kubernetes. Jak budować udane aplikacje - ebook
Systemy informatyczne oparte na chmurze stały się atrakcyjną alternatywą dla standardowej infrastruktury. Wymusiły jednak radykalne zmiany w praktykach tworzenia, wdrażania i utrzymywania aplikacji. Dziś uwaga profesjonalistów skupiona jest na Kubernetes, który w ciągu zaledwie kilku lat stał się faktycznym standardem wdrażania natywnej chmury. Aby tworzone aplikacje funkcjonowały wydajnie, bezawaryjnie i niezawodnie, warto wdrożyć i stosować wzorce i najlepsze praktyki. Konieczne jest również przemodelowanie sposobu pracy programistów.
Ta książka jest przeznaczona dla profesjonalnych użytkowników Kubernetes, którzy chcą poznać wzorce i najlepsze praktyki przy wdrażaniu rzeczywistych rozwiązań. Znalazły się tu informacje o jego działaniu w różnych skalach, topologiach i domenach, a także liczne przykłady zastosowania omawianych technologii. Sporo miejsca poświęcono zagadnieniom projektowania aplikacji, konfiguracji i działania usług Kubernetes, a także ciągłej integracji i testowania aplikacji. Ważnym zagadnieniem są takie aspekty zarządzania klastrem jak przydzielanie zasobów, zapewnienie bezpieczeństwa czy autoryzacja i dostęp do klastra. Prezentowane treści zilustrowano fragmentami przejrzystego kodu, co dodatkowo zwiększa przydatność tej książki w pracy inżyniera.
Najciekawsze zagadnienia:
- konfiguracja i projektowanie aplikacji w Kubernetes
- wzorce monitorowania i zarządzanie uaktualnieniami aplikacji
- wdrażanie i wycofywanie aplikacji Kubernetes
- polityka sieciowa i współpraca Kubernetes z architekturą Service Mesh
- platformy wysokiego poziomu na bazie Kubernetes
- Kubernetes i uczenie maszynowe
Najlepsze praktyki w Kubernetes: poradzisz sobie z każdym wyzwaniem!
Spis treści
Wprowadzenie 11
1. Konfiguracja podstawowej usługi 15
- Ogólne omówienie aplikacji 15
- Zarządzanie plikami konfiguracyjnymi 15
- Tworzenie usługi replikowanej za pomocą wdrożeń 17
- Najlepsze praktyki dotyczące zarządzania obrazami kontenera 17
- Tworzenie replikowanej aplikacji 18
- Konfiguracja zewnętrznego przychodzącego ruchu sieciowego HTTP 20
- Konfigurowanie aplikacji za pomocą zasobu ConfigMap 21
- Zarządzanie uwierzytelnianiem za pomocą danych poufnych 22
- Wdrożenie prostej bezstanowej bazy danych 25
- Utworzenie za pomocą usług mechanizmu równoważenia obciążenia TCP 28
- Przekazanie przychodzącego ruchu sieciowego do serwera pliku statycznego 29
- Parametryzowanie aplikacji za pomocą menedżera pakietów Helm 31
- Najlepsze praktyki dotyczące wdrożenia 32
- Podsumowanie 33
2. Sposób pracy programisty 35
- Cele 35
- Tworzenie klastra programistycznego 36
- Konfiguracja klastra współdzielonego przez wielu programistów 37
- Przygotowywanie zasobów dla użytkownika 38
- Tworzenie i zabezpieczanie przestrzeni nazw 40
- Zarządzanie przestrzeniami nazw 42
- Usługi na poziomie klastra 43
- Umożliwienie pracy programistom 43
- Konfiguracja początkowa 43
- Umożliwienie aktywnego programowania 44
- Umożliwienie testowania i debugowania 45
- Najlepsze praktyki dotyczące konfiguracji środowiska programistycznego 46
- Podsumowanie 46
3. Monitorowanie i rejestrowanie danych w Kubernetes 47
- Wskaźniki kontra dzienniki zdarzeń 47
- Techniki monitorowania 47
- Wzorce monitorowania 48
- Ogólne omówienie wskaźników Kubernetes 49
- cAdvisor 49
- Wskaźniki serwera 50
- kube-state-metrics 50
- Które wskaźniki powinny być monitorowane? 51
- Narzędzia do monitorowania 52
- Monitorowanie Kubernetes za pomocą narzędzia Prometheus 54
- Ogólne omówienie rejestrowania danych 58
- Narzędzia przeznaczone do rejestrowania danych 60
- Rejestrowanie danych za pomocą stosu EFK 60
- Ostrzeganie 62
- Najlepsze praktyki dotyczące monitorowania, rejestrowania danych i ostrzegania 64
- Monitorowanie 64
- Rejestrowanie danych 64
- Ostrzeganie 64
- Podsumowanie 65
4. Konfiguracja, dane poufne i RBAC 67
- Konfiguracja za pomocą zasobu ConfigMap i danych poufnych 67
- ConfigMap 67
- Dane poufne 68
- Najlepsze praktyki dotyczące API zasobu ConfigMap i danych poufnych 69
- RBAC 74
- Krótkie wprowadzenie do mechanizmu RBAC 75
- Najlepsze praktyki dotyczące mechanizmu RBAC 77
- Podsumowanie 79
5. Ciągła integracja, testowanie i ciągłe wdrażanie 81
- System kontroli wersji 82
- Ciągła integracja 82
- Testowanie 82
- Kompilacja kontenera 83
- Oznaczanie tagiem obrazu kontenera 84
- Ciągłe wdrażanie 85
- Strategie wdrażania 85
- Testowanie w produkcji 89
- Stosowanie inżynierii chaosu i przygotowania 91
- Konfiguracja ciągłej integracji 91
- Konfiguracja ciągłego wdrażania 93
- Przeprowadzanie operacji uaktualnienia 94
- Prosty eksperyment z inżynierią chaosu 94
- Najlepsze praktyki dotyczące technik ciągłej integracji i ciągłego wdrażania 95
- Podsumowanie 96
6. Wersjonowanie, wydawanie i wdrażanie aplikacji 97
- Wersjonowanie aplikacji 98
- Wydania aplikacji 98
- Wdrożenia aplikacji 99
- Połączenie wszystkiego w całość 100
- Najlepsze praktyki dotyczące wersjonowania, wydawania i wycofywania wdrożeń 103
- Podsumowanie 104
7. Rozpowszechnianie aplikacji na świecie i jej wersje robocze 105
- Rozpowszechnianie obrazu aplikacji 106
- Parametryzacja wdrożenia 107
- Mechanizm równoważenia obciążenia związanego z ruchem sieciowym w globalnie wdrożonej aplikacji 107
- Niezawodne wydawanie oprogramowania udostępnianego globalnie 108
- Weryfikacja przed wydaniem oprogramowania 108
- Region kanarkowy 111
- Identyfikacja typów regionów 111
- Przygotowywanie wdrożenia globalnego 112
- Gdy coś pójdzie nie tak 113
- Najlepsze praktyki dotyczące globalnego wdrożenia aplikacji 114
- Podsumowanie 115
8. Zarządzanie zasobami 117
- Zarządca procesów w Kubernetes 117
- Predykaty 117
- Priorytety 118
- Zaawansowane techniki stosowane przez zarządcę procesów 119
- Podobieństwo i brak podobieństwa podów 119
- nodeSelector 120
- Wartość taint i tolerancje 120
- Zarządzanie zasobami poda 122
- Żądanie zasobu 122
- Ograniczenia zasobów i jakość usługi poda 123
- PodDisruptionBudget 125
- Zarządzanie zasobami za pomocą przestrzeni nazw 126
- ResourceQuota 127
- LimitRange 128
- Skalowanie klastra 129
- Skalowanie aplikacji 130
- Skalowanie za pomocą HPA 131
- HPA ze wskaźnikami niestandardowymi 132
- Vertical Pod Autoscaler 133
- Najlepsze praktyki dotyczące zarządzania zasobami 133
- Podsumowanie 134
9. Sieć, bezpieczeństwo sieci i architektura Service Mesh 135
- Reguły działania sieci w Kubernetes 135
- Wtyczki sieci 137
- Kubenet 137
- Najlepsze praktyki dotyczące pracy z Kubenet 138
- Wtyczka zgodna ze specyfikacją CNI 139
- Najlepsze praktyki dotyczące pracy z wtyczkami zgodnymi ze specyfikacją CNI 139
- Usługi w Kubernetes 140
- Typ usługi ClusterIP 140
- Typ usługi NodePort 142
- Typ usługi ExternalName 143
- Typ usługi LoadBalancer 143
- Ingress i kontrolery Ingress 144
- Najlepsze praktyki dotyczące usług i kontrolerów Ingress 146
- Polityka zapewnienia bezpieczeństwa sieci 146
- Najlepsze praktyki dotyczące polityki sieci 148
- Architektura Service Mesh 150
- Najlepsze praktyki dotyczące architektury Service Mesh 151
- Podsumowanie 152
10. Bezpieczeństwo poda i kontenera 153
- API PodSecurityPolicy 153
- Włączenie zasobu PodSecurityPolicy 153
- Anatomia zasobu PodSecurityPolicy 155
- Wyzwania związane z zasobem PodSecurityPolicy 162
- Najlepsze praktyki dotyczące zasobu PodSecurityPolicy 163
- Następne kroki związane z zasobem PodSecurityPolicy 163
- Izolacja zadania i API RuntimeClass 164
- Używanie API RuntimeClass 164
- Implementacje środowiska uruchomieniowego 165
- Najlepsze praktyki dotyczące izolacji zadań i API RuntimeClass 166
- Pozostałe rozważania dotyczące zapewnienia bezpieczeństwa poda i kontenera 166
- Kontrolery dopuszczenia 166
- Narzędzia do wykrywania włamań i anomalii 167
- Podsumowanie 167
11. Polityka i zarządzanie klastrem 169
- Dlaczego polityka i zarządzanie są ważne? 169
- Co odróżnia tę politykę od innych? 169
- Silnik polityki natywnej chmury 170
- Wprowadzenie do narzędzia Gatekeeper 170
- Przykładowe polityki 171
- Terminologia stosowana podczas pracy z Gatekeeper 171
- Definiowanie szablonu ograniczenia 172
- Definiowanie ograniczenia 173
- Replikacja danych 174
- UX 174
- Audyt 175
- Poznanie narzędzia Gatekeeper 176
- Następne kroki podczas pracy z narzędziem Gatekeeper 176
- Najlepsze praktyki dotyczące polityki i zarządzania 176
- Podsumowanie 177
12. Zarządzanie wieloma klastrami 179
- Do czego potrzebujesz wielu klastrów? 179
- Kwestie do rozważenia podczas projektowania architektury składającej się z wielu klastrów 181
- Zarządzanie wieloma wdrożeniami klastrów 183
- Wzorce wdrażania i zarządzania 183
- Podejście GitOps w zakresie zarządzania klastrami 185
- Narzędzia przeznaczone do zarządzania wieloma klastrami 187
- Federacja Kubernetes 187
- Najlepsze praktyki dotyczące zarządzania wieloma klastrami 190
- Podsumowanie 191
13. Integracja usług zewnętrznych z Kubernetes 193
- Importowanie usług do Kubernetes 193
- Pozbawiona selektora usługa dla stabilnego adresu IP 194
- Oparte na rekordzie CNAME usługi dla stabilnych nazw DNS 194
- Podejście oparte na aktywnym kontrolerze 196
- Eksportowanie usług z Kubernetes 197
- Eksportowanie usług za pomocą wewnętrznych mechanizmów równoważenia obciążenia 197
- Eksportowanie usług za pomocą usługi opartej na NodePort 198
- Integracja komputerów zewnętrznych z Kubernetes 199
- Współdzielenie usług między Kubernetes 200
- Narzędzia opracowane przez podmioty zewnętrzne 200
- Najlepsze praktyki dotyczące nawiązywania połączeń między klastrami a usługami zewnętrznymi 201
- Podsumowanie 201
14. Uczenie maszynowe w Kubernetes 203
- Dlaczego Kubernetes doskonale sprawdza się w połączeniu z uczeniem maszynowym? 203
- Sposób pracy z zadaniami uczenia głębokiego 204
- Uczenie maszynowe dla administratorów klastra Kubernetes 205
- Trenowanie modelu w Kubernetes 205
- Trenowanie rozproszone w Kubernetes 208
- Ograniczenia dotyczące zasobów 208
- Sprzęt specjalizowany 208
- Biblioteki, sterowniki i moduły jądra 209
- Pamięć masowa 210
- Sieć 211
- Protokoły specjalizowane 211
- Obawy użytkowników zajmujących się analizą danych 212
- Najlepsze praktyki dotyczące wykonywania w Kubernetes zadań związanych z uczeniem maszynowym 212
- Podsumowanie 213
15. Tworzenie wzorców aplikacji wysokiego poziomu na podstawie Kubernetes 215
- Podejścia w zakresie tworzenia abstrakcji wysokiego poziomu 215
- Rozszerzanie Kubernetes 216
- Rozszerzanie klastrów Kubernetes 216
- Wrażenia użytkownika podczas rozszerzania Kubernetes 218
- Rozważania projektowe podczas budowania platformy 218
- Obsługa eksportowania do obrazu kontenera 218
- Obsługa istniejących mechanizmów dla usług i wykrywania usług 219
- Najlepsze praktyki dotyczące tworzenia platform dla aplikacji 220
- Podsumowanie 220
16. Zarządzanie informacjami o stanie i aplikacjami wykorzystującymi te dane 221
- Woluminy i punkty montowania 222
- Najlepsze praktyki dotyczące woluminów 223
- Pamięć masowa w Kubernetes 223
- API PersistentVolume 223
- API PersistentVolumeClaims 224
- Klasy pamięci masowej 225
- Najlepsze praktyki dotyczące pamięci masowej w Kubernetes 226
- Aplikacje obsługujące informacje o stanie 227
- Zasób StatefulSet 228
- Operatory 229
- Najlepsze praktyki dotyczące zasobu StatefulSet i operatorów 230
- Podsumowanie 231
17. Sterowanie dopuszczeniem i autoryzacja 233
- Sterowanie dopuszczeniem 233
- Czym jest kontroler dopuszczenia? 234
- Typy kontrolerów dopuszczenia 234
- Konfiguracja zaczepu sieciowego dopuszczenia 235
- Najlepsze praktyki dotyczące sterowania dopuszczeniem 237
- Autoryzacja 239
- Moduły autoryzacji 239
- Najlepsze praktyki dotyczące autoryzacji 242
- Podsumowanie 242
18. Zakończenie 243
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-7233-7 |
Rozmiar pliku: | 6,1 MB |