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).