Makefile 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. export REGISTRO=harbor.reymota.es\/jugaralpadel
  2. export NAMESPACE = jugaralpadel
  3. VERSION_FILE = .version
  4. # Kubeconfig configuration
  5. KUBECONFIG_DIR ?= $(CURDIR)/.kube
  6. KUBECONFIG ?= $(KUBECONFIG_DIR)/config
  7. export KUBECONFIG
  8. # Get current version or default to alpine-1
  9. IMG_VERSION := $(shell cat $(VERSION_FILE) 2>/dev/null || echo "alpine-1")
  10. # Get built version for deployment targets
  11. BUILT_VERSION := $(shell cat .current_version 2>/dev/null || echo "$(IMG_VERSION)")
  12. export IMG_VERSION
  13. help:
  14. @echo ""
  15. @echo "Comandos disponibles:"
  16. @echo ""
  17. @grep "^[[:lower:]]" Makefile | grep -v "^\." | grep "##" | awk -F':.*## ' '{printf " \033[1m%-20s\033[0m %s\n", $$1, $$2}'
  18. @echo ""
  19. @echo "Kubeconfig actual: $(KUBECONFIG)"
  20. KUBECONFIG_HOME ?= $(HOME)/.kube
  21. kubeconfig-list: ## Lista los kubeconfig disponibles en $HOME/.kube
  22. @ls -1 $(KUBECONFIG_HOME)/config* 2>/dev/null | while read f; do \
  23. echo " $$f"; \
  24. done
  25. kubeconfig-set: ## Copia el kubeconfig al directorio local .kube (uso: make kubeconfig-set KUBECONFIG_SOURCE=config-main)
  26. @mkdir -p $(KUBECONFIG_DIR)
  27. @if [ -f "$(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE)" ]; then \
  28. cp $(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE) $(KUBECONFIG_DIR)/config; \
  29. echo "Kubeconfig copiado de $(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE) a $(KUBECONFIG)"; \
  30. elif [ -f "$(KUBECONFIG_SOURCE)" ]; then \
  31. cp $(KUBECONFIG_SOURCE) $(KUBECONFIG_DIR)/config; \
  32. echo "Kubeconfig copiado de $(KUBECONFIG_SOURCE) a $(KUBECONFIG)"; \
  33. else \
  34. echo "Error: No se encontró el kubeconfig '$(KUBECONFIG_SOURCE)'"; \
  35. echo "Usa 'make kubeconfig-list' para ver los disponibles"; \
  36. exit 1; \
  37. fi
  38. all: imagen clean install ## Crea todo (excepto las claims)
  39. imagen: ## Crea la imagen
  40. @echo "Building image with version: $(IMG_VERSION)"
  41. @# Store current version for other targets to use
  42. @echo "$(IMG_VERSION)" > .current_version
  43. cd ../; make
  44. @# Increment version for next build
  45. @echo "$(IMG_VERSION)" | sed 's/alpine-\([0-9]*\)/alpine-\1/' | awk -F'-' '{print "alpine-" $$2+1}' > $(VERSION_FILE)
  46. @echo "Next version will be: $$(cat $(VERSION_FILE))"
  47. ns: ## Crea el namespace
  48. -cat namespace.yaml | sed -e "s/<NS>/${NAMESPACE}/" |kubectl --kubeconfig=$(KUBECONFIG) create -f -
  49. install: ## Instala todo (excepto las claims)
  50. -cat reg-secret.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  51. -cat env-prod-configmap.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  52. -cat jugaralpadel-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  53. -cat jugaralpadel-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  54. clean: ## Borra todo (excepto las claims)
  55. -cat jugaralpadel-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  56. -cat jugaralpadel-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  57. -cat env-prod-configmap.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  58. -cat reg-secret.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  59. service: ## Crea el servicio con NodePort
  60. -cat jugaralpadel-service.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  61. servicelb: ## Crea el servicio con LoadBalancer
  62. -cat jugaralpadel-service-lb.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  63. borraclaims: ## Borra las claims
  64. -cat pvc-jugaralpadel.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  65. -cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  66. claims: ## Crea las claims
  67. -cat pvc-jugaralpadel.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  68. -cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  69. app: ## Despliega la app
  70. -cat jugaralpadel-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  71. -cat jugaralpadel-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  72. db: ## Crea la base de datos en el cluster
  73. -kubectl --kubeconfig=$(KUBECONFIG) create -f jugaralpadel-db.yaml