Definición de estrategias de actualización reutilizables mediante Fleet Manager de Azure Kubernetes

Los administradores pueden controlar la secuencia de actualizaciones de los clústeres administrados por Flota mediante la definición de una serie de fases y grupos. Pueden configurar cuándo deben producirse aprobaciones y pausas dentro de esas fases y grupos. Toda la configuración se puede guardar como una estrategia de actualización que se puede administrar independientemente de las ejecuciones de actualizaciones o las actualizaciones automáticas, lo que permite reutilizar las estrategias según sea necesario.

En este artículo se explica cómo definir estrategias de actualización mediante grupos y fases.

Diagrama que muestra una estrategia de actualización de ejemplo que contiene dos fases de actualización. Cada fase de actualización contiene dos grupos de actualizaciones. Cada grupo de actualizaciones contiene dos clústeres de miembros.

Requisitos previos

  • Lea la Introducción conceptual de las actualizaciones de Flota, que proporciona una explicación de las ejecuciones de actualizaciones, las fases, los grupos y las estrategias a las que se hace referencia en esta guía.

  • Debe tener un recurso Fleet con uno o varios clústeres miembro. Si no es así, siga el inicio rápido para crear un recurso Fleet y combinar clústeres de Azure Kubernetes Service (AKS) como miembros.

  • Establezca estas variables de entorno:

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export CLUSTERID=<aks-cluster-resource-id>
    export STRATEGY=<strategy-name>
    
  • Si sigue las instrucciones de la CLI de Azure de este artículo, necesita la versión 2.70.0 o posterior de la CLI de Azure instalada. Para la instalación o la actualización, consulte Instalación de la CLI de Azure.

  • También necesita la versión 1.6.0 o posterior de la extensión de la fleet CLI de Azure, que puede instalar mediante la ejecución del siguiente comando:

    az extension add --name fleet
    

    Ejecute el comando az extension update para actualizar a la versión más reciente de la extensión publicada:

    az extension update --name fleet
    

Selección de clústeres para la estrategia

Hay dos maneras de seleccionar qué clústeres se incluyen en cada fase y grupo de la estrategia de actualización para controlar la secuencia de actualizaciones:

  • Etiquetas de miembro (recomendadas): asigne etiquetas a cada miembro de flota y úselas memberSelector para seleccionar miembros por esas etiquetas. Cada miembro puede tener varias etiquetas.
  • Grupos de actualización: asigne un grupo de actualizaciones a cada miembro de flota y, a continuación, defina grupos en la estrategia que coincidan con esos nombres de grupo. Cada miembro solo puede pertenecer a un grupo.

Creación de una estrategia de actualización mediante selectores de miembros (versión preliminar)

Las etiquetas de miembro son el enfoque recomendado para seleccionar clústeres en las estrategias de actualización, ya que proporcionan más flexibilidad. Para obtener detalles conceptuales, consulte Agrupación de clústeres mediante etiquetas de miembro.

Importante

Las características en vista previa de Azure Kubernetes Fleet Manager están disponibles en autoservicio y de manera opcional. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de Azure Kubernetes Fleet Manager reciben cobertura parcial del soporte al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción.

Aplicación de etiquetas en clústeres de miembros

Aplicar etiquetas al agregar un clúster miembro a la flota

Aplique etiquetas a los miembros de la flota mediante el az fleet member create comando . En el ejemplo siguiente se aplican dos etiquetas al clúster miembro: env=staging y tier=frontend:

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --labels "env=staging tier=frontend"

Aplicar etiquetas a un miembro de flota existente

Aplicar etiquetas a los miembros de la flota mediante el az fleet member update comando

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --labels "env=staging tier=frontend"

Creación de una estrategia de actualización

Una estrategia de actualización consta de una o varias fases, donde una fase puede contener uno o varios grupos de actualizaciones.

  1. Cree un archivo JSON para definir las fases y grupos de la ejecución de la actualización. Las fases se ejecutan secuencialmente en el orden en que aparecen en el archivo JSON. Los grupos se ejecutan en paralelo dentro de cada fase. El siguiente archivo de ejemplo (example-labels-strategy.json) define una estrategia con dos fases mediante memberSelector para seleccionar clústeres por sus etiquetas e incluye la configuración opcional maxConcurrency :

    • La staging etapa utiliza un memberSelector a nivel de etapa para seleccionar todos los clústeres con la etiqueta env=staging y crear un grupo implícito.
    • La production fase utiliza un memberSelector a nivel de fase para filtrar previamente todos los clústeres con la etiqueta env=production y, a continuación, define dos grupos, cada uno con su propio memberSelector para seleccionar clústeres por la etiqueta tier.

    Cuando se define memberSelector en un grupo, el campo name del grupo solo sirve como identificador visual para los informes de estado y el registro de eventos y ya no se usa para la selección de miembros de la flota según los cambios en el grupo.

    {
        "stages": [
            {
                "name": "staging",
                "memberSelector": { "byLabel": "env=staging" },
                "maxConcurrency": "1",
                "afterStageWaitInSeconds": 600
            },
            {
                "name": "production",
                "memberSelector": { "byLabel": "env=production" },
                "maxConcurrency": "4",
                "groups": [
                    {
                        "name": "frontend",
                        "memberSelector": { "byLabel": "tier=frontend" },
                        "maxConcurrency": "3"
                    },
                    {
                        "name": "backend",
                        "memberSelector": { "byLabel": "tier=backend" },
                        "maxConcurrency": "3"
                    }
                ]
            }
        ]
    }
    

Nota:

El maxConcurrency campo es opcional y controla el número de clústeres que se pueden actualizar simultáneamente en el nivel de fase o grupo. Use un valor mayor para actualizar clústeres más rápido a través de la flota o un valor menor para un lanzamiento más controlado que limite el radio de explosión si surgen problemas.

Cuando una fase aplica un memberSelector sin grupos (como staging), todos los miembros correspondientes forman un único grupo implícito y la simultaneidad se controla directamente a través del parámetro maxConcurrency de la fase. Cuando se definen grupos (como production), el nivel maxConcurrency de fase actúa como un límite máximo general en todos los grupos.

En este ejemplo, la fase staging define el parámetro maxConcurrency como "1", para que los clústeres de preproducción se actualizan uno a uno. La fase production permite hasta "4" clústeres a la vez, con los grupos de frontend y de backend, cada uno con un límite de "3".

Los valores pueden ser un entero fijo (por ejemplo, "3") o un porcentaje (por ejemplo, "50%"). Si se omite, el sistema aplica valores predeterminados. Para más información sobre cómo se resuelven estos valores y sus límites superiores, consulte Simultaneidad máxima (versión preliminar).

  1. Cree una nueva estrategia de actualización con el comando az fleet updatestrategy create con la marca --stages establecida en el nombre del archivo JSON.

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-labels-strategy.json
    

Creación de una estrategia de actualización mediante grupos de actualizaciones

Los clústeres también se pueden seleccionar en las estrategias de actualización asignandolos a un único grupo de actualizaciones. Puede definir una estrategia de actualización que asigne estos grupos de actualizaciones a fases. Dentro de una fase de actualización, las actualizaciones se aplican a cada grupo de actualizaciones en paralelo. Dentro de un grupo de actualizaciones, los clústeres miembro se actualizan secuencialmente.

Nota:

Un miembro de flota solo puede formar parte de un grupo de actualizaciones, pero un grupo de actualizaciones puede tener varios miembros de la flota asignados. Un grupo de actualizaciones no es un tipo de recurso independiente. Los grupos de actualización son solo cadenas que representan referencias de los miembros de la flota. Por lo tanto, si todos los miembros de la flota con referencias a un grupo de actualizaciones común se eliminan, ese grupo de actualizaciones específico deja de existir también.

Asignación de clústeres para actualizar grupos

Asigne al grupo al agregar un clúster miembro a la flota

  1. En Azure Portal, vaya al recurso de Azure Kubernetes Fleet Manager.

  2. En el menú del servicio, en Configuración, seleccione Clústeres de miembros>Agregar.

    Recorte de pantalla de la página de Azure Portal para Azure Kubernetes Fleet Manager para agregar clústeres miembros.

  3. Seleccione el clúster que desea agregar y, a continuación, seleccione Siguiente: revisar y agregar.

  4. Escriba el nombre del grupo de actualizaciones al que desea asignar el clúster y, a continuación, seleccione Agregar.

    Recorte de pantalla de la página de Azure Portal para revisión de Azure Kubernetes Fleet Manager y adición de pasos para los clústeres miembros.

Asignar un miembro de flota existente a un grupo de actualizaciones

  1. En Azure Portal, vaya al recurso de Azure Kubernetes Fleet Manager.

  2. En el menú del servicio, en Configuración, seleccione Clústeres de miembros.

  3. Seleccione los clústeres que desea asignar a un grupo de actualización y luego seleccione Asignar grupo de actualización

    Captura de pantalla de la página de Azure Portal para asignar clústeres de miembros existentes a un grupo.

  4. Escriba el nombre del grupo de actualizaciones al que desea asignar el clúster y, a continuación, seleccione Asignar.

    Captura de pantalla de la página de Azure Portal para los clústeres de miembros que muestra el formulario para actualizar el grupo de un clúster miembro.

Creación de una estrategia de actualización

Una estrategia de actualización consta de una o varias fases, donde una fase puede contener uno o varios grupos de actualizaciones.

  1. En Azure Portal, vaya al recurso de Azure Kubernetes Fleet Manager.

  2. En el menú de servicios, en Configuración, seleccione Actualización de varios clústeres>Estrategias, y a continuación, Crear.

  3. Escriba un nombre para la estrategia.

  4. La primera vez que vea la página, se muestra un diagrama de explicación de la estrategia de actualización que puede ayudar a visualizar cómo funcionan las estrategias.

    Captura de pantalla de Azure Portal en la que se muestra la creación de una estrategia de actualización.

  5. Seleccione Crear fase y escriba:

    • Nombre de la fase: asigne un nombre a la fase; debe ser único en todos los nombres de fase de la estrategia.
    • (Opcional) Aprobaciones de fase: seleccione esta opción si desea esperar una aprobación antes de que se inicie esta fase o después de que se complete. Para obtener más información, consulte Agregar aprobaciones para actualizar grupos y fases.
    • (Opcional) Pausar después de la fase: seleccione esta opción si desea definir una pausa antes de pasar a la siguiente fase.
    • (Opcional) Pausar duración: seleccione una duración predefinida o escriba un valor personalizado en segundos.

    Recorte de pantalla de Azure Portal en la que se muestra la creación de la fase de estrategia de actualización de Azure Kubernetes Fleet Manager.

  6. Asigne uno o varios grupos de actualización a la fase y, a continuación, seleccione Crear.

    Nota:

    El número máximo de grupos de actualizaciones en cada fase de actualización es 50.

    Recorte de pantalla de Azure Portal en la que se muestra la creación de la fase de estrategia de actualización de Azure Kubernetes Fleet Manager, seleccionando grupos de actualizaciones que se van a incluir.

Pasos siguientes

Puede usar una estrategia de actualización como parte de una ejecución de actualización manual o un perfil de actualización automática. Vea: