Compartir vía


Automatización de la plataforma y DevOps para Azure Container Service

Como construcción nativa en la nube, Kubernetes requiere un enfoque nativo de nube para la implementación y las operaciones. Azure y Kubernetes son plataformas abiertas y extensibles con API enriquecidas y bien diseñadas, lo que proporciona la oportunidad y la posibilidad de maximizar la automatización. Planee un enfoque de DevOps y altamente automatizado. Para hacerlo, confíe en la automatización y los procedimientos recomendados generales de DevOps.

Consideraciones de diseño

A continuación se incluyen algunas consideraciones de diseño para la automatización de la plataforma AKS y DevOps:

  • Tenga en cuenta las limitaciones del servicio de Azure y su entorno de integración continua y entrega continua (CI/CD) al determinar el enfoque de ingeniería y automatización. Para obtener otro ejemplo, vea las limitaciones de uso de GitHub.

  • Al asegurar y proteger el acceso a los entornos de desarrollo, pruebas, preguntas y respuestas y producción, tenga en cuenta las opciones de seguridad de una perspectiva de CI/CD. Las implementaciones se producen automáticamente, por lo que debe asignar el control de acceso en consecuencia.

  • Considere la posibilidad de usar prefijos y sufijos con convenciones bien definidas para identificar de forma única cada recurso implementado. Estas convenciones de nomenclatura evitan conflictos al implementar soluciones juntas y mejoran la agilidad y el rendimiento generales del equipo.

  • Realice un inventario de los flujos de trabajo para admitir la ingeniería, la actualización y la implementación de la solución en los regímenes del Plan de recuperación ante desastres (DRP) y el normal. Considere la posibilidad de asignar canalizaciones de acuerdo con esos flujos de trabajo a fin de maximizar la familiaridad y la productividad.

    Algunos escenarios de ejemplo y canalizaciones que se deben tener en cuenta son:

    • Implementación, revisión y actualización de clústeres
    • Implementación y actualización de aplicaciones
    • Implementación y mantenimiento de complementos
    • Conmutación por error para la recuperación ante desastres
    • Implementaciones azul-verde
    • Mantenimiento de entornos de valores controlados
  • Considere la posibilidad de usar una malla de servicio para agregar más funcionalidades de seguridad, cifrado y registro a las cargas de trabajo.

  • Considere la posibilidad de implementar otros recursos, como suscripciones, etiquetado y etiquetas, para admitir la experiencia de DevOps mediante el seguimiento de implementaciones y artefactos relacionados.

  • Tenga en cuenta el impacto del cambio de paradigma de ganado y mascotas. Cabe esperar que los pods y otros aspectos de Kubernetes sean efímeros. Alinee la infraestructura de automatización y canalización en consecuencia. No confíe en que las direcciones IP u otros recursos sean fijos o permanentes.

Recomendaciones de diseño

A continuación se incluyen algunas recomendaciones de diseño para la automatización de la plataforma AKS y DevOps:

  • Confíe en las canalizaciones o las acciones para lo siguiente:

    • Maximice las prácticas aplicadas en todo el equipo.
    • Quite gran parte de la carga de reinventar la rueda.
    • Proporcione capacidad de previsión y conclusiones sobre la calidad y la agilidad generales.
  • Implemente pronto y con frecuencia mediante canalizaciones programadas y basadas en desencadenador. Las canalizaciones basadas en desencadenadores garantizan que los cambios pasan una validación correcta, mientras que las canalizaciones programadas administran el comportamiento en entornos de cambio

  • Separe la implementación de la infraestructura de la implementación de aplicaciones. Los cambios en la infraestructura principal son inferiores a los de las aplicaciones. Trate cada tipo de implementación como un flujo y una canalización independientes.

  • Implemente mediante opciones nativas de nube. Use la infraestructura como código para implementar la infraestructura, incluido el plano de control, y use Helm y el patrón de operador de Kubernetes para implementar y mantener los componentes nativos de Kubernetes.

  • Use GitOps para implementar y mantener aplicaciones. GitOps usa el repositorio de Git como único origen fidedigno para evitar el desfase de la configuración y aumentar la productividad y la confiabilidad durante las reversiones y los procedimientos relacionados.

  • Use identidades administradas de pod y el proveedor de Azure Key Vault para el controlador Secrets Store CSI para proteger secretos, certificados y cadenas de conexión.

  • Procure conseguir una simultaneidad de implementación maximizada evitando las opciones y los elementos de configuración codificados de forma rígida.

  • Confíe en convenciones conocidas entre implementaciones relacionadas con la infraestructura y las aplicaciones. Use controladores de admisión combinados con el complemento de Azure Policy para Kubernetes para validar y aplicar convenciones entre otras directivas definidas.

  • Adopte el desplazamiento a la izquierda de forma coherente con:

    • Seguridad, mediante la adición de herramientas de exploración de vulnerabilidades, como la exploración contenedores al principio de la canalización.
    • Directiva, mediante el uso de directivas como código y la aplicación de directivas de forma nativa de nube mediante controladores de admisión.
  • Trate cada error o fallo como una oportunidad para automatizar y mejorar la calidad general de la solución. Integre este enfoque en el desplazamiento a la izquierda y el marco de trabajo de ingeniería de confiabilidad de sitios (SRE).