arrow_back

Wdrażanie usługi systemu równoważenia obciążenia Kubernetes za pomocą Terraform

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Wdrażanie usługi systemu równoważenia obciążenia Kubernetes za pomocą Terraform

Lab 35 godz. universal_currency_alt Punkty: 5 show_chart Średnio zaawansowany
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP233

Moduły Google Cloud do samodzielnego ukończenia

Opis

Dostawca w Terraform stanowi logiczną abstrakcję docelowego interfejsu API. W tym module nauczysz się, jak skonfigurować klaster Kubernetes i wdrożyć w nim usługę NGINX typu system równoważenia obciążenia.

Cele

W tym module nauczysz się, jak:

  • wdrożyć klaster Kubernetes wraz z usługą za pomocą Terraform.

Wymagania wstępne

Przed rozpoczęciem tego modułu trzeba mieć doświadczenie w tych obszarach:

  • znajomość usług Kubernetes,
  • znajomość interfejsu wiersza poleceń kubectl.

Konfiguracja i wymagania

Zanim klikniesz przycisk Rozpocznij moduł

Zapoznaj się z tymi instrukcjami. Moduły mają limit czasowy i nie można ich zatrzymać. Gdy klikniesz Rozpocznij moduł, na liczniku wyświetli się informacja o tym, na jak długo udostępniamy Ci zasoby Google Cloud.

W tym praktycznym module możesz spróbować swoich sił w wykonywaniu opisywanych działań w prawdziwym środowisku chmury, a nie w jego symulacji lub wersji demonstracyjnej. Otrzymasz nowe, tymczasowe dane logowania, dzięki którym zalogujesz się i uzyskasz dostęp do Google Cloud na czas trwania modułu.

Do ukończenia modułu potrzebne będą:

  • dostęp do standardowej przeglądarki internetowej (zalecamy korzystanie z przeglądarki Chrome).
Uwaga: uruchom ten moduł w oknie incognito lub przeglądania prywatnego. Dzięki temu unikniesz konfliktu między swoim kontem osobistym a kontem do nauki, co mogłoby spowodować naliczanie oddatkowych opłat na koncie osobistym.
  • Odpowiednia ilość czasu na ukończenie modułu – pamiętaj, że gdy rozpoczniesz, nie możesz go wstrzymać.
Uwaga: jeśli masz już osobiste konto lub projekt w Google Cloud, nie używaj go w tym module, aby uniknąć naliczania opłat na koncie.

Rozpoczynanie modułu i logowanie się w konsoli Google Cloud

  1. Kliknij przycisk Rozpocznij moduł. Jeśli moduł jest odpłatny, otworzy się wyskakujące okienko, w którym możesz wybrać formę płatności. Po lewej stronie znajduje się panel Szczegóły modułu z następującymi elementami:

    • przyciskiem Otwórz konsolę Google;
    • czasem, który Ci pozostał;
    • tymczasowymi danymi logowania, których musisz użyć w tym module;
    • innymi informacjami potrzebnymi do ukończenia modułu.
  2. Kliknij Otwórz konsolę Google. Moduł uruchomi zasoby, po czym otworzy nową kartę ze stroną logowania.

    Wskazówka: otwórz karty obok siebie w osobnych oknach.

    Uwaga: jeśli pojawi się okno Wybierz konto, kliknij Użyj innego konta.
  3. W razie potrzeby skopiuj nazwę użytkownika z panelu Szczegóły modułu i wklej ją w oknie logowania. Kliknij Dalej.

  4. Skopiuj hasło z panelu Szczegóły modułu i wklej je w oknie powitania. Kliknij Dalej.

    Ważne: musisz użyć danych logowania z panelu po lewej stronie, a nie danych logowania Google Cloud Skills Boost. Uwaga: korzystanie z własnego konta Google Cloud w tym module może wiązać się z dodatkowymi opłatami.
  5. Na kolejnych stronach wykonaj następujące czynności:

    • Zaakceptuj Warunki korzystania z usługi.
    • Nie dodawaj opcji odzyskiwania ani uwierzytelniania dwuskładnikowego (ponieważ konto ma charakter tymczasowy).
    • Nie rejestruj się w bezpłatnych wersjach próbnych.

Poczekaj, aż na karcie otworzy się konsola Google Cloud.

Uwaga: aby wyświetlić menu z listą produktów i usług Google Cloud Console, w lewym górnym rogu kliknij menu nawigacyjne. Ikona menu nawigacyjnego

Aktywowanie Cloud Shell

Cloud Shell to maszyna wirtualna oferująca wiele narzędzi dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud. Dzięki wierszowi poleceń Cloud Shell zyskujesz dostęp do swoich zasobów Google Cloud.

  1. Kliknij Aktywuj Cloud Shell Ikona aktywowania Cloud Shell na górze konsoli Google Cloud.

Po połączeniu użytkownik od razu jest uwierzytelniony. Uruchomi się Twój projekt o identyfikatorze PROJECT_ID. Dane wyjściowe zawierają wiersz z zadeklarowanym identyfikatorem PROJECT_ID dla tej sesji:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud to narzędzie wiersza poleceń Google Cloud. Jest ono już zainstalowane w Cloud Shell i obsługuje funkcję autouzupełniania po naciśnięciu tabulatora.

  1. (Opcjonalnie) Aby wyświetlić listę aktywnych kont, użyj tego polecenia:
gcloud auth list
  1. Kliknij Autoryzuj.

  2. Dane wyjściowe powinny wyglądać tak:

Dane wyjściowe:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcjonalnie) Aby wyświetlić identyfikator projektu, użyj tego polecenia:
gcloud config list project

Dane wyjściowe:

[core] project = <project_ID>

Przykładowe dane wyjściowe:

[core] project = qwiklabs-gcp-44776a13dea667a6 Uwaga: pełną dokumentację gcloud w Google Cloud znajdziesz w opisie narzędzia wiersza poleceń gcloud.

Usługi Kubernetes

Usługa to grupa podów działających w klastrze. Są one „tanie” i możesz ich mieć wiele w jednym klastrze. Usługi Kubernetes mogą wydajnie obsługiwać architekturę mikroserwisu.

Usługi zapewniają ważne funkcje, które są ustandaryzowane w całym klastrze: równoważenie obciążenia, wykrywanie usług między aplikacjami oraz funkcje wspierające wdrożenia aplikacji bez przestojów.

Każda usługa ma zapytanie o etykietę poda definiującą pody, które będą przetwarzać dane na potrzeby tej usługi. To zapytanie o etykietę często pasuje do podów utworzonych przez jeden lub więcej kontrolerów replikacji. Dodanie za pomocą Kubernetes API programów używanych do wdrażania do zapytania o etykietę usługi pozwala na stosowanie rozbudowanych scenariuszy routingu.

Dlaczego warto wybrać Terraform?

Do zarządzania wszystkimi zasobami Kubernetes opisanymi w plikach YAML możesz wykorzystać kubectl lub podobne narzędzia oparte na interfejsie wiersza poleceń zmapowane na wywołania interfejsu API. Jednak administracja za pomocą Terraform ma kilka korzyści:

  • Jeden język – możesz używać tego samego języka konfiguracji do udostępniania infrastruktury Kubernetes i wdrażania w niej aplikacji.
  • Wykrywanie dryfu – terraform plan zawsze będzie przedstawiać różnice między stanem rzeczywistym w danym momencie a konfiguracją, którą zamierzasz zastosować.
  • Zarządzanie całym cyklem życia – Terraform nie tylko początkowo tworzy zasoby, ale oferuje 1 polecenie do tworzenia, aktualizowania i usuwania śledzonych zasobów bez konieczności sprawdzania interfejsu API w celu identyfikacji tych zasobów.
  • Synchroniczne informacje zwrotne – chociaż zachowanie asynchroniczne jest często przydatne, czasami przynosi efekt przeciwny do zamierzonego, ponieważ zadanie identyfikacji wyników operacji (niepowodzeń lub szczegółów utworzonego zasobu) musi wykonać użytkownik. Na przykład nie dysponujesz adresem IP / nazwą hosta systemu równoważenia obciążenia, dopóki nie zostanie on udostępniony, dlatego nie możesz utworzyć żadnego rekordu DNS wskazującego na ten system.
  • Wykres relacji – Terraform rozumie relacje między zasobami, co może pomóc w planowaniu. Terraform nie będzie np. próbować utworzyć usługi w klastrze Kubernetes, dopóki klaster nie będzie istniał.

Zadanie 1. Kopiowanie przykładowego kodu

  1. W Cloud Shell zacznij od sklonowania przykładowego kodu:
gsutil -m cp -r gs://spls/gsp233/* .
  1. Przejdź do katalogu tf-gke-k8s-service-lb:
cd tf-gke-k8s-service-lb

Zadanie 2. Zrozumienie kodu

  1. Zapoznaj się z zawartością pliku main.tf:
cat main.tf

Przykładowe dane wyjściowe:

... variable "region" { type = string description = "Region for the resource." } variable "location" { type = string description = "Location represents region/zone for the resource." } variable "network_name" { default = "tf-gke-k8s" } provider "google" { region = var.region } resource "google_compute_network" "default" { name = var.network_name auto_create_subnetworks = false } resource "google_compute_subnetwork" "default" { name = var.network_name ip_cidr_range = "10.127.0.0/20" network = google_compute_network.default.self_link region = var.region private_ip_google_access = true } ...
  • Zmienne region, zonenetwork_name są zdefiniowane. Zostaną one wykorzystane do utworzenia klastra Kubernetes.
  • Dostawca Google Cloud pozwoli nam utworzyć zasoby w tym projekcie.
  • Zdefiniowanych jest kilka zasobów, które posłużą do utworzenia odpowiedniej sieci i klastra.
  • Na końcu znajdują się dane wyjściowe, które wyświetlą się po uruchomieniu polecenia terraform apply.
  1. Zapoznaj się z zawartością pliku k8s.tf:
cat k8s.tf

Przykładowe dane wyjściowe:

provider "kubernetes" { version = "~> 1.10.0" host = google_container_cluster.default.endpoint token = data.google_client_config.current.access_token client_certificate = base64decode( google_container_cluster.default.master_auth[0].client_certificate, ) client_key = base64decode(google_container_cluster.default.master_auth[0].client_key) cluster_ca_certificate = base64decode( google_container_cluster.default.master_auth[0].cluster_ca_certificate, ) } resource "kubernetes_namespace" "staging" { metadata { name = "staging" } } resource "google_compute_address" "default" { name = var.network_name region = var.region } resource "kubernetes_service" "nginx" { metadata { namespace = kubernetes_namespace.staging.metadata[0].name name = "nginx" } spec { selector = { run = "nginx" } session_affinity = "ClientIP" port { protocol = "TCP" port = 80 target_port = 80 } type = "LoadBalancer" load_balancer_ip = google_compute_address.default.address } } resource "kubernetes_replication_controller" "nginx" { metadata { name = "nginx" namespace = kubernetes_namespace.staging.metadata[0].name labels = { run = "nginx" } } spec { selector = { run = "nginx" } template { container { image = "nginx:latest" name = "nginx" resources { limits { cpu = "0.5" memory = "512Mi" } requests { cpu = "250m" memory = "50Mi" } } } } } } output "load-balancer-ip" { value = google_compute_address.default.address }
  • Ten skrypt konfiguruje dostawcę Kubernetes z Terraform i tworzy usługę, przestrzeń nazw i zasób replication_controller.
  • Jako dane wyjściowe zwraca adres IP usługi nginx.

Zadanie 3. Inicjowanie i instalowanie zależności

Polecenie terraform init służy do zainicjowania katalogu roboczego zawierającego pliki konfiguracji Terraform.

To polecenie wykonuje kilka różnych kroków inicjujących, aby przygotować katalog roboczy do użycia. Zawsze można je bezpiecznie uruchomić wiele razy, aby zaktualizować katalog roboczy o zmiany w konfiguracji:

  1. Uruchom terraform init:
terraform init

Przykładowe dane wyjściowe:

... * provider.google: version = "~> 3.8.0" * provider.kubernetes: version = "~> 1.10.0" Terraform has been successfully initialized! You may now begin working with Terraform. Try running `terraform plan` to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
  1. Uruchom polecenie terraform apply, które jest używane do zastosowania zmian wymaganych do osiągnięcia pożądanego stanu konfiguracji:
terraform apply -var="region={{{ project_0.default_region | "Region to be allocated" }}}" -var="location={{{ project_0.default_zone | "Zone to be allocated" }}}"
  1. Sprawdź działania Terraform i zasoby, które zostaną utworzone.

  2. Gdy wszystko będzie gotowe, wpisz yes, aby rozpocząć działania Terraform.

Po zakończeniu powinny pojawić się podobne dane wyjściowe:

Przykładowe dane wyjściowe:

Apply complete! Resources: 7 added, 0 changed, 0 destroyed. Outputs: cluster_name = tf-gke-k8s cluster_region = "{{{project_0.default_region|REGION}}}" cluster_zone = "{{{project_0.default_region|ZONE}}}" load-balancer-ip = 35.233.177.223 network = https://www.googleapis.com/compute/beta/projects/qwiklabs-gcp-5438ad3a5e852e4a/global/networks/tf-gke-k8s subnetwork_name = tf-gke-k8s

Sprawdzanie zasobów utworzonych przez Terraform

  1. W konsoli otwórz Menu nawigacyjne > Kubernetes Engine.
  2. Kliknij klaster tf-gke-k8s i sprawdź jego konfigurację.
  3. W panelu po lewej stronie kliknij Usługi i ruch przychodzący, a potem sprawdź stan usługi nginx.
  4. Kliknij adres IP Punkty końcowe, aby otworzyć stronę Welcome to nginx! w nowej karcie przeglądarki.

Strona Welcome to nginx!

Kliknij Sprawdź postępy, aby zobaczyć stan realizacji zadania. Jeśli udało Ci się wdrożyć infrastrukturę z Terraform, wyświetli się wynik.

Wdrożenie infrastruktury z Terraform

Gratulacje!

W tym module udało Ci się wykorzystać Terraform do zainicjowania, zaplanowania i wdrożenia klastra Kubernetes wraz z usługą.

Ukończ kurs

Ten moduł do samodzielnego ukończenia jest częścią kursów Managing Cloud Infrastructure with TerraformDevOps Essentials. Każdy kurs składa się z zestawu powiązanych ze sobą modułów, które razem tworzą ścieżkę szkoleniową. Za ukończenie kursu otrzymujesz odznakę – stanowi ona potwierdzenie Twojego osiągnięcia. Swoje odznaki możesz ustawiać jako widoczne publicznie, a także podać do nich linki w swoim CV lub w mediach społecznościowych. Zarejestruj się na dowolny kurs zawierający ten moduł, a zostanie on automatycznie zaliczony. Wszystkie dostępne kursy znajdziesz w katalogu Google Cloud Skills Boost.

Przejdź do kolejnego modułu

Możesz uczyć się dalej w ramach modułu HTTPS Content-Based Load balancer with Terraform lub sprawdzić inne propozycje:

Kolejne kroki / Więcej informacji

Przekonaj się, jak inni pracują z Terraform, w społeczności.

Szkolenia i certyfikaty Google Cloud

…pomogą Ci wykorzystać wszystkie możliwości technologii Google Cloud. Nasze zajęcia obejmują umiejętności techniczne oraz sprawdzone metody, które ułatwią Ci szybką naukę i umożliwią jej kontynuację. Oferujemy szkolenia na poziomach od podstawowego po zaawansowany prowadzone w trybach wirtualnym, na żądanie i na żywo, dzięki czemu możesz dopasować program szkoleń do swojego napiętego harmonogramu. Certyfikaty umożliwią udokumentowanie i potwierdzenie Twoich umiejętności oraz doświadczenia w zakresie technologii Google Cloud.

Ostatnia aktualizacja instrukcji: 28 września 2023 r.

Ostatni test modułu: 28 września 2023 r.

Copyright 2024 Google LLC. Wszelkie prawa zastrzeżone. Google i logo Google są znakami towarowymi Google LLC. Wszelkie inne nazwy firm i produktów mogą być znakami towarowymi odpowiednich podmiotów, z którymi są powiązane.