Recomendaciones para habilitar la automatización
Se aplica a esta recomendación de lista de comprobación de excelencia de la operación del marco de trabajo bien diseñado de Azure:
OE:10 | Diseñe e implemente la automatización por adelantado para operaciones como problemas de ciclo de vida, arranque y aplicación de barreras de gobernanza y cumplimiento. No intentes actualizar la automatización más adelante. Elija las características de automatización que proporciona la plataforma. |
---|
En esta guía se describen las recomendaciones para diseñar e implementar la carga de trabajo para habilitar la automatización. Diseñe la carga de trabajo teniendo en cuenta la automatización para asegurarse de que las tareas rutinarias, como los recursos de aprovisionamiento, el escalado y las implementaciones se realizan de forma rápida y confiable. La automatización simplifica las tareas de mantenimiento y permite actualizar, aplicar revisiones y actualizar los sistemas de forma más eficaz.
Estrategias de diseño principales
Diseño de componentes de carga de trabajo para admitir la automatización
Puede diseñar la carga de trabajo para admitir la automatización desde la fase de ideación hasta la fase de mejora continua. En primer lugar, tenga en cuenta cómo desea aplicar la automatización en la carga de trabajo para asegurarse de que está colocando las piezas necesarias en su lugar. Piense en la carga de trabajo en términos de los pilares de Well-Architected Framework para ayudar a planear los tipos de automatización que usará. Puede automatizar muchas funciones de seguridad, confiabilidad, rendimiento, operaciones y control de costos.
Diseño teniendo en cuenta la automatización para minimizar la refactorización después de que se ejecute la carga de trabajo. Tenga en cuenta los requisitos de carga de trabajo al decidir qué herramientas de automatización usar. Es posible que haya herramientas de automatización fuera de la plataforma con las que el equipo ya está familiarizado. La adopción de esas herramientas puede facilitar la automatización de la carga de trabajo, pero tener en cuenta sus limitaciones y compatibilidad con la plataforma en la nube. Por ejemplo, algunas herramientas de automatización podrían integrarse bien con las herramientas de la CLI de Azure, mientras que otras podrían requerir interfaces REST. Investigue siempre las herramientas que proporciona la plataforma en la nube para asegurarse de que son compatibles y proporcionar la funcionalidad que necesita. Entre los ejemplos de formas en que puede planear proactivamente la automatización se incluyen:
Implementación: automatice las implementaciones de la aplicación y de la infraestructura para garantizar un estándar predecible. Planee la implementación automatizada mediante el desarrollo de estándares de implementación, entrenará al equipo en las herramientas que usará e implementará la infraestructura necesaria.
Validación: valide automáticamente los requisitos de cumplimiento con la carga de trabajo mediante herramientas de orquestación o directiva. Identifique la herramienta de validación adecuada para la carga de trabajo y planee implementar los sistemas necesarios, por ejemplo, los servidores de orquestación.
Escalado automático: use el escalado automático en toda la infraestructura para ayudarle a lograr los requisitos de confiabilidad y rendimiento. Debe asignar espacio de direcciones IP y subredes en la carga de trabajo con antelación para tener en cuenta las operaciones de escalado, además de planear la redundancia y el crecimiento natural.
Compensación: al diseñar la carga de trabajo para habilitar la automatización, tenga en cuenta el grado de control que desea mantener frente a la eficacia que puede obtener a través de la automatización. En algunos casos, es posible que la carga de trabajo no sea lo suficientemente madura para automatizar algunas funciones o que necesite un nivel de flexibilidad que la automatización no proporcione.
Tenga en cuenta también el conjunto de aptitudes del equipo al diseñar la carga de trabajo. Si un alto grado de automatización requiere herramientas que el equipo no está equipado para admitir, es posible que tenga que usar un diseño menos completo como paso intermedio.
Volver a consultar el diseño de automatización durante el ciclo de vida
Una vez que la carga de trabajo se ejecuta en la nube, es importante priorizar la mejora continua. Observe la carga de trabajo en acción, analice los patrones de uso y revise el comportamiento del cliente relacionado con la carga de trabajo para identificar las áreas en las que puede mejorar la automatización. Busque formas de mejorar la automatización existente o introducir una nueva automatización para mejorar la experiencia del cliente. Por ejemplo, es posible que haya habilitado el escalado automatizado, pero el aumento de la carga de trabajo es de corta duración. Puede integrar la automatización de escalado horizontal para reducir el uso de cpu cuando la carga cae por debajo del umbral.
En las secciones siguientes de esta guía se ofrecen recomendaciones sobre áreas específicas de automatización que pueden ayudarle en el diseño y la implementación de la carga de trabajo.
Automatización del arranque
El arranque se refiere a las actualizaciones de configuración de un recurso que se deben realizarse después de aprovisionarse, pero antes de que esté disponible como parte del grupo de cargas de trabajo. El arranque suele estar asociado a máquinas virtuales (VM), pero muchos otros recursos deben configurarse como parte del proceso de implementación, incluidas las tecnologías de plataforma como servicio (PaaS) y las tecnologías de hospedaje de contenedores, como Azure Kubernetes Service (AKS).
La plataforma en la nube puede proporcionar soluciones de arranque para usted, que debe usar siempre que sea posible. Por ejemplo, puede usar extensiones de máquina virtual en Azure para realizar cambios de configuración predefinidos durante el proceso de implementación y personalizar los cambios de configuración mediante la inserción de scripts de PowerShell.
Incorporación de la automatización a la administración de acceso
Tenga en cuenta la automatización al diseñar la estrategia de autenticación y autorización. Es importante mantener el mayor nivel de seguridad en las cargas de trabajo de producción, pero esto puede afectar a la automatización. Por ejemplo, el uso de la autenticación biométrica o multifactor agrega complejidad que se debe tener en cuenta en el diseño de automatización. Use cuentas no humanas y seguras para la autenticación automatizada, como identidades administradas, identidades de carga de trabajo o certificados. Asegúrese de que ha incluido la administración de secretos y claves en la automatización para aumentar la seguridad de autenticación.
Diseño de la variabilidad en la carga de trabajo
Evite implementar innecesariamente una nueva infraestructura cuando se realicen pequeños cambios mediante la creación de flexibilidad en los artefactos. Por ejemplo, en lugar de volver a implementar la infraestructura cuando cambia una marca de característica, puede usar parámetros establecidos para actualizar componentes como configuraciones de aplicaciones. Asegúrese de definir y documentar claramente cómo se usa la variabilidad para evitar el uso excesivo y el desfase de configuración.
Compilación de un plano de control
Un plano de control es el sistema back-end o conjunto de herramientas que se usan para administrar la aplicación y sus dependencias a través de una interfaz unificada. Compile el plano de control como una interfaz REST, CLI o webhook para admitir la automatización por parte de herramientas externas.
Exponga las operaciones de mantenimiento a través del plano de control que le permitan coordinar componentes de carga de trabajo, por ejemplo, copias de seguridad y restauración ordenadas, arranque, configuración, importación/exportación y operaciones de procesamiento por lotes. Tenga cuidado de elegir el nivel correcto de granularidad al decidir las operaciones que se van a exponer a través del plano de control.
Adopción de un enfoque controlado por datos para desarrollar automatización
Desarrolle una estrategia de supervisión para capturar métricas que impulsen el tipo de automatización que necesita. Use el registro estructurado y las métricas personalizadas para proporcionar la información requerida por la automatización en un formato fácil de reconocer con las herramientas de automatización. Las métricas que capture se deben emparejar con umbrales definidos en el sistema de supervisión que desencadenan alertas y acciones automatizadas, como notificaciones o mecanismos de recuperación automática, cuando corresponda. Para obtener más información, consulte Recomendaciones para la recuperación automática y la conservación automática.
Automatización de eventos del ciclo de vida de los usuarios
Diseñe la aplicación y la infraestructura para permitir la incorporación y retirada automatizadas de usuarios, para usuarios o clientes multiinquilino. Planee actualizaciones automatizadas de bases de datos a través de scripts, aprovisionamiento de infraestructuras y desaprovisionamiento, y administración de credenciales y secretos.
Automatización de la configuración de estado deseado
Como parte de la administración continua de cargas de trabajo, puede automatizar Desired State Configuration (DSC) en los recursos para ayudar a garantizar que cumplen los requisitos empresariales y de cumplimiento. La automatización de DSC ayuda a garantizar que el desfase de configuración se detecte y corrija rápidamente. Puede automatizar la DSC mediante herramientas de orquestación o herramientas de administración de directivas. Piense en las herramientas de orquestación, como los servicios de Azure DevOps o Jenkins, como mecanismos basados en inserción. Las herramientas de orquestación permiten insertar actualizaciones de configuración a través de un evento de flujo de trabajo, como una implementación manual o automatizada. Estas actualizaciones se ejecutan como parte de una secuencia de tareas definida en el script de implementación. Las herramientas de administración de directivas usan mecanismos basados en extracción, lo que significa que un sistema se ejecuta en el nivel fundamental de la carga de trabajo que sondea periódicamente la carga de trabajo para comprobar su estado con el DSC definido. Si el sondeo identifica un desalineamiento o un desfase de configuración, la herramienta realiza una acción correctiva. Tenga en cuenta los siguientes factores al decidir entre las herramientas de orquestación y administración de directivas:
Las herramientas de orquestación no tienen funcionalidades integradas para sondear proactivamente la carga de trabajo para el desfase de configuración. Las herramientas de orquestación deben integrarse en la canalización de integración continua y entrega continua (CI/CD) para mantener un estándar para la implementación y administración de la infraestructura como código (IaC). Una ventaja de usar herramientas de orquestación es que los recursos siempre están totalmente configurados cuando se implementan.
Las herramientas de administración de directivas permiten definir directivas que afectan a uno o varios grupos de recursos. Estas directivas se aplican cuando el recurso se comprueba con el sistema de administración de directivas. Una ventaja de usar la administración de directivas es que estos sistemas no están controlados por código, por lo que pueden ser más fáciles para que los operadores del equipo adopten.
Al decidir entre las herramientas de orquestación o directiva, tenga en cuenta si las actualizaciones de configuración que planea realizar en los nuevos recursos deben realizarse en el momento de la implementación. Considere también si la definición de actualizaciones en el código se ajusta a las prácticas operativas y el número de tipos de recursos que planea implementar. Si hay muchas configuraciones diferentes en los tipos de recursos, las herramientas de directiva pueden ser una manera más fácil de administrar las actualizaciones.
Facilitación de Azure
Administración de directivas
Azure Policy: con Azure Policy, puede aplicar estándares y evaluar el cumplimiento a escala. Azure Policy proporciona una vista agregada para evaluar el estado general del entorno de carga de trabajo en el panel de cumplimiento. O bien, puede usar Azure Policy para evaluar cada recurso y directiva en un nivel pormenorizados. También puede usar Azure Policy para corregir los nuevos recursos automáticamente o corregir los recursos existentes de forma masiva.
Compensación: la descarga de la automatización de la canalización de CI/CD a herramientas o servicios de plataforma, como Azure Policy, puede simplificar la canalización, pero tiene inconvenientes como la carga de administración adicional del uso de varios sistemas. Por ejemplo, los errores de ejecución en un servicio de plataforma no se detectarán en los registros de canalización y tendrán que introducirse en la plataforma de observabilidad de forma inteligente para que se notifiquen a las partes adecuadas.
Automatización del arranque
Extensiones de Azure Virtual Machines: las extensiones de Virtual Machines son pequeños paquetes que ejecutan la configuración posterior a la implementación y la automatización en máquinas virtuales. Hay varias extensiones disponibles para diferentes tareas de configuración, como ejecutar scripts, configurar soluciones antimalware y configurar soluciones de registro. Instale y ejecute estas extensiones en máquinas virtuales mediante una plantilla de Azure Resource Manager, la CLI de Azure, el módulo de Azure PowerShell o Azure Portal. Cada máquina virtual tiene instalado un agente de máquina virtual que administra el ciclo de vida de la extensión.
Normalmente, las extensiones de máquina virtual usan una extensión de script personalizada para instalar software, ejecutar comandos y realizar configuraciones en una máquina virtual o conjuntos de escalado de máquinas virtuales de Azure. Puede configurar estas extensiones para que se ejecuten como parte de las implementaciones de IaC para que se ejecuten en máquinas virtuales nuevas mediante el agente de máquina virtual de Azure. Las extensiones también se pueden ejecutar fuera de una implementación de Azure mediante la CLI de Azure, el módulo de PowerShell o Azure Portal.
Cloud-init: Cloud-init es una herramienta del sector para configurar máquinas virtuales Linux en el primer arranque. Al igual que las extensiones de script personalizadas de Azure, cloud-init le permite instalar paquetes y ejecutar comandos en máquinas virtuales Linux. Puede usar cloud-init para la instalación de software, la configuración del sistema y el almacenamiento provisional de contenido. Azure incluye muchas imágenes de máquina virtual habilitadas para cloud-init en distribuciones de Linux conocidas. Para obtener una lista completa, consulte compatibilidad con cloud-init para máquinas virtuales en Azure.
Recurso de script de implementación de Azure: al implementar con Azure, es posible que tenga que ejecutar código arbitrario para arrancar la administración de cuentas de usuario, pods de Kubernetes o consultar datos desde un sistema que no es de Azure. Dado que ninguna de estas operaciones es accesible a través del plano de control de Azure, se requiere un mecanismo independiente. Para obtener más información, consulte DeploymentScripts de Microsoft.Resources. Al igual que cualquier otro recurso de Azure, el recurso de script de implementación:
Se puede usar en una plantilla de Azure Resource Manager.
Contiene dependencias de plantilla de Azure Resource Manager en otros recursos.
Consume la entrada y genera la salida.
Usa una identidad administrada asignada por el usuario para la autenticación.
Cuando se implementa, el script de implementación ejecuta comandos y scripts de PowerShell o de la CLI de Azure. Las ejecuciones de scripts y el registro se pueden observar en Azure Portal o con la CLI de Azure y el módulo de PowerShell. Puede personalizar las variables para el entorno de ejecución, las opciones de tiempo de espera y la administración de recursos después de un error de script.
Arranque de clústeres de AKS con GitOps: puede arrancar un clúster de AKS recién aprovisionado mediante GitOps y la extensión de clúster de Flux v2 declarando las opciones de configuración en repositorios de GitHub. Dado que los archivos de clúster de AKS se almacenan en un repositorio de GitHub, se versionan y se realiza un seguimiento fácil de los cambios entre versiones. Los controladores de Kubernetes se ejecutan en los clústeres y reconcilian continuamente el estado del clúster con el estado deseado declarado en el repositorio de Git mediante la extracción de los archivos del repositorio. Para obtener más información, consulte Arquitectura de referencia de línea base de AKS.
Administración de configuración
State Configuration de Azure Automation es una herramienta de administración de DSC administrada por la característica de configuración de invitado de Azure Policy que puede usar para escribir, administrar y compilar configuraciones de DSC de PowerShell para nodos en cualquier centro de datos local o en la nube. También puede usar esta herramienta para importar recursos de DSC y asignar configuraciones a los nodos de destino.
App de Azure Configuración es un servicio que puede usar para administrar de forma centralizada la configuración de la aplicación y las marcas de características. Funciona con Azure Key Vault para que pueda administrar de forma segura una amplia variedad de configuraciones de aplicación en todo el entorno.
Change Tracking e Inventario
El seguimiento de cambios y el inventario mediante Azure Monitoring Agent realiza un seguimiento del desfase de configuración del sistema operativo en máquinas virtuales de Azure y máquinas virtuales habilitadas para Arc. Esto automatiza la detección del desfase, los servicios en ejecución de inventario y los paquetes instalados en las máquinas virtuales de la carga de trabajo. Entre los elementos a los que se realiza el seguimiento de cambios y el inventario se incluyen:
- Software de Windows y Linux instalado
- Archivos clave de Windows y Linux
- Clave del Registro de Windows
- Servicios de Windows y demonios de Linux
Vínculos relacionados
- Arquitectura de referencia de línea base de AKS
- Azure App Configuration
- State Configuration de Azure Automation
- Azure Policy
- Compatibilidad con Cloud-init para máquinas virtuales en Azure
- Configuraciones de Flux v2 de GitOps con Kubernetes habilitado para Azure Arc
- DeploymentScripts de Microsoft.Resources
- Recomendaciones para la recuperación automática y la conservación automática
Lista de comprobación de excelencia operativa
Consulte el conjunto completo de recomendaciones.