Notas de Aprendizaje Continuo en Tecnologías Cloud y DevOps (2022-2025)

Este documento recopila hitos y conceptos técnicos aprendidos durante el periodo 2022-2025, abarcando virtualización, servicios en la nube, bases de datos, orquestación de contenedores y prácticas de DevOps.

Fundamentos de Virtualización y Contenedores

Estudios iniciales se centraron en la virtualización y los contenedores, cubriendo OpenStack, Docker y Kubernetes. Se revisaron recursos como "Kubernetes: Up and Running" y se practicó la gestión de clústeres de OpenStack y las aplicaciones avanzadas de Docker.

Servicios en la Nube y Bases de Datos

Se exploraron los servicios principales de Alibaba Cloud, incluyendo su arquitectura. Para las bases de datos, se profundizó en MySQL, incluyendo su administración y consultas, y en Oracle, abarcando desde conceptos básicos hasta clústeres RAC.

Prácticas Específicas y Herramientas de Operaciones

Se implementaron y configuraron dviersas herramientas de operaciones como Zabbix para monitorización, JumpServer para acceso seguro, y se practicó la administración de servidores Tomcat. También se estudiaron y aplicaron soluciones de almacenamiento como Redis y bases de datos NoSQL como MongoDB.

Profundización en Kubernetes y Arquitecturas de Microservicios

Un énfasis importante se puso en Kubernetes (K8s). Se cubrió desde la configuración inicial del clúster, la composición de manifiestos YAML y la gestión de Pods, hasta conceptos avanzados como controladores (Deployments, StatefulSets), servicios (ClusterIP, NodePort), volúmenes persistentes (PV/PVC), y políticas de seguridad (RBAC, SecurityContext). Se abordaron patrones de despliegue como el lanzamiento canary y azul-verde.

# Ejemplo de manifiesto de Pod simplificado para una aplicación con dos contenedores
apiVersion: v1
kind: Pod
metadata:
  name: app-web-dual
  labels:
    role: frontend
spec:
  containers:
  - name: servidor-web
    image: nginx:alpine
    ports:
    - containerPort: 80
    volumeMounts:
    - name: config-volume
      mountPath: /etc/nginx/conf.d
  - name: sidecar-proxy
    image: envoyproxy/envoy:v1.22
    ports:
    - containerPort: 8080
  volumes:
  - name: config-volume
    configMap:
      name: nginx-config

Infraestructura como Código y CI/CD

Se implementaron pipelines de Integración Continua y Entrega Continua (CI/CD) utilizando Jenkins y GitLab CI. Se exploró la orquestación de contenedores con Docker Compose para entornos de desarrollo y producción, y se adoptó Helm para la gestión de aplicaciones en Kubernetes.

#!/bin/bash
# Script simplificado para automatizar el despliegue de una versión de app
VERSION="$1"
APP_NAMESPACE="produccion"
IMAGE_REPO="registry.mi-empresa.com/app"

echo "Desplegando la versión: ${VERSION}"

# Actualizar la imagen del contenedor en el manifiesto
sed -i "s|image:.*|image: ${IMAGE_REPO}:${VERSION}|" ./k8s/deployment.yaml

# Aplicar los cambios al clúster
kubectl apply -f ./k8s/deployment.yaml -n ${APP_NAMESPACE}

# Verificar el estado del rollout
kubectl rollout status deployment/mi-app -n ${APP_NAMESPACE} --timeout=120s
if [ $? -eq 0 ]; then
    echo "Despliegue de la versión ${VERSION} completado con éxito."
else
    echo "El despliegue ha fallado. Realizando rollback..."
    kubectl rollout undo deployment/mi-app -n ${APP_NAMESPACE}
    exit 1
fi

Monitorización y Observabilidad

Se estudiaron y desplegaron sistemas de monitorización y registro. Para métricas, se configuró Prometheus con Grafana. Para el procesamiento de logs, se montó un stack EFK (Elasticsearch, Filebeat, Kibana), incluyendo reglas de alerta mediante herramientas como ElastAlert.

Serviciso de Red y Sistema

Se reforzaron conocimientos en servicios de sistema y red esenciales para la administración de servidores Linux, incluyendo la configuración de servidores DNS (BIND), NFS, Samba, servidores web (Apache HTTPD), proxies (Squid), y la gestión avanzada de redes con iptables y firewalld. Se practicó la automatización con Ansible y la gestión de secretos.

Plataformas de Gestión de Contenedores

Se exploraron alternativas y herramientas complementarias a Docker, como containerd como runtime, y plataformas de gestión de clústeres como Rancher para proporcionar una interfaz visual a los entornos de Kubernetes.

Etiquetas: Kubernetes Docker containerd Helm Jenkins

Publicado el 6-10 02:45