Esegui l'upgrade dei gruppi di istanze gestite di Apigee

Questa pagina si applica ad Apigee, ma non ad Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Questo documento descrive come ispezionare ed eseguire l'upgrade dei gruppi di istanze gestite di Compute Engine che instradano il traffico verso nord ad Apigee.

Panoramica

Alcuni deployment di Apigee instradano il traffico proxy da un bilanciatore del carico tramite i MIG di Compute Engine eseguiti nel tuo progetto e inoltrano le richieste all'endpoint di runtime Apigee, tra cui il bilanciamento del carico in entrata e i controlli di integrità attivi con Private Service Connect. Apigee non gestisce questi MIG. Come best practice per la sicurezza e l'affidabilità, devi monitorare, gestire ed eseguire l'upgrade di questi MIG e delle relative VM autonomamente per rimanere al passo con il ciclo di vita del sistema operativo Compute Engine.

Quando un sistema operativo raggiunge la fine del ciclo di vita, Compute Engine rimuove l'alias della famiglia di immagini per le nuove VM. Le VM esistenti nel MIG continuano a essere eseguite e sopravvivono agli eventi di manutenzione dell'host live. Tuttavia, se il MIG tenta di creare una nuova VM durante la scalabilità automatica, il ripristino automatico o un aggiornamento in sequenza, la creazione della VM non va a buon fine perché la famiglia di immagini di origine non viene più trovata. Se le VM proxy integre non sono disponibili, il bilanciatore del carico restituisce errori HTTP 502 Bad Gateway e il traffico API si interrompe.

Prima di iniziare

I comandi in questo documento sono esempi. Il tuo deployment potrebbe utilizzare tag di rete, tipi di macchine, dimensioni dei dischi, metadati o conteggi di VM diversi. Controlla prima la configurazione esistente e modifica i flag del comando in modo che corrispondano al tuo ambiente.

Sostituisci i seguenti segnaposto nei comandi di esempio con i valori del tuo ambiente:

  • PROJECT_ID: l'ID progetto Google Cloud in cui sono stati eseguiti i deployment dei MIG e dei template di istanza.
  • REGION: la regione Compute Engine del MIG.
  • EXISTING_MIG_NAME: il nome del MIG esistente.
  • OLD_TEMPLATE_NAME: il nome del template di istanza collegato a EXISTING_MIG_NAME.
  • NEW_TEMPLATE_NAME: il nome del nuovo template di istanza che crei.
  • VPC_NAME: il nome della rete VPC utilizzata dal tuo MIG.
  • VPC_SUBNET: il nome della subnet VPC in REGION utilizzata dal MIG.
  • IMAGE_FAMILY: una famiglia di immagini sistema operativo supportata dai dettagli del sistema operativo di Compute Engine.
  • IMAGE_PROJECT: il progetto di immagini che contiene IMAGE_FAMILY.
  • APIGEE_ENDPOINT: l'indirizzo IP di destinazione configurato nei metadati ENDPOINT del template di istanza esistente.
  • STARTUP_SCRIPT_URL: l'URL di Cloud Storage configurato nei startup-script-url metadati del modello di istanza esistente.

Ispeziona i MIG e i template di istanza

I MIG di routing Apigee in genere utilizzano il tag apigee-mig-proxy e i metadati ENDPOINT. Completa i seguenti passaggi per ispezionare i MIG e i template di istanza:

  1. Elenca i MIG nel tuo progetto e identifica i template di istanza collegati:

    gcloud compute instance-groups managed list --project=PROJECT_ID \
      --format="table(name,region.basename(),zone.basename(),instanceTemplate.basename())"
    
  2. Controlla l'immagine sistema operativo di origine del template di istanza esistente. Aggiungi --region=REGION se il template è regionale:

    gcloud compute instance-templates describe OLD_TEMPLATE_NAME \
      --project=PROJECT_ID \
      --format="value(properties.disks[0].initializeParams.sourceImage)"
    
  3. Esamina il tipo di macchina, la configurazione del disco, la rete, la subnet, i tag e i metadati di OLD_TEMPLATE_NAME in modo da poter abbinare queste impostazioni durante la creazione del nuovo template. Aggiungi --region=REGION se il template è regionale:

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

Crea un nuovo template di istanza ed esegui un aggiornamento in sequenza

Crea un nuovo template di istanza con una famiglia di immagini sistema operativo supportata e avvia un aggiornamento in sequenza sul MIG. L'utilizzo di --max-surge con --max-unavailable=0 esegue il provisioning e la verifica delle nuove VM prima di svuotare e rimuovere le istanze precedenti, il che impedisce l'interruzione del traffico anche se le nuove VM non si avviano a causa di un esaurimento delle risorse o di un errore di configurazione.

  1. Crea un nuovo template di istanza. Il seguente comando è un esempio; regola la rete, la subnet, i tag, il tipo di macchina, le dimensioni del disco e i metadati in modo che corrispondano alla configurazione del template esistente:

    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
    

    Questo comando crea un template di istanza globale in projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAME. Se preferisci creare un template di istanza regionale, aggiungi --instance-template-region=REGION e utilizza projects/PROJECT_ID/regions/REGION/instanceTemplates/NEW_TEMPLATE_NAME nel passaggio successivo.

  2. Avvia un aggiornamento in sequenza sul MIG. Se necessario, modifica --max-surge in base alle dimensioni e alla quota del 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 che tutte le VM nel MIG eseguano NEW_TEMPLATE_NAME e segnalino uno stato RUNNING:

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

Passaggi successivi