Compartir a través de


Implementación y funcionamiento de aplicaciones con AKS habilitado por Azure Arc en Azure Local

Azure Kubernetes Service (AKS)
Azure Local
Azure Arc
GitHub
Azure Pipelines

En este artículo se proporcionan recomendaciones para crear una canalización de implementación de aplicaciones para aplicaciones en contenedor en Azure Kubernetes Service (AKS) habilitadas por Azure Arc. Las aplicaciones se pueden ejecutar en Azure Local. La guía es específica para implementaciones que usan Azure Arc y GitOps.

Importante

La información de este artículo se aplica a AKS en Azure Local, versión 23H2 (versión más reciente).

Arquitectura

Diagrama que muestra una arquitectura para clústeres de AKS que se ejecutan en Azure Local.

Descargar un archivo de Visio de esta arquitectura.

Flujo de trabajo

La arquitectura ilustra una implementación que implementa aplicaciones en contenedores en clústeres de AKS que se ejecutan en Azure Local. Usa GitOps para administrar la infraestructura como código (IaC).

El siguiente flujo de trabajo corresponde al diagrama anterior:

  1. Un operador configura una infraestructura local en el hardware local de Azure que es capaz de hospedar un clúster de AKS.

  2. En Azure Portal, un administrador de una instancia local de Azure implementa un clúster de AKS en Azure Local.

  3. Para habilitar GitOps, el administrador también implementa la extensión Flux y su configuración en el clúster de AKS. Las configuraciones de GitOps facilitan IaC porque representan el estado deseado del clúster de AKS y usan la información que proporciona la administración local. La administración local hace referencia a las herramientas de administración, las interfaces y las prácticas que proporciona el clúster de AKS implementado en Azure Local.

  4. El administrador inserta configuraciones de GitOps en un repositorio de Git. También puede usar un repositorio de Helm o Kustomize. Los componentes flux del clúster de AKS supervisan el repositorio para ver los cambios. También detectan y aplican actualizaciones según sea necesario.

  5. La extensión Flux del clúster de AKS recibe una notificación del flujo de GitOps cuando se realizan cambios en las configuraciones de los repositorios. Desencadena automáticamente la implementación de la configuración deseada mediante gráficos de Helm o Kustomize.

  6. Los cambios de aplicación en forma de configuración o código nuevos o actualizados se insertan en los repositorios designados, incluidas las actualizaciones de imágenes de contenedor correspondientes. Estas actualizaciones de imágenes de contenedor se insertan en registros de contenedor privados o públicos.

  7. El operador Flux del clúster de AKS detecta los cambios en los repositorios e inicia su implementación en el clúster.

  8. Los cambios se implementan de forma gradual en el clúster para garantizar un tiempo de inactividad mínimo y conservar el estado deseado del clúster.

Componentes

  • Azure Local es una solución de infraestructura hiperconvergida que puede usar para ejecutar cargas de trabajo virtualizadas y nativas de la nube en el entorno local. Usa una combinación de tecnologías de proceso, almacenamiento y redes definidas por software. Se basa en Windows Server y se integra con los servicios de Azure para proporcionar una experiencia de nube híbrida. En esta arquitectura, Azure Local es la infraestructura que hospeda las cargas de trabajo locales de la infraestructura.

  • AKS en Azure Local es la plataforma de Kubernetes administrada de Microsoft. Permite a los desarrolladores y administradores usar AKS para implementar y administrar aplicaciones en contenedores en Azure Local. En esta arquitectura, un operador crea un clúster de Kubernetes en una instancia local de Azure y proporciona a los desarrolladores de aplicaciones el nivel de acceso necesario a este clúster.

  • Azure Arc es una solución híbrida de administración en la nube que puede usar para administrar servidores, clústeres de Kubernetes y aplicaciones en entornos locales, multinube y perimetrales. Proporciona una experiencia de administración unificada al permitirle controlar los recursos en distintos entornos mediante el uso de servicios de administración de Azure como Azure Policy, Microsoft Defender for Cloud y Azure Monitor. En esta arquitectura, Azure Arc permite al operador administrar el ciclo de vida del clúster de Kubernetes mediante Azure. También permite al desarrollador de aplicaciones acceder al clúster, conectarse de forma remota al clúster y administrar las cargas de trabajo que se ejecutan en el clúster.

  • Azure Pipelines es un servicio de integración continua y entrega continua (CI/CD) que automatiza las actualizaciones de repositorios y registros. En esta arquitectura, un desarrollador de aplicaciones usa Azure Pipelines para compilar e insertar imágenes en registros de contenedor como Docker Hub y Azure Container Registry.

  • Registros de contenedor públicos y privados, incluidos Container Registry y Docker Hub, hospedan imágenes de contenedor. Los registros de contenedor se usan con las canalizaciones de implementación y desarrollo de contenedores existentes para compilar imágenes de contenedor a petición o automatizar completamente compilaciones mediante desencadenadores como confirmaciones de código fuente y actualizaciones de imágenes base.

  • Azure proporciona una funcionalidad de implementaciones de aplicaciones automatizadas mediante GitOps que funciona con clústeres de Kubernetes habilitados para AKS y Azure Arc. Use GitOps para declarar el estado deseado de los clústeres de Kubernetes en archivos en repositorios de Git. Los repositorios de Git, Helm y Bitbucket públicos y privados pueden hospedar configuraciones de GitOps.

  • Flux es una herramienta de implementación de GitOps de código abierto que los clústeres de Kubernetes habilitados para Azure Arc pueden usar para implementar componentes de clúster que realizan un seguimiento de los cambios en los repositorios de Git, Helm o Kustomize designados. Si se detectan cambios, los componentes del clúster actualizan el clúster local con esos cambios. En esta arquitectura, el operador Flux, o cuando se desencadena, revisa la configuración del clúster actual para asegurarse de que coincide con la configuración definida en el repositorio. Si Flux detecta diferencias, los corrige aplicando la configuración deseada o aplicando de nuevo la configuración deseada si se produce el desfase de configuración.

Detalles del escenario

Para ejecutar contenedores a escala, necesita un orquestador que automatice tareas como la programación, la implementación, las redes, el escalado, las comprobaciones de estado y la administración de contenedores. Kubernetes es un orquestador que se usa habitualmente para nuevas implementaciones en contenedores. A medida que crece el número de clústeres y entornos de Kubernetes, administrarlos individualmente resulta difícil. Los servicios habilitados para Azure Arc, como Kubernetes habilitado para Azure Arc, GitOps, Azure Monitor y Azure Policy, reducen la carga administrativa y ayudan a resolver este desafío.

Consideraciones

Estas consideraciones implementan los pilares del Azure Well-Architected Framework, que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de una carga de trabajo. Para obtener más información, vea Well-Architected Framework.

El marco de Well-Architected proporciona principios rectores que ayudan a evaluar y optimizar las ventajas de las soluciones basadas en la nube. Las implementaciones locales de AKS están estrechamente integradas con tecnologías de Azure, lo que hace que sea esencial alinear el diseño e implementación de GitOps con recomendaciones de marco establecidas.

Fiabilidad

La confiabilidad ayuda a garantizar que la aplicación pueda cumplir los compromisos que realice para sus clientes. Para obtener más información, consulte Lista de comprobación de revisión de diseño para confiabilidad.

  • Use las características de alta disponibilidad de Kubernetes para garantizar una alta confiabilidad en soluciones basadas en GitOps.

  • Use Flux v2 para aumentar la disponibilidad de las aplicaciones en las implementaciones que abarcan varias ubicaciones o clústeres.

  • Use implementaciones automatizadas para reducir la posibilidad de errores humanos.

  • Integrar una canalización de CI/CD en la arquitectura para mejorar la eficacia de las pruebas automatizadas.

  • Realizar un seguimiento de todos los cambios de código para que pueda identificar y resolver problemas rápidamente. Para realizar un seguimiento de estos cambios operativos, use las funcionalidades integradas de GitHub o Azure DevOps. Puede usar estas herramientas para aplicar directivas y automatizar flujos de trabajo de aprobación. Este enfoque garantiza que los cambios se realicen de forma coherente, se revisen correctamente y permanezcan mantenidos con el tiempo.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el uso indebido de sus valiosos datos y sistemas. Para obtener más información, consulte Lista de comprobación de revisión de diseño para seguridad.

  • Comprenda las ventajas de seguridad de la arquitectura. Mediante el uso de las canalizaciones de Flux v2, Kustomize, GitOps y DevOps, los cambios operativos se aplican a través de la automatización. Puede controlar y auditar el código que implementa estas prácticas operativas aprovechando los mecanismos como la protección de ramas, las revisiones de solicitudes de incorporación de cambios y el historial inmutable. El enfoque de IaC elimina la necesidad de administrar los permisos para acceder a la infraestructura y admite el principio de privilegios mínimos. Flux facilita la administración de las configuraciones multiinquilino mediante la compatibilidad con el ámbito de configuración basado en espacios de nombres.

  • Comprender el cifrado. Para ayudar a garantizar la seguridad de los datos, el servicio de configuración del clúster almacena los datos de recursos de configuración de Flux en una base de datos de Azure Cosmos DB y los cifra en reposo.

Uso de directivas de Azure y Azure Arc

Azure Arc amplía el ámbito de administración de recursos más allá de Azure. Este ámbito expandido proporciona una serie de ventajas que se aplican a los servidores físicos y virtuales. En el contexto de AKS, estas ventajas incluyen las siguientes funcionalidades de Azure Arc:

  • Gobernanza: Azure Arc aplica la gobernanza en tiempo de ejecución para los clústeres de AKS y sus pods mediante Azure Policy para Kubernetes y proporciona informes centralizados sobre el cumplimiento de directivas. Puede usar esta funcionalidad para aplicar el uso de HTTPS para el tráfico de entrada dirigido al clúster de Kubernetes o para restringir los contenedores a escuchar solo en los puertos específicos que designe.

  • Operaciones mejoradas: Azure Arc proporciona compatibilidad mejorada con la configuración automatizada del clúster a través de GitOps.

Azure Policy facilita la administración centralizada de GitOps a través de la definición de directiva de implementación de GitOps en el clúster de Kubernetes. Después de asignar esta directiva, aplica automáticamente la configuración seleccionada basada en GitOps a los clústeres de Kubernetes habilitados para Azure Arc que designe. La directiva solo se aplica si los recursos de Azure Resource Manager de los clústeres están dentro del ámbito de la asignación.

Optimización de costos

La optimización de costos se centra en formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la optimización de costes.

  • Use el de automatización que Proporciona GitOps para minimizar la sobrecarga de administración y mantenimiento. Este modelo operativo simplificado requiere menos esfuerzo para mantener y dar lugar a costos operativos reducidos.

  • Use AKS en Azure Local para aprovechar la compatibilidad integrada con el escalado automático de recursos de proceso y la mayor densidad de carga de trabajo inherente a la contenedorización. El escalado automático le permite ajustar el tamaño de la infraestructura física y acelerar las iniciativas de consolidación del centro de datos, lo que puede reducir los costos.

Excelencia operativa

La excelencia operativa abarca los procesos de las operaciones que implementan una aplicación y la mantienen en ejecución en producción. Para obtener más información, consulte la Lista de comprobación de revisión de diseño para la excelencia operativa.

  • Usar repositorios de GitOps para proporcionar un único origen de verdad que almacena todos los datos de infraestructura de clúster y aplicación de AKS. Estos repositorios pueden servir como el único componente que aplica los cambios en el clúster.

  • Aproveche la integración de GitOps con el enfoque de DevOps para la infraestructura para acortar el tiempo necesario para entregar nuevas versiones de software. También se recomienda usar Resource Manager y Azure Arc para crear un modelo operativo coherente para cargas de trabajo en contenedores locales y basadas en la nube. Para controlar las configuraciones de GitOps en distintos niveles, use Azure Policy junto con las funcionalidades de los operadores flux. Puede usar este enfoque para establecer el control en el nivel empresarial, en el nivel de un clúster de AKS individual o en el nivel de espacios de nombres específicos dentro de un clúster.

  • Cree configuraciones de GitOps cuyo ámbito sea un clúster o varios clústeres para implementar una línea base para los componentes de la infraestructura en contenedores, como controladores de entrada, mallas de servicio, productos de seguridad y soluciones de supervisión. Este enfoque puede ayudar a garantizar que los clústeres cumplan los requisitos de infraestructura de línea base.

  • Cree configuraciones de GitOps de nivel de espacio de nombres para controlar los recursos de carga de trabajo, como pods, servicios y rutas de entrada, en un nivel más granular. Este nivel de control ayuda a garantizar que las cargas de trabajo se ajusten a los estándares de aplicación. Al seguir estas instrucciones, puede asegurarse de que la implementación y administración de AKS habilitada por las aplicaciones de Azure Arc siga siendo eficaz, eficaz y rentable.

Uso de GitOps

GitOps es adecuado para administrar clústeres de AKS. Kubernetes se basa en un modelo declarativo, donde el estado del clúster y sus componentes se definen en el código. GitOps almacena este código en un repositorio de Git y lo usa para especificar el estado deseado del entorno de destino.

Los cambios de código están sujetos al control de versiones, la auditoría y las revisiones y aprobaciones opcionales. Estas revisiones y aprobaciones pueden desencadenar automáticamente actualizaciones en la infraestructura de AKS y las cargas de trabajo en contenedores. GitOps usa un modelo de extracción, donde un conjunto especializado de componentes de clúster sondea el repositorio para comprobar su estado. Cuando detecta un cambio, un componente de GitOps hospedado en AKS recupera y aplica la configuración actualizada.

GitOps minimiza significativamente la necesidad de administración directa de clústeres, lo que da como resultado un modelo operativo simplificado y una mayor seguridad. GitOps admite el principio de privilegios mínimos. Por ejemplo, GitOps quita la necesidad de modificar los clústeres manualmente a través de kubectl, por lo que se requieren menos privilegios. GitOps también proporciona comentarios tempranos sobre los cambios de directiva propuestos. Los comentarios anticipados son especialmente valiosos para los desarrolladores, ya que les ayuda a reducir el riesgo y los costos asociados a errores.

GitOps simplifica el proceso de estandarizar las configuraciones de clúster en toda la organización para cumplir los requisitos de cumplimiento y gobernanza. Puede definir una configuración de línea base para aplicar a todos los clústeres y sus componentes, como directivas de red, enlaces de roles y directivas de seguridad de pod. Para aplicar esa configuración en todos los clústeres habilitados para Azure Arc, use Azure Policy mediante el destino de grupos de recursos o suscripciones. Estas directivas se aplican automáticamente a los recursos existentes y a los recursos creados después de la asignación de directiva.

GitOps vincula el clúster a uno o varios repositorios de Git. Cada repositorio puede describir distintos aspectos de la configuración del clúster. Este modelo declarativo facilita la automatización para el aprovisionamiento y la administración de recursos de Kubernetes, como espacios de nombres e implementaciones, a través de sus archivos de manifiesto. También puede usar gráficos de Helm junto con Flux v2 y Kustomize para automatizar la implementación de aplicaciones en contenedores o usar archivos Kustomize que describen cambios específicos del entorno.

Uso de Flux

Flux funciona como un operador de Kubernetes. Usa un conjunto de controladores y las API declarativas correspondientes. Los controladores administran un conjunto de recursos personalizados que funcionan conjuntamente para proporcionar la funcionalidad prevista.

GitOps está habilitado en un clúster de Kubernetes habilitado para Azure Arc como una extensión de clúster de Microsoft.KubernetesConfiguration/extensions/microsoft.flux. Después de instalar la microsoft.flux extensión de clúster, puede crear uno o varios fluxConfigurations recursos que sincronicen el contenido de los orígenes de configuración con el clúster y concilien el clúster a un estado deseado.

De forma predeterminada, la microsoft.flux extensión instala los controladores Flux (Source, Kustomize, Helm y Notification) y fluxConfig custom resource definitions (CRD), fluxconfig-agenty fluxconfig-controller. También puede elegir cuál de estos controladores desea instalar y, opcionalmente, puede instalar los controladores flux image-automation y image-reflector, lo que facilita la actualización y recuperación de imágenes de Docker.

Al crear un recurso de fluxConfigurations, los valores proporcionados para los parámetros, como el repositorio de Git de destino, se usan para crear y configurar los objetos de Kubernetes que habilitan la funcionalidad de GitOps en el clúster.

Al implementar y configurar extensiones de clúster de Flux v2, proporcionan los siguientes componentes y funcionalidades:

  • source-controller supervisa los orígenes de configuraciones personalizadas, como repositorios de Git, repositorios de Helm y servicios de almacenamiento en la nube, como depósitos S3, y sincroniza y autoriza con estos orígenes.

  • kustomize-controller supervisa los recursos personalizados basados en CRD de kustomización, que contienen manifiestos de Kubernetes y archivos YAML sin procesar. kustomize-controller aplica los manifiestos y los archivos YAML al clúster.

  • helm-controller supervisa los recursos personalizados basados en gráficos y almacenados en repositorios de Helm que source-controller se muestran.

  • notification-controller administra eventos de entrada que se originan en un repositorio de Git y eventos salientes, como los que tienen como destino Microsoft Teams o Slack.

  • FluxConfig CRD representa recursos personalizados que definen objetos de Kubernetes específicos de Flux.

  • fluxconfig-agent detecta recursos de configuración de Flux nuevos y actualizados. fluxconfig-agent inicia las actualizaciones de configuración correspondientes en el clúster y comunica los cambios de estado a Azure.

  • fluxconfig-controller supervisa los recursos personalizados fluxconfigs .

Flux proporciona las siguientes características:

Categoría Característica
de infraestructura y administración de cargas de trabajo de Administración de dependencias de implementación
Integración con el control de acceso basado en rol de Kubernetes
Evaluaciones de estado para clústeres y sus cargas de trabajo
Actualizaciones automatizadas de imágenes de contenedor en Git, incluido el examen de imágenes y la aplicación de revisiones
Interoperabilidad con proveedores de API de clúster
seguridad y gobernanza de Alertas a sistemas externos a través de remitentes de webhook
Validación controlada por directivas, incluida la compatibilidad con Open Policy Agent Gatekeeper
Examen y aplicación de revisiones de imágenes de contenedor
Alertas a sistemas externos (a través de remitentes de webhook)
integración con otros flujos de GitOps Integración con una variedad de proveedores de Git, como GitHub, GitLab y Bitbucket
Interoperabilidad con proveedores de flujo de trabajo, incluidas acciones de GitHub

Para más información, consulte configuraciones de GitOps Flux v2 con AKS y Kubernetes habilitado para Azure Arc.

Eficiencia del rendimiento

La eficiencia del rendimiento hace referencia a la capacidad de escalado de la carga de trabajo para satisfacer las demandas de los usuarios de forma eficaz. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la eficiencia del rendimiento.

Las cargas de trabajo de clúster se benefician de la escalabilidad y la agilidad inherentes a la plataforma de Kubernetes. Flux v2 proporciona más agilidad, lo que reduce el tiempo necesario para la entrega de software de un extremo a otro.

Colaboradores

Microsoft mantiene este artículo. Los colaboradores siguientes escribieron este artículo.

Autores principales:

Otros colaboradores:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes