Configuraciones de Flux v2 de GitOps con Kubernetes habilitado para Azure Arc

Azure proporciona funcionalidad de administración de configuración mediante GitOps en clústeres de Kubernetes habilitado para Azure Arc y de Azure Kubernetes Service (AKS). Puede habilitar y usar GitOps fácilmente en estos clústeres.

Con GitOps, se declara el estado deseado de los clústeres de Kubernetes en archivos en repositorios de Git. Los repositorios de Git pueden contener los siguientes archivos:

Dado que estos archivos se almacenan en un repositorio de Git, se les realiza un control de versiones y se realiza un seguimiento sencillo de los cambios entre versiones. Los controladores de Kubernetes se ejecutan en los clústeres y concilian continuamente el estado del clúster con el estado deseado declarado en el repositorio de Git. Estos operadores extraen los archivos de los repositorios de Git y aplican el estado deseado a los clústeres. Los operadores también garantizan continuamente que el clúster permanece en el estado deseado.

GitOps en Kubernetes habilitado para Azure Arc o en Azure Kubernetes Service utiliza Flux, un popular conjunto de herramientas de código abierto. Flux proporciona compatibilidad con orígenes de archivos comunes (repositorios de Git y Helm, cubos, Azure Blob Storage) y tipos de plantilla (YAML, Helm y Kustomize). Flux también admite la administración de dependencias multiinquilino e implementación, entre otras características.

Extensión de clúster de Flux

Diagrama que muestra la instalación de la extensión Flux para un clúster de Kubernetes habilitado para Azure Arc.

Diagrama que muestra la instalación de la extensión Flux para un clúster de Azure Kubernetes Service.

GitOps está habilitado en un clúster de Kubernetes habilitado para Azure Arc o de AKS como un Microsoft.KubernetesConfiguration/extensions/microsoft.fluxrecurso de extensión de clúster. La extensión microsoft.flux debe instalarse en el clúster antes de que uno o más fluxConfigurations puedan crearse. La extensión se instalará automáticamente cuando cree el primer Microsoft.KubernetesConfiguration/fluxConfigurations en un clúster, o puede instalarla manualmente mediante el portal, la CLI de Azure (az k8s-extension create --extensionType=microsoft.flux), una plantilla de ARM o la API REST.

Compatibilidad con versiones

Se admiten tanto la versión más reciente de la extensión Flux v2 como las dos versiones anteriores (N-2). Por lo general, se recomienda usar la versión más reciente de la extensión.

Controladores

La extensión microsoft.flux instala por defecto los controladores de Flux (Source, Kustomize, Helm, Notification) y el CRD de FluxConfig, fluxconfig-agent y fluxconfig-controller. Puede controlar cuál de estos controladores está instalado y, opcionalmente, puede instalar los controladores flux image-automation e image-reflector, que proporcionan funcionalidad en torno a la actualización y recuperación de imágenes de Docker.

  • Controlador Source de Flux: vigila los recursos personalizados source.toolkit.fluxcd.io. Controla la sincronización entre los repositorios de Git, los repositorios de Helm, buckets y Azure Blob Storage. Controla la autorización con el origen de git privado, repositorios de Helm y cuentas de Azure Blob Storage. Saca a la superficie los cambios más recientes en el origen a través de un archivo de nivel de archivo tar.

  • Controlador Kustomize de Flux: vigila los recursos personalizados kustomization.toolkit.fluxcd.io. Aplica archivos YAML sin procesar o Kustomize desde el origen al clúster.

  • Controlador Helm de Flux: vigila los recursos personalizadoshelm.toolkit.fluxcd.io. Recupera el gráfico asociado del origen del repositorio de Helm, que es sacado a la superficie por el controlador Source. Crea el recurso personalizado HelmChart y aplica el HelmRelease al clúster con dicha versión, nombre y valores definidos por el cliente.

  • Controlador Notification de Flux: vigila los recursos personalizados notification.toolkit.fluxcd.io. Recibe notificaciones de todos los controladores de Flux. Inserta notificaciones en puntos de conexión de webhook definidos por el usuario.

  • Definiciones de recursos personalizados de Flux:

    • kustomizations.kustomize.toolkit.fluxcd.io
    • imagepolicies.image.toolkit.fluxcd.io
    • imagerepositories.image.toolkit.fluxcd.io
    • imageupdateautomations.image.toolkit.fluxcd.io
    • alerts.notification.toolkit.fluxcd.io
    • providers.notification.toolkit.fluxcd.io
    • receivers.notification.toolkit.fluxcd.io
    • buckets.source.toolkit.fluxcd.io
    • gitrepositories.source.toolkit.fluxcd.io
    • helmcharts.source.toolkit.fluxcd.io
    • helmrepositories.source.toolkit.fluxcd.io
    • helmreleases.helm.toolkit.fluxcd.io
    • fluxconfigs.clusterconfig.azure.com
  • FluxConfig CRD: definición de recursos personalizados para fluxconfigs.clusterconfig.azure.com recursos personalizados que definen FluxConfig objetos de Kubernetes.

  • fluxconfig-agent: responsable de vigilar a Azure para los recursos nuevos o actualizados de fluxConfigurations, y de iniciar la configuración de Flux asociada en el clúster. Además, es responsable de insertar los cambios de estado de Flux en el clúster de nuevo en Azure para cada recurso fluxConfigurations.

  • fluxconfig-controller: vigila los recursos personalizados fluxconfigs.clusterconfig.azure.com y responde a los cambios con la configuración nueva o actualizada de la maquinaria de GitOps en el clúster.

Nota

La extensión microsoft.flux se instala en el espacio de nombres flux-system y su ámbito es todo el clúster. La opción para instalar esta extensión en el ámbito del espacio de nombres no está disponible. Se producirá un error 400 al intentar instalar en el ámbito del espacio de nombres.

Configuraciones de Flux

Diagrama que muestra la instalación de la configuración de Flux en un clúster de Kubernetes habilitado para Azure Arc o en Azure Kubernetes Service.

Puede crear recursos de configuración de Flux (Microsoft.KubernetesConfiguration/fluxConfigurations) para habilitar la administración de GitOps del clúster desde los repositorios de Git, los orígenes de bucket o Azure Blob Storage. Cuando se crea un recurso fluxConfigurations, los valores que se suministran para los parámetros, como el repositorio de Git de destino, se usan para crear y configurar los objetos de Kubernetes que habilitan el proceso de GitOps en ese clúster. El servicio de configuración del clúster almacena los datos del recurso fluxConfigurations cifrados y en reposo en una base de datos de Azure Cosmos DB, para garantizar su confidencialidad.

Los agentes fluxconfig-agent y fluxconfig-controller, instalados con la extensión microsoft.flux, administran el proceso de configuración de GitOps.

fluxconfig-agent es el responsable de:

  • Sondear el servicio del plano de datos de configuración de Kubernetes para obtener recursos fluxConfigurations nuevos o actualizados.
  • Crear o actualizar recursos personalizados FluxConfig en el clúster con la información de configuración.
  • Vigilar los recursos personalizados FluxConfig e insertar de nuevo los cambios de estado en los recursos de Azure fluxConfiguration asociados.

fluxconfig-controller es el responsable de:

  • Vigilar las actualizaciones de estado de los recursos personalizados de Flux creados por el administrado fluxConfigurations.
  • Crear un par de claves pública y privada que existen durante la vigencia de fluxConfigurations. Esta clave se usa para la autenticación si la dirección URL está basada en SSH y si el usuario no proporciona su propia clave privada durante la creación de la configuración.
  • Crea un secreto de autenticación personalizado basado en los datos private-key/http basic-auth/known-hosts/no-auth proporcionados por el usuario.
  • Configura RBAC (cuenta de servicio aprovisionada, enlace de roles creado/asignado, rol creado o asignado).
  • Crea un recurso personalizado GitRepository o Bucket y recursos personalizados Kustomization a partir de la información del recurso personalizado FluxConfig.

Cada recurso fluxConfigurations en Azure se asociará en un clúster de Kubernetes con un recurso personalizado GitRepository o Bucket de Flux y uno o varios recursos personalizados Kustomization. Al crear un fluxConfigurations recurso, especificará, entre otras información, la dirección URL del origen (repositorio de Git, Bucket o Azure Blob Storage) y el destino de sincronización en el origen para cada Kustomization. Puede configurar dependencias entre recursos personalizados Kustomization para controlar la secuenciación de la implementación. Además, puede crear varios recursos fluxConfigurations con ámbito de espacio de nombres en el mismo clúster para diferentes aplicaciones y equipos de aplicaciones.

Nota

fluxconfig-agent supervisa los recursos fluxConfiguration nuevos o actualizados en Azure. El agente requiere conectividad a Azure para el estado deseado de que fluxConfiguration se aplique al clúster. Si el agente no puede conectarse a Azure, habrá un retraso en la realización de los cambios en el clúster hasta que el agente pueda conectarse. Si el clúster está desconectado de Azure durante más de 48 horas, se agotará el tiempo de espera de la solicitud al clúster y los cambios se tendrán que volver a aplicar en Azure.

Las entradas confidenciales del cliente, como la clave privada y el token/contraseña, se almacenan durante menos de 48 horas en el servicio de configuración de Kubernetes. Si actualiza cualquiera de estos valores en Azure, asegúrese de que los clústeres se conecten con Azure en un plazo de 48 horas.

Si ha agregado compatibilidad con el vínculo privado a un clúster de Kubernetes habilitado para Azure Arc, la extensión microsoft.flux funciona de serie con la comunicación a Azure. Para las conexiones con el repositorio de GIT, el repositorio de Helm o cualquier otro punto de conexión necesario para implementar los manifiestos de Kubernetes, tendrá que aprovisionar estos puntos de conexión detrás del firewall o enumerarlos en el firewall para que el controlador de origen de Flux pueda acceder correctamente a ellos.

Residencia de datos

El servicio Azure GitOps (Azure Kubernetes Configuration Management) almacena o procesa los datos de los clientes. De manera predeterminada, los datos del cliente se replican en la región emparejada. Para las regiones de Singapur, Este de Asia y Sur de Brasil, todos los datos de los clientes se almacenan y procesan en la región.

Aplicación de configuraciones de Flux a gran escala

Puesto que Azure Resource Manager administra las configuraciones, puede automatizar la creación de la misma configuración en todos los recursos de Azure Kubernetes Service y de Kubernetes habilitado para Azure Arc mediante Azure Policy, en el ámbito de una suscripción o de un grupo de recursos. Esta aplicación a gran escala garantiza que las configuraciones específicas se aplicarán de forma coherente en todos los grupos de clústeres.

Aprenda a usar las directivas integradas para Flux v2.

Pasos siguientes

Avance al siguiente tutorial para aprender a habilitar GitOps en los clústeres de AKS o de Kubernetes habilitado para Azure Arc: