Introducción a Kubernetes
¿Qué es Kubernetes y por qué es importante?
Configura un clúster local con Minikube o Kind
Arquitectura de Kubernetes: nodos, pods, servicios y componentes clave
Introducción a la API de Kubernetes y kubectl
Diferencias entre enfoques declarativos e imperativos
Quiz: Introducción a Kubernetes
Objetos y Recursos de Kubernetes
Pods, ReplicaSets y Deployments
Servicios e Ingress: Exposición de aplicaciones
ConfigMaps y Secrets: Gestión de configuraciones y datos sensibles
Quiz: Objetos y Recursos de Kubernetes
Redes y Almacenamiento en Kubernetes
Modelo de red de Kubernetes: Comunicación entre pods y servicios
Tipos de servicios: ClusterIP, NodePort, LoadBalancer y ExternalName
Volúmenes persistentes (PV) y reclamaciones (PVC)
DaemonSets y StatefulSets
Quiz: Redes y Almacenamiento en Kubernetes
Cargas de Trabajo y Escalado
Despliegue de una aplicación multi-tier en Local
Jobs y CronJobs: Tareas únicas y programadas
Escalado de aplicaciones: HPA y VPA
Escalado de aplicaciones en Kubernetes
Quiz: Cargas de Trabajo y Escalado
Kubernetes en la Nube
Introducción a EKS, AKS y GKE
Configuración de Kubernetes en EKS (AWS)
Configuración de Kubernetes en AKS (Azure) y GKE (Google Cloud)
Despliegue del Proyecto en la nube de AWS (EKS)
Quiz: Kubernetes en la Nube
Troubleshooting, Casos de uso y Certificaciones K8s
Troubleshooting en Kubernetes
Otros casos de uso de Kubernetes
Certificaciones profesionales en K8s
Despliegue en Kubernetes Finalizado
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Desplegar una aplicación en un clúster de Kubernetes (K8s) en la nube es un proceso que requerirá varios pasos para asegurar que todos los componentes estén alineados y en operación. A continuación, exploramos el proceso, las configuraciones necesarias y buenas prácticas para lograr una implementación exitosa.
Para comenzar, asegúrate de cumplir con ciertos prerrequisitos básicos necesarios para el despliegue:
Con estos elementos en marcha, estarás listo para proceder al despliegue.
Una práctica común en Kubernetes es segmentar recursos en namespaces, los cuales permiten un orden lógico y organizacional:
ExternalName
que conecta con la base de datos RDS.Crear namespaces especÃficos no solo organiza tus recursos, sino que también ayuda en la configuración de accesos y polÃticas.
kubectl create namespace backend
kubectl create namespace frontend
kubectl create namespace storage
Para conectar con una base de datos RDS, puedes usar un servicio ExternalName
que apuntará a la base de datos:
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: storage
spec:
type: ExternalName
externalName: tu-endpoint-rds.amazonaws.com
La gestión de datos sensibles en Kubernetes debe manejarse con sumo cuidado. Usar secretos para valores como contraseñas es una buena práctica:
kubectl create secret generic mysql-secret \
--from-literal=username=admin \
--from-literal=password=k8s \
--from-literal=host=tu-endpoint-rds.amazonaws.com \
-n backend
Para asegurar la confidencialidad, Kubernetes cifra los secretos en almacenamiento, haciéndolos seguros y protegidos.
Inicializar la base de datos puede involucrar la creación de tablas y otros procesos iniciales, definidos a través de scripts. Estos scripts se ejecutan mediante un Job
de Kubernetes.
apiVersion: batch/v1
kind: Job
metadata:
name: init-db
namespace: backend
spec:
template:
spec:
containers:
- name: db-init
image: image-usada-para-initializar
volumeMounts:
- name: config-volume
mountPath: /init-scripts
envFrom:
- secretRef:
name: mysql-secret
volumes:
- name: config-volume
configMap:
name: db-scripts
restartPolicy: OnFailure
Cuando se trabaja con Docker para diferentes arquitecturas, como en máquinas ARM y clústeres AMD, Buildx se vuelve esencial para la compilación multi-plataforma:
docker buildx build --platform=linux/amd64 -t mi-registry/mi-app:tag .
docker push mi-registry/mi-app:tag
Después de compilar, es crucial validar las configuraciones de tu archivo de despliegue:
Validar Deployment YAML: comprueba que la referencia a las imágenes y configuraciones son correctas.
Health Checks: utiliza readiness y liveliness probes para asegurar que el servicio esté disponible y funcionando como se espera.
External Access: configura servicios tipo LoadBalancer
para facilitar el acceso exterior a la aplicación.
apiVersion: apps/v1 kind: Deployment metadata: name: mi-app namespace: backend spec: replicas: 1 selector: matchLabels: app: mi-app template: metadata: labels: app: mi-app spec: containers: - name: mi-app image: mi-registry/mi-app:tag ports: - containerPort: 5001 envFrom: - secretRef: name: mysql-secret
Al asegurar cada uno de estos pasos, podrás desplegar aplicaciones robustas y flexibles en Kubernetes, apoyando a cualquier negocio a alcanzar la escala y eficiencia deseadas. Sigue explorando y adaptando nuevas prácticas para continuar mejorando.
Aportes 1
Preguntas 1
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?