#!/usr/bin/env python3 """ Скрипт для создания Minikube кластера с драйвером Podman. Автор: Сергей Антропов Сайт: https://devops.org.ru """ import sys import yaml import subprocess def run_cmd(cmd, check=True): """Выполнить команду на хосте.""" print(f"[run] {cmd}") result = subprocess.run(cmd, shell=True, capture_output=True, text=True) if check and result.returncode != 0: print(f"[error] {result.stderr}") sys.exit(1) if result.stdout: print(result.stdout) return result def main(): if len(sys.argv) < 2: print("Usage: create_minikube_cluster.py ") print(" Создаёт Minikube кластер с драйвером podman и опционально включает аддоны из пресета.") sys.exit(1) preset_file = sys.argv[1] print(f"📋 Читаю пресет: {preset_file}") with open(preset_file, "r", encoding="utf-8") as f: preset = yaml.safe_load(f) or {} profile = preset.get("minikube_profile", "minikube") addons = preset.get("minikube_addons", []) cpus = preset.get("minikube_cpus", "2") memory = preset.get("minikube_memory", "4096") print(f"\n☸️ Создание Minikube кластера (драйвер: podman)") print(f" Профиль: {profile}") print(f" CPU: {cpus}, Memory: {memory}") # Проверяем, запущен ли уже кластер result = subprocess.run( f"minikube profile list 2>/dev/null | grep -E '^{profile}' | grep 'Running'", shell=True, capture_output=True, text=True, ) if result.returncode == 0 and result.stdout.strip(): print(f"⚠️ Кластер с профилем '{profile}' уже запущен.") print(" Для пересоздания выполните: minikube delete -p " + profile) else: run_cmd( f"minikube start --driver=podman --profile={profile} --cpus={cpus} --memory={memory}" ) print(f"✅ Minikube кластер '{profile}' создан и запущен.") # Включаем аддоны из пресета if addons: print(f"\n📦 Включение аддонов: {', '.join(addons)}") for addon in addons: run_cmd(f"minikube addons enable {addon} -p {profile}", check=False) print("\n🎉 Готово. Использование:") print(f" kubectl config use-context {profile}") print(" minikube kubectl -- get nodes") print(" minikube dashboard -p " + profile) if __name__ == "__main__": main()