Makefile 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. export REGISTRO=harbor.reymota.es\/reymota
  2. #export REGISTRO=registry.reymota.es
  3. export NAMESPACE = finanzas
  4. # Kubeconfig configuration
  5. KUBECONFIG_DIR ?= $(CURDIR)/.kube
  6. KUBECONFIG ?= $(KUBECONFIG_DIR)/config
  7. export KUBECONFIG
  8. VERSION_FILE = .version
  9. # Get current version or default to alpine-1
  10. IMG_VERSION := $(shell cat $(VERSION_FILE) 2>/dev/null || echo "alpine-1")
  11. # Get built version for deployment targets
  12. BUILT_VERSION := $(shell cat .current_version 2>/dev/null || echo "$(IMG_VERSION)")
  13. export IMG_VERSION
  14. help:
  15. @echo ""
  16. @echo "Comandos disponibles:"
  17. @echo ""
  18. @grep "^[[:lower:]]" Makefile | grep -v "^\." | grep "##" | awk -F':.*## ' '{printf " \033[1m%-20s\033[0m %s\n", $$1, $$2}'
  19. @echo ""
  20. @echo "Kubeconfig actual: $(KUBECONFIG) en `grep server $(KUBECONFIG) |cut -c13-`"
  21. KUBECONFIG_HOME ?= $(HOME)/.kube
  22. kubeconfig-list: ## Lista los kubeconfig disponibles en $HOME/.kube
  23. @ls -1 $(KUBECONFIG_HOME)/config* 2>/dev/null | while read f; do \
  24. echo " $$f"; \
  25. done
  26. kubeconfig-set: ## Selecciona un kubeconfig de forma interactiva
  27. @mkdir -p $(KUBECONFIG_DIR)
  28. @if [ -n "$(KUBECONFIG_SOURCE)" ]; then \
  29. if [ -f "$(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE)" ]; then \
  30. cp $(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE) $(KUBECONFIG_DIR)/config; \
  31. echo "Kubeconfig copiado de $(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE) a $(KUBECONFIG)"; \
  32. elif [ -f "$(KUBECONFIG_SOURCE)" ]; then \
  33. cp $(KUBECONFIG_SOURCE) $(KUBECONFIG_DIR)/config; \
  34. echo "Kubeconfig copiado de $(KUBECONFIG_SOURCE) a $(KUBECONFIG)"; \
  35. else \
  36. echo "Error: No se encontró el kubeconfig '$(KUBECONFIG_SOURCE)'"; \
  37. echo "Usa 'make kubeconfig-list' para ver los disponibles"; \
  38. exit 1; \
  39. fi; \
  40. else \
  41. bash -c '\
  42. configs=($$(ls -1 $(KUBECONFIG_HOME)/config* 2>/dev/null)); \
  43. if [ $${#configs[@]} -eq 0 ]; then \
  44. echo "No se encontraron kubeconfigs en $(KUBECONFIG_HOME)"; \
  45. exit 1; \
  46. fi; \
  47. echo ""; \
  48. echo "Selecciona un kubeconfig:"; \
  49. for i in "$${!configs[@]}"; do \
  50. echo " $$((i+1))) $${configs[$$i]}"; \
  51. done; \
  52. echo ""; \
  53. read -p "Introduce el número (1-$${#configs[@]}): " num; \
  54. if [[ "$$num" =~ ^[0-9]+$$ ]] && [ "$$num" -ge 1 ] && [ "$$num" -le "$${#configs[@]}" ]; then \
  55. idx=$$((num-1)); \
  56. cp "$${configs[$$idx]}" $(KUBECONFIG_DIR)/config; \
  57. echo "Kubeconfig copiado de $${configs[$$idx]} a $(KUBECONFIG)"; \
  58. else \
  59. echo "Error: Selección inválida"; \
  60. exit 1; \
  61. fi; \
  62. '; \
  63. fi
  64. # limpia todo
  65. all: imagen clean install
  66. imagen: ## Crea la imagen
  67. @echo "Building image with version: $(IMG_VERSION)"
  68. @# Store current version for other targets to use
  69. @echo "$(IMG_VERSION)" > .current_version
  70. cd ../; make
  71. @# Increment version for next build
  72. @echo "$(IMG_VERSION)" | sed 's/alpine-\([0-9]*\)/alpine-\1/' | awk -F'-' '{print "alpine-" $$2+1}' > $(VERSION_FILE)
  73. @echo "Next version will be: $$(cat $(VERSION_FILE))"
  74. ns: ## Crea el namespace
  75. -cat namespace.yaml | sed -e "s/<NS>/${NAMESPACE}/" |kubectl --kubeconfig=$(KUBECONFIG) create -f -
  76. install: ## Instala todo (meno las claims)
  77. -cat reg-secret.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  78. -cat env-prod-configmap.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  79. -cat secreto-db.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  80. -cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  81. -cat finanzas-service.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  82. clean: ## Borra todo (meno las claims)
  83. -cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  84. -cat finanzas-service.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  85. -cat secreto-db.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  86. -cat env-prod-configmap.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  87. -cat reg-secret.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  88. borraclaims: ## Borra las claims
  89. -cat pvc-finanzas.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  90. -cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  91. claims: ## Crea las claims
  92. -cat pvc-finanzas.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  93. -cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  94. app: ## Borra y vuelve a crear el deployment
  95. -cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
  96. -cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
  97. status: ## Muestra el estado del deployment
  98. kubectl --kubeconfig=$(KUBECONFIG) get deployments,pods,services -n $(NAMESPACE)
  99. db: ## Crea la base de datos en el cluster
  100. -kubectl --kubeconfig=$(KUBECONFIG) create -f finanzas-db.yaml