E-book details

DevOps w praktyce. Wdrażanie narzędzi Terraform, Azure DevOps, Kubernetes i Jenkins. Wydanie II

DevOps w praktyce. Wdrażanie narzędzi Terraform, Azure DevOps, Kubernetes i Jenkins. Wydanie II

Mikael Krief

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!

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

  • Title: DevOps w praktyce. Wdrażanie narzędzi Terraform, Azure DevOps, Kubernetes i Jenkins. Wydanie II
  • Author: Mikael Krief
  • Original title: Learning DevOps: A comprehensive guide to accelerating DevOps culture adoption with Terraform, Azure DevOps, Kubernetes, and Jenkins, 2nd Edition
  • Translation: Łukasz Wójcicki
  • ISBN: 978-83-8322-199-1, 9788383221991
  • Date of issue: 2023-06-13
  • Format: Ebook
  • Item ID: devpr2
  • Publisher: Helion