# Команды для работы с Kubernetes Автор: Сергей Антропов Сайт: https://devops.org.ru ## Содержание - [Работа с манифестами](#работа-с-манифестами) - [Работа с Helm](#работа-с-helm) - [Работа с Helm репозиториями](#работа-с-helm-репозиториями) ## Работа с манифестами Команды для применения, удаления и обновления манифестов YAML в кластере. ### Синтаксис ```bash make k8s manifest [команда] [пресет] [URL_или_путь_к_файлу] ``` ### Команды #### `apply` - Применение манифеста Применяет манифест YAML к кластеру. ```bash make k8s manifest apply kubernetes https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml ``` **Примеры:** ```bash # Применение манифеста из URL make k8s manifest apply kubernetes https://example.com/deploy.yaml # Применение локального манифеста make k8s manifest apply kubernetes ./manifests/my-app.yaml ``` #### `delete` - Удаление ресурсов Удаляет ресурсы из кластера по манифесту. ```bash make k8s manifest delete kubernetes https://example.com/deploy.yaml ``` #### `update` - Обновление манифеста Обновляет ресурсы в кластере, используя манифест. ```bash make k8s manifest update kubernetes https://example.com/deploy.yaml ``` ### Примеры использования ```bash # Установка NGINX Ingress Controller make k8s manifest apply kubernetes https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml # Удаление ресурсов make k8s manifest delete kubernetes https://example.com/deploy.yaml # Обновление конфигурации make k8s manifest update kubernetes https://example.com/deploy.yaml --force ``` ## Работа с Helm Команды для установки, обновления и управления Helm чартами в кластере. ### Синтаксис ```bash make k8s helm [команда] [пресет] [релиз] [чант] ``` ### Команды #### `apply` - Установка/обновление чарта Устанавливает новый релиз или обновляет существующий. ```bash make k8s helm apply kubernetes my-nginx nginx/nginx-ingress ``` **Параметры:** - `пресет` - имя пресета кластера - `релиз` - имя релиза (например: my-nginx) - `чарт` - имя чарта (например: nginx/nginx-ingress) **Примеры:** ```bash # Установка nginx-ingress make k8s helm apply kubernetes nginx-ingress nginx/nginx-ingress # Установка с указанием репозитория make k8s helm apply kubernetes prometheus prometheus-community/prometheus ``` #### `delete` - Удаление релиза Удаляет Helm релиз из кластера. ```bash make k8s helm delete kubernetes my-nginx ``` **Примеры:** ```bash # Удаление релиза make k8s helm delete kubernetes nginx-ingress # Удаление с флагом --keep-history # (не поддерживается в текущей реализации) ``` #### `update` - Обновление релиза Обновляет существующий Helm релиз. ```bash make k8s helm update kubernetes my-nginx nginx/nginx-ingress ``` #### `rollback` - Откат релиза Откатывает релиз к предыдущей версии. ```bash make k8s helm rollback kubernetes my-nginx ``` **Примеры:** ```bash # Откат к предыдущей ревизии make k8s helm rollback kubernetes my-nginx # Откат к конкретной ревизии (не поддерживается в текущей реализации) ``` #### `list` - Список релизов Показывает список всех установленных Helm релизов. ```bash make k8s helm list kubernetes ``` **Пример вывода:** ``` NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION nginx-ingress default 1 2024-01-15 12:00:00.000000 +0000 UTC deployed nginx-ingress-0.1.0 1.0.0 ``` #### `status` - Статус релиза Показывает подробную информацию о статусе релиза. ```bash make k8s helm status kubernetes my-nginx ``` ### Примеры использования ```bash # 1. Установка NGINX Ingress Controller make k8s helm apply kubernetes nginx-ingress nginx/nginx-ingress # 2. Проверка статуса make k8s helm status kubernetes nginx-ingress # 3. Обновление релиза make k8s helm update kubernetes nginx-ingress nginx/nginx-ingress # 4. Просмотр списка релизов make k8s helm list kubernetes # 5. Откат релиза make k8s helm rollback kubernetes nginx-ingress # 6. Удаление релиза make k8s helm delete kubernetes nginx-ingress ``` ## Работа с Helm репозиториями Команды для управления Helm репозиториями. ### Синтаксис ```bash make k8s helmrepo [команда] [пресет] [имя] [URL] ``` ### Команды #### `add` - Добавление репозитория Добавляет новый Helm репозиторий. ```bash make k8s helmrepo add kubernetes stable https://charts.helm.sh/stable ``` **Примеры:** ```bash # Добавление официального репозитория Helm make k8s helmrepo add kubernetes stable https://charts.helm.sh/stable # Добавление репозитория Bitnami make k8s helmrepo add kubernetes bitnami https://charts.bitnami.com/bitnami # Добавление репозитория NGINX make k8s helmrepo add kubernetes nginx https://helm.nginx.com/stable # Добавление репозитория Prometheus make k8s helmrepo add kubernetes prometheus-community https://prometheus-community.github.io/helm-charts # Добавление пользовательского репозитория make k8s helmrepo add kubernetes my-repo https://charts.example.com ``` #### `list` - Список репозиториев Показывает список всех добавленных Helm репозиториев. ```bash make k8s helmrepo list kubernetes ``` **Пример вывода:** ``` NAME URL stable https://charts.helm.sh/stable bitnami https://charts.bitnami.com/bitnami nginx https://helm.nginx.com/stable ``` #### `delete` - Удаление репозитория Удаляет Helm репозиторий. ```bash make k8s helmrepo delete kubernetes stable ``` **Примеры:** ```bash # Удаление репозитория make k8s helmrepo delete kubernetes stable ``` #### `update` - Обновление репозиториев Обновляет информацию о всех Helm репозиториях. ```bash make k8s helmrepo update kubernetes ``` **Примеры:** ```bash # Обновление всех репозиториев make k8s helmrepo update kubernetes ``` #### `packages` - Список пакетов Показывает список пакетов в указанном репозитории. ```bash make k8s helmrepo packages kubernetes stable ``` **Примеры:** ```bash # Просмотр пакетов в репозитории stable make k8s helmrepo packages kubernetes stable # Просмотр пакетов в репозитории nginx make k8s helmrepo packages kubernetes nginx # Поиск конкретного пакета make k8s helmrepo packages kubernetes stable | grep nginx ``` ### Примеры использования ```bash # 1. Добавление нескольких репозиториев make k8s helmrepo add kubernetes stable https://charts.helm.sh/stable make k8s helmrepo add kubernetes bitnami https://charts.bitnami.com/bitnami make k8s helmrepo add kubernetes nginx https://helm.nginx.com/stable # 2. Просмотр списка репозиториев make k8s helmrepo list kubernetes # 3. Обновление репозиториев make k8s helmrepo update kubernetes # 4. Поиск пакетов в репозитории make k8s helmrepo packages kubernetes stable # 5. Удаление репозитория make k8s helmrepo delete kubernetes my-custom-repo # 6. Установка пакета из добавленного репозитория make k8s helm apply kubernetes my-nginx nginx/nginx-ingress ``` ## Полный рабочий пример ```bash # 1. Создание кластера make k8s create kubernetes # 2. Добавление Helm репозиториев make k8s helmrepo add kubernetes nginx https://helm.nginx.com/stable make k8s helmrepo add kubernetes bitnami https://charts.bitnami.com/bitnami # 3. Обновление репозиториев make k8s helmrepo update kubernetes # 4. Просмотр доступных пакетов make k8s helmrepo packages kubernetes nginx # 5. Установка NGINX Ingress Controller make k8s helm apply kubernetes nginx-ingress nginx/nginx-ingress # 6. Проверка статуса make k8s helm status kubernetes nginx-ingress # 7. Просмотр списка релизов make k8s helm list kubernetes # 8. Применение манифеста make k8s manifest apply kubernetes https://example.com/deploy.yaml # 9. Откат релиза (если нужно) make k8s helm rollback kubernetes nginx-ingress # 10. Удаление релиза make k8s helm delete kubernetes nginx-ingress # 11. Удаление репозитория make k8s helmrepo delete kubernetes nginx # 12. Удаление кластера make k8s destroy kubernetes ``` ## Обработка ошибок ### Ошибка: Контейнер не запущен ``` ❌ Контейнер k8s-kubernetes не запущен 💡 Запустите: make k8s create kubernetes ``` **Решение:** Запустите кластер перед выполнением команд. ### Ошибка: Неизвестная команда ``` ❌ Неизвестная команда: unknown 💡 Доступные команды: apply, delete, update ``` **Решение:** Используйте правильную команду из списка доступных. ### Ошибка: Не указаны параметры ``` ❌ Ошибка: Укажите имя релиза и чарт 💡 Пример: make k8s helm apply kubernetes my-release stable/nginx-ingress ``` **Решение:** Укажите все необходимые параметры команды. ## Дополнительная информация - Все команды kubectl и helm выполняются внутри контейнера `k8s-[пресет]` - Вам не нужно устанавливать kubectl или helm локально - Подключение к кластеру происходит через имя узла control-plane - Используется флаг `--insecure-skip-tls-verify` для обхода проблем с сертификатами ## Автор Сергей Антропов Сайт: https://devops.org.ru