From 1b6c83d94176df4e58d898f9f1ca6a7b4ffa7bc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=90=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BF=D0=BE=D0=B2?= Date: Sun, 26 Oct 2025 03:37:12 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D0=B5=20=D1=80?= =?UTF-8?q?=D1=83=D0=BA=D0=BE=D0=B2=D0=BE=D0=B4=D1=81=D1=82=D0=B2=D0=BE=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B5=20=D1=81=20?= =?UTF-8?q?Kubernetes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Создано подробное руководство docs/kubernetes-full-guide.md - Описаны все аспекты работы с Kubernetes кластерами - Добавлены примеры использования манифестов, Helm, Ingress - Подробно описана работа с мониторингом (Prometheus, Grafana) - Документирована работа с Service Mesh (Istio, Kiali) - Добавлены примеры полных развертываний - Включены разделы по безопасности и отладке - Документация на русском языке с большим количеством примеров --- docs/kubernetes-full-guide.md | 906 ++++++++++++++++++++++++++++++++++ 1 file changed, 906 insertions(+) create mode 100644 docs/kubernetes-full-guide.md diff --git a/docs/kubernetes-full-guide.md b/docs/kubernetes-full-guide.md new file mode 100644 index 0000000..4cc43b5 --- /dev/null +++ b/docs/kubernetes-full-guide.md @@ -0,0 +1,906 @@ +# Полное руководство по работе с Kubernetes кластерами + +Автор: Сергей Антропов +Сайт: https://devops.org.ru + +## Содержание + +- [Введение](#введение) +- [Создание кластера](#создание-кластера) +- [Управление кластером](#управление-кластером) +- [Работа с манифестами](#работа-с-манифестами) +- [Работа с Helm](#работа-с-helm) +- [Настройка Ingress](#настройка-ingress) +- [Мониторинг и аддоны](#мониторинг-и-аддоны) +- [Service Mesh с Istio](#service-mesh-с-istio) +- [Примеры полных развертываний](#примеры-полных-развертываний) + +## Введение + +AnsibleLab предоставляет полную поддержку создания и управления локальными Kubernetes кластерами на основе Kind (Kubernetes in Docker). Kind позволяет запускать Kubernetes кластеры внутри Docker контейнеров, что идеально подходит для разработки, тестирования и обучения. + +### Основные возможности + +- Создание многоузловых Kubernetes кластеров +- Установка и управление Helm чартами +- Работа с манифестами YAML +- Настройка Ingress контроллеров +- Установка систем мониторинга (Prometheus, Grafana) +- Развертывание Service Mesh (Istio, Kiali) +- Изоляция сети и безопасность + +### Преимущества + +- Не требует установки локального Kubernetes +- Быстрое создание и удаление кластеров +- Поддержка многоузловых конфигураций +- Полная совместимость с production окружениями +- Контейнеризация всех инструментов + +## Создание кластера + +### Базовое создание + +Простое создание минимального кластера без дополнительных компонентов: + +```bash +make k8s create +``` + +Создаст кластер с пресетом `k8s-minimal` - один control-plane узел без дополнительных компонентов. + +### Создание полнофункционального кластера + +Создание кластера с предустановленными компонентами: + +```bash +make k8s create kubernetes +``` + +Этот пресет создает кластер со следующими компонентами: +- 1 control-plane узел +- 2 worker узла +- Ingress NGINX Controller +- Metrics Server +- Istio Service Mesh +- Kiali для визуализации Istio +- Prometheus Stack (Prometheus + Grafana) + +### Конфигурация пресета + +Пресеты находятся в `molecule/presets/k8s/`. Пример конфигурации: + +```yaml +kind_clusters: + - name: lab + workers: 2 + api_port: 6443 + addons: + ingress_nginx: true + metrics_server: true + istio: true + kiali: true + prometheus_stack: true + ingress_host_http_port: 8081 + ingress_host_https_port: 8443 + addon_ports: + prometheus: 9090 + grafana: 3000 + kiali: 20001 +``` + +### Проверка статуса кластера + +```bash +# Показать узлы кластера +make k8s nodes kubernetes + +# Вывод: +# NAME STATUS ROLES AGE VERSION +# lab-control-plane Ready control-plane 5m v1.34.0 +# lab-worker Ready 4m v1.34.0 +# lab-worker2 Ready 4m v1.34.0 + +# Показать подробный статус +make k8s status kubernetes +``` + +### Подключение к кластеру + +```bash +# Получить kubeconfig +make k8s config kubernetes + +# Использовать kubeconfig +export KUBECONFIG=$(pwd)/kubeconfig +kubectl get nodes +``` + +## Управление кластером + +### Остановка и запуск + +```bash +# Остановить кластер (без удаления) +make k8s stop kubernetes + +# Запустить остановленный кластер +make k8s start kubernetes + +# Перезапустить кластер +make k8s stop kubernetes && make k8s start kubernetes +``` + +### Удаление кластера + +```bash +# Полное удаление кластера и контейнера +make k8s destroy kubernetes +``` + +### Получение shell в контейнере + +```bash +# Открыть интерактивный shell +make k8s shell kubernetes + +# Теперь доступны все команды kubectl, helm, kind внутри контейнера +kubectl get nodes +helm list +kind get clusters +``` + +## Работа с манифестами + +### Применение манифеста + +Применение манифеста из URL: + +```bash +make k8s manifest apply kubernetes https://example.com/deploy.yaml +``` + +Применение локального манифеста: + +```bash +# Создайте файл example-deployment.yaml +cat > example-deployment.yaml < wordpress.yaml < app.yaml < + +# Просмотр логов с follow +kubectl --kubeconfig kubeconfig logs -f + +# Выполнить команду в поде +kubectl --kubeconfig kubeconfig exec -it -- /bin/sh + +# Описание ресурса +kubectl --kubeconfig kubeconfig describe pod +kubectl --kubeconfig kubeconfig describe service +``` + +### Масштабирование + +```bash +# Масштабировать Deployment +kubectl --kubeconfig kubeconfig scale deployment --replicas=5 + +# Автомасштабирование (требует metrics-server) +kubectl --kubeconfig kubeconfig autoscale deployment \ + --cpu-percent=70 --min=2 --max=10 +``` + +### Экспорт конфигурации + +```bash +# Экспортировать ресурс в YAML +kubectl --kubeconfig kubeconfig get deployment -o yaml > exported.yaml + +# Экспортировать все ресурсы namespace +kubectl --kubeconfig kubeconfig get all -n -o yaml > all-resources.yaml +``` + +## Безопасность + +### Использование Secrets + +```bash +# Создать Secret из файла +kubectl --kubeconfig kubeconfig create secret generic my-secret \ + --from-file=username=./username.txt \ + --from-file=password=./password.txt + +# Создать Secret из литерала +kubectl --kubeconfig kubeconfig create secret generic my-secret \ + --from-literal=username=admin \ + --from-literal=password=secret123 +``` + +### Network Policies + +Создайте файл `network-policy.yaml`: + +```yaml +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: test-network-policy + namespace: default +spec: + podSelector: + matchLabels: + role: db + policyTypes: + - Ingress + - Egress + ingress: + - from: + - podSelector: + matchLabels: + role: api + ports: + - protocol: TCP + port: 5432 + egress: + - to: + - podSelector: + matchLabels: + role: api + ports: + - protocol: TCP + port: 5432 +``` + +Примените: + +```bash +make k8s manifest apply kubernetes ./network-policy.yaml +``` + +## Заключение + +AnsibleLab предоставляет полный набор инструментов для работы с Kubernetes кластерами локально. Вы можете: + +- Создавать и управлять кластерами +- Устанавливать и настраивать приложения +- Работать с мониторингом и Service Mesh +- Тестировать перед развертыванием в production + +Все инструменты работают внутри Docker контейнеров, что обеспечивает изоляцию и переносимость. + +## Автор + +Сергей Антропов +Сайт: https://devops.org.ru