DevOps dla zdesperowanych. Praktyczny poradnik przetrwania - ebook
DevOps dla zdesperowanych. Praktyczny poradnik przetrwania - ebook
Początkowo metodyka DevOps miała wyłącznie ułatwiać współpracę zespołów IT. Dziś obserwuje się rozwój praktyk DevOps związanych z mikrousługami, potokami ciągłej integracji i ciągłego wdrażania, ponadto coraz częściej stosuje się tę metodologię w procesach zapewniania bezpieczeństwa infrastruktury IT, a także optymalizacji z wykorzystaniem uczenia maszynowego i sztucznej inteligencji. Wciąż jednak głównym przedmiotem zainteresowania praktyków DevOps jest dostarczanie standaryzowanego i przewidywalnego oprogramowania. Praktyczna znajomość zasad DevOps przydaje się szczególnie w pracy z nowoczesnym stosem aplikacji.
Tę książkę docenią przede wszystkim inżynierowie oprogramowania, programiści i administratorzy systemów, którzy muszą szybko zrozumieć praktyki DevOps. Znajdziesz tu bezcenną wiedzę, która ułatwi Ci efektywną pracę z nowoczesnym stosem aplikacji i sprawne przystąpienie do zadań związanych z DevOps. Poznasz najważniejsze praktyki stosowane podczas projektowania bezpiecznych i stabilnych systemów - implementację infrastruktury jako kodu (IaC) i rozwiązania z zakresu zarządzania konfiguracją. Zagłębisz się w tematy pobierania informacji o stanie systemu i definiowania powiadomień, gdy coś nie działa zgodnie z oczekiwaniami. Lektura pozwoli Ci przyswoić zagadnienia związane z konteneryzacją i przygotowaniem zautomatyzowanego potoku ciągłej integracji i ciągłego wdrażania (CI/CD), dzięki czemu skompilujesz, przetestujesz i wdrożysz kod.
Najciekawsze zagadnienia:
- tworzenie maszyny wirtualnej Ubuntu za pomocą oprogramowania Vagrant i Ansible
- zarządzanie użytkownikami, grupami i bezpieczeństwem haseł
- wdrażanie klucza publicznego i uwierzytelniania wielopoziomowego podczas sesji SSH
- automatyzacja zapory sieciowej bazującej na hoście
- technologie Docker i Kubernetes
- stos monitorowania i rozwiązywanie problemów z wydajnością
DevOps. Rozwijaj doskonałość nowoczesnych infrastruktur pełnego stosu!
Spis treści
Wprowadzenie
Część I. Infrastruktura jako kod, zarządzanie konfiguracją, zapewnienie bezpieczeństwa i administrowanie systemami
1. Przygotowanie maszyny wirtualnej
- Dlaczego warto używać kodu do utworzenia infrastruktury?
- Rozpoczęcie pracy z narzędziem Vagrant
- Instalacja
- Anatomia pliku Vagrantfile
- Podstawowe polecenia Vagrant
- Rozpoczęcie pracy z Ansible
- Instalacja
- Najważniejsze koncepcje Ansible
- Scenariusz Ansible
- Podstawowe polecenia Ansible
- Utworzenie maszyny wirtualnej z systemem operacyjnym Ubuntu
- Podsumowanie
2. Używanie Ansible do zarządzania hasłami, użytkownikami i grupami
- Wymuszenie stosowania silnych haseł
- Instalowanie narzędzia libpam-pwquality
- Konfiguracja modułu pam_pwquality w celu wymuszenia silniejszej polityki haseł
- Rodzaje użytkowników w systemie Linux
- Rozpoczęcie pracy z modułem user w Ansible
- Wygenerowanie silnego hasła
- Grupy w systemie Linux
- Rozpoczęcie pracy z modułem group w Ansible
- Przypisywanie użytkownika do grupy
- Tworzenie zasobów chronionych
- Uaktualnianie maszyny wirtualnej
- Sprawdzanie uprawnień użytkownika i grupy
- Podsumowanie
3. Używanie Ansible do konfiguracji SSH
- Poznawanie i aktywowanie uwierzytelnienia z użyciem klucza publicznego
- Generowanie pary klucza publicznego
- Używanie Ansible w celu pobrania w maszynie wirtualnej Twojego klucza publicznego
- Dodawanie uwierzytelniania wielopoziomowego
- Instalowanie Google Authenticator
- Konfigurowanie modułu Google Authenticator
- Konfiguracja PAM dla modułu Google Authenticator
- Konfigurowanie serwera SSH
- Ponowne uruchomienie serwera SSH za pomocą procedury obsługi
- Przygotowanie maszyny wirtualnej
- Testowanie dostępu za pomocą SSH
- Podsumowanie
4. Kontrolowanie za pomocą sudo poleceń wydawanych przez użytkownika
- Czym jest sudo?
- Planowanie polityki bezpieczeństwa sudoers
- Instalacja aplikacji internetowej Greeting
- Anatomia pliku sudoers
- Utworzenie pliku sudoers
- Szablon sudoers
- Przygotowanie maszyny wirtualnej
- Testowanie uprawnień
- Uzyskanie dostępu do aplikacji internetowej
- Edycja pliku greeting.py w celu przetestowania polityki sudoers
- Zatrzymywanie i uruchamianie serwera za pomocą polecenia systemctl
- Audyt dzienników zdarzeń
- Podsumowanie
5. Automatyzacja i testowanie zapory sieciowej hosta
- Planowanie reguł zapory sieciowej
- Automatyzacja reguł UFW
- Przygotowanie maszyny wirtualnej
- Testowanie zapory sieciowej
- Skanowanie portów za pomocą nmap
- Rejestrowanie danych zapory sieciowej
- Ograniczenie komunikacji z portem
- Podsumowanie
Część II. Konteneryzacja i wdrażanie nowoczesnych aplikacji
6. Konteneryzacja aplikacji za pomocą Dockera
- Ogólne omówienie Dockera
- Rozpoczęcie pracy z Dockerem
- Polecenia w pliku Dockerfile
- Obraz kontenera i jego warstwy
- Kontener
- Przestrzenie nazw i cgroups
- Instalowanie i testowanie Dockera
- Instalowanie silnika Dockera i minikube
- Instalowanie klienta Dockera oraz zdefiniowanie zmiennych środowiskowych Dockera
- Sprawdzenie możliwości nawiązania połączenia z klientem Dockera
- Konteneryzacja przykładowej aplikacji
- Analiza przykładowego pliku Dockerfile
- Tworzenie obrazu kontenera
- Weryfikacja obrazu Dockera
- Uruchamianie kontenera
- Inne polecenia klienta Dockera
- exec
- rm
- inspect
- history
- stats
- Testowanie kontenera
- Nawiązanie połączenia z telnet-server
- Pobieranie dzienników zdarzeń z kontenera
- Podsumowanie
7. Koordynowanie kontenerów za pomocą Kubernetesa
- Ogólne omówienie Kubernetesa
- Zasoby związane z zadaniami Kubernetesa
- Pod
- ReplicaSet
- Deployment
- StatefulSet
- Service
- Volume
- Secret
- ConfigMap
- Namespace
- Wdrażanie przykładowej aplikacji telnet-server
- Praca z Kubernetesem
- Przegląd plików manifestu
- Utworzenie zasobów Deployment i Service
- Wyświetlanie zasobów Deployment i Service
- Testowanie zasobów Deployment i Service
- Uzyskanie dostępu do aplikacji telnet-server
- Rozwiązywanie problemów
- Usunięcie poda
- Skalowanie rozwiązania
- Dzienniki zdarzeń
- Podsumowanie
8. Wdrażanie kodu
- Potok CI/CD w nowoczesnym stosie aplikacji
- Przygotowanie potoku
- Przegląd pliku skaffold.yaml
- Testowanie kontenera
- Symulowanie potoku programistycznego
- Wprowadzenie zmiany w kodzie
- Testowanie zmiany w kodzie
- Testowanie wycofania zmian
- Inne narzędzia CI/CD
- Podsumowanie
Część III. Obserwowalność i rozwiązywanie problemów
9. Obserwowalność
- Ogólne omówienie monitorowania
- Monitorowanie przykładowej aplikacji
- Instalowanie stosu monitorowania
- Weryfikacja instalacji
- Wskaźniki
- Złote sygnały
- Dostosowanie wzorca monitorowania
- Panel aplikacji telnet-server
- PromQL - krótkie wprowadzenie
- Ostrzeżenia
- Przeglądanie w aplikacji Prometheus ostrzeżeń związanych ze złotymi sygnałami
- Routing i powiadomienia
- Podsumowanie
10. Rozwiązywanie problemów
- Rozwiązywanie problemów i debugowanie - krótkie wprowadzenie
- Scenariusz - wysoki poziom średniego obciążenia systemu
- uptime
- top
- Następne kroki
- Scenariusz - wysoki poziom użycia pamięci
- free
- vmstat
- ps
- Następne kroki
- Scenariusz - wysoka wartość iowait
- iostat
- iotop
- Następne kroki
- Scenariusz - nieudane ustalenie nazwy hosta
- resolv.conf
- resolvectl
- dig
- Następne kroki
- Scenariusz - brak wolnego miejsca na dysku
- df
- find
- lsof
- Następne kroki
- Scenariusz - połączenie zostało odrzucone
- curl
- ss
- tcpdump
- Następne kroki
- Sprawdzanie dzienników zdarzeń
- Najczęściej stosowane dzienniki zdarzeń
- Najczęściej używane polecenia journalctl
- Przetwarzanie dzienników zdarzeń
- Analizowanie procesów
- strace
- Podsumowanie
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-1127-7 |
Rozmiar pliku: | 4,2 MB |