Кумулятивний тест Частини 2: Розгортання застосунків
Обмеження часу: 25 хвилин (симуляція тиску іспиту)
Прохідний бал: 80% (8/10 запитань)
Цей тест перевіряє ваше володіння:
- Деплойментами та ковзними оновленнями/відкатами
- Пакетним менеджером Helm
- Kustomize
- Стратегіями деплойменту (blue/green, canary)
Інструкції
Розділ «Інструкції»- Спробуйте кожне запитання без підглядання у відповіді
- Засікайте час — швидкість важлива для CKAD
- Використовуйте лише
kubectlтаkubernetes.io/docs - Перевірте відповіді після завершення всіх запитань
Запитання
Розділ «Запитання»Запитання 1: Конфігурація Rolling Update
Розділ «Запитання 1: Конфігурація Rolling Update»[2 хвилини]
Створіть Деплоймент з назвою webapp з 4 репліками, використовуючи nginx:1.20, який:
- Використовує стратегію
RollingUpdate - Має
maxSurge: 1 - Має
maxUnavailable: 0
Відповідь
cat << 'EOF' | k apply -f -apiVersion: apps/v1kind: Deploymentmetadata: name: webappspec: replicas: 4 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app: webapp template: metadata: labels: app: webapp spec: containers: - name: nginx image: nginx:1.20EOFЗапитання 2: Відкат
Розділ «Запитання 2: Відкат»[2 хвилини]
Деплоймент з назвою api був оновлений, але зазнає збоїв. Відкотіть його до ревізії 2.
# Перевірити поточний станk rollout history deploy/apiВідповідь
# Перевірити історіюk rollout history deploy/api
# Відкат до ревізії 2k rollout undo deploy/api --to-revision=2
# Перевіритиk rollout status deploy/apiЗапитання 3: Встановлення Helm зі значеннями
Розділ «Запитання 3: Встановлення Helm зі значеннями»[2 хвилини]
Встановіть чарт із репозиторію bitnami:
- Назва релізу:
my-nginx - Чарт:
bitnami/nginx - Встановити
replicaCount=3 - Простір імен:
web(створити, якщо не існує)
Відповідь
# Додати репозиторій, якщо потрібноhelm repo add bitnami https://charts.bitnami.com/bitnamihelm repo update
# Встановити зі значеннямиhelm install my-nginx bitnami/nginx \ --set replicaCount=3 \ -n web --create-namespaceЗапитання 4: Відкат Helm
Розділ «Запитання 4: Відкат Helm»[1 хвилина]
Helm-реліз my-app був оновлений і тепер зламаний. Відкотіть його до попередньої версії.
Відповідь
# Перевірити історіюhelm history my-app
# Відкат до попередньоїhelm rollback my-app
# Або до конкретної ревізіїhelm rollback my-app 1Запитання 5: Основи Kustomize
Розділ «Запитання 5: Основи Kustomize»[3 хвилини]
Створіть кастомізацію, яка:
- Включає
deployment.yaml - Встановлює простір імен
production - Додає префікс
prod-до всіх імен
Потім застосуйте її.
Відповідь
# Створити kustomization.yamlcat << 'EOF' > kustomization.yamlapiVersion: kustomize.config.k8s.io/v1beta1kind: Kustomization
resources:- deployment.yaml
namespace: productionnamePrefix: prod-EOF
# Попередній переглядkubectl kustomize ./
# Застосуватиkubectl apply -k ./Запитання 6: Перевизначення образу Kustomize
Розділ «Запитання 6: Перевизначення образу Kustomize»[2 хвилини]
Створіть кастомізацію, яка перевизначає образ nginx, щоб використовувати тег 1.22 замість того, що вказано в базових маніфестах.
Відповідь
apiVersion: kustomize.config.k8s.io/v1beta1kind: Kustomization
resources:- deployment.yaml
images:- name: nginx newTag: "1.22"kubectl kustomize ./Запитання 7: Перемикання Blue/Green
Розділ «Запитання 7: Перемикання Blue/Green»[3 хвилини]
У вас є два деплойменти:
app-blueз міткоюversion: blueapp-greenз міткоюversion: green
Сервіс app-svc наразі вказує на blue. Перемикніть його на green.
Відповідь
# Перемикнути селектор сервісу на greenkubectl patch svc app-svc -p '{"spec":{"selector":{"version":"green"}}}'
# Перевіритиkubectl get ep app-svckubectl describe svc app-svcЗапитання 8: Налаштування Canary
Розділ «Запитання 8: Налаштування Canary»[3 хвилини]
Налаштуйте canary-деплоймент, де:
- Стабільний деплоймент
stable-appмає 9 реплік (90%) - Canary-деплоймент
canary-appмає 1 репліку (10%) - Єдиний Сервіс маршрутизує до обох
Обидва деплойменти вже існують з міткою app: myapp.
Відповідь
# Масштабувати деплойменти для 10% canarykubectl scale deploy stable-app --replicas=9kubectl scale deploy canary-app --replicas=1
# Створити сервіс, що збігається з обома (використовуючи спільну мітку)kubectl expose deploy stable-app --name=myapp-svc --port=80 --selector=app=myapp
# Перевірити, що endpoints включають поди з обох деплойментівkubectl get ep myapp-svcЗапитання 9: Стратегія деплойменту
Розділ «Запитання 9: Стратегія деплойменту»[2 хвилини]
Застосунок бази даних вимагає, щоб працювала лише одна версія одночасно (без паралельних версій). Яку стратегію Деплойменту слід використовувати і як її налаштувати?
Відповідь
Використовуйте стратегію Recreate:
apiVersion: apps/v1kind: Deploymentmetadata: name: databasespec: strategy: type: Recreate # ... решта специфікаціїСтратегія Recreate завершує всі наявні поди перед створенням нових, гарантуючи, що дві версії не працюватимуть одночасно.
Запитання 10: Значення Helm
Розділ «Запитання 10: Значення Helm»[2 хвилини]
Отримайте поточно застосовані значення для Helm-релізу з назвою production-app. Потім оновіть його, зберігаючи наявні значення, але додавши service.type=LoadBalancer.
Відповідь
# Отримати поточні значенняhelm get values production-app
# Оновити, зберігаючи наявні значення, додавши новеhelm upgrade production-app CHART_NAME \ --reuse-values \ --set service.type=LoadBalancerКлючове: --reuse-values зберігає всі наявні кастомні значення.
Оцінювання
Розділ «Оцінювання»| Правильних відповідей | Бал | Статус |
|---|---|---|
| 10/10 | 100% | Чудово — готові до іспиту |
| 8–9/10 | 80–90% | Добре — потрібен невеликий перегляд |
| 6–7/10 | 60–70% | Перегляньте слабкі місця |
| <6/10 | <60% | Перегляньте модулі Частини 2 |
Очищення
Розділ «Очищення»k delete deploy webapp api stable-app canary-app 2>/dev/nullk delete svc app-svc myapp-svc 2>/dev/nullhelm uninstall my-nginx -n web 2>/dev/nullhelm uninstall my-app 2>/dev/nullhelm uninstall production-app 2>/dev/nullk delete ns web 2>/dev/nullКлючові висновки
Розділ «Ключові висновки»Якщо ви набрали менше 80%, перегляньте ці розділи:
- Пропущено З1–2: Перегляньте Модуль 2.1 (Деплойменти) — ковзні оновлення та відкати
- Пропущено З3–4: Перегляньте Модуль 2.2 (Helm) — команди встановлення, оновлення, відкату
- Пропущено З5–6: Перегляньте Модуль 2.3 (Kustomize) — базова структура та трансформації
- Пропущено З7–8: Перегляньте Модуль 2.4 (Стратегії) — патерни blue/green та canary
- Пропущено З9–10: Перегляньте типи стратегій та керування значеннями Helm
Наступна частина
Розділ «Наступна частина»Частина 3: Спостережуваність та обслуговування застосунків — проби, логування, дебаг та застарівання API.