небольше фиксы

This commit is contained in:
Sergey Antropoff
2026-04-24 21:01:26 +03:00
parent e99f1d5dfb
commit 8aa55a694c
65 changed files with 936 additions and 469 deletions

View File

@@ -48,8 +48,10 @@ DOCKER_RUN := docker run --rm -it \
.PHONY: help setup build rebuild \
bootstrap k8s-user mdadm k3s-certs chrony \
install install-k3s install-cni install-kubevip install-nfs install-ingress \
install-cert-manager install-istio install-monitoring \
install install-full install-k3s install-cni install-kubevip \
addon-ingress-nginx addon-cert-manager addon-nfs-server addon-csi-nfs addon-nfs \
addon-istio addon-prometheus-stack addon-metrics-server \
addon-argocd addon-longhorn addon-kubernetes-dashboard \
add-node remove-node \
etcd-backup etcd-restore etcd-list-snapshots \
upgrade uninstall health verify ping \
@@ -216,10 +218,17 @@ k3s-certs: _check_env _check_image ## Установить systemd таймер
$(DOCKER_RUN) ansible-playbook playbooks/k3s-certs.yml \
$(if $(NODE),--limit $(NODE),)
install: _check_env _check_image ## Развернуть полный стек (K3S + kube-vip + NFS + ingress)
@printf "$(CYAN)$(BOLD)Разворачиваю полный K3S стек...$(NC)\n"
install: _check_env _check_image ## Развернуть core кластер (K3S + kube-vip + сертификаты)
@printf "$(CYAN)$(BOLD)Разворачиваю K3S core кластер...$(NC)\n"
$(DOCKER_RUN) install
install-full: _check_env _check_image ## Полный стек: core + NFS + ingress-nginx (install + addon-nfs + addon-ingress-nginx)
@printf "$(CYAN)$(BOLD)Полный стек: core + NFS + ingress-nginx...$(NC)\n"
$(DOCKER_RUN) install
$(DOCKER_RUN) addon nfs-server
$(DOCKER_RUN) addon csi-nfs
$(DOCKER_RUN) addon ingress-nginx
install-k3s: _check_env _check_image ## Установить только K3S кластер
@printf "$(CYAN)Устанавливаю K3S...$(NC)\n"
$(DOCKER_RUN) install-k3s
@@ -232,25 +241,72 @@ install-kubevip: _check_env _check_image ## Установить только ku
@printf "$(CYAN)Устанавливаю kube-vip...$(NC)\n"
$(DOCKER_RUN) install-kubevip
install-nfs: _check_env _check_image ## Установить NFS сервер + CSI Driver
@printf "$(CYAN)Устанавливаю NFS + CSI...$(NC)\n"
$(DOCKER_RUN) install-nfs
# ═══════════════════════════════════════════════════════════════════════════════
# АДДОНЫ — дополнительные компоненты кластера (addons/<name>/playbook.yml)
# Кастомизация: make addon-<name> ARGS="-e var=value"
# Добавить новый аддон: создай addons/<name>/playbook.yml + addons/<name>/role/
# ═══════════════════════════════════════════════════════════════════════════════
install-ingress: _check_env _check_image ## Установить ingress-nginx
# ── Сетевые и хранилище ───────────────────────────────────────────────────────
addon-nfs-server: _check_env _check_image ## Установить NFS сервер (запускается на группе nfs_server)
@printf "$(CYAN)Устанавливаю NFS сервер...$(NC)\n"
$(DOCKER_RUN) addon nfs-server $(ARGS)
addon-csi-nfs: _check_env _check_image ## Установить CSI NFS Driver + StorageClass
@printf "$(CYAN)Устанавливаю CSI NFS Driver...$(NC)\n"
$(DOCKER_RUN) addon csi-nfs $(ARGS)
addon-nfs: _check_env _check_image ## Установить NFS сервер + CSI Driver (комплект)
@printf "$(CYAN)$(BOLD)Устанавливаю NFS сервер + CSI Driver...$(NC)\n"
$(DOCKER_RUN) addon nfs-server $(ARGS)
$(DOCKER_RUN) addon csi-nfs $(ARGS)
addon-ingress-nginx: _check_env _check_image ## Установить ingress-nginx — Ingress controller
@printf "$(CYAN)Устанавливаю ingress-nginx...$(NC)\n"
$(DOCKER_RUN) install-ingress
$(DOCKER_RUN) addon ingress-nginx $(ARGS)
install-cert-manager: _check_env _check_image ## Установить cert-manager + ClusterIssuer
# ── TLS и безопасность ────────────────────────────────────────────────────────
addon-cert-manager: _check_env _check_image ## Установить cert-manager — TLS сертификаты (Let's Encrypt / self-signed)
@printf "$(CYAN)Устанавливаю cert-manager...$(NC)\n"
$(DOCKER_RUN) ansible-playbook playbooks/site.yml --tags cert_manager -e cert_manager_enabled=true
$(DOCKER_RUN) addon cert-manager $(ARGS)
install-istio: _check_env _check_image ## Установить Istio + Kiali (нужен istio_enabled: true в vars)
@printf "$(CYAN)Устанавливаю Istio + Kiali...$(NC)\n"
$(DOCKER_RUN) ansible-playbook playbooks/site.yml --tags istio -e istio_enabled=true
install-monitoring: _check_env _check_image ## Установить Prometheus + Grafana (нужен prometheus_stack_enabled: true)
# ── Мониторинг ────────────────────────────────────────────────────────────────
addon-prometheus-stack: _check_env _check_image ## Установить Prometheus + Grafana + Alertmanager
@printf "$(CYAN)Устанавливаю kube-prometheus-stack...$(NC)\n"
$(DOCKER_RUN) ansible-playbook playbooks/site.yml --tags monitoring -e prometheus_stack_enabled=true
$(DOCKER_RUN) addon prometheus-stack $(ARGS)
addon-metrics-server: _check_env _check_image ## Установить metrics-server (kubectl top nodes/pods, HPA)
@printf "$(CYAN)Устанавливаю metrics-server...$(NC)\n"
$(DOCKER_RUN) addon metrics-server $(ARGS)
# ── Service Mesh ──────────────────────────────────────────────────────────────
addon-istio: _check_env _check_image ## Установить Istio + Kiali (ARGS="-e kiali_enabled=true" для Kiali)
@printf "$(CYAN)Устанавливаю Istio...$(NC)\n"
$(DOCKER_RUN) addon istio $(ARGS)
# ── GitOps и прочее ───────────────────────────────────────────────────────────
addon-argocd: _check_env _check_image ## Установить ArgoCD — GitOps CD (ARGS="-e argocd_ingress_enabled=true -e argocd_ingress_host=argocd.example.com")
@printf "$(CYAN)Устанавливаю ArgoCD...$(NC)\n"
$(DOCKER_RUN) addon argocd $(ARGS)
addon-longhorn: _check_env _check_image ## Установить Longhorn — distributed block storage (ARGS="-e longhorn_default_replica_count=1" для single-node)
@printf "$(CYAN)Устанавливаю Longhorn...$(NC)\n"
$(DOCKER_RUN) addon longhorn $(ARGS)
addon-kubernetes-dashboard: _check_env _check_image ## Установить Kubernetes Dashboard — веб UI кластера
@printf "$(CYAN)Устанавливаю Kubernetes Dashboard...$(NC)\n"
$(DOCKER_RUN) addon kubernetes-dashboard $(ARGS)
# Generic цель — любой аддон из addons/<name>/playbook.yml
addon-%: _check_env _check_image
@if [ ! -f "addons/$*/playbook.yml" ]; then \
printf "$(RED)✗ Аддон '$*' не найден. Ожидается: addons/$*/playbook.yml$(NC)\n"; \
printf "$(YELLOW) Доступные аддоны:$(NC) "; \
ls addons/ 2>/dev/null | tr '\n' ' '; echo ""; \
exit 1; \
fi
@printf "$(CYAN)Устанавливаю аддон $*...$(NC)\n"
$(DOCKER_RUN) addon $* $(ARGS)
# ═══════════════════════════════════════════════════════════════════════════════
# МАСШТАБИРОВАНИЕ КЛАСТЕРА