Introducción: Uniendo Kubernetes con Bash
- Prerrequisitos
- ¿Por qué Bash?
- Lo que vamos a construir
- El punto de entrada: setup.sh
- Iniciando datacenter.sh
- Ejercicios Prácticos
Configuración de Seguridad, Inicialización y Hooks de Ciclo de Vida
- Opciones Globales de Set
- Lint para Tus Shell Scripts: shellcheck
- Inicialización del Script
- El Controlador Principal
- Manejador de Errores
- Manejador de Salida
- Juntándolo Todo
- Ejercicios Prácticos
Códigos de Salida y Salidas Controladas
- La función script_exit
- Convenciones de Códigos de Salida
- Repaso de Patrones de Seguridad Bash
- Script Actualizado
- Ejercicios Prácticos
Modo Cron y Redirección de E/S
- Qué hace el Modo Cron
- Descriptores de Archivo
- Redirigiendo para Modo Cron
- Actualizando el Manejador de Errores
- Actualizando el Manejador de Salida
- Registrando cron_init en main
- Script Actualizado
- Ejercicios Prácticos
El Patrón de Biblioteca: Organizando un Código Base Bash
- El Directorio lib/
- Cargando Bibliotecas en main
- Escribiendo un Archivo de Biblioteca
- Convenciones de Nomenclatura
- El Grafo de Dependencias
- Dos Bibliotecas de Utilidad que Vale la Pena Conocer
- Ejercicios Prácticos
Colores de Terminal y Registro
- La Biblioteca de Registro
- Inicialización de Color
- La función log
- verbose_print — Salida en Modo Verboso
- Actualizando init
- Actualizando main
- Actualizando el Manejador de Errores
- Ejercicios Prácticos
Ayudantes de Validación y Comprobaciones de Binarios
- lib/script.sh
- check_binary — Detección de Herramientas Requeridas
- check_required_binaries — Precondiciones del Sistema
- is_kind — Detección de Modo
- check_arguments — Validación de Presencia de Variables
- check_directories — Validación de Rutas
- check_files — Validación de Presencia de Archivos
- check_repos — Guarda de Presencia de Repositorios
- build_path — Construcción de PATH
- Uso de los Ayudantes en la Cadena init
- Ejercicios Prácticos
Gestión de Configuración
- El Archivo de Configuración
- lib/config.sh
- get_configurations — Configuración Interactiva
- Leyendo la Configuración en main
- Modos de Red Docker
- Ejercicios Prácticos
Bloqueo de Script: Previniendo Ejecuciones Concurrentes
- Por qué un Directorio, No un Archivo
- lock_init
- Manejo de Bloqueos Obsoletos
- Ejercicios Prácticos
Análisis Completo de Parámetros
- parse_params
- script_usage — El Texto de Ayuda
- Conectando parse_params a main
- Ejercicios Prácticos
Modo Local y Gestión de Clúster Kind
- Por qué Kind
- lib/kind.sh
- start_env — Creando un Clúster Kind
- stop_env — Parando el Clúster
- delete_env — Destruyendo el Clúster
- Cargando Imágenes en Kind
- Sin Cambio de Entorno Docker
- Ejercicios Prácticos
Operaciones Docker
- lib/docker.sh
- safe_docker — El Wrapper Base
- safe_docker_build — Construyendo Imágenes
- safe_docker_run — Ejecutando Contenedores
- Cargando Imágenes en Kind
- Operaciones Docker Compose
- docker_cleanup — Eliminando Contenedores e Imágenes Muertos
- Ejercicios Prácticos
Kubernetes con kubectl
- lib/kubectl.sh
- safe_kubectl — El Wrapper Base
- kubectl_install_resource_from_file
- kubectl_install_database — Configuración de PostgreSQL
- kubectl_restart — Reinicio Progresivo
- Gestión DNS
- Reiniciando Todos los Deployments
- Ejercicios Prácticos
Helm: Gestión de Paquetes para Kubernetes
- lib/helm.sh
- safe_helm — El Wrapper Base
- Charts Helm en k8s/
- helm_install_service — Instalador de Servicio Genérico
- helm_install_core_service — Servicios Basados en Templates
- Instalar Releases de Configuración
- Funciones de Actualización — Upgrades In-Place
- Traefik — El Controlador Ingress
- Ejercicios Prácticos
Construyendo Servicios
- El Pipeline de Build
- lib/build.sh
- build_service — La Función de Build Principal
- Funciones de Grupo de Servicios
- build_images_init — El Despachador de Build
- lib/install_deps.sh
- check_registry
- Ejercicios Prácticos
Aprovisionamiento Desde Cero
- Arquitectura del Sistema
- La Secuencia Completa de Aprovisionamiento
- Paso a Paso
- Funciones de Soporte
- Parámetros del Clúster Kubernetes
- Referencia de Manifests Kubernetes
- Ejercicios Prácticos
- Cómo se Ve el Éxito
Operaciones de Recarga y Recuperación
- lib/reload_services.sh
- reload_services — Recarga Ligera de Servicio
- reload_services_init — El Despachador de Recarga
- lib/reload_kubernetes.sh
- reload_all_kubernetes — Reconstrucción Completa del Clúster
- Ejercicios Prácticos
Desmantelamiento y Limpieza
- Deteniendo el Entorno
- Eliminando el Entorno
- Desmontaje Completo de Kubernetes
- Limpieza Docker
- El Manejador de Salida: Versión Completa
- El Script Completo
- La Función main() Completa
- La Función init Completa
- El Ciclo de Vida Completo
- La Experiencia de Desarrollo que Construiste
- Ejercicios Prácticos
GitOps con ArgoCD
- lib/argocd.sh
- safe_argocd — El Wrapper Base
- helm_install_argocd — Instalación del Controlador
- argocd_wait_ready — Confirmación del Arranque
- argocd_login — Autenticación de la CLI
- argocd_create_app — Registro de una Aplicación
- argocd_sync — Disparo de una Sincronización
- argocd_wait_healthy — Espera a que Termine la Sincronización
- argocd_delete_app — Eliminación de una Aplicación
- Integración de ArgoCD en datacenter.sh
- Una Nota sobre OpenShift
- Ejercicios Prácticos
Métricas y Paneles con Prometheus y Grafana
- lib/monitoring.sh
- helm_install_monitoring — La Pila Completa
- monitoring_wait_ready — Confirmación del Arranque
- monitoring_port_forward — Acceso Local
- monitoring_apply_servicemonitor — Scraping de Tus Servicios
- monitoring_get_grafana_password — Recuperación de Credenciales
- Integración de la Monitorización en datacenter.sh
- Qué te Da kube-prometheus-stack
- Ejercicios Prácticos
Trazas Distribuidas con OpenTelemetry
- lib/otel.sh
- safe_otel — El Wrapper Base
- helm_install_otel_operator — Instalación del Operator
- otel_wait_ready — Confirmación de que el Operator Está en Ejecución
- otel_apply_collector — Despliegue del Collector
- otel_apply_instrumentation — Auto-Instrumentación sin Código
- otel_wait_collector_ready — Confirmación del Collector
- Grafana Tempo — El Backend de Trazas
- Integración de OTel en datacenter.sh
- Conexión de Trazas, Métricas y Logs
- Ejercicios Prácticos
Apéndice: Referencia de Comandos datacenter.sh
- setup.sh
- datacenter.sh
- Códigos de Salida
- Parámetros Encadenables vs No Encadenables
- Flujos de Trabajo Comunes
- Solución de Problemas