DevOps w praktyce. Wdrażanie narzędzi Terraform, Azure DevOps, Kubernetes i Jenkins - ebook
DevOps w praktyce. Wdrażanie narzędzi Terraform, Azure DevOps, Kubernetes i Jenkins - ebook
DevOps jest doskonałym rozwiązaniem dla każdej organizacji, która musi zwiększyć przepływ pracy technicznej przy zachowaniu odpowiedniej jakości i niezawodności. Pozwala też na uzyskanie trwałości projektów i wzorową współpracę programistów z zespołem operacyjnym. Wiele organizacji decyduje się na wdrożenie praktyk DevOps. Pomyślne przeprowadzenie tego procesu wymaga przygotowań, w ich ramach zaś kluczowe znaczenie ma wybór odpowiednich do potrzeb wzorców i narzędzi.
To drugie, zaktualizowane i uzupełnione wydanie książki poświęconej wdrażaniu najlepszych praktyk DevOps przy użyciu nowoczesnych narzędzi. Przedstawiono w niej informacje o kulturze DevOps, opisano różne narzędzia i techniki stosowane do jej wdrażania, takie jak IaC, potoki Git i CI/CD, a także automatyzację testów i analizę kodu. Sporo miejsca poświęcono konteneryzacji aplikacji za pomocą Dockera i platformy Kubernetes. Znajdziemy tutaj również kwestię skracania przestojów podczas wdrażania oprogramowania i omówienie możliwości stosowania praktyk DevOps w projektach open source. Warto zwrócić uwagę na ostatni rozdział, w którym pokazano zasady wdrażania niektórych praktyk DevOps w całym cyklu życia projektów.
Najciekawsze zagadnienia:
- infrastruktura jako kod (IaC)
- udostępnianie i konfigurowanie infrastruktury chmurowej
- tworzenie lokalnego środowiska programistycznego i konteneryzowanie aplikacji
- zastosowanie DevSecOps do testowania zgodności i zabezpieczania infrastruktury
- potoki DevOps CI/CD i zielononiebieskie praktyki wdrażania
- praktyki DevOps dla projektów open source
Potrzebujesz efektywności? Praktykuj DevOps i wygrywaj na rynku!
Spis treści
O autorze
O recenzentach
Przedmowa
CZĘŚĆ 1. DevOps i infrastruktura jako kod
- Rozdział 1. Kultura DevOps i praktyki kodowania infrastruktury
- Pierwsze kroki z DevOps
- Wdrażanie CI/CD i ciągłe wdrażanie
- Ciągła integracja (CI)
- Ciągłe dostarczanie (CD)
- Ciągłe wdrażanie
- Zrozumienie praktyk IaC
- Korzyści IaC
- Języki i narzędzia IaC
- Topologia IaC
- Ewolucja kultury DevOps
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 2. Udostępnianie infrastruktury chmury za pomocą Terraform
- Wymagania techniczne
- Instalacja Terraform
- Instalacja ręczna
- Instalacja za pomocą skryptu
- Integracja Terraform z Azure Cloud Shell
- Konfigurowanie Terraform dla platformy Azure
- Tworzenie jednostki usługi Azure SP
- Konfiguracja dostawcy Terraform
- Konfiguracja Terraform w celu rozwoju aplikacji i testowania
- Tworzenie skryptu Terraform w celu wdrożenia infrastruktury Azure
- Postępowanie zgodnie z dobrymi praktykami Terraform
- Uruchamianie Terraform w celu wdrożenia
- Inicjalizacja
- Podgląd zmian
- Stosowanie zmian
- Zrozumienie cyklu życia Terraform z różnymi opcjami wiersza polecenia
- Używanie polecenia destroy w celu przebudowy
- Formatowanie i walidacja konfiguracji
- Cykl życia Terraform w procesie CI/CD
- Ochrona pliku stanu za pomocą zdalnego zaplecza
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 3. Używanie Ansible do konfigurowania infrastruktury IaaS
- Wymagania techniczne
- Instalacja Ansible
- Instalacja Ansible za pomocą skryptu
- Integracja Ansible z Azure Cloud Shell
- Artefakty Ansible
- Konfiguracja Ansible
- Tworzenie pliku inwentarza Ansible
- Plik inwentarza
- Konfigurowanie hostów w pliku inwentarza
- Testowanie pliku inwentarza
- Uruchomienie pierwszego playbooka
- Tworzenie prostego playbooka
- Opis modułów Ansible
- Ulepszanie playbooków za pomocą ról
- Uruchomienie Ansible
- Korzystanie z podglądu lub z opcji testowej pracy (ang. dry run)
- Zwiększanie poziomu logowania
- Ochrona danych za pomocą Ansible Vault
- Używanie zmiennych w Ansible w celu lepszej konfiguracji
- Ochrona wrażliwych danych za pomocą Ansible Vault
- Korzystanie z dynamicznego pliku inwentarza dla infrastruktury Azure
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 4. Optymalizacja wdrażania infrastruktury za pomocą Packera
- Wymagania techniczne
- Opis Packera
- Instalacja Packera
- Tworzenie szablonów Packera dla maszyn wirtualnych Azure za pomocą skryptów
- Struktura szablonu Packera
- Tworzenie obrazu platformy Azure za pomocą szablonu Packera
- Tworzenie szablonów Packera przy użyciu Ansible
- Tworzenie playbooka Ansible
- Integracja playbooka Ansible z szablonem Packera
- Uruchamianie Packera
- Konfigurowanie Packera do uwierzytelniania na platformie Azure
- Sprawdzanie poprawności szablonu Packera
- Uruchamianie Packera w celu wygenerowania naszego obrazu maszyny wirtualnej
- Tworzenie szablonów Packera w formacie HCL
- Korzystanie z obrazów utworzonych przez Packera za pomocą Terraform
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 5. Tworzenie środowiska programistycznego z Vagrantem
- Wymagania techniczne
- Instalacja Vagranta
- Instalacja ręczna (w systemie Windows)
- Instalowanie Vagranta za pomocą skryptu w systemie Windows
- Instalowanie Vagranta za pomocą skryptu w systemie Linux
- Tworzenie pliku konfiguracyjnego Vagranta
- Używanie Vagrant Cloud dla boksów Vagranta
- Tworzenie pliku konfiguracyjnego Vagranta
- Tworzenie lokalnej maszyny wirtualnej za pomocą interfejsu Vagrant CLI
- Tworzenie maszyny wirtualnej
- Łączenie z maszyną wirtualną
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 2. Potok CI/CD
- Rozdział 6. Zarządzanie kodem źródłowym za pomocą Gita
- Wymagania techniczne
- Przegląd Gita i jego głównych poleceń
- Instalacja Gita
- Konfiguracja Gita
- Terminologia Gita
- Polecenia Gita
- Zrozumienie procesu Gita i wzorca Gitflow
- Zaczynamy od procesu Gita
- Izolacja kodu za pomocą gałęzi
- Strategia tworzenia gałęzi z Gitflow
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 7. Ciągła integracja i ciągłe wdrażanie
- Wymagania techniczne
- Zasady CI/CD
- CI
- CD
- Korzystanie z menedżera pakietów w procesie CI/CD
- Prywatne repozytorium NuGet i npm
- Repozytorium Nexusa OSS
- Azure Artifacts
- Używanie Jenkinsa do implementacji CI/CD
- Instalowanie i konfigurowanie Jenkinsa
- Konfiguracja webhooka GitHuba
- Konfiguracja zadania CI w Jenkinsie
- Wykonywanie zadania Jenkinsa
- Korzystanie z Azure Pipelines dla CI/CD
- Wersjonowanie kodu za pomocą Gita w Azure Repos
- Tworzenie potoku CI
- Tworzenie potoku CD - nowa wersja aplikacji
- Tworzenie pełnej definicji potoku w pliku YAML
- Korzystanie z GitLab CI
- Uwierzytelnianie w GitLabie
- Tworzenie nowego projektu i zarządzanie kodem źródłowym
- Tworzenie potoku CI
- Dostęp do szczegółów wykonania potoku CI
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 8. Wdrażanie infrastruktury jako kodu za pomocą potoku CI/CD
- Wymagania techniczne
- Uruchamianie Packera w Azure Pipelines
- Uruchamianie Terraform i Ansible w Azure Pipelines
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 3. Konteneryzowane mikrousługi wykorzystujące platformę Docker i Kubernetes
- Rozdział 9. Konteneryzacja aplikacji za pomocą Dockera
- Wymagania techniczne
- Instalowanie Dockera
- Rejestracja w Docker Hubie
- Instalacja Dockera
- Przegląd elementów Dockera
- Tworzenie pliku Dockerfile
- Tworzenie pliku Dockerfile
- Przegląd instrukcji Dockerfile
- Budowanie i uruchamianie kontenera na komputerze lokalnym
- Tworzenie obrazu Dockera
- Tworzenie nowego kontenera obrazu
- Lokalne testowanie kontenera
- Wysyłanie obrazu do Docker Huba
- Wysyłanie obrazu Dockera do rejestru prywatnego (ACR)
- Wdrażanie kontenera do ACI za pomocą potoku CI/CD
- Tworzenie kodu Terraform dla ACI
- Tworzenie potoku CI/CD dla kontenera
- Korzystanie z Dockera przy użyciu narzędzi wiersza poleceń
- Pierwsze kroki z Docker Compose
- Instalowanie Docker Compose
- Tworzenie pliku konfiguracyjnego dla Docker Compose
- Wykonywanie Docker Compose
- Wdrażanie kontenerów Docker Compose w ACI
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 10. Efektywne zarządzanie kontenerami za pomocą Kubernetesa
- Wymagania techniczne
- Instalacja Kubernetesa
- Przegląd architektury Kubernetesa
- Instalacja Kubernetesa na komputerze lokalnym
- Instalacja pulpitu nawigacyjnego Kubernetesa
- Pierwszy przykład wdrożenia aplikacji w Kubernetesie
- Używanie Helma jako menedżera pakietów
- Instalacja klienta Helma
- Korzystanie z publicznego pakietu Helma, dostępnego w Artifact Hubie
- Tworzenie niestandardowego charta Helma
- Publikowanie charta Helma w rejestrze prywatnym (ACR)
- Korzystanie z AKS
- Tworzenie usługi AKS
- Konfigurowanie pliku kubeconfig dla AKS
- Zalety AKS
- Tworzenie potoku CI/CD dla Kubernetesa za pomocą Azure Pipelines
- Monitorowanie aplikacji i metryk w Kubernetesie
- Korzystanie z wiersza poleceń kubectl
- Korzystanie z interfejsu webowego
- Korzystanie z narzędzi
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 4. Testowanie aplikacji
- Rozdział 11. Testowanie interfejsów API za pomocą Postmana
- Wymagania techniczne
- Tworzenie kolekcji żądań Postmana
- Instalacja Postmana
- Tworzenie kolekcji
- Tworzenie pierwszego żądania
- Wykorzystywanie środowisk i zmiennych do dynamizowania żądań
- Tworzenie testów Postmana
- Wykonywanie lokalnych testów za pomocą żądań Postmana
- Zrozumienie koncepcji Newmana
- Przygotowywanie kolekcji Postmana dla Newmana
- Eksportowanie kolekcji
- Eksportowanie środowisk
- Korzystanie z wiersza poleceń Newmana
- Integracja Newmana z procesem potoku CI/CD
- Budowa i udostępnianie konfiguracji
- Wykonanie potoku
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 12. Statyczna analiza kodu za pomocą SonarQube
- Wymagania techniczne
- Odkrywanie SonarQube
- Instalacja SonarQube
- Przegląd architektury SonarQube
- Instalacja SonarQube
- Analiza w czasie rzeczywistym za pomocą SonarLint
- Wykonywanie SonarQube w procesie CI
- Konfigurowanie SonarQube
- Tworzenie potoku CI dla SonarQube w Azure Pipelines
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 13. Testy bezpieczeństwa i wydajności
- Wymagania techniczne
- Stosowanie zabezpieczeń internetowych i testów penetracyjnych za pomocą narzędzia ZAP
- Korzystanie z ZAP-a w celu testowania bezpieczeństwa
- Sposoby automatyzacji wykonywania ZAP-a
- Uruchamianie testów wydajności za pomocą Postmana
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 5. Więcej informacji na temat DevOps
- Rozdział 14. Bezpieczeństwo w procesie DevOps z wykorzystaniem DevSecOps
- Wymagania techniczne
- Testowanie infrastruktury Azure za pomocą InSpec
- Omówienie InSpec
- Instalacja InSpec
- Konfigurowanie platformy Azure dla InSpec
- Tworzenie testów InSpec
- Wykonywanie InSpec
- Ochrona poufnych danych dzięki Vault od HashiCorp
- Lokalna instalacja programu Vault
- Uruchamianie serwera Vault
- Zapisywanie haseł w Vault
- Odczytywanie sekretów z Vault
- Korzystanie z interfejsu webowego (UI) programu Vault
- Pobieranie sekretów Vault w Terraform
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 15. Skrócenie czasu przestoju wdrażania
- Wymagania techniczne
- Skrócenie czasu przestojów we wdrażaniu dzięki Terraform
- Zrozumienie zielono-niebieskich koncepcji i wzorców wdrażania
- Korzystanie z wdrożenia zielono-niebieskiego w celu ulepszenia środowiska produkcyjnego
- Opis wzorca Canary release
- Badanie wzorca Dark launch
- Stosowanie wdrożeń zielono-niebieskich na platformie Azure
- Używanie App Service z gniazdami
- Korzystanie z usługi Azure Traffic Manager
- Wprowadzenie flag funkcjonalności
- Używanie frameworka open source dla flag funkcjonalności
- Korzystanie z narzędzia LaunchDarkly
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 16. DevOps dla projektów open source
- Wymagania techniczne
- Przechowywanie kodu źródłowego w GitHubie
- Tworzenie nowego repozytorium na GitHubie
- Przyczynianie się do rozwoju projektu w GitHubie
- Przyczynianie się do rozwoju projektów open source przy użyciu żądań pobierania
- Zarządzanie plikiem dziennika zmian i informacjami o wydaniu
- Udostępnianie plików binarnych w wydaniach GitHuba
- Wprowadzenie do GitHub Actions
- Analiza kodu za pomocą SonarCloud
- Wykrywanie luk w zabezpieczeniach za pomocą narzędzia WhiteSource Bolt
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 17. Najlepsze praktyki DevOps
- Pełna automatyzacja
- Wybór odpowiedniego narzędzia
- Tworzenie całej konfiguracji za pomocą kodu
- Projektowanie architektury systemu
- Budowanie dobrego potoku CI/CD
- Testy integracyjne
- Przesunięcie bezpieczeństwa w lewo dzięki DevSecOps
- Monitorowanie systemu
- Ewoluujące zarządzanie projektami
- Podsumowanie
- Pytania
- Dalsza lektura
Odpowiedzi
- Rozdział 1. Kultura DevOps i praktyki kodowania infrastruktury
- Rozdział 2. Udostępnianie infrastruktury chmury za pomocą Terraform
- Rozdział 3. Używanie Ansible do konfigurowania infrastruktury IaaS
- Rozdział 4. Optymalizacja wdrażania infrastruktury za pomocą Packera
- Rozdział 5. Tworzenie środowiska programistycznego z Vagrantem
- Rozdział 6. Zarządzanie kodem źródłowym za pomocą Gita
- Rozdział 7. Ciągła integracja i ciągłe wdrażanie
- Rozdział 8. Wdrażanie infrastruktury jako kodu za pomocą potoku CI/CD
- Rozdział 9. Konteneryzacja aplikacji za pomocą Dockera
- Rozdział 10. Efektywne zarządzanie kontenerami za pomocą Kubernetesa
- Rozdział 11. Testowanie interfejsów API za pomocą Postmana
- Rozdział 12. Statyczna analiza kodu za pomocą SonarQube
- Rozdział 13. Testy bezpieczeństwa i wydajności
- Rozdział 14. Bezpieczeństwo w procesie DevOps z wykorzystaniem DevSecOps
- Rozdział 15. Skrócenie czasu przestoju wdrażania
- Rozdział 16. DevOps dla projektów open source
- Rozdział 17. Najlepsze praktyki DevOps
Skorowidz
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-8322-199-1 |
Rozmiar pliku: | 46 MB |