Szczegóły ebooka

Najlepsze praktyki w Kubernetes. Jak budować udane aplikacje

Najlepsze praktyki w Kubernetes. Jak budować udane aplikacje

Brendan Burns, Eddie Villalba, Dave Strebel, Lachlan Evenson

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!


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

  • Tytuł: Najlepsze praktyki w Kubernetes. Jak budować udane aplikacje
  • Autor: Brendan Burns, Eddie Villalba, Dave Strebel, Lachlan Evenson
  • Tytuł oryginału: Kubernetes Best Practices: Blueprints for Building Successful Applications on Kubernetes
  • Tłumaczenie: Robert Górczyński
  • ISBN: 978-83-283-7233-7, 9788328372337
  • Data wydania: 2020-12-22
  • Format: Ebook
  • Identyfikator pozycji: naprak
  • Wydawca: Helion