Блок 7 Презентація

Інфраструктура — k3s на DigitalOcean

Нотатки до презентації та структура виступу для Блоку 07.

Тривалість: ~10 хвилин Мета: Студенти розуміють, чому k3s — правильний вибір для легковісного Kubernetes, що пропонує DigitalOcean та як виглядає цільова архітектура.


Слайд 1: Податок за Kubernetes

Поговоримо про слона у кімнаті. Kubernetes — це чудово. Але також дуже багато.

Повноцінний кластер під управлінням kubeadm вимагає:

  • 3 ноди control plane (для HA) — кожна потребує мінімум 2 CPU, 4GB RAM
  • etcd — окрема розподілена база даних лише для стану кластера
  • Мережевий плагін — Calico, Cilium, Flannel — потрібно обрати один та налаштувати
  • Балансувальник навантаження — MetalLB або LB вашого хмарного провайдера
  • Сховище — CSI-драйвери, провізіонери persistent volume
  • Ingress — Nginx, Traefik, HAProxy — ще один вибір, ще одна конфігурація

Це легко $200-400/місяць у будь-якого хмарного провайдера до того, як ви задеплоїте хоча б один свій под. Для продакшен e-commerce платформи з 50 мікросервісами? Виправдано. Для нашого курсового проєкту? Абсурд.

Нам потрібно щось легше.


Слайд 2: Зустрічайте k3s — Kubernetes на дієті

k3s — це Kubernetes. Не “щось на зразок Kubernetes” чи “Kubernetes-сумісний”. Це сертифікований, відповідний Kubernetes, який проходить ті ж самі тести CNCF conformance, що й повна дистрибуція. Різниця — у тому, як він упакований.

Характеристика Повний K8s (kubeadm) k3s
Розмір бінарного файлу ~300MB + залежності ~60MB один бінарник
Базове споживання RAM 2-4GB на ноду 512MB
etcd Обов’язковий (окремий кластер) SQLite (вбудований, або опціональний etcd/postgres)
Мережа BYO (Calico, Cilium) Flannel (вбудований)
Ingress BYO (Nginx, Traefik) Traefik (вбудований)
Балансувальник BYO (MetalLB) ServiceLB (вбудований)
Сховище BYO CSI-драйвер Local-path provisioner (вбудований)
Час встановлення 30-60 хвилин 30 секунд

Одна команда curl. Ось і все встановлення. Все необхідне вже включено. І кожна команда kubectl, яку ви знаєте, працює абсолютно так само.

Цікавий факт: k3s назвали так, тому що він “вдвічі менший за k8s.” Kubernetes має 10 літер, що скоротили до k-8-s (k + 8 літер + s). k3s слідує тому ж патерну, але з 5 літерами загалом — k + 3 літери + s. Половина назви, половина розміру. Проєкт створив Darren Shepherd у Rancher Labs (тепер частина SUSE) і випустив у 2019 році.


Слайд 3: Чому DigitalOcean?

Нам потрібен сервер. Є десятки хмарних провайдерів. Ось чому DigitalOcean підходить для цього курсу:

Простота. Створення дроплета займає 60 секунд через UI. Не потрібно налаштовувати VPC, створювати IAM-ролі чи навігувати по консолі з 47 вкладками. Клік, клік, готово.

Передбачувана ціна. Дроплет s-2vcpu-4gb (2 vCPU, 4GB RAM, 80GB SSD) коштує рівно $24/місяць. Жодних несподіваних egress-витрат, жодного “залежить від використання”. Двадцять чотири долари. Крапка.

Достатньо для реальної роботи. DigitalOcean — це не лише для туторіалів. Чимало продакшен-навантажень працюють саме там. Для одновузлового кластера k3s з нашим застосунком — більш ніж достатньо.

Альтернативи теж прийнятні — Hetzner ($4.50/міс за 2GB!), Linode, Vultr, навіть Raspberry Pi на вашому столі. Встановлення k3s однакове скрізь. Ми використовуємо DigitalOcean, тому що консоль чиста, а ціни прозорі.


Слайд 4: Цільова архітектура

Ось що ми будуємо у цьому блоці:

Ваш ноутбук                         Дроплет DigitalOcean
+--------------+                     +---------------------------+
|              |    SSH / kubectl     |  Ubuntu 22.04             |
|  Claude Code | ─────────────────── |  k3s (single node)        |
|  kubectl     |                     |                           |
|              |                     |  Pods:                    |
+--------------+                     |  ┌─────────────────────┐  |
                                     |  │ ai-coderrank (Next)  │  |
                                     |  │ namespace: ai-coder  │  |
                                     |  └─────────────────────┘  |
                                     |                           |
                                     |  System pods:             |
                                     |  - CoreDNS                |
                                     |  - Traefik                |
                                     |  - ServiceLB              |
                                     |  - Metrics server         |
                                     +---------------------------+

Один дроплет. Один бінарник k3s. Ваш застосунок працює як поди. Ось і все.

Публічного доступу поки немає — це зробимо з ArgoCD та NodePort у Блоці 12. Наразі перевіряємо через kubectl port-forward з вашого ноутбука.


Слайд 5: Що Claude робить (і не робить) для інфраструктури

Давайте чітко визначимо роль Claude Code в роботі з інфраструктурою.

У чому Claude сильний:

  • Генерація скриптів провізіонінгу з правильними прапорцями та опціями
  • Згадування точного синтаксису scp, який ви завжди гуглите
  • Написання команди curl | sh з правильними змінними оточення
  • Усунення проблем, коли kubectl get nodes показує NotReady
  • Пояснення кожного кроку перед його виконанням

Що Claude не може:

  • Натискати кнопки в консолі DigitalOcean за вас
  • Підключатися по SSH до вашого сервера (він виконує команди на вашій машині, не на віддалених)
  • Виправляти мережеві проблеми, які не може спостерігати (немає доступу до стану віддаленого сервера)

Робочий процес такий: Claude генерує команду, ви її виконуєте. Claude читає вивід, пропонує наступний крок. Ви контролюєте ситуацію. Це особливо важливо для інфраструктури — неправильна команда на віддаленому сервері може зламати речі, які важко відновити.

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


Слайд 6: План дій

Ось як виглядає практична частина, крок за кроком:

  1. Провізіонінг — Створити дроплет DigitalOcean (Claude генерує скрипт, або ви використовуєте консоль)
  2. Підключення — SSH до дроплета, перевірка що це свіжий Ubuntu
  3. Встановлення k3s — Одна команда, чекаємо 30 секунд, готово
  4. Перевірка кластераkubectl get nodes, kubectl get pods -A
  5. Копіювання kubeconfig — Перенести конфігурацію k3s на ноутбук для віддаленого kubectl
  6. Деплойkubectl apply -k k8s/ з вашого ноутбука
  7. Перевірка застосунку — Port-forward та відкриття застосунку у браузері

Сім кроків. Тридцять хвилин. Наприкінці у вас є реальний Kubernetes-кластер з вашим реальним застосунком.


Ключові висновки

Концепція Що це Чому це важливо
k3s Легковісний, сертифікований Kubernetes в одному бінарнику Повна потужність K8s на сервері за $24/місяць
Дроплет DigitalOcean Віртуальний сервер у хмарі Просто, передбачувано, дешево
kubeconfig Файл з обліковими даними для доступу kubectl Дозволяє керувати кластером з ноутбука
kubectl apply -k Застосування маніфестів, керованих Kustomize Деплоїть усі K8s-ресурси однією командою
Port-forward Тунель порту пода на localhost Тестування без публікації в інтернет

Перехід: Час створити реальну інфраструктуру. Ви ось-ось перейдете від “у мене є YAML-файли” до “у мене є поди, що працюють у хмарі.” Почнімо.


Готові перевірити свої знання?

Пройти тест →