Actualiza los grupos de instancias administrados de Apigee

Esta página se aplica a Apigee, pero no a Apigee Hybrid.

Consulta la documentación de Apigee Edge.

En este documento, se describe cómo inspeccionar y actualizar los grupos de instancias administrados de Compute Engine que enrutan el tráfico hacia el norte a Apigee.

Descripción general

Algunas implementaciones de Apigee enrutan el tráfico de proxy desde un balanceador de cargas a través de MIG de Compute Engine que se ejecutan en tu proyecto y reenvían solicitudes al extremo del entorno de ejecución de Apigee, incluido el balanceo de cargas ascendente y las verificaciones de estado activas con Private Service Connect. Apigee no administra estos MIG. Como práctica recomendada de seguridad y confiabilidad, debes hacer un seguimiento de estos MIG y sus VMs, administrarlos y actualizarlos por tu cuenta para mantenerte al día con el ciclo de vida del sistema operativo de Compute Engine.

Cuando un SO llega al final de su ciclo de vida, Compute Engine quita el alias de la familia de imágenes para las VMs nuevas. Las VMs existentes en el MIG siguen ejecutándose y sobreviven a los eventos de mantenimiento del host en vivo. Sin embargo, si el MIG intenta crear una VM nueva durante el ajuste de escala automático, la reparación automática o un reemplazo progresivo, la creación de la VM falla porque ya no se encuentra la familia de imágenes de origen. Si las VMs de proxy en buen estado dejan de estar disponibles, el balanceador de cargas devuelve errores HTTP 502 Bad Gateway y el tráfico de la API se detiene.

Antes de comenzar

Los comandos de este documento son ejemplos. Es posible que tu implementación use diferentes etiquetas de red, tipos de máquinas, tamaños de discos, metadatos o recuentos de VM. Primero, inspecciona la configuración existente y ajusta las marcas de comando para que coincidan con tu entorno.

Reemplaza los siguientes marcadores de posición en los comandos de ejemplo por valores de tu entorno:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud en el que se implementan tus MIGs y plantillas de instancias.
  • REGION: Es la región de Compute Engine de tu MIG.
  • EXISTING_MIG_NAME: Es el nombre de tu MIG existente.
  • OLD_TEMPLATE_NAME: Es el nombre de la plantilla de instancias adjunta a EXISTING_MIG_NAME.
  • NEW_TEMPLATE_NAME: Es el nombre de la plantilla de instancias nueva que creas.
  • VPC_NAME: Es el nombre de la red de VPC que usa tu MIG.
  • VPC_SUBNET: Es el nombre de la subred de VPC en REGION que usa tu MIG.
  • IMAGE_FAMILY: Es una familia de imagen de SO compatible de los detalles del sistema operativo de Compute Engine.
  • IMAGE_PROJECT: Es el proyecto de imagen que contiene IMAGE_FAMILY.
  • APIGEE_ENDPOINT: Es la dirección IP de destino configurada en los metadatos ENDPOINT de tu plantilla de instancias existente.
  • STARTUP_SCRIPT_URL: Es la URL de Cloud Storage configurada en los metadatos startup-script-url de tu plantilla de instancias existente.

Inspecciona tus MIG y plantillas de instancias

Los MIG de enrutamiento de Apigee suelen usar la etiqueta apigee-mig-proxy y los metadatos ENDPOINT. Completa los siguientes pasos para inspeccionar tus MIGs y plantillas de instancias:

  1. Enumera los MIG de tu proyecto e identifica las plantillas de instancias adjuntas:

    gcloud compute instance-groups managed list --project=PROJECT_ID \
      --format="table(name,region.basename(),zone.basename(),instanceTemplate.basename())"
    
  2. Verifica la imagen de SO de origen de tu plantilla de instancias existente. Agrega --region=REGION si la plantilla es regional:

    gcloud compute instance-templates describe OLD_TEMPLATE_NAME \
      --project=PROJECT_ID \
      --format="value(properties.disks[0].initializeParams.sourceImage)"
    
  3. Inspecciona el tipo de máquina, la configuración del disco, la red, la subred, las etiquetas y los metadatos de OLD_TEMPLATE_NAME para que puedas hacer coincidir estos parámetros de configuración cuando crees la plantilla nueva. Agrega --region=REGION si la plantilla es regional:

    gcloud compute instance-templates describe OLD_TEMPLATE_NAME \
      --project=PROJECT_ID \
      --format="yaml(properties.machineType,properties.disks,properties.networkInterfaces,properties.tags,properties.metadata)"
    

Crea una plantilla de instancias nueva y ejecuta una actualización progresiva

Crea una plantilla de instancias nueva con una familia de imagen de SO compatible y, luego, inicia una actualización progresiva en el MIG. El uso de --max-surge con --max-unavailable=0 aprovisiona y verifica las VMs nuevas antes de vaciar y quitar las instancias antiguas, lo que evita la interrupción del tráfico, incluso si las VMs nuevas no se inician debido a un agotamiento de recursos o un error de configuración.

  1. Crear una nueva plantilla de instancia, El siguiente comando es un ejemplo; ajusta la red, la subred, las etiquetas, el tipo de máquina, el tamaño del disco y los metadatos para que coincidan con la configuración de tu plantilla existente:

    gcloud compute instance-templates create NEW_TEMPLATE_NAME \
      --project=PROJECT_ID \
      --region=REGION \
      --network=VPC_NAME \
      --subnet=VPC_SUBNET \
      --tags=https-server,apigee-mig-proxy,gke-apigee-proxy \
      --machine-type=e2-medium \
      --image-family=IMAGE_FAMILY \
      --image-project=IMAGE_PROJECT \
      --boot-disk-size=20GB \
      --no-address \
      --metadata=ENDPOINT=APIGEE_ENDPOINT,startup-script-url=STARTUP_SCRIPT_URL
    

    Este comando crea una plantilla de instancias global en projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAME. Si prefieres crear una plantilla de instancias regional, agrega --instance-template-region=REGION y usa projects/PROJECT_ID/regions/REGION/instanceTemplates/NEW_TEMPLATE_NAME en el siguiente paso.

  2. Inicia una actualización progresiva en el MIG. Ajusta --max-surge si es necesario según el tamaño y la cuota de tu MIG:

    gcloud compute instance-groups managed rolling-action start-update EXISTING_MIG_NAME \
      --project=PROJECT_ID \
      --region=REGION \
      --version=template=projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAME \
      --max-surge=3 \
      --max-unavailable=0
    
  3. Verifica que todas las VMs del MIG ejecuten NEW_TEMPLATE_NAME y que informen un estado RUNNING:

    gcloud compute instance-groups managed list-instances EXISTING_MIG_NAME \
      --project=PROJECT_ID \
      --region=REGION
    

¿Qué sigue?