GSP053

Огляд
У DevOps є різні сценарії розгортання додатків (безперервне, синьо-зелене, канаркове тощо), для яких регулярно використовуються кілька розгортань. На цьому практичному занятті ви навчитеся змінювати кількість контейнерів і керувати ними, щоб виконувати поширені сценарії з кількома гетерогенними розгортаннями.
Цілі
Під час цього практичного заняття ви навчитеся виконувати наведені нижче дії.
- Використовувати інструмент
kubectl
- Створювати файли розгортання
yaml
- Запускати, оновлювати й масштабувати розгортання
- Оновлювати розгортання й використовувати їх типи
Рівень попередньої підготовки
Результати практичного заняття будуть кращими, якщо ви:
- виконали такі практичні заняття з каталогу Google Cloud Skills Boost:
- маєте навички системного адміністрування Linux;
- розумієте теорію DevOps і поняття безперервного розгортання.
Типи розгортань
Зазвичай гетерогенними вважаються розгортання, у яких через певну технічну чи операційну потребу поєднуються два або більше інфраструктурних середовищ чи регіонів. Залежно від особливостей такі розгортання також називають "гібридними", "мультихмарними" або "загальнодоступно-приватними".
У контексті цього практичного заняття до гетерогенних розгортань належать ті, що вміщують кілька регіонів у єдиному хмарному середовищі, кілька загальнодоступних хмарних середовищ (мультихмарні) або поєднання локальних середовищ із загальнодоступними хмарними середовищами (гібридні або загальнодоступно-приватні).
У розгортаннях, які обмежені одним середовищем або регіоном, можуть виникати різні організаційні чи технічні проблеми.
-
Брак ресурсів. За використання одного середовища (особливо якщо воно локальне) наявних обчислювальних і мережевих потужностей та сховища може не вистачити, щоб задовольнити ваші потреби.
-
Обмежене географічне охоплення. Якщо розгортання відбувається в одному середовищі, географічно віддалені одне від одного користувачі отримуватимуть доступ до того самого розгортання. Можливо, їхньому трафіку доведеться подолати пів світу, перш ніж досягнути основного сервера.
-
Обмежена доступність. Оскільки більша частина трафіку припадає на загальнодоступні мережі, додатки стають менш стійкими до помилок і збоїв.
-
Перешкоди з боку постачальника. Абстрагування в інфраструктурі й на платформах постачальника можуть заважати вам портувати додатки.
-
Негнучкі ресурси. У вас може бути недостатньо велике сховище, обмежені обчислювальні чи мережеві потужності.
Гетерогенні розгортання допомагають усувати такі проблеми, але при цьому потрібно використовувати програмовані й детерміновані процеси та процедури. Одноразові або нетипові процедури можуть робити розгортання вразливими й нестійкими до збоїв. Нетипові процеси можуть призводити до втрати даних чи зупинки трафіку. Варто застосовувати повторювані процеси розгортання й надійний підхід до керування розподілом, конфігурацією і обслуговуванням.
Гетерогенні розгортання застосовуються в трьох основних сценаріях:
- мультихмарні розгортання;
- локальна інфраструктура даних;
- процеси безперервної інтеграції/розгортання.
За допомогою наведених далі вправ ви потренуєтеся виконувати поширені сценарії для гетерогенних розгортань, а також ознайомитеся з добре спроєктованими підходами з використанням Kubernetes і іншими інфраструктурними ресурсами.
Налаштування й вимоги
Перш ніж натиснути кнопку Start Lab (Почати практичну роботу)
Ознайомтеся з наведеними нижче вказівками. На виконання практичного заняття відводиться обмежений час, і його не можна призупинити. Щойно ви натиснете Почати заняття, з’явиться таймер, який показуватиме, скільки часу для роботи з ресурсами Google Cloud у вас залишилося.
Ви зможете виконати практичне заняття в дійсному робочому хмарному середовищі (не в симуляції або демонстраційному середовищі). Для цього на час практичного заняття вам надаються тимчасові облікові дані для реєстрації і входу в Google Cloud.
Для цього практичного заняття потрібно мати:
- стандартний вебпереглядач, наприклад Chrome (рекомендовано);
Примітка. Виконуйте практичне заняття в анонімному вікні вебпереглядача (рекомендовано). Так ви уникнете додаткової плати, що може стягуватися з вашого особистого облікового запису внаслідок його помилкового використання замість облікового запису для навчання.
- достатню кількість часу, оскільки почавши практичне заняття, ви не зможете призупинити його.
Примітка. Для виконання цього практичного заняття використовуйте лише обліковий запис для навчання, оскільки з іншого облікового запису Google Cloud може стягуватися плата.
Як почати виконувати практичну роботу й увійти в Google Cloud Console
-
Натисніть кнопку Start Lab (Почати практичне заняття). Якщо за практичне заняття необхідно заплатити, відкриється вікно, де ви зможете обрати спосіб оплати.
Ліворуч розміщено панель "Відомості про практичне заняття" з такими компонентами:
- кнопка "Відкрити консоль Google";
- час до закінчення;
- тимчасові облікові дані, які потрібно використовувати для доступу до цього практичного заняття;
- інша інформація, необхідна для виконання цього практичного заняття.
-
Натисніть Відкрити консоль Google або натисніть правою кнопкою миші й виберіть Відкрити анонімне вікно, якщо ви використовуєте вебпереглядач Chrome.
Завантажаться необхідні ресурси. Потім відкриється нова вкладка зі сторінкою "Увійти".
Порада. Упорядковуйте вкладки в окремих вікнах, розміщуючи їх поруч.
Примітка. Якщо з’явиться вікно Виберіть обліковий запис, натисніть Вибрати інший обліковий запис.
-
За потреби скопіюйте значення в полі Username (Ім’я користувача) нижче й вставте його у вікні Вхід.
{{{user_0.username | "Username"}}}
Поле "Ім’я користувача" також можна знайти на панелі "Відомості про практичне заняття".
-
Натисніть Далі.
-
Скопіюйте значення в полі Password (Пароль) нижче й вставте його у вікні Welcome (Привітання).
{{{user_0.password | "Password"}}}
Поле "Пароль" також можна знайти на панелі "Відомості про практичне заняття".
-
Натисніть Далі.
Важливо. Обов’язково використовуйте облікові дані, призначені для відповідного практичного заняття. Не використовуйте облікові дані Google Cloud.
Примітка. Якщо ввійти у власний обліковий запис Google Cloud, може стягуватися додаткова плата.
-
Що від вас очікується
- Прийміть Умови використання.
- Не додавайте способи відновлення й двохетапну перевірку (оскільки це тимчасовий обліковий запис).
- Не реєструйте безкоштовні пробні версії.
Через кілька секунд консоль Google Cloud відкриється в новій вкладці.
Примітка. Щоб отримати доступ до продуктів і сервісів Google Cloud, натисніть меню навігації або введіть назву сервісу чи продукту в полі пошуку.
Як активувати Cloud Shell
Cloud Shell – це віртуальна машина з попередньо завантаженими інструментами для розробників. Вона містить головний каталог обсягом 5 ГБ постійної пам’яті й працює в середовищі Google Cloud. Cloud Shell надає доступ до ресурсів Google Cloud через командний рядок.
-
Угорі консолі Google Cloud натисніть Activate Cloud Shell (Активувати Cloud Shell)
.
-
У вікнах, що відкриються, виконайте наведені нижче дії.
- У вікні з інформацією про 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.
- (Необов’язково) Щоб вивести поточне ім’я облікового запису, введіть таку команду:
gcloud auth list
- Натисніть Authorize (Авторизувати).
Вивід:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Необов’язково) Щоб вивести ідентифікатор проєкту, введіть таку команду:
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 }}}
Отримайте зразок коду для цього практичного заняття
- Отримайте зразок коду для створення й запуску контейнерів і розгортань із сегмента практичного заняття:
gcloud storage cp -r gs://spls/gsp053/kubernetes .
cd kubernetes
- Створіть кластер із 3 вузлів (це може зайняти кілька хвилин):
gcloud container clusters create bootcamp \
--machine-type e2-small \
--num-nodes 3 \
--scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"
Завдання 1. Вивчіть об’єкт розгортання
Для початку дізнайтеся більше про об’єкт розгортання.
- Для цього виконайте команду
explain
в інструменті kubectl
:
kubectl explain deployment
- Щоб переглянути всі поля, скористайтеся параметром
--recursive
:
kubectl explain deployment --recursive
- Ви можете запускати команду explain під час виконання будь-яких завдань практичного заняття, щоб краще зрозуміти структуру об’єкта розгортання й призначення окремих полів:
kubectl explain deployment.metadata.name
Завдання 2. Створіть розгортання
- Створіть розгортання
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.
- Створіть об’єкт розгортання за допомогою команди
kubectl create
:
kubectl create -f deployments/fortune-app-blue.yaml
- Щоб перевірити, чи об’єкт створено, виконайте команду:
kubectl get deployments
- Коли розгортання буде готове, Kubernetes створить для нього об’єкт
ReplicaSet
. Щоб перевірити, чи створено ReplicaSet
, виконайте команду:
kubectl get replicasets
Має відобразитися об’єкт ReplicaSet
під назвою на зразок fortune-app-blue-xxxxxxx
.
- Перегляньте групи контейнерів, створених у межах розгортання:
kubectl get pods
- Тепер створіть сервіс, щоб надати зовнішній доступ до розгортання
fortune-app
:
kubectl create -f services/fortune-app.yaml
- Отримайте зовнішню IP-адресу розгортання
fortune-app
і перейдіть за нею до кінцевої точки /version
:
kubectl get services fortune-app
Примітка. Заповнення поля External-IP для вашого сервісу може тривати кілька секунд. Це звичайне явище. Повторюйте наведену вище команду кожні кілька секунд, доки поле не заповниться.
curl http://<EXTERNAL-IP>/version
Ви маєте отримати відповідь JSON, що містить {"version":"1.0.0"}
.
- За допомогою функції шаблонів виводу в інструменті
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
.
- Найпростіший спосіб оновити поле копій – використати команду
kubectl scale
:
kubectl scale deployment fortune-app-blue --replicas=5
Примітка. Щоб усі нові групи контейнерів запустилися, знадобиться близько однієї хвилини.
- Переконайтеся, що запущено 5 груп контейнерів
fortune-app-blue
:
kubectl get pods | grep fortune-app-blue | wc -l
- Тепер зменште масштаб додатка:
kubectl scale deployment fortune-app-blue --replicas=3
- Знову переконайтеся, що запущено потрібну кількість груп контейнерів:
kubectl get pods | grep fortune-app-blue | wc -l
Ви ознайомилися з розгортаннями Kubernetes, а також навчилися керувати групою контейнерів і змінювати їх кількість.
Завдання 3. Виконайте послідовне оновлення
Розгортання підтримують перехід на нову версію образу шляхом послідовного оновлення.
Запустіть послідовне оновлення
- Щоб запустити послідовне оновлення, можна просто застосувати (за допомогою команди apply) конфігурацію "зеленого" розгортання. Інструмент Kubernetes достатньо розумний, щоб розпізнати наявне розгортання (
fortune-app-blue
) і застосувати до нього зміни з нового файлу.
kubectl edit deployment fortune-app-blue
- У редакторі знайдіть рядок
image
і змініть тег версії з 1.0.0
на 2.0.0
. Щоб відредагувати файл, перейдіть у режим вставлення, натиснувши i
на клавіатурі.
-
Збережіть зміни й закрийте редактор. Для цього натисніть Esc
, введіть :wq
і натисніть Enter
. Так ви запустите послідовне оновлення для потрібного розгортання й належно зафіксуєте його історію. Так ви запустите послідовне оновлення для потрібного розгортання й належно зафіксуєте його історію.
-
Перегляньте новий об’єкт ReplicaSet
, створений у Kubernetes:
kubectl get replicaset
- Ви також можете побачити новий запис в історії оновлень:
kubectl rollout history deployment/fortune-app-blue
Призупиніть послідовне оновлення
- Щоб призупинити оновлення, виконайте таку команду:
kubectl rollout pause deployment/fortune-app-blue
- Перевірте статус оновлення:
kubectl rollout status deployment/fortune-app-blue
Примітка. За командою status система може відразу вивести таке повідомлення: "deployment "fortune-app-blue" successfully rolled out". Це очікувано й означає, що команду призупинення виконано. Це не означає, що оновлення версії завершено.
- Перевірте версію кожної групи контейнерів. Ви побачите комбінацію версій 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
- Щоб вийти із циклу, натисніть
Ctrl+C
.
Відновіть послідовне оновлення
- Щоб продовжити оновлення, виконайте команду
resume
:
kubectl rollout resume deployment/fortune-app-blue
- Коли оновлення завершиться, після виконання команди
status
ви маєте побачити наведений нижче вивід.
kubectl rollout status deployment/fortune-app-blue
Відкотіть оновлення
Уявіть, що в новій версії виявлено помилку.
- Щоб повернутися до попередньої версії, виконайте таку команду
rollout
:
kubectl rollout undo deployment/fortune-app-blue
Примітка. Щоб відкотити зміни, знадобиться кілька хвилин.
- Перевірте, чи всі групи контейнерів повернулися до версії 1.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Чудово! Ви навчилися виконувати послідовне оновлення для розгортань Kubernetes.
Завдання 4. Канаркові розгортання
Використовуйте цей тип розгортання, якщо працюєте над новим розгортанням і хочете протестувати його на невеликій аудиторії.
Створіть канаркове розгортання
- Спершу створіть канаркове розгортання для нової версії за допомогою файлу
fortune-app-canary.yaml
:
cat deployments/fortune-app-canary.yaml
- Тепер створіть канаркове розгортання:
kubectl create -f deployments/fortune-app-canary.yaml
- Коли його буде створено, у вас має бути два розгортання. Перевірте за допомогою цієї команди:
kubectl get deployments
Сервіс fortune-app
має селектор app: fortune-app
, який відповідає групам контейнерів обох розгортань: fortune-app-blue
(робочого) і fortune-app-canary
.
Перевірте канаркове розгортання
- Щоб перевірити, яка версія використовується, надішліть запити до сервісу:
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.0.0, а в деяких випадках – версія 2.0.0.
Перевірка виконаного завдання
Щоб підтвердити виконання завдання, натисніть Підтвердити виконання нижче. Якщо ви правильно створили канаркове розгортання, з’явиться оцінка.
Канаркове розгортання
Завдання 5. Синьо-зелені розгортання
Для синьо-зелених розгортань ви створите два окремі розгортання й перемикатимете трафік між ними, змінюючи селектор сервісу.
Сервіс
- Спочатку оновіть сервіс так, щоб він використовував лише "синю" версію (1.0.0):
kubectl apply -f services/fortune-app-blue-service.yaml
Оновлення за допомогою синьо-зеленого розгортання
- Тепер створіть нове "зелене" розгортання для версії 2.0.0:
kubectl create -f deployments/fortune-app-green.yaml
- Коли "зелене" розгортання запуститься, перевірте, чи поточна версія 1.0.0 усе ще використовується:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
- Тепер переведіть сервіс на нову "зелену" версію:
kubectl apply -f services/fortune-app-green-service.yaml
- Після оновлення сервісу відразу почне застосовуватися "зелене" розгортання. Ви можете перевірити, чи завжди використовується версія 2.0.0:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Відкочування до попередньої версії за допомогою синьо-зеленого розгортання
- Щоб повернутися до попередньої версії, просто повторно застосуйте маніфест сервісу для "синього" розгортання:
kubectl apply -f services/fortune-app-blue-service.yaml
- Оновивши сервіс, ви відкотите його до попередньої версії. Перевірте, чи використовується версія 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. Усі інші назви компаній і продуктів можуть бути торговельними марками відповідних компаній, з якими вони пов’язані.