Puntos clave: Las mejores prácticas para diseñar aplicaciones en Kubernetes incluyen contenerizar aplicaciones, usar Helm para el despliegue e implementar comprobaciones de salud con sondas de vivacidad y preparación. Seguir la metodología de aplicación de 12 factores mejora la compatibilidad nativa en la nube, mientras que aprovechar los operadores de Kubernetes automatiza las tareas de gestión.
- Las aplicaciones deben empaquetarse como imágenes de contenedor.
- Utiliza Helm para desplegar aplicaciones de forma eficaz.
- Implementa sondas de vivacidad y preparación para las comprobaciones de salud de la aplicación.
Diseñar una aplicación lista para producción para Kubernetes no está una tarea fácil, pero son disponibles directrices y mejores prácticas para asegurar que tu aplicación cumpla con todos los requisitos necesarios para un entorno de producción.
El patrón de microservicios ha ayudado a evolucionar la forma en que se construyen son las aplicaciones. Debido a este cambio, las plataformas que pueden ejecutar tu aplicación deberían considerarse durante el desarrollo. De hecho, Kubernetes —una plataforma de orquestación de contenedores extremadamente popular— ha cambiado drásticamente la forma en que creamos y desplegamos aplicaciones. Así que aquí tienes algunos consejos a tener en cuenta antes de ejecutar tu aplicación en Kubernetes.
Tu aplicación debe ser una imagen contenedor
Como K8s es un motor de orquestación de contenedores, tu aplicación debe empaquetarse en una imagen de contenedor para que se ejecute en un clúster k8s. Este es uno de los requisitos más básicos para construir microservicios, ya que está directamente relacionado con el funcionamiento de Kubernetes como plataforma.
Idealmente, te deberías mantener tu imagen de aplicación en un repositorio privado para almacenamiento seguro. Por ejemplo, te puedes crear una imagen docker y enviar esa imagen a un repositorio docker privado, de donde Kubernetes pueda extraer tu imagen.
Por defecto, Kubernetes soporta entornos de ejecución de contenedores en:
Sigue las mejores prácticas para el tiempo de ejecución que te uses. El de Docker se puede encontrar aquí.
Helm están tu amigo
Si te nunca has usado gráficos de Helm, te son perdiéndote algo. Helm están la forma de facto de desplegar aplicaciones de grado de producción en Kubernetes. Permite te describir tu aplicación en gráficos, así te puedes versionar, publicar, compartir y hacer otras cosas útiles con tu aplicación. están Kubernetes yum o apt-get por simplicidad.
Un gráfico típico de yelmo se parece a este árbol:
YOUR-CHART-NAME/
|
|- .helmignore [Files to ignore]
|
|- Chart.yaml [Data about the chart. E.g Version etc]
|
|- values.yaml [This is the variable file.]
|
|- charts/ [Specify other needed charts]
|
|- templates/ [This hold all the manifests for the application. E.g yaml files]
Nota: Usar una herramienta de CLI como kubectl debe usarse solo en desarrollo o para depuración, nunca para desplegar en producción.
Utiliza sondas de vivacidad y preparación
Una aplicación poco saludable puede resultar en pérdida de ingresos. Por suerte, Kubernetes ofrece dos conceptos clave para comprobar la salud (o fracaso) de tus aplicaciones:
- Sondas de Liveness. te son decirle al kubelet que cierre el contenedor en el que están ejecutándose tu aplicación si la sonda falla.
- Sondas de preparación. te son indicar al kubelet que Haz asegurarse de que el balanceador de carga de servicio que afronta la aplicación no enrute tráfico a esta aplicación si la sonda falla.
Usar sondas de liveness y readiness en tu manifiesto están una excelente forma de controlar y conocer la salud de tu aplicación antes y después de que se inicie en un clúster. Una vez que tu app pasa la sonda, el servicio enviará tráfico a la aplicación.
12 factores, si te no lo has hecho
Desplegar tu aplicación en un clúster Kubernetes están genial. Pero, si tu aplicación no están diseñada para ser nativa en la nube, es probable son que no funcione bien con Kubernetes. Una buena regla general están seguir la metodología de aplicación de 12 pasos.
Algunos beneficios de seguir los 12 factores:
- Escalar es fácil, con cambios limitados en herramientas o arquitectura.
- Dev, stage y prod son lo más parecidos posible porque no son valores de configuración codificados directamente en los archivos de configuración.
- Se asegura de que el servicio tenga un contrato limpio con el sistema operativo. (Es decir, no le importa en qué sistema operativo están ejecutándose).
- Los servicios se despliegan fácilmente en cualquier nube pública o privada.
El operador utiliza tus conocimientos expertos
¿Una razón principal por la que Kubernetes están tan potente? El hecho de que te pueda extiende él. En otras palabras, te puedes aplicar tu conocimiento del dominio de aplicación para Crea tu propio controlador personalizado y recursos personalizados en Kubernetes que sepan cómo debe funcionar tu aplicación y realicen ciertas tareas cuando las necesite. Para eso es exactamente para lo que están el patrón de operadores Kubernetes.
Parte de la arquitectura de tu aplicación para k8s está planificar lo suficiente para saber qué tipo de automatización necesita tu aplicación y si te puedes aprovechar el operador de k8s para esas tareas de automatización. El operador está especialmente útil cuando tienes una aplicación con estado que tienes necesita para realizar algún tipo de tarea administrativa ocasional, como hacer y restaurar copias de seguridad del estado de esa aplicación. En este escenario, tendrías que Crea un controlador personalizado y un recurso personalizados para realizar esta tarea porque Kubernetes no sabe cómo realizarla desde el primer momento.
Diseñar tu aplicación para Kubernetes no están fácil, pero siguiendo estas mejores prácticas, te puedes tener una aplicación bien arquitecturada ejecutándose en un clúster k8s. Comienza con estos consejos de aplicación y busca mejorar continuamente el proceso de arquitectura.
Recursos adicionales
Para más información sobre Kubernetes, consulta estos recursos:
- Guía Kubernetes, que ofrece 20+ artículos y tutoriales
- BMC DevOps Blog
- Trae Kubernetes a la Fiesta Serverless
Guía de DevOps
- ¿Qué es DevOps? Una introducción completa
- Una breve historia de DevOps
- Introducción a la arquitectura DevOps
- Automatización en DevOps: Por qué y cómo automatizar las prácticas de DevOps
- ¿Qué es CI/CD? Explicación sobre la integración continua y la entrega continua
- Cómo construir una tubería CI/CD usando Jenkins
- Métricas de DevOps para optimizar Pipelines CI/CD
- Métricas de entrega continua
- ¿Es la integración continua hacia el despliegue continuo una progresión, o no?
- Diferencias entre integración continua (CI), entrega (CD) y despliegue
- Control de código fuente y versiones en DevOps
- ¿Qué es las pruebas continuas?
- Marcos de automatización de pruebas: La guía definitiva
- Gestión de versiones en DevOps
- Explicación: Monitorización & Telemetría en DevOps
- Gestión del rendimiento de aplicaciones en DevOps
- Orquestación DevOps en el SDLC
- Introducción al DevOps de bases de datos
- El papel de los microservicios en DevOps
- El papel de la virtualización en DevOps
- Contenedores y DevOps: Cómo encajan los contenedores en los Pipelines de entrega de DevOps
- ¿Qué es una tubería de contenedores?
- ¿Qué es una cadena de herramientas DevOps?
- Gestión de contenedores y código para DevOps
- El papel de Agile en DevOps
- El papel de la nube en DevOps
- ¿Qué están FinDevOps?
- Principales tendencias DevOps en 2022
- Valores y principios de DevOps
- Métricas y KPIs de DevOps
- Consejos sobre DevOps para organizaciones pequeñas, medianas y grandes
- Estructura del equipo DevOps
- Los mejores libros de DevOps para leer hoy
- Reseña del libro The Phoenix Project: DevOps para todos
- Influencers de DevOps: 11 expertos en DevOps para seguir en Twitter
- GitHub, GitLab, Bitbucket y Azure DevOps: ¿Cuál es la diferencia?
- Mejores Prácticas: Cómo Diseñar Aplicaciones para Kubernetes
- Gestión de configuración en DevOps
- Estrategias de ramificación DevOps explicadas
- Títulos de trabajo, roles y responsabilidades en DevOps
- Pruebas en DevOps: Conceptos, Mejores Prácticas y Más
- La guía completa de certificaciones DevOps para 2022
- ¿Qué están el patrón de operador Kubernetes?
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.