feat: добавить команды для работы с манифестами, Helm и Helm репозиториями
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled

- Добавлены команды make k8s manifest для работы с манифестами YAML
- Добавлены команды make k8s helm для управления Helm чартами
- Добавлены команды make k8s helmrepo для управления Helm репозиториями
- Создана подробная документация docs/kubernetes-commands.md
- Обновлена справка в Makefile

Поддерживаемые операции:
- manifest: apply, delete, update
- helm: apply, delete, update, rollback, list, status
- helmrepo: add, list, delete, update, packages
This commit is contained in:
Сергей Антропов
2025-10-26 03:33:47 +03:00
parent 881502ad69
commit 714ca43d38
2 changed files with 559 additions and 0 deletions

164
Makefile
View File

@@ -1197,6 +1197,158 @@ k8s:
echo "❌ Контейнер $$CONTAINER_NAME не запущен"; \
echo "💡 Запустите: make k8s create $$PRESET_ARG"; \
fi;; \
manifest) \
echo "📄 Работа с манифестами..."; \
MANIFEST_CMD="$(word 3, $(MAKECMDGOALS))"; \
PRESET_ARG="$(word 4, $(MAKECMDGOALS))"; \
MANIFEST_ARG="$(word 5, $(MAKECMDGOALS))"; \
if [ -z "$$MANIFEST_CMD" ] || [ -z "$$PRESET_ARG" ] || [ -z "$$MANIFEST_ARG" ]; then \
echo "❌ Ошибка: Укажите команду, пресет и путь к манифесту"; \
echo "💡 Пример: make k8s manifest apply kubernetes https://example.com/manifest.yaml"; \
exit 1; \
fi; \
CONTAINER_NAME=k8s-$$PRESET_ARG; \
if ! docker ps | grep -q $$CONTAINER_NAME; then \
echo "❌ Контейнер $$CONTAINER_NAME не запущен"; \
echo "💡 Запустите: make k8s create $$PRESET_ARG"; \
exit 1; \
fi; \
CLUSTER_NAME=$$(docker exec $$CONTAINER_NAME kind get clusters | head -1); \
case "$$MANIFEST_CMD" in \
apply) \
echo "📥 Применение манифеста: $$MANIFEST_ARG"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; kubectl --server=https://\$${CLUSTER_NAME}-control-plane:6443 --insecure-skip-tls-verify apply -f $$MANIFEST_ARG";; \
delete) \
echo "🗑️ Удаление ресурсов из манифеста: $$MANIFEST_ARG"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; kubectl --server=https://\$${CLUSTER_NAME}-control-plane:6443 --insecure-skip-tls-verify delete -f $$MANIFEST_ARG";; \
update) \
echo "🔄 Обновление манифеста: $$MANIFEST_ARG"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; kubectl --server=https://\$${CLUSTER_NAME}-control-plane:6443 --insecure-skip-tls-verify apply -f $$MANIFEST_ARG --force";; \
*) \
echo "❌ Неизвестная команда: $$MANIFEST_CMD"; \
echo "💡 Доступные команды: apply, delete, update"; \
exit 1;; \
esac;; \
helm) \
echo "📦 Работа с Helm..."; \
HELM_CMD="$(word 3, $(MAKECMDGOALS))"; \
PRESET_ARG="$(word 4, $(MAKECMDGOALS))"; \
RELEASE_ARG="$(word 5, $(MAKECMDGOALS))"; \
CHART_ARG="$(word 6, $(MAKECMDGOALS))"; \
if [ -z "$$HELM_CMD" ] || [ -z "$$PRESET_ARG" ]; then \
echo "❌ Ошибка: Укажите команду и пресет"; \
echo "💡 Пример: make k8s helm list kubernetes"; \
exit 1; \
fi; \
CONTAINER_NAME=k8s-$$PRESET_ARG; \
if ! docker ps | grep -q $$CONTAINER_NAME; then \
echo "❌ Контейнер $$CONTAINER_NAME не запущен"; \
echo "💡 Запустите: make k8s create $$PRESET_ARG"; \
exit 1; \
fi; \
CLUSTER_NAME=$$(docker exec $$CONTAINER_NAME kind get clusters | head -1); \
case "$$HELM_CMD" in \
apply) \
if [ -z "$$RELEASE_ARG" ] || [ -z "$$CHART_ARG" ]; then \
echo "❌ Ошибка: Укажите имя релиза и чарт"; \
echo "💡 Пример: make k8s helm apply kubernetes my-release stable/nginx-ingress"; \
exit 1; \
fi; \
echo "📦 Установка Helm чарта: $$CHART_ARG как $$RELEASE_ARG"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; helm upgrade --install $$RELEASE_ARG $$CHART_ARG --kube-apiserver=https://\$${CLUSTER_NAME}-control-plane:6443 --kube-token=dummy --kube-context=dummy 2>&1 | grep -v '^WARNING' || true";; \
delete) \
if [ -z "$$RELEASE_ARG" ]; then \
echo "❌ Ошибка: Укажите имя релиза"; \
echo "💡 Пример: make k8s helm delete kubernetes my-release"; \
exit 1; \
fi; \
echo "🗑️ Удаление Helm релиза: $$RELEASE_ARG"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; helm uninstall $$RELEASE_ARG --kube-apiserver=https://\$${CLUSTER_NAME}-control-plane:6443 --kube-token=dummy --kube-context=dummy 2>&1 | grep -v '^WARNING' || true";; \
update) \
if [ -z "$$RELEASE_ARG" ] || [ -z "$$CHART_ARG" ]; then \
echo "❌ Ошибка: Укажите имя релиза и чарт"; \
echo "💡 Пример: make k8s helm update kubernetes my-release stable/nginx-ingress"; \
exit 1; \
fi; \
echo "🔄 Обновление Helm релиза: $$RELEASE_ARG"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; helm upgrade $$RELEASE_ARG $$CHART_ARG --kube-apiserver=https://\$${CLUSTER_NAME}-control-plane:6443 --kube-token=dummy --kube-context=dummy 2>&1 | grep -v '^WARNING' || true";; \
rollback) \
if [ -z "$$RELEASE_ARG" ]; then \
echo "❌ Ошибка: Укажите имя релиза"; \
echo "💡 Пример: make k8s helm rollback kubernetes my-release"; \
exit 1; \
fi; \
echo "⏪ Откат Helm релиза: $$RELEASE_ARG"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; helm rollback $$RELEASE_ARG --kube-apiserver=https://\$${CLUSTER_NAME}-control-plane:6443 --kube-token=dummy --kube-context=dummy 2>&1 | grep -v '^WARNING' || true";; \
list) \
echo "📋 Список Helm релизов:"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; helm list --kube-apiserver=https://\$${CLUSTER_NAME}-control-plane:6443 --kube-token=dummy --kube-context=dummy --all-namespaces 2>&1 | grep -v '^WARNING' || true";; \
status) \
if [ -z "$$RELEASE_ARG" ]; then \
echo "❌ Ошибка: Укажите имя релиза"; \
echo "💡 Пример: make k8s helm status kubernetes my-release"; \
exit 1; \
fi; \
echo "📊 Статус Helm релиза: $$RELEASE_ARG"; \
docker exec $$CONTAINER_NAME bash -c "CLUSTER_NAME=$$CLUSTER_NAME; helm status $$RELEASE_ARG --kube-apiserver=https://\$${CLUSTER_NAME}-control-plane:6443 --kube-token=dummy --kube-context=dummy 2>&1 | grep -v '^WARNING' || true";; \
*) \
echo "❌ Неизвестная команда: $$HELM_CMD"; \
echo "💡 Доступные команды: apply, delete, update, rollback, list, status"; \
exit 1;; \
esac;; \
helmrepo) \
echo "🏪 Работа с Helm репозиториями..."; \
REPO_CMD="$(word 3, $(MAKECMDGOALS))"; \
PRESET_ARG="$(word 4, $(MAKECMDGOALS))"; \
NAME_ARG="$(word 5, $(MAKECMDGOALS))"; \
URL_ARG="$(word 6, $(MAKECMDGOALS))"; \
if [ -z "$$REPO_CMD" ] || [ -z "$$PRESET_ARG" ]; then \
echo "❌ Ошибка: Укажите команду и пресет"; \
echo "💡 Пример: make k8s helmrepo list kubernetes"; \
exit 1; \
fi; \
CONTAINER_NAME=k8s-$$PRESET_ARG; \
if ! docker ps | grep -q $$CONTAINER_NAME; then \
echo "❌ Контейнер $$CONTAINER_NAME не запущен"; \
echo "💡 Запустите: make k8s create $$PRESET_ARG"; \
exit 1; \
fi; \
case "$$REPO_CMD" in \
add) \
if [ -z "$$NAME_ARG" ] || [ -z "$$URL_ARG" ]; then \
echo "❌ Ошибка: Укажите имя и URL репозитория"; \
echo "💡 Пример: make k8s helmrepo add kubernetes stable https://charts.helm.sh/stable"; \
exit 1; \
fi; \
echo " Добавление Helm репозитория: $$NAME_ARG"; \
docker exec $$CONTAINER_NAME bash -c "helm repo add $$NAME_ARG $$URL_ARG 2>&1 | grep -v '^WARNING' || true; helm repo update";; \
list) \
echo "📋 Список Helm репозиториев:"; \
docker exec $$CONTAINER_NAME bash -c "helm repo list 2>&1 | grep -v '^WARNING' || true";; \
delete) \
if [ -z "$$NAME_ARG" ]; then \
echo "❌ Ошибка: Укажите имя репозитория"; \
echo "💡 Пример: make k8s helmrepo delete kubernetes stable"; \
exit 1; \
fi; \
echo "🗑️ Удаление Helm репозитория: $$NAME_ARG"; \
docker exec $$CONTAINER_NAME bash -c "helm repo remove $$NAME_ARG 2>&1 | grep -v '^WARNING' || true";; \
update) \
echo "🔄 Обновление Helm репозиториев"; \
docker exec $$CONTAINER_NAME bash -c "helm repo update 2>&1 | grep -v '^WARNING' || true";; \
packages) \
if [ -z "$$NAME_ARG" ]; then \
echo "❌ Ошибка: Укажите имя репозитория"; \
echo "💡 Пример: make k8s helmrepo packages kubernetes stable"; \
exit 1; \
fi; \
echo "📦 Пакеты в репозитории: $$NAME_ARG"; \
docker exec $$CONTAINER_NAME bash -c "helm search repo $$NAME_ARG 2>&1 | grep -v '^WARNING' || true";; \
*) \
echo "❌ Неизвестная команда: $$REPO_CMD"; \
echo "💡 Доступные команды: add, list, delete, update, packages"; \
exit 1;; \
esac;; \
*) \
echo "☸️ Доступные команды:"; \
echo ""; \
@@ -1234,6 +1386,18 @@ k8s:
echo " 💡 Для: ручного управления kubectl/kind"; \
echo " 💡 Пример: make k8s shell kubernetes"; \
echo ""; \
echo " make k8s manifest [cmd] [preset] [url] - работа с манифестами"; \
echo " 💡 Команды: apply, delete, update"; \
echo " 💡 Пример: make k8s manifest apply kubernetes https://example.com/deploy.yaml"; \
echo ""; \
echo " make k8s helm [cmd] [preset] [release] [chart] - работа с Helm"; \
echo " 💡 Команды: apply, delete, update, rollback, list, status"; \
echo " 💡 Пример: make k8s helm apply kubernetes nginx stable/nginx-ingress"; \
echo ""; \
echo " make k8s helmrepo [cmd] [preset] [name] [url] - работа с Helm репозиториями"; \
echo " 💡 Команды: add, list, delete, update, packages"; \
echo " 💡 Пример: make k8s helmrepo add kubernetes stable https://charts.helm.sh/stable"; \
echo ""; \
echo "💡 Примеры:"; \
echo " make k8s create # создать минимальный кластер"; \
echo " make k8s create kubernetes # создать кластер с аддонами"; \