Kubernetes. Tworzenie natywnych aplikacji działających w chmurze - ebook
Kubernetes. Tworzenie natywnych aplikacji działających w chmurze - ebook
Mimo że w 2018 roku Kubernetes zyskał reputację standardowego narzędzia do zarządzania kontenerami, wciąż należy traktować tę technologię jako znajdującą się w dość wczesnej fazie rozwoju. Możliwości tej platformy z czasem rosną i stają się coraz ciekawsze. Standardowym działaniem jest uruchamianie klastrów w Kubernetesie, jednak o wiele bardziej interesujące wydaje się samodzielne rozszerzanie tej platformy o własne kontrolery i rozbudowa API Kubernetesa w celu dostosowania do swoich wymagań. W przypadku niektórych złożonych projektów programowanie potrzebnych komponentów jest jedynym racjonalnym rozwiązaniem.
To książka przeznaczona dla programistów, którzy chcą maksymalnie wykorzystać możliwości Kubernetesa, również poprzez pisanie własnych zasobów. W praktyczny sposób pokazuje, jak rozwijać natywne, działające w chmurze aplikacje dla Kubernetesa. Wyjaśnia, w jaki sposób działa biblioteka API client-go i jak należy budować zasoby niestandardowe. Znalazło się tu obszerne i szczegółowe omówienie interfejsu programowania i działania platformy Kubernetes, a także pisania stabilnego oprogramowania w języku Go. Nie zabrakło szeregu wskazówek dotyczących samego pisania kodu oraz przeprowadzania testów. Dużo uwagi poświęcono niestandardowym zasobom, kontrolerom, webhookom i niestandardowym serwerom API oraz wzorcom rozszerzania Kubernetesa.
W tej książce między innymi:
- zasady programowania dla Kubernetesa
- API Kubernetesa i client-go
- korzystanie z niestandardowych zasobów
- pisanie i udostępnianie operatorów
- tworzenie niestandardowych serwerów API
Kubernetes: wykorzystaj w pełni jego potencjał!
Spis treści
Przedmowa 11
1. Wprowadzenie 15
- Czym jest programowanie dla Kubernetesa? 15
- Przykład wprowadzający 17
- Wzorce rozszerzania 18
- Kontrolery i operatory 19
- Pętla sterowania 19
- Zdarzenia 20
- Wyzwalacze sterowane zmianami i sterowane poziomem 22
- Modyfikowanie świata zewnętrznego lub obiektów w klastrze 24
- Współbieżność optymistyczna 27
- Operatory 29
- Podsumowanie 30
2. Podstawy API Kubernetesa 33
- Serwer API 33
- Interfejs HTTP serwera API 34
- Terminologia związana z API 35
- Wersjonowanie API w Kubernetesie 38
- Deklaratywne zarządzanie stanem 39
- Używanie API w wierszu poleceń 39
- W jaki sposób serwer API przetwarza żądania? 43
- Podsumowanie 46
3. Podstawy klienta client-go 47
- Repozytoria 47
- Biblioteka klienta 47
- Typy w API Kubernetesa 49
- Repozytorium API Machinery 50
- Tworzenie i używanie klientów 50
- Wersjonowanie i kompatybilność 52
- Wersje API i gwarancje kompatybilności 55
- Obiekty Kubernetesa w Go 56
- TypeMeta 57
- ObjectMeta 60
- Sekcje spec i status 60
- Zbiory klientów 61
- Podzasoby status - UpdateStatus 63
- Wyświetlanie i usuwanie obiektów 63
- Czujki 63
- Rozszerzanie klientów 64
- Opcje klientów 65
- Informatory i buforowanie 66
- Kolejka zadań 70
- Repozytorium API Machinery - szczegóły 72
- Rodzaje 72
- Zasoby 72
- Odwzorowania REST 73
- Schemat 74
- Vendoring 75
- glide 76
- dep 76
- Moduły języka Go 77
- Podsumowanie 78
4. Używanie niestandardowych zasobów 79
- Wykrywanie informacji 81
- Definicje typów 82
- Zaawansowane mechanizmy niestandardowych zasobów 84
- Sprawdzanie poprawności niestandardowych zasobów 84
- Kategorie i krótkie nazwy 86
- Wyświetlane kolumny 88
- Podzasoby 89
- Niestandardowe zasoby z perspektywy programisty 93
- Klient dynamiczny 93
- Klienty typizowane 95
- Klient controller-runtime z narzędzi Operator SDK i Kubebuilder 99
- Podsumowanie 101
5. Automatyzowanie generowania kodu 103
- Po co stosować generatory kodu? 103
- Wywoływanie generatorów 103
- Kontrolowanie generatorów za pomocą znaczników 105
- Znaczniki globalne 106
- Znaczniki lokalne 107
- Znaczniki dla generatora deepcopy-gen 108
- runtime.Object i DeepCopyObject 108
- Znaczniki dla generatora client-gen 109
- Generatory informer-gen i lister-gen 111
- Podsumowanie 111
6. Narzędzia służące do tworzenia operatorów 113
- Czynności wstępne 113
- Wzorowanie się na projekcie sample-controller 114
- Przygotowania 114
- Logika biznesowa 115
- Kubebuilder 121
- Przygotowania 122
- Logika biznesowa 126
- Operator SDK 130
- Przygotowania 131
- Logika biznesowa 132
- Inne podejścia 135
- Wnioski i przyszłe kierunki rozwoju 136
- Podsumowanie 136
7. Udostępnianie kontrolerów i operatorów 137
- Zarządzanie cyklem życia i pakowanie 137
- Pakowanie - trudności 137
- Helm 138
- Kustomize 140
- Inne techniki pakowania kodu 142
- Najlepsze praktyki z obszaru pakowania kodu 143
- Zarządzanie cyklem życia 143
- Instalacje gotowe do użytku w środowisku produkcyjnym 144
- Odpowiednie uprawnienia 144
- Zautomatyzowany proces budowania i testowania 147
- Niestandardowe kontrolery i obserwowalność 148
- Podsumowanie 151
8. Niestandardowe serwery API 153
- Scenariusze stosowania niestandardowych serwerów API 153
- Przykład - pizzeria 155
- Architektura - agregowanie 156
- Usługi API 157
- Wewnętrzna struktura niestandardowego serwera API 160
- Delegowane uwierzytelnianie i obsługa zaufania 161
- Delegowana autoryzacja 162
- Pisanie niestandardowych serwerów API 164
- Wzorzec opcji i konfiguracji oraz szablonowy kod potrzebny do uruchomienia serwera 165
- Pierwsze uruchomienie 171
- Typy wewnętrzne i konwersja 172
- Pisanie typów API 175
- Konwersje 176
- Ustawianie wartości domyślnych 179
- Testowanie konwersji powrotnych 181
- Sprawdzanie poprawności 183
- Rejestr i strategia 185
- Instalowanie API 189
- Kontrola dostępu 192
- Instalowanie niestandardowych serwerów API 201
- Manifesty instalacji 202
- Konfigurowanie systemu RBAC 204
- Uruchamianie niestandardowego serwera API bez zabezpieczeń 205
- Certyfikaty i zaufanie 207
- Współdzielenie systemu etcd 209
- Podsumowanie 211
9. Zaawansowane zasoby niestandardowe 213
- Wersjonowanie niestandardowych zasobów 213
- Poprawianie kodu do obsługi pizzerii 214
- Architektura webhooków konwersji 216
- Implementacja webhooka konwersji 220
- Przygotowywanie serwera HTTPS 220
- Instalowanie webhooka konwersji 226
- Konwersja w praktyce 227
- Webhooki kontroli dostępu 229
- Wymogi związane z kontrolą dostępu w przykładzie 230
- Architektura webhooków kontroli dostępu 231
- Rejestrowanie webhooków kontroli dostępu 233
- Implementowanie webhooka kontroli dostępu 234
- Webhook kontroli dostępu w praktyce 239
- Schematy strukturalne i przyszłość definicji CRD 240
- Schematy strukturalne 240
- Okrajanie a zachowywanie nieznanych pól 242
- Sterowanie okrajaniem 243
- IntOrString i RawExtension 244
- Wartości domyślne 244
- Podsumowanie 246
A. Materiały 247
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-6406-6 |
Rozmiar pliku: | 5,5 MB |