Todos los productos
Search
Centro de documentos

Alibaba Cloud Service Mesh:Actualización canary para una puerta de enlace de ASM

Última actualización: Sep 12, 2026

Las puertas de enlace de ASM admiten actualizaciones canary para ofrecer una experiencia de actualización fluida. Este tema toma como ejemplo la actualización in situ de una instancia de ASM para mostrar cómo se inicia un pod con la nueva versión. De esta manera, usted puede comprobar el tráfico en ese pod antes de que se actualicen todos los pods de la puerta de enlace.

Requisitos previos

  • Instancia y versión de ASM: compruebe que cuenta con added a cluster to an ASM instance y que la versión de ASM es 1.20 o posterior. Para obtener instrucciones sobre cómo actualizar una instancia de ASM, consulte Upgrade an ASM instance.

  • Puerta de enlace de entrada: compruebe que cuenta con created an ingress gateway.

  • Apagado controlado: habilite el apagado controlado de la puerta de enlace antes de iniciar la actualización. Esto minimiza el riesgo de pérdida de tráfico durante el proceso. Para obtener instrucciones, consulte Enable graceful shutdown to prevent traffic loss.

  • Sin conflictos de nombres con el Canary Deployment: compruebe que no exista ningún Deployment en el namespace de la puerta de enlace cuyo nombre sea el del Deployment de la puerta de enlace seguido del sufijo -canary. Por ejemplo, si la puerta de enlace se llama ingressgateway, verifique que no exista un Deployment llamado istio-ingressgateway-canary en el namespace istio-system.

  • Acceso al plano de datos: obtenga el archivo KubeConfig del plano de datos para poder ejecutar comandos kubectl en el clúster del plano de datos.

Funcionamiento de la actualización canary de una puerta de enlace

La puerta de enlace es el único punto de entrada y salida del tráfico de servicios, por lo que debe cumplir requisitos estrictos de disponibilidad. Una actualización canary le ayuda a mantener la continuidad del negocio. Usted modifica la configuración de la puerta de enlace para iniciar primero un pod que ejecute la nueva versión y comprueba el tráfico en dicho pod. La puerta de enlace se actualiza por completo solo después de que la comprobación sea exitosa. Si surge algún problema durante la comprobación, puede eliminar este nuevo pod en cualquier momento y reanudar la actualización una vez resuelto el problema.

Nota

La actualización canary de una puerta de enlace de ASM no es lo mismo que la actualización canary de una instancia de ASM. La actualización canary de una puerta de enlace de ASM está disponible sin importar si aplica una actualización in situ o una actualización canary a la instancia de ASM.

En ASM, la actualización del plano de control y la del plano de datos son procesos independientes. El plano de datos se puede actualizar una vez que finaliza la actualización del plano de control.

La actualización canary de una puerta de enlace crea un Deployment de una sola réplica que coincide con la versión actual del plano de control. Este Deployment se denomina Canary Deployment, y el único pod que gestiona es el pod canary. El Canary Deployment pertenece al mismo Service que el Deployment original de la puerta de enlace. La diferencia radica en que su nombre es el del Deployment original seguido del sufijo -canary.

Importante

Si ya existe un Deployment con el mismo nombre y el sufijo -canary en el namespace de la puerta de enlace, ese Deployment no se sobrescribe.

A continuación se muestran las rutas de actualización de instancias de ASM que admiten la actualización canary de una puerta de enlace. Identifique su ruta antes de comenzar:

  • Actualización in situ de una instancia de ASM: cuando termina la actualización del plano de control, la puerta de enlace sigue ejecutando la versión anterior. Siga del paso 1 al paso 4 de este tema.

  • Actualización canary de una instancia de ASM: el paso 1 de este tema no aplica. Durante la actualización canary de una instancia de ASM, la puerta de enlace queda pendiente de actualización después de cambiar la nueva versión al plano de control predeterminado. Continúe desde el paso 2 para desplegar un pod canary para la puerta de enlace, comprobar el tráfico y actualizar la puerta de enlace una vez que la comprobación sea exitosa.

Paso 1: Actualizar el plano de control

  1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

  2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione Instance Information > Upgrade Management.

  3. En la página Upgrade Management, dentro de la pestaña In-place Upgrades, haga clic en Perform Upgrade Precheck. En el cuadro de diálogo Note, haga clic en OK.

    Nota

    Si la página muestra Currently, it is the latest version and does not need to be upgraded., significa que la malla de servicios ya tiene la versión más reciente y no se puede actualizar.

  4. Una vez superada la comprobación previa, haga clic en Upgrade. En el cuadro de diálogo Note, haga clic en OK.

Paso 2: Desplegar un pod canary para la puerta de enlace de ASM

Para desplegar un pod canary para una puerta de enlace de ASM, agregue la anotación asm.alibabacloud.com/enable-canary-deployment: "true" en annotations, dentro del campo metadata del archivo YAML de la puerta de enlace de ASM. Puede usar la consola de ASM o la línea de comandos kubectl.

Método 1: Usar la consola de ASM

  1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

  2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione ASM Gateways > Ingress Gateway.

  3. En la página Ingress Gateway, haga clic en View YAML a la derecha de la puerta de enlace objetivo. En el cuadro de diálogo Edit, agregue la anotación y luego haga clic en OK.

Método 2: Usar el comando kubectl

  1. Ejecute el siguiente comando para abrir el archivo YAML de la puerta de enlace de ASM.

    kubectl edit IstioGateway <YOUR-INGRESSGATEWAY-NAME> -n istio-system
  2. Edite el archivo YAML para agregar la anotación y luego guarde el archivo.

El siguiente archivo YAML de ejemplo muestra la configuración de una puerta de enlace de ASM con la anotación agregada. El resultado es el mismo con ambos métodos.

apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
  labels:
    asm-gateway-type: ingress
  annotations:
    asm.alibabacloud.com/enable-canary-deployment: "true"  # Add this annotation.
  name: ingressgateway
  namespace: istio-system
spec:
  clusterIds:
    - xxxxxxxxxxxxxx
  disableContainerPortExposed: true
  dnsPolicy: ClusterFirst
  externalTrafficPolicy: Local
  gatewayType: ingress
  ports:
    - name: http-0
      port: 80
      protocol: HTTP
      targetPort: 80
  replicaCount: 1
  resources:
    limits:
      cpu: '2'
      memory: 4G
    requests:
      cpu: 200m
      memory: 256Mi
  rollingMaxSurge: 25%
  rollingMaxUnavailable: 25%
  serviceAnnotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: 'on'
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: '10'
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU
    service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet
  serviceType: LoadBalancer

Comprobar el pod canary y su tráfico

Siga estos pasos sin importar el método que haya utilizado para agregar la anotación.

  1. Use el archivo KubeConfig del plano de datos para ejecutar el siguiente comando y consultar el Canary Deployment desplegado. En este ejemplo, el nombre de la puerta de enlace es ingressgateway. Sustitúyalo según su escenario real.

    kubectl -n istio-system get deployment | grep ingressgateway

    Resultado esperado:

    istio-ingressgateway                1/1     1            1           10m
    istio-ingressgateway-canary         1/1     1            1           55s

    El Deployment con el sufijo -canary es el Canary Deployment. Espere hasta que sus réplicas listas alcancen 1/1, tal como se muestra en el resultado anterior.

  2. Cuando el pod canary esté listo, parte del tráfico se enruta hacia él. Compruebe si el tráfico que llega a la puerta de enlace es normal.

    Si el tráfico es normal, continúe con el paso 3 para actualizar la puerta de enlace. Si el tráfico presenta anomalías, revierta el pod canary como se describe en la siguiente sección.

Revertir si la comprobación falla

Si el tráfico que llega a la puerta de enlace presenta anomalías, siga estos pasos:

  1. Guarde los registros de la puerta de enlace.

  2. Elimine la anotación asm.alibabacloud.com/enable-canary-deployment: "true" que configuró. El pod canary se elimina y todo el tráfico se enruta a los pods de la puerta de enlace que ejecutan la versión anterior.

  3. Una vez resuelto el problema, vuelva a agregar la anotación para volver a desplegar el pod canary y compruebe el tráfico nuevamente.

Paso 3: Actualizar la puerta de enlace tras una comprobación exitosa

  1. Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione Service Mesh > Mesh Management.

  2. En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione Instance Information > Upgrade Management.

  3. En la sección Data Plane, dentro de la columna Upgrade, seleccione la puerta de enlace objetivo y haga clic en Upgrade Gateway. En el cuadro de diálogo Note, haga clic en OK y espere a que termine la actualización de la puerta de enlace.

Paso 4: Eliminar el pod canary

Cuando termine la actualización de la puerta de enlace, elimine la anotación que agregó en Step 2. El pod canary se elimina automáticamente. Para confirmar el resultado, vuelva a consultar los Deployments en el namespace de la puerta de enlace y compruebe que el Deployment con el sufijo -canary ya no existe.

Importante

El pod canary siempre sigue la versión del plano de control. Si no lo elimina, el pod canary se actualizará junto con el plano de control la próxima vez que actualice dicho plano.