arrow_back

Керування розгортаннями за допомогою Kubernetes Engine

Get access to 700+ labs and courses

Керування розгортаннями за допомогою Kubernetes Engine

Lab 1 година universal_currency_alt 5 кредитів show_chart Середній
info This lab may incorporate AI tools to support your learning.
Get access to 700+ labs and courses

GSP053

Логотип Google Cloud Self-Paced Labs

Огляд

У DevOps є різні сценарії розгортання додатків (безперервне, синьо-зелене, канаркове тощо), для яких регулярно використовуються кілька розгортань. На цьому практичному занятті ви навчитеся змінювати кількість контейнерів і керувати ними, щоб виконувати поширені сценарії з кількома гетерогенними розгортаннями.

Цілі

Під час цього практичного заняття ви навчитеся виконувати наведені нижче дії.

  • Використовувати інструмент kubectl
  • Створювати файли розгортання yaml
  • Запускати, оновлювати й масштабувати розгортання
  • Оновлювати розгортання й використовувати їх типи

Рівень попередньої підготовки

Результати практичного заняття будуть кращими, якщо ви:

Типи розгортань

Зазвичай гетерогенними вважаються розгортання, у яких через певну технічну чи операційну потребу поєднуються два або більше інфраструктурних середовищ чи регіонів. Залежно від особливостей такі розгортання також називають "гібридними", "мультихмарними" або "загальнодоступно-приватними".

У контексті цього практичного заняття до гетерогенних розгортань належать ті, що вміщують кілька регіонів у єдиному хмарному середовищі, кілька загальнодоступних хмарних середовищ (мультихмарні) або поєднання локальних середовищ із загальнодоступними хмарними середовищами (гібридні або загальнодоступно-приватні).

У розгортаннях, які обмежені одним середовищем або регіоном, можуть виникати різні організаційні чи технічні проблеми.

  • Брак ресурсів. За використання одного середовища (особливо якщо воно локальне) наявних обчислювальних і мережевих потужностей та сховища може не вистачити, щоб задовольнити ваші потреби.
  • Обмежене географічне охоплення. Якщо розгортання відбувається в одному середовищі, географічно віддалені одне від одного користувачі отримуватимуть доступ до того самого розгортання. Можливо, їхньому трафіку доведеться подолати пів світу, перш ніж досягнути основного сервера.
  • Обмежена доступність. Оскільки більша частина трафіку припадає на загальнодоступні мережі, додатки стають менш стійкими до помилок і збоїв.
  • Перешкоди з боку постачальника. Абстрагування в інфраструктурі й на платформах постачальника можуть заважати вам портувати додатки.
  • Негнучкі ресурси. У вас може бути недостатньо велике сховище, обмежені обчислювальні чи мережеві потужності.

Гетерогенні розгортання допомагають усувати такі проблеми, але при цьому потрібно використовувати програмовані й детерміновані процеси та процедури. Одноразові або нетипові процедури можуть робити розгортання вразливими й нестійкими до збоїв. Нетипові процеси можуть призводити до втрати даних чи зупинки трафіку. Варто застосовувати повторювані процеси розгортання й надійний підхід до керування розподілом, конфігурацією і обслуговуванням.

Гетерогенні розгортання застосовуються в трьох основних сценаріях:

  • мультихмарні розгортання;
  • локальна інфраструктура даних;
  • процеси безперервної інтеграції/розгортання.

За допомогою наведених далі вправ ви потренуєтеся виконувати поширені сценарії для гетерогенних розгортань, а також ознайомитеся з добре спроєктованими підходами з використанням Kubernetes і іншими інфраструктурними ресурсами.

Налаштування й вимоги

Перш ніж натиснути кнопку Start Lab (Почати практичну роботу)

Ознайомтеся з наведеними нижче вказівками. На виконання практичного заняття відводиться обмежений час, і його не можна призупинити. Щойно ви натиснете Почати заняття, з’явиться таймер, який показуватиме, скільки часу для роботи з ресурсами Google Cloud у вас залишилося.

Ви зможете виконати практичне заняття в дійсному робочому хмарному середовищі (не в симуляції або демонстраційному середовищі). Для цього на час практичного заняття вам надаються тимчасові облікові дані для реєстрації і входу в Google Cloud.

Для цього практичного заняття потрібно мати:

  • стандартний вебпереглядач, наприклад Chrome (рекомендовано);
Примітка. Виконуйте практичне заняття в анонімному вікні вебпереглядача (рекомендовано). Так ви уникнете додаткової плати, що може стягуватися з вашого особистого облікового запису внаслідок його помилкового використання замість облікового запису для навчання.
  • достатню кількість часу, оскільки почавши практичне заняття, ви не зможете призупинити його.
Примітка. Для виконання цього практичного заняття використовуйте лише обліковий запис для навчання, оскільки з іншого облікового запису Google Cloud може стягуватися плата.

Як почати виконувати практичну роботу й увійти в Google Cloud Console

  1. Натисніть кнопку Start Lab (Почати практичне заняття). Якщо за практичне заняття необхідно заплатити, відкриється вікно, де ви зможете обрати спосіб оплати. Ліворуч розміщено панель "Відомості про практичне заняття" з такими компонентами:

    • кнопка "Відкрити консоль Google";
    • час до закінчення;
    • тимчасові облікові дані, які потрібно використовувати для доступу до цього практичного заняття;
    • інша інформація, необхідна для виконання цього практичного заняття.
  2. Натисніть Відкрити консоль Google або натисніть правою кнопкою миші й виберіть Відкрити анонімне вікно, якщо ви використовуєте вебпереглядач Chrome.

    Завантажаться необхідні ресурси. Потім відкриється нова вкладка зі сторінкою "Увійти".

    Порада. Упорядковуйте вкладки в окремих вікнах, розміщуючи їх поруч.

    Примітка. Якщо з’явиться вікно Виберіть обліковий запис, натисніть Вибрати інший обліковий запис.
  3. За потреби скопіюйте значення в полі Username (Ім’я користувача) нижче й вставте його у вікні Вхід.

    {{{user_0.username | "Username"}}}

    Поле "Ім’я користувача" також можна знайти на панелі "Відомості про практичне заняття".

  4. Натисніть Далі.

  5. Скопіюйте значення в полі Password (Пароль) нижче й вставте його у вікні Welcome (Привітання).

    {{{user_0.password | "Password"}}}

    Поле "Пароль" також можна знайти на панелі "Відомості про практичне заняття".

  6. Натисніть Далі.

    Важливо. Обов’язково використовуйте облікові дані, призначені для відповідного практичного заняття. Не використовуйте облікові дані Google Cloud. Примітка. Якщо ввійти у власний обліковий запис Google Cloud, може стягуватися додаткова плата.
  7. Що від вас очікується

    • Прийміть Умови використання.
    • Не додавайте способи відновлення й двохетапну перевірку (оскільки це тимчасовий обліковий запис).
    • Не реєструйте безкоштовні пробні версії.

Через кілька секунд консоль Google Cloud відкриється в новій вкладці.

Примітка. Щоб отримати доступ до продуктів і сервісів Google Cloud, натисніть меню навігації або введіть назву сервісу чи продукту в полі пошуку. Значок меню навігації і поле пошуку

Як активувати Cloud Shell

Cloud Shell – це віртуальна машина з попередньо завантаженими інструментами для розробників. Вона містить головний каталог обсягом 5 ГБ постійної пам’яті й працює в середовищі Google Cloud. Cloud Shell надає доступ до ресурсів Google Cloud через командний рядок.

  1. Угорі консолі Google Cloud натисніть Activate Cloud Shell (Активувати Cloud Shell) Значок активації Cloud Shell.

  2. У вікнах, що відкриються, виконайте наведені нижче дії.

    • У вікні з інформацією про Cloud Shell натисніть Continue (Далі).
    • Дозвольте Cloud Shell використовувати ваші облікові дані, щоб здійснювати виклики Google Cloud API.

Щойно ви підключитеся, вас буде автентифіковано, а проєкт отримає ваш Project_ID (Ідентифікатор проєкту). Вивід міститиме рядок зі значенням Project_ID (Ідентифікатор проєкту) для цього сеансу:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud – це інструмент командного рядка для Google Cloud. Він входить у пакет Cloud Shell і підтримує функцію автозавершення клавішею TAB.

  1. (Необов’язково) Щоб вивести поточне ім’я облікового запису, введіть таку команду:
gcloud auth list
  1. Натисніть Authorize (Авторизувати).

Вивід:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Необов’язково) Щоб вивести ідентифікатор проєкту, введіть таку команду:
gcloud config list project

Вивід:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Примітка. Щоб знайти повну документацію щодо gcloud, перегляньте посібник з інтерфейсу командного рядка gcloud у Google Cloud.

Налаштуйте зону

Налаштуйте робочу зону Google Cloud, виконавши наведену нижче команду. Вставте потрібну зону замість .

gcloud config set compute/zone {{{ project_0.default_zone | ZONE }}}

Отримайте зразок коду для цього практичного заняття

  1. Отримайте зразок коду для створення й запуску контейнерів і розгортань із сегмента практичного заняття:
gcloud storage cp -r gs://spls/gsp053/kubernetes . cd kubernetes
  1. Створіть кластер із 3 вузлів (це може зайняти кілька хвилин):
gcloud container clusters create bootcamp \ --machine-type e2-small \ --num-nodes 3 \ --scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"

Завдання 1. Вивчіть об’єкт розгортання

Для початку дізнайтеся більше про об’єкт розгортання.

  1. Для цього виконайте команду explain в інструменті kubectl:
kubectl explain deployment
  1. Щоб переглянути всі поля, скористайтеся параметром --recursive:
kubectl explain deployment --recursive
  1. Ви можете запускати команду explain під час виконання будь-яких завдань практичного заняття, щоб краще зрозуміти структуру об’єкта розгортання й призначення окремих полів:
kubectl explain deployment.metadata.name

Завдання 2. Створіть розгортання

  1. Створіть розгортання fortune-app. Перегляньте файл конфігурації розгортання:
cat deployments/fortune-app-blue.yaml

Вивід:

# orchestrate-with-kubernetes/kubernetes/deployments/fortune-app-blue.yaml apiVersion: apps/v1 kind: Deployment metadata: name: fortune-app-blue spec: replicas: 3 selector: matchLabels: app: fortune-app template: metadata: labels: app: fortune-app track: stable version: "1.0.0" spec: containers: - name: fortune-app # The new, centralized image path image: "us-central1-docker.pkg.dev/qwiklabs-resources/spl-lab-apps/fortune-service:1.0.0" ports: - name: http containerPort: 8080 ...

Зверніть увагу, що розгортання створює три копії і для контейнера fortune-service використовується версія 1.0.0.

  1. Створіть об’єкт розгортання за допомогою команди kubectl create:
kubectl create -f deployments/fortune-app-blue.yaml
  1. Щоб перевірити, чи об’єкт створено, виконайте команду:
kubectl get deployments
  1. Коли розгортання буде готове, Kubernetes створить для нього об’єкт ReplicaSet. Щоб перевірити, чи створено ReplicaSet, виконайте команду:
kubectl get replicasets

Має відобразитися об’єкт ReplicaSet під назвою на зразок fortune-app-blue-xxxxxxx.

  1. Перегляньте групи контейнерів, створених у межах розгортання:
kubectl get pods
  1. Тепер створіть сервіс, щоб надати зовнішній доступ до розгортання fortune-app:
kubectl create -f services/fortune-app.yaml
  1. Отримайте зовнішню IP-адресу розгортання fortune-app і перейдіть за нею до кінцевої точки /version:
kubectl get services fortune-app Примітка. Заповнення поля External-IP для вашого сервісу може тривати кілька секунд. Це звичайне явище. Повторюйте наведену вище команду кожні кілька секунд, доки поле не заповниться. curl http://<EXTERNAL-IP>/version

Ви маєте отримати відповідь JSON, що містить {"version":"1.0.0"}.

  1. За допомогою функції шаблонів виводу в інструменті kubectl можна запускати команду curl в одному рядку:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version

Перевірка виконаного завдання

Щоб підтвердити виконання завдання, натисніть Підтвердити виконання нижче. Якщо ви правильно створили кластер Kubernetes, розгортання й сервіс fortune-app, з’явиться оцінка.

Створити кластер Kubernetes і розгортання (fortune-app)

Масштабуйте розгортання

Створене розгортання можна масштабувати. Для цього оновіть поле spec.replicas.

  1. Найпростіший спосіб оновити поле копій – використати команду kubectl scale:
kubectl scale deployment fortune-app-blue --replicas=5 Примітка. Щоб усі нові групи контейнерів запустилися, знадобиться близько однієї хвилини.
  1. Переконайтеся, що запущено 5 груп контейнерів fortune-app-blue:
kubectl get pods | grep fortune-app-blue | wc -l
  1. Тепер зменште масштаб додатка:
kubectl scale deployment fortune-app-blue --replicas=3
  1. Знову переконайтеся, що запущено потрібну кількість груп контейнерів:
kubectl get pods | grep fortune-app-blue | wc -l

Ви ознайомилися з розгортаннями Kubernetes, а також навчилися керувати групою контейнерів і змінювати їх кількість.

Завдання 3. Виконайте послідовне оновлення

Розгортання підтримують перехід на нову версію образу шляхом послідовного оновлення.

Запустіть послідовне оновлення

  1. Щоб запустити послідовне оновлення, можна просто застосувати (за допомогою команди apply) конфігурацію "зеленого" розгортання. Інструмент Kubernetes достатньо розумний, щоб розпізнати наявне розгортання (fortune-app-blue) і застосувати до нього зміни з нового файлу.
kubectl edit deployment fortune-app-blue
  1. У редакторі знайдіть рядок image і змініть тег версії з 1.0.0 на 2.0.0. Щоб відредагувати файл, перейдіть у режим вставлення, натиснувши i на клавіатурі.
  • Спочатку змініть тег образу.

    • Знайдіть рядок image: "us-central1-docker.pkg.dev/qwiklabs-resources/spl-lab-apps/fortune-service:1.0.0"
    • Змініть його на такий: image: "us-central1-docker.pkg.dev/qwiklabs-resources/spl-lab-apps/fortune-service:2.0.0"
  • Далі оновіть змінну середовища.

    • Знайдіть розділ env і змінну APP_VERSION.
    • Змініть value: "1.0.0" на value: "2.0.0".
  1. Збережіть зміни й закрийте редактор. Для цього натисніть Esc, введіть :wq і натисніть Enter. Так ви запустите послідовне оновлення для потрібного розгортання й належно зафіксуєте його історію. Так ви запустите послідовне оновлення для потрібного розгортання й належно зафіксуєте його історію.

  2. Перегляньте новий об’єкт ReplicaSet, створений у Kubernetes:

kubectl get replicaset
  1. Ви також можете побачити новий запис в історії оновлень:
kubectl rollout history deployment/fortune-app-blue

Призупиніть послідовне оновлення

  1. Щоб призупинити оновлення, виконайте таку команду:
kubectl rollout pause deployment/fortune-app-blue
  1. Перевірте статус оновлення:
kubectl rollout status deployment/fortune-app-blue Примітка. За командою status система може відразу вивести таке повідомлення: "deployment "fortune-app-blue" successfully rolled out". Це очікувано й означає, що команду призупинення виконано. Це не означає, що оновлення версії завершено.
  1. Перевірте версію кожної групи контейнерів. Ви побачите комбінацію версій 1.0.0 і 2.0.0. Це підтверджує, що розгортання призупинено посеред процесу.
for p in $(kubectl get pods -l app=fortune-app -o=jsonpath='{.items[*].metadata.name}'); do echo $p && curl -s http://$(kubectl get pod $p -o=jsonpath='{.status.podIP}')/version; echo; done
  1. Щоб вийти із циклу, натисніть Ctrl+C.

Відновіть послідовне оновлення

  1. Щоб продовжити оновлення, виконайте команду resume:
kubectl rollout resume deployment/fortune-app-blue
  1. Коли оновлення завершиться, після виконання команди status ви маєте побачити наведений нижче вивід.
kubectl rollout status deployment/fortune-app-blue

Відкотіть оновлення

Уявіть, що в новій версії виявлено помилку.

  1. Щоб повернутися до попередньої версії, виконайте таку команду rollout:
kubectl rollout undo deployment/fortune-app-blue Примітка. Щоб відкотити зміни, знадобиться кілька хвилин.
  1. Перевірте, чи всі групи контейнерів повернулися до версії 1.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version

Чудово! Ви навчилися виконувати послідовне оновлення для розгортань Kubernetes.

Завдання 4. Канаркові розгортання

Використовуйте цей тип розгортання, якщо працюєте над новим розгортанням і хочете протестувати його на невеликій аудиторії.

Створіть канаркове розгортання

  1. Спершу створіть канаркове розгортання для нової версії за допомогою файлу fortune-app-canary.yaml:
cat deployments/fortune-app-canary.yaml
  1. Тепер створіть канаркове розгортання:
kubectl create -f deployments/fortune-app-canary.yaml
  1. Коли його буде створено, у вас має бути два розгортання. Перевірте за допомогою цієї команди:
kubectl get deployments

Сервіс fortune-app має селектор app: fortune-app, який відповідає групам контейнерів обох розгортань: fortune-app-blue (робочого) і fortune-app-canary.

Перевірте канаркове розгортання

  1. Щоб перевірити, яка версія використовується, надішліть запити до сервісу:
for i in {1..10}; do curl -s http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version; echo; done
  1. Виконайте цей запит кілька разів. Здебільшого має показуватися версія 1.0.0, а в деяких випадках – версія 2.0.0.

Перевірка виконаного завдання

Щоб підтвердити виконання завдання, натисніть Підтвердити виконання нижче. Якщо ви правильно створили канаркове розгортання, з’явиться оцінка.

Канаркове розгортання

Завдання 5. Синьо-зелені розгортання

Для синьо-зелених розгортань ви створите два окремі розгортання й перемикатимете трафік між ними, змінюючи селектор сервісу.

Сервіс

  1. Спочатку оновіть сервіс так, щоб він використовував лише "синю" версію (1.0.0):
kubectl apply -f services/fortune-app-blue-service.yaml

Оновлення за допомогою синьо-зеленого розгортання

  1. Тепер створіть нове "зелене" розгортання для версії 2.0.0:
kubectl create -f deployments/fortune-app-green.yaml
  1. Коли "зелене" розгортання запуститься, перевірте, чи поточна версія 1.0.0 усе ще використовується:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
  1. Тепер переведіть сервіс на нову "зелену" версію:
kubectl apply -f services/fortune-app-green-service.yaml
  1. Після оновлення сервісу відразу почне застосовуватися "зелене" розгортання. Ви можете перевірити, чи завжди використовується версія 2.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version

Відкочування до попередньої версії за допомогою синьо-зеленого розгортання

  1. Щоб повернутися до попередньої версії, просто повторно застосуйте маніфест сервісу для "синього" розгортання:
kubectl apply -f services/fortune-app-blue-service.yaml
  1. Оновивши сервіс, ви відкотите його до попередньої версії. Перевірте, чи використовується версія 1.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version

Вам удалося! Ви навчилися створювати синьо-зелені розгортання й оновлювати додатки у випадку, коли потрібно перейти одразу на готову версію.

Синьо-зелене розгортання

Вітаємо!

Ви розширили свій досвід роботи з інструментом командного рядка kubectl і навчилися створювати різні конфігурації розгортань у файлах YAML, щоб запускати, оновлювати й масштабувати розгортання.

Навчання й сертифікація Google Cloud

…допомагають ефективно використовувати технології Google Cloud. Наші курси передбачають опанування технічних навичок, а також ознайомлення з рекомендаціями, що допоможуть вам швидко зорієнтуватися й вивчити матеріал. Ми пропонуємо курси різних рівнів – від базового до високого. Ви можете вибрати формат навчання (за запитом, онлайн або офлайн) відповідно до власного розкладу. Пройшовши сертифікацію, ви перевірите й підтвердите свої навички та досвід роботи з технологіями Google Cloud.

Посібник востаннє оновлено 18 серпня 2025 року

Практичне заняття востаннє протестовано 18 серпня 2025 року

© Google LLC 2025. Усі права захищено. Назва та логотип Google є торговельними марками Google LLC. Усі інші назви компаній і продуктів можуть бути торговельними марками відповідних компаній, з якими вони пов’язані.

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

This content is not currently available

We will notify you via email when it becomes available

Great!

We will contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.