Pārlūkot izejas kodu

El Makefile puede elegir el kubeconfig

Tino 3 mēneši atpakaļ
vecāks
revīzija
192620785a
2 mainītis faili ar 92 papildinājumiem un 20 dzēšanām
  1. 18 0
      K8S/.kube/config
  2. 74 20
      K8S/Makefile

+ 18 - 0
K8S/.kube/config

@@ -0,0 +1,18 @@
+apiVersion: v1
+clusters:
+- cluster:
+    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlakNDQVIrZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWtNU0l3SUFZRFZRUUREQmx5YTJVeUxYTmwKY25abGNpMWpZVUF4TnpjeU5UUXpOemN4TUI0WERUSTJNRE13TXpFek1UWXhNVm9YRFRNMk1ESXlPVEV6TVRZeApNVm93SkRFaU1DQUdBMVVFQXd3WmNtdGxNaTF6WlhKMlpYSXRZMkZBTVRjM01qVTBNemMzTVRCWk1CTUdCeXFHClNNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJQRjZNZ0pYUWV2bnk0QzdZNnp6MlBQcVJpd1lxbGNIb01kUGVsaFEKUDAvSFd2UlhQdWx3b0VPcFc3WmxsU1ZCTEViWEltNjhMVlY2dFNNWnkwbEZTNmVqUWpCQU1BNEdBMVVkRHdFQgovd1FFQXdJQ3BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCVDlPaDF4NTFNcCtQSmV1Ym1lCmc0Q0JqZDBmL0RBS0JnZ3Foa2pPUFFRREFnTkpBREJHQWlFQXVJZDRYMmV1UkszYjBycEh3WGRqMmJycE5xdmsKZ3lhK2o4SkVyMTlKM2lvQ0lRQ3R4Q3puZnFjWmNiRDVNOFd2bHVuRUFUL3FNYnJDMnN4cFpYN0FkaUtwUkE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
+    server: https://127.0.0.1:6443
+  name: default
+contexts:
+- context:
+    cluster: default
+    user: default
+  name: default
+current-context: default
+kind: Config
+users:
+- name: default
+  user:
+    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrakNDQVRpZ0F3SUJBZ0lJZlhIb3h6ZXRUajB3Q2dZSUtvWkl6ajBFQXdJd0pERWlNQ0FHQTFVRUF3d1oKY210bE1pMWpiR2xsYm5RdFkyRkFNVGMzTWpVME16YzNNVEFlRncweU5qQXpNRE14TXpFMk1URmFGdzB5TnpBegpNRE14TXpFMk1URmFNREF4RnpBVkJnTlZCQW9URG5ONWMzUmxiVHB0WVhOMFpYSnpNUlV3RXdZRFZRUURFd3h6CmVYTjBaVzA2WVdSdGFXNHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVltUTNFZmtjWkdiTWYKSzNxVktRbFo1eVBGSnJ0TjNzelhuYnI2L3VhbWcxWDVuNUVtSmRMSTBNRjFzOU1CVGtpNFNldVN3ai9zb3c5QgpzRmVIMXFDYm8wZ3dSakFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3Ckh3WURWUjBqQkJnd0ZvQVVlblRDcmpsSE5MQXlIUFEwYWM2SWs1RXFhMzB3Q2dZSUtvWkl6ajBFQXdJRFNBQXcKUlFJaEFMNGh4VEFrazM0QnBLZWVBMjJBYUZrai94dUpLNUNmTFprRnEyeEVJYVd6QWlBRUpIb0E5UlpvSjFuSQpsV0dsbGgxcGczRE02SzFlcHZlY1BnNDZib3FrL0E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlCZVRDQ0FSK2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakFrTVNJd0lBWURWUVFEREJseWEyVXlMV05zCmFXVnVkQzFqWVVBeE56Y3lOVFF6TnpjeE1CNFhEVEkyTURNd016RXpNVFl4TVZvWERUTTJNREl5T1RFek1UWXgKTVZvd0pERWlNQ0FHQTFVRUF3d1pjbXRsTWkxamJHbGxiblF0WTJGQU1UYzNNalUwTXpjM01UQlpNQk1HQnlxRwpTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCS205OEUxMWNLSjZEOGM4T3dwcU5hTkhtaEpMOEZKbThiUUhFQzRJCm5UdzY2aHp0NXJWZEEwaFpUL2NObk8xSHpuOWVNbGJrQmZQYUhwL1VITStOUGRlalFqQkFNQTRHQTFVZER3RUIKL3dRRUF3SUNwREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlI2ZE1LdU9VYzBzREljOURScAp6b2lUa1NwcmZUQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUE5c2Fud0d4b3ZreWppT1ZMMEZJUWJ3VUtPRk1HCkxvMHRHUU1FeDNWZVJ5VUNJRnJkdUMrSmZLSmlPdlBpQXhhNS9vaFFXU21rZ0tsY2pQd2dsVW15c3hOUgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
+    client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUQ0RHlXTmZsZzBXOWhPc25VVlZUeTR5NHpaa09kdWpaZ3F2UVhoMk5nWExvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFR0prTnhINUhHUm16SHl0NmxTa0pXZWNqeFNhN1RkN00xNTI2K3Y3bXBvTlYrWitSSmlYUwp5TkRCZGJQVEFVNUl1RW5ya3NJLzdLTVBRYkJYaDlhZ213PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=

+ 74 - 20
K8S/Makefile

@@ -1,6 +1,10 @@
 export REGISTRO=harbor.reymota.es\/reymota
 #export REGISTRO=registry.reymota.es
 export NAMESPACE = finanzas
+# Kubeconfig configuration
+KUBECONFIG_DIR ?= $(CURDIR)/.kube
+KUBECONFIG ?= $(KUBECONFIG_DIR)/config
+export KUBECONFIG
 VERSION_FILE = .version
 
 # Get current version or default to alpine-1
@@ -15,6 +19,53 @@ help:
 	@echo ""
 	@grep "^[[:lower:]]" Makefile | grep -v "^\." | grep "##" | awk -F':.*## ' '{printf "  \033[1m%-20s\033[0m %s\n", $$1, $$2}'
 	@echo ""
+	@echo "Kubeconfig actual: $(KUBECONFIG) en `grep server $(KUBECONFIG) |cut -c13-`"
+
+KUBECONFIG_HOME ?= $(HOME)/.kube
+
+kubeconfig-list: ## Lista los kubeconfig disponibles en $HOME/.kube
+	@ls -1 $(KUBECONFIG_HOME)/config* 2>/dev/null | while read f; do \
+		echo "   $$f"; \
+	done
+
+kubeconfig-set: ## Selecciona un kubeconfig de forma interactiva
+	@mkdir -p $(KUBECONFIG_DIR)
+	@if [ -n "$(KUBECONFIG_SOURCE)" ]; then \
+		if [ -f "$(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE)" ]; then \
+			cp $(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE) $(KUBECONFIG_DIR)/config; \
+			echo "Kubeconfig copiado de $(KUBECONFIG_HOME)/$(KUBECONFIG_SOURCE) a $(KUBECONFIG)"; \
+		elif [ -f "$(KUBECONFIG_SOURCE)" ]; then \
+			cp $(KUBECONFIG_SOURCE) $(KUBECONFIG_DIR)/config; \
+			echo "Kubeconfig copiado de $(KUBECONFIG_SOURCE) a $(KUBECONFIG)"; \
+		else \
+			echo "Error: No se encontró el kubeconfig '$(KUBECONFIG_SOURCE)'"; \
+			echo "Usa 'make kubeconfig-list' para ver los disponibles"; \
+			exit 1; \
+		fi; \
+	else \
+		bash -c '\
+			configs=($$(ls -1 $(KUBECONFIG_HOME)/config* 2>/dev/null)); \
+			if [ $${#configs[@]} -eq 0 ]; then \
+				echo "No se encontraron kubeconfigs en $(KUBECONFIG_HOME)"; \
+				exit 1; \
+			fi; \
+			echo ""; \
+			echo "Selecciona un kubeconfig:"; \
+			for i in "$${!configs[@]}"; do \
+				echo "  $$((i+1))) $${configs[$$i]}"; \
+			done; \
+			echo ""; \
+			read -p "Introduce el número (1-$${#configs[@]}): " num; \
+			if [[ "$$num" =~ ^[0-9]+$$ ]] && [ "$$num" -ge 1 ] && [ "$$num" -le "$${#configs[@]}" ]; then \
+				idx=$$((num-1)); \
+				cp "$${configs[$$idx]}" $(KUBECONFIG_DIR)/config; \
+				echo "Kubeconfig copiado de $${configs[$$idx]} a $(KUBECONFIG)"; \
+			else \
+				echo "Error: Selección inválida"; \
+				exit 1; \
+			fi; \
+		'; \
+	fi
 
 # limpia todo
 all: imagen clean install
@@ -29,40 +80,43 @@ imagen: ## Crea la imagen
 	@echo "Next version will be: $$(cat $(VERSION_FILE))"
 
 ns: ## Crea el namespace
-	-cat namespace.yaml | sed -e "s/<NS>/${NAMESPACE}/" |kubectl create -f -
+	-cat namespace.yaml | sed -e "s/<NS>/${NAMESPACE}/" |kubectl --kubeconfig=$(KUBECONFIG) create -f -
 
 install: ## Instala todo (meno las claims)
-	-cat reg-secret.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
-	-cat env-prod-configmap.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
-	-cat secreto-db.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
+	-cat reg-secret.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
+	-cat env-prod-configmap.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
+	-cat secreto-db.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
 
-	-cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl create -f -
-	-cat finanzas-service.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
-	-cat finanzas-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
+	-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 -
+	-cat finanzas-service.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
+	-cat finanzas-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
 
 clean: ## Borra todo (meno las claims)
 
-	-cat finanzas-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
+	-cat finanzas-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
 
-	-cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl delete -f -
+	-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 -
 
-	-cat finanzas-service.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
+	-cat finanzas-service.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
 
-	-cat secreto-db.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
-	-cat env-prod-configmap.yaml  | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
-	-cat reg-secret.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
+	-cat secreto-db.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
+	-cat env-prod-configmap.yaml  | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
+	-cat reg-secret.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
 
 borraclaims: ## Borra las claims
-	-cat pvc-finanzas.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
-	-cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
+	-cat pvc-finanzas.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
+	-cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) delete -f -
 
 claims: ## Crea las claims
-	-cat pvc-finanzas.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
-	-cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
+	-cat pvc-finanzas.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
+	-cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl --kubeconfig=$(KUBECONFIG) create -f -
 
 app: ## Borra y vuelve a crear el deployment
-	-cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl delete -f -
-	-cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${BUILT_VERSION}/" | sed -e "s/<REGISTRO>/${REGISTRO}/" | kubectl create -f -
+	-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 -
+	-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 -
+
+status: ## Muestra el estado del deployment
+	kubectl --kubeconfig=$(KUBECONFIG) get deployments,pods,services,ingress -n $(NAMESPACE)
 
 db: ## Crea la base de datos en el cluster
-	-kubectl create -f finanzas-db.yaml
+	-kubectl --kubeconfig=$(KUBECONFIG) create -f finanzas-db.yaml