Use ejecuciones de implementación por fases para controlar las ubicaciones de recursos de Azure Kubernetes Fleet Manager

Se aplica a: ✔️ Fleet Manager con clúster central

Las ejecuciones de implementación por fases de ubicación de Azure Kubernetes Fleet Manager permiten un enfoque controlado para implementar cargas de trabajo de Kubernetes en varios clústeres miembro mediante un proceso por etapas. Para minimizar el riesgo, este enfoque se implementa en clústeres de destino secuencialmente, con tiempos de espera opcionales y puertas de aprobación entre fases.

En este artículo se muestra cómo crear y ejecutar ejecuciones de actualizaciones preconfiguradas para implementar cargas de trabajo progresivamente y revertirlas a versiones anteriores cuando sea necesario.

Azure Kubernetes Fleet Manager admite dos ámbitos para las actualizaciones por etapas:

  • Limitado a clúster: use ClusterStagedUpdateRun con ClusterResourcePlacement para administradores de flotas que se encarguen de los cambios a nivel de infraestructura.
  • Con ámbito de espacio de nombres: use StagedUpdateRun con ResourcePlacement para los equipos de gestión de aplicaciones que administran despliegues dentro de sus espacios de nombres específicos.

El ejemplo de este artículo demuestra cómo usar una ejecución de despliegue con recursos de ámbito de clúster. El ámbito del espacio de nombres se comporta exactamente igual con los recursos dentro del espacio de nombres.

Antes de empezar

  • Establezca estas variables de entorno:

    export SUBSCRIPTION_ID=<subscription>
    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export MEMBER_CLUSTER_1=aks-member-1
    export MEMBER_CLUSTER_2=aks-member-2
    
  • Necesita CLI de Azure instalado para completar este artículo. Para instalar o actualizar, consulte Instalar el CLI de Azure.

  • Usted necesita la CLI de Azure extensión fleet. Puede instalarlo ejecutando el 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:

    az extension update --name fleet
    
  • Si aún no la tiene instalada, puede instalar la CLI de Kubernetes (kubectl) mediante este comando:

    az aks install-cli
    

Configuración del entorno

En este artículo se utiliza Fleet Manager con un clúster central y dos clústeres miembro. Si no tiene un Fleet Manager, siga la guía de inicio rápido para crear un Fleet Manager con un clúster hub. A continuación, una como miembros los clústeres de Azure Kubernetes Service (AKS) o los clústeres de Kubernetes con Azure Arc habilitado.

Asegúrese de que los clústeres de miembros tienen las etiquetas siguientes para que haya un clúster en cada fase del lanzamiento.

nombre de miembro labels
aks-member-1 environment=canary
aks-member-2 environment=staging

Aplique etiquetas a los clústeres de miembros mediante el comando siguiente.

az fleet member update \
    --resource-group ${GROUP} \
    --fleet-name ${FLEET} \
    --name ${MEMBER_CLUSTER_1} \
    --labels environment=canary
az fleet member update \
    --resource-group ${GROUP} \
    --fleet-name ${FLEET} \
    --name ${MEMBER_CLUSTER_2} \
    --labels environment=staging
  1. En el portal de Azure, vaya a Fleet Manager.

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

  3. En la lista de clústeres miembro, seleccione un clúster. A continuación, elija Editar etiquetas en el menú de acciones.

  4. Agregue la etiqueta adecuada al clúster de miembros y, a continuación, seleccione Aplicar.

  5. Repita la repetición para cada clúster miembro.

    Captura de pantalla del portal de Azure en la que se muestra una nueva etiqueta que se agrega a un clúster miembro de Azure Fleet Manager de Kubernetes.

Preparar la carga de trabajo de Kubernetes para su ubicación

En este paso, prepara una carga de trabajo de Kubernetes en el clúster central de Fleet Manager para poder distribuirla mediante una implementación por fases en los clústeres miembro.

  1. Obtenga el archivo kubeconfig del clúster del centro de Kubernetes Fleet mediante el comando az fleet get-credentials:

    az fleet get-credentials \
        --resource-group ${GROUP} \
        --name ${FLEET}
    

    La salida debe tener un aspecto similar a lo siguiente.

    Merged "hub" as current context in /home/fleet/.kube/config
    

    Note

    Si recibe un error de tipo InvalidHubOperation con un mensaje que indica que la flota no tiene concentrador, añada un clúster de concentrador. Para más información, consulte tipo de clúster del hub de actualización.

  2. Crear un espacio de nombres en el clúster del centro del administrador de flota.

    kubectl create namespace test-app
    
  3. Guarde el siguiente código YAML como test-workload.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: test-app
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: mcr.microsoft.com/azurelinux/base/nginx:1.28@sha256:3352a36cbcab4708883a3e77b64f64159e11e1aab358c010e1c4e465dbfb4f57
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
      namespace: test-app
    spec:
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
      type: LoadBalancer
    
  4. Prepare la carga de trabajo de prueba en el clúster hub de Fleet Manager usando kubectl.

    kubectl apply -f test-workload.yaml
    
  1. En el portal de Azure, vaya a Fleet Manager.

  2. En el menú servicio, en Recursos de flota, seleccione Espacios de nombres>+ Crear.

    Note

    Si no ve Recursos de flota, su Fleet Manager no tiene un clúster central. Para obtener más información sobre cómo agregar una, consulte upgrade hub cluster type (Tipo de clúster del centro de actualización).

  3. En el menú, seleccione Espacio de nombres, escriba un nombre y, a continuación, seleccione Crear.

    Captura de pantalla del portal de Azure en la que se muestra un espacio de nombres denominado test-app que se crea en el clúster del centro de Fleet Manager.

    Después de unos instantes, la página se actualiza y el espacio de nombres aparece en la lista de espacios de nombres del clúster concentrador de Fleet Manager. Ahora está listo para hospedar los recursos que quiera distribuir entre clústeres de miembros.

  4. En la parte superior de la lista de espacios de nombres, seleccione + Crear>Aplicar un YAML y use los siguientes ejemplos.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: test-app
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: mcr.microsoft.com/azurelinux/base/nginx:1.28@sha256:3352a36cbcab4708883a3e77b64f64159e11e1aab358c010e1c4e465dbfb4f57
            ports:
            - containerPort: 80
    
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
      namespace: test-app
    spec:
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
      type: LoadBalancer
    

    Copie y pegue los ejemplos y aplíquelos uno a uno como se muestra en la siguiente imagen.

    Captura de pantalla del portal de Azure que muestra el cuadro de diálogo Aplicar con YAML rellenado con una implementación lista para aplicarse al clúster del centro de Fleet Manager.

    El espacio de nombres y sus cargas de trabajo ya están listos para distribuirse a los clústeres miembro. La implementación y el servicio no están programados en el clúster del centro de Fleet Manager.

Definición de la ordenación de clústeres mediante una estrategia de implementación

Cree una estrategia de lanzamiento para definir el orden en que los clústeres reciben los recursos. También puede agregar más controles, como tiempos de remojo y aprobaciones antes o después de cada fase. Para obtener más información, consulte Definir estrategias reutilizables de implementación de la colocación de recursos en Azure Kubernetes Fleet Manager.

  1. Guarde el siguiente código YAML como crp-two-stages-strategy.yaml.

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterStagedUpdateStrategy
    metadata:
      name: two-stages-strategy
    spec:
      stages:
        - name: staging
          labelSelector:
            matchLabels:
              environment: staging
          afterStageTasks:
            - type: TimedWait
              waitTime: 4m
        - name: canary
          labelSelector:
            matchLabels:
              environment: canary
          beforeStageTasks:
            - type: Approval
    
  2. Aplique el manifiesto de estrategia al clúster del centro de Fleet Manager.

    kubectl apply -f crp-two-stages-strategy.yaml
    
  3. Compruebe el estado del recurso de estrategia.

    kubectl get clusterstagedupdatestrategy two-stages-strategy
    

    La salida debe tener un aspecto similar a lo siguiente.

    NAME                  AGE
    two-stages-strategy   47m
    

Use el siguiente proceso para crear una estrategia que contenga las dos fases Staging y Canary con un tiempo de espera de 4 minutos y una aprobación previa para la Canary fase.

  1. En el portal de Azure, vaya a Fleet Manager.

  2. En el menú de servicio, en Recursos de flota, seleccione Ubicaciones de recursos>Estrategias de lanzamiento preconfigurado y, a continuación, Crear.

  3. Escriba un nombre para la estrategia.

  4. Seleccione el ámbito de la estrategia y elija entre de ámbito de clúster o de ámbito de espacio de nombres.

    • En Espacio de nombres con ámbito, seleccione el espacio de nombres existente en el clúster del centro de Fleet Manager donde se almacenan provisionalmente los recursos de Kubernetes que se van a distribuir.
  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.
    • (Opcional) Espere después de la fase : seleccione esta opción si desea definir una pausa antes de pasar a la siguiente fase.
    • (Opcional) Duración de espera: seleccione una duración predefinida o escriba un valor personalizado en segundos.
    • Selector de etiquetas de clúster: elija una etiqueta de clúster miembro existente que se usará para seleccionar clústeres para esta fase.
    • (Opcional) Etiqueta de ordenación de clústeres: elija una etiqueta de clúster miembro existente que se usará para ordenar los clústeres dentro de la fase.
    • (Opcional) Simultaneidad de fases: establezca el número de clústeres que se deben actualizar simultáneamente en la fase actual.

    Captura de pantalla del portal de Azure en la que se muestra una nueva fase que se agrega a una estrategia de implementación preconfigurada de colocación de Kubernetes Fleet Manager Azure.

    Note

    El número máximo de fases de cada estrategia es 31.

  6. Repita hasta que se agreguen todas las fases a la estrategia. Seleccione Crear para crear la estrategia.

    Captura de pantalla del portal de Azure que muestra una estrategia de implementación preconfigurada de colocación de Kubernetes Fleet Manager Azure con dos fases pendientes de creación.

  7. La página se actualiza y la lista muestra la estrategia recién creada.

    Captura de pantalla del portal de Azure que muestra una lista de las estrategias de implementación por fases de ubicación de Azure Kubernetes Fleet Manager.

Seleccionar clústeres mediante la ubicación de recursos

Use una ubicación de recursos para seleccionar los recursos que se van a distribuir y definir la directiva para elegir qué clústeres reciben los recursos.

Para usar una implementación por fases, establezca el tipo de implementación strategy en External para que pueda controlar la distribución de recursos mediante una implementación por fases que defina más adelante.

  1. Guarde el siguiente código YAML como crp-distribute-workload-ext.yaml.

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterResourcePlacement
    metadata:
      name: distribute-test-app
    spec:
      resourceSelectors:
        - group: ""
          kind: Namespace
          version: v1          
          name: test-app
      policy:
        placementType: PickAll
      strategy:
        type: External
    

    Importante

    Si no establece el tipo de strategy en External, la implementación de recursos comienza en cuanto aplique el manifiesto mediante una estrategia RollingUpdate.

  2. Aplique el manifiesto de ubicación al clúster central de Fleet Manager.

    kubectl apply -f crp-distribute-workload-ext.yaml
    
  3. Compruebe el estado de la ubicación del recurso.

    kubectl get clusterresourceplacement distribute-test-app
    

    La salida debe tener un aspecto similar a lo siguiente.

    NAME                  GEN   SCHEDULED   SCHEDULED-GEN   AVAILABLE   AVAILABLE-GEN   AGE
    distribute-test-app   1     True        1                                           60s
    
  1. En el portal de Azure, vaya a Fleet Manager.

  2. En el menú servicio, en Recursos de flota, seleccione Ubicación de recursos>+ Crear.

  3. En la pestaña Información básica, configure las siguientes opciones:

    • En Detalles de la ubicación, introduzca un nombre para la ubicación.

    • En Detalles del recurso, deje Ámbito como Ámbito de clúster y escriba el Tipo de versión de grupo (GVK) y el nombre del recurso que se va a distribuir. En este ejemplo, use los valores siguientes.

      group: ""
      kind: Namespace
      version: v1          
      name: test-app
      
    • En Selección de clúster miembro, en Tipo de selección de ubicación , elija Todos los clústeres.

    • En Implementación, seleccione Externo. Use la estrategia de actualización por fases para seleccionar la estrategia de despliegue que creó anteriormente.

    • Deje desactivada la casilla Iniciar lanzamiento automáticamente .

    Captura de pantalla del portal de Azure que muestra la pestaña Conceptos básicos completada para la ubicación de recursos de ámbito de clúster que usa una estrategia de actualización por fases para el despliegue.

  4. Seleccione Siguiente para revisar el manifiesto resultante ClusterResourcePlacement . Puede modificar el manifiesto si es necesario, validar mediante la opción Validar (ejecución seca) o seleccionar Revisar y crear para continuar con la confirmación final.

    Captura de pantalla del portal de Azure que muestra la pestaña Revisar YAML con una validación de ejecución seca superada para la selección de ubicación de recursos con ámbito de clúster mediante una estrategia externa para un espacio de nombres denominado test-app.

  5. Seleccione Crear para crear la ejecución de la implementación sin iniciarla.

    Captura de pantalla del portal de Azure que muestra la pestaña Revisar y crear para una ubicación de recursos con ámbito de clúster mediante un lanzamiento preconfigurado para un espacio de nombres denominado test-app.

  6. La página se actualiza y la lista Ubicaciones de recursos muestra la ubicación recién creada. Muestra el número de clústeres seleccionados y si el planificador de flotas puede cumplir la política de ubicación. Observe que el tipo de lanzamiento está establecido en Externo.

    Captura de pantalla del portal de Azure que muestra la lista de ubicaciones de recursos con una sola ubicación de recursos denominada distribute-test-app que tiene un tipo de lanzamiento externo.

Cuando usas el portal de Azure para crear una asignación con una estrategia de implementación, se crea automáticamente una ejecución de implementación por fases para ti.

Usa una implementación gradual para controlar la distribución

En este artículo, creas la implementación por fases con un state de Initialize para que puedas iniciar la implementación cuando quieras, en lugar de que la ejecución se inicie inmediatamente al aplicar el manifiesto. Establezca el estado en Run para iniciarse inmediatamente.

  1. Guarde el siguiente código YAML como staged-rollout-test-app.yaml.

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterStagedUpdateRun
    metadata:
      name: staged-rollout-test-app
    spec:
      placementName: distribute-test-app
      stagedRolloutStrategyName: two-stages-strategy
      state: Initialize
    

    Note

    Si no establece el tipo de strategy en External, la implementación de recursos comienza en cuanto aplique el manifiesto mediante una estrategia RollingUpdate.

  2. Aplique el manifiesto de despliegue por fases al clúster central de Fleet Manager.

    kubectl apply -f staged-rollout-test-app.yaml
    
  3. Compruebe el estado del recurso de ejecución del despliegue. Se inicializa pero no progresa.

    kubectl get clusterstagedupdaterun staged-rollout-test-app
    

    La salida debe tener un aspecto similar a lo siguiente.

    NAME                      PLACEMENT             RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
    staged-rollout-test-app   distribute-test-app                             0                       True                                    101s
    

Gestión del progreso del despliegue por fases

Una vez que tenga todos los recursos listos, ahora puede controlar el lanzamiento de recursos en clústeres de miembros.

Iniciar un despliegue gradual

Para iniciar un despliegue por fases, modifique el campo state de la especificación a Run.

kubectl patch clusterstagedupdaterun staged-rollout-test-app --type merge -p '{"spec":{"state":"Run"}}'

Compruebe el estado del recurso de ejecución del despliegue. Se inicializa pero no progresa.

kubectl get clusterstagedupdaterun staged-rollout-test-app

La salida debe ser similar a la siguiente, teniendo en cuenta que el progreso es ahora True.

NAME                      PLACEMENT             RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
staged-rollout-test-app   distribute-test-app                             0                       True          True                      36m

Note

Cuando el despliegue llega a una tarea de tipo TimedWait o Approval, el estado de progreso cambia a False. Use describe para determinar el motivo de la pausa.

Vea el estado detallado de la implementación describiendo el ClusterStagedUpdateRun.

kubectl describe clusterstagedupdaterun staged-rollout-test-app

En la respuesta, revise Status, observando Conditions y Stages Status para comprender qué fase y clúster se están procesando actualmente, o si hay una tarea TimedWait o Approval activa en este momento.

Name:         staged-rollout-test-app
Namespace:
Labels:       <none>
Annotations:  <none>
API Version:  placement.kubernetes-fleet.io/v1
Kind:         ClusterStagedUpdateRun
Metadata:
  Creation Timestamp:  2026-07-27T04:25:14Z
  Finalizers:
    kubernetes-fleet.io/stagedupdaterun-finalizer
  Generation:        3
  Resource Version:  2684410
  UID:               5e20d0a1-515a-4f1c-b566-89676100a968
Spec:
  Placement Name:                distribute-test-app
  Resource Snapshot Index:
  Staged Rollout Strategy Name:  two-stages-strategy
  State:                         Run
Status:
  Applied Strategy:
    Comparison Option:  PartialComparison
    Type:               ClientSideApply
    When To Apply:      Always
    When To Take Over:  Always
  Conditions:
    Last Transition Time:  2026-07-27T04:25:14Z
    Message:               The UpdateRun initialized successfully
    Observed Generation:   3
    Reason:                UpdateRunInitializedSuccessfully
    Status:                True
    Type:                  Initialized
    Last Transition Time:  2026-07-27T05:01:56Z
    Message:               The update run is making progress
    Observed Generation:   3
    Reason:                UpdateRunProgressing
    Status:                True
    Type:                  Progressing
  Deletion Stage Status:
    Clusters:
    Stage Name:                   kubernetes-fleet.io/deleteStage
  Policy Observed Cluster Count:  2
  Policy Snapshot Index Used:     0
  Resource Snapshot Index Used:   0
  Staged Update Strategy Snapshot:
    Stages:
      After Stage Tasks:
        Type:       TimedWait
        Wait Time:  1h0m0s
      Label Selector:
        Match Labels:
          Environment:  staging
      Max Concurrency:  1
      Name:             staging
      Before Stage Tasks:
        Type:  Approval
      Label Selector:
        Match Labels:
          Environment:  canary
      Max Concurrency:  1
      Name:             canary
  Stages Status:
    After Stage Task Status:
      Type:  TimedWait
    Clusters:
      Cluster Name:  aks-place-member-02-fm
      Conditions:
        Last Transition Time:  2026-07-27T05:01:56Z
        Message:               Cluster update started
        Observed Generation:   3
        Reason:                ClusterUpdatingStarted
        Status:                True
        Type:                  Started
    Conditions:
      Last Transition Time:  2026-07-27T05:01:56Z
      Message:               Clusters in the stage started updating
      Observed Generation:   3
      Reason:                StageUpdatingStarted
      Status:                True
      Type:                  Progressing
    Stage Name:              staging
    Start Time:              2026-07-27T05:01:56Z
    Before Stage Task Status:
      Approval Request Name:  staged-rollout-test-app-before-canary
      Type:                   Approval
    Clusters:
      Cluster Name:  aks-place-member-01-fm
    Stage Name:      canary
Events:              <none>
  1. En el portal de Azure, vaya a Fleet Manager.

  2. En el menú de servicio, en la sección Recursos de flota, seleccione Ejecuciones de implementación gradual.

  3. En la lista, seleccione la ejecución de lanzamiento preconfigurada que se creó automáticamente en el paso anterior y, a continuación, seleccione Iniciar en el menú de acciones.

    Captura de pantalla del portal de Azure que muestra la lista de ejecuciones de implementación gradual con una única ejecución de implementación gradual seleccionada.

  4. La página se actualiza y la lista de ejecuciones de implementación por fases muestra la ejecución de implementación por fases con el estado Progressing, y se muestra la fase que se está ejecutando actualmente.

    Captura de pantalla del portal de Azure que muestra la lista de ejecuciones de implementación gradual con una sola ejecución de implementación gradual en curso y que se encuentra en la fase llamada «staging».

  5. Cuando el despliegue alcanza un TimedWait, el estado cambia a En espera. Puede colocar el cursor sobre el icono de información para confirmar que este estado se debe a TimedWait.

    Captura de pantalla del portal de Azure que muestra la lista de ejecuciones de implementación por fases con una única ejecución de implementación por fases en espera. Hay una ventana emergente informativa que confirma que la ejecución está en espera de que finalice el tiempo de espera.

Detener un despliegue por fases

Para detener un despliegue gradual en ejecución, aplique un parche al campo state de spec para establecerlo en Stop. Esta acción detiene de forma ordenada la ejecución de la implementación gradual, de modo que los clústeres con actualizaciones en curso terminen sus actualizaciones antes de que se detenga el proceso.

kubectl patch clusterstagedupdaterun staged-rollout-test-app --type merge -p '{"spec":{"state":"Stop"}}'

La ejecución de la actualización por etapas se ha inicializado, pero ya no está en ejecución.

kubectl get clusterstagedupdaterun staged-rollout-test-app

La salida debe tener un aspecto similar al siguiente, teniendo en cuenta que progressing ahora Falsees .

NAME                      PLACEMENT             RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
staged-rollout-test-app   distribute-test-app                             0                       True          False                     46m

Para detener una implementación por fases en curso, siga estos pasos. Esta acción detiene de forma ordenada la implementación por fases, de modo que los clústeres en proceso completen sus actualizaciones antes de que se detenga el proceso.

  1. En el portal de Azure, vaya a Fleet Manager.

  2. En el menú de servicio, en la sección Recursos de flota, seleccione Ejecuciones de implementación gradual.

  3. En la lista, seleccione la ejecución de lanzamiento preconfigurada que desea detener. A continuación, elija Detener en el menú de acciones.

    Captura de pantalla del portal de Azure que muestra la lista de ejecuciones de implementación por fases con una sola ejecución de implementación por fases en curso.

  4. La página se actualiza y la lista de ejecuciones de lanzamiento preconfigurado muestra la ejecución de lanzamiento preconfigurada con el estado Detenido.

    Captura de pantalla del portal de Azure que muestra la lista de ejecuciones de implementación por fases con una única ejecución de implementación por fases que muestra el estado Detenido.

Puede reiniciar el lanzamiento siguiendo las instrucciones de Iniciar un lanzamiento preconfigurado.

Note

Puede detener un despliegue en cualquier momento. Los clústeres en curso continúan hasta completarse. Las aprobaciones pendientes no se ven afectadas.

Borrar una aprobación de fase pendiente

Agregue tareas de aprobación antes o después de una fase. Estas tareas requieren una acción explícita para borrar.

Cuando una ejecución de lanzamiento preconfigurada alcanza una aprobación, crea una solicitud de aprobación (ClusterApprovalRequest o ApprovalRequest). Debe aplicar un parche a esta solicitud. Después de aplicarle el parche, la ejecución del despliegue continúa.

Compruebe si hay aprobaciones pendientes mediante los siguientes comandos.

kubectl get clusterapprovalrequest

Al comprobar si hay recursos pendientes ApprovalRequest , asegúrese de proporcionar el espacio de nombres en el que residen los recursos.

kubectl get clusterapprovalrequest -n test-app

Si recibe una respuesta de No resources found, actualmente no hay aprobaciones de ámbito de clúster pendientes.

Si hay aprobaciones pendientes, la respuesta debe ser similar al ejemplo siguiente.

NAME                                    UPDATE-RUN                STAGE    APPROVED   AGE
staged-rollout-test-app-before-canary   staged-rollout-test-app   canary              4m13s

Note

El sistema genera nombres de recursos de solicitud de aprobación con el formato {update-run-name}-{before|after}-{stage-name}.

Puede aprobar el ClusterApprovalRequest creando un archivo de parche JSON y aplicándolo.

cat << EOF > approval.json
"status": {
    "conditions": [
        {
            "lastTransitionTime": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
            "message": "lgtm",
            "observedGeneration": 1,
            "reason": "testPassed",
            "status": "True",
            "type": "Approved"
        }
    ]
}
EOF

Note

Asegúrese de que el observedGeneration coincida con la generación del objeto de aprobación. Este valor suele ser 1.

Envíe una solicitud de revisión para aprobar la solicitud mediante el archivo JSON que creó.

kubectl patch clusterapprovalrequests staged-rollout-test-app-before-canary --type='merge' --subresource=status --patch-file approval.json

Compruebe que la aprobación se aplicó a la solicitud.

kubectl get clusterapprovalrequest staged-rollout-test-app-before-canary

La salida debe tener un aspecto similar a lo siguiente. Tenga en cuenta que APPROVED está establecido en True.

NAME                                    UPDATE-RUN                STAGE    APPROVED   AGE
staged-rollout-test-app-before-canary   staged-rollout-test-app   canary   True       6m

La ejecución del despliegue continúa.

kubectl get clusterstagedupdaterun staged-rollout-test-app

La salida debe ser similar a la siguiente, que muestra una ejecución completada con SUCCEEDED establecida en True.

NAME                      PLACEMENT             RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
staged-rollout-test-app   distribute-test-app                             0                       True          False         True        9m

Cuando una ejecución de implementación por fases llega a un paso de aprobación, use el siguiente proceso para resolver la aprobación y permitir que la ejecución continúe.

  1. En el portal de Azure, vaya a Fleet Manager.

  2. En el menú de servicio, en la sección Recursos de flota, seleccione Ejecuciones de implementación gradual.

  3. En la lista, busque la ejecución de lanzamiento preconfigurada que tiene un estado de Aprobación pendiente.

    Captura de pantalla del portal de Azure que muestra la lista de ejecuciones de implementación por fases con una única ejecución de implementación por fases pendiente de aprobación.

  4. Puede abrir el cuadro de diálogo de aprobación desde cualquiera de las tres ubicaciones:

    • Integrado en la vista de lista de ejecuciones de la implementación gradual (mostrada anteriormente).
    • Desde la vista de detalles de la ejecución de la implementación por fases:
      • En el campo State de la sección Datos esenciales.
      • Integrado en la vista Escenario.

    Captura de pantalla del portal de Azure que muestra la vista de detalles de la ejecución de una implementación gradual con dos enlaces de aprobación pendientes.

  5. Seleccione una opción para abrir el cuadro de diálogo Aprobación . Escriba un mensaje opcional y elija Aprobar.

    Captura de pantalla del portal de Azure que muestra el cuadro de diálogo de aprobación de la ejecución de implementación gradual con un campo de mensaje rellenado.

  6. La página se actualiza y la lista de ejecuciones de implementación gradual muestra la ejecución de implementación gradual con el estado En curso.

    Captura de pantalla del portal de Azure que muestra cómo avanza la aprobación de la ejecución de la implementación por fases en la fase canary después de la aprobación.

  7. La ejecución de implementación gradual continúa hasta que finaliza, y la lista Ejecuciones de implementación gradual muestra la ejecución de implementación gradual con el estado Correcto.

    Captura de pantalla del portal de Azure que muestra la ejecución de lanzamiento preconfigurada que se ha completado correctamente.

Eliminar una ejecución de despliegue

Elimine un despliegue por fases eliminando el recurso de Kubernetes en el clúster central de Fleet Manager.

kubectl delete clusterstagedupdaterun staged-rollout-test-app
  1. En el portal de Azure, vaya a Fleet Manager.

  2. En el menú de servicio, en la sección Recursos de flota, seleccione Ejecuciones de implementación gradual.

  3. En la lista, seleccione la ejecución de lanzamiento preconfigurada para eliminar y, a continuación, elija Eliminar en el menú de acciones.

  4. En el cuadro de diálogo Eliminar , confirme que el recurso es correcto y, a continuación, seleccione Confirmar eliminación. Por último, elija Eliminar.

    Captura de pantalla del portal de Azure que muestra el cuadro de diálogo Eliminar para una ejecución de lanzamiento preconfigurada seleccionada.

  5. La página se vuelve a cargar y la ejecución eliminada de la implementación gradual ya no aparece.

Note

Eliminar una ejecución completada de implementación por fases no elimina los recursos implementados. Para quitar los recursos colocados, debe eliminar la ubicación del recurso.

Pasos siguientes

En este artículo, ha aprendido a usar ejecuciones de lanzamiento preconfigurado para controlar la distribución de recursos entre clústeres miembro mediante la selección de ubicación de recursos.

Para obtener más información sobre las ejecuciones de implementación gradual y los conceptos relacionados, consulte los siguientes recursos: