Інфраструктура — 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: План дій
Ось як виглядає практична частина, крок за кроком:
- Провізіонінг — Створити дроплет DigitalOcean (Claude генерує скрипт, або ви використовуєте консоль)
- Підключення — SSH до дроплета, перевірка що це свіжий Ubuntu
- Встановлення k3s — Одна команда, чекаємо 30 секунд, готово
- Перевірка кластера —
kubectl get nodes,kubectl get pods -A - Копіювання kubeconfig — Перенести конфігурацію k3s на ноутбук для віддаленого kubectl
- Деплой —
kubectl apply -k k8s/з вашого ноутбука - Перевірка застосунку — Port-forward та відкриття застосунку у браузері
Сім кроків. Тридцять хвилин. Наприкінці у вас є реальний Kubernetes-кластер з вашим реальним застосунком.
Ключові висновки
| Концепція | Що це | Чому це важливо |
|---|---|---|
| k3s | Легковісний, сертифікований Kubernetes в одному бінарнику | Повна потужність K8s на сервері за $24/місяць |
| Дроплет DigitalOcean | Віртуальний сервер у хмарі | Просто, передбачувано, дешево |
| kubeconfig | Файл з обліковими даними для доступу kubectl | Дозволяє керувати кластером з ноутбука |
kubectl apply -k |
Застосування маніфестів, керованих Kustomize | Деплоїть усі K8s-ресурси однією командою |
| Port-forward | Тунель порту пода на localhost | Тестування без публікації в інтернет |
Перехід: Час створити реальну інфраструктуру. Ви ось-ось перейдете від “у мене є YAML-файли” до “у мене є поди, що працюють у хмарі.” Почнімо.
Готові перевірити свої знання?
Пройти тест →