Mettre à niveau les groupes d'instances gérés Apigee

Cette page s'applique à Apigee, mais pas à Apigee hybrid.

Consultez la documentation d' Apigee Edge.

Ce document explique comment inspecter et mettre à niveau les groupes d'instances gérés Compute Engine qui acheminent le trafic entrant vers Apigee.

Présentation

Certains déploiements Apigee acheminent le trafic proxy d'un équilibreur de charge via des MIG Compute Engine qui s'exécutent dans votre projet et transfèrent les requêtes au point de terminaison d'exécution Apigee, y compris l'équilibrage de charge Northbound et les vérifications d'état actives avec Private Service Connect. Apigee ne gère pas ces MIG. Pour garantir la sécurité et la fiabilité, vous devez suivre, gérer et mettre à niveau vous-même ces MIG et leurs VM afin de rester à jour avec le cycle de vie du système d'exploitation Compute Engine.

Lorsqu'un OS arrive en fin de vie, Compute Engine supprime l'alias de la famille d'images pour les nouvelles VM. Les VM existantes du MIG continuent de s'exécuter et de survivre aux événements de maintenance de l'hôte en direct. Toutefois, si le MIG tente de créer une VM lors de l'autoscaling, de l'autoréparation ou d'un remplacement progressif, la création de la VM échoue, car la famille d'images sources n'est plus trouvée. Si les VM de proxy opérationnelles deviennent indisponibles, l'équilibreur de charge renvoie des erreurs HTTP 502 Bad Gateway et le trafic de l'API s'arrête.

Avant de commencer

Les commandes de ce document sont des exemples. Votre déploiement peut utiliser des tags réseau, des types de machines, des tailles de disque, des métadonnées ou un nombre de VM différents. Inspectez d'abord votre configuration existante et ajustez les options de commande en fonction de votre environnement.

Remplacez les espaces réservés suivants dans les exemples de commandes par les valeurs de votre environnement :

  • PROJECT_ID : ID du projet Google Cloud dans lequel vos MIG et vos modèles d'instance sont déployés.
  • REGION : région Compute Engine de votre MIG.
  • EXISTING_MIG_NAME : nom de votre MIG existant.
  • OLD_TEMPLATE_NAME : nom du modèle d'instance associé à EXISTING_MIG_NAME.
  • NEW_TEMPLATE_NAME : nom du nouveau modèle d'instance que vous créez.
  • VPC_NAME : nom du réseau VPC utilisé par votre MIG.
  • VPC_SUBNET : nom du sous-réseau VPC dans REGION utilisé par votre MIG.
  • IMAGE_FAMILY : famille d'images de l'OS compatible, d'après les Détails des systèmes d'exploitation Compute Engine.
  • IMAGE_PROJECT : projet d'image contenant IMAGE_FAMILY.
  • APIGEE_ENDPOINT : adresse IP cible configurée dans les métadonnées ENDPOINT de votre modèle d'instance existant.
  • STARTUP_SCRIPT_URL : URL Cloud Storage configurée dans les métadonnées startup-script-url de votre modèle d'instance existant.

Inspecter vos MIG et vos modèles d'instance

Les MIG de routage Apigee utilisent généralement le tag apigee-mig-proxy et les métadonnées ENDPOINT. Pour inspecter vos MIG et vos modèles d'instance, procédez comme suit :

  1. Répertoriez les MIG de votre projet et identifiez les modèles d'instance associés :

    gcloud compute instance-groups managed list --project=PROJECT_ID \
      --format="table(name,region.basename(),zone.basename(),instanceTemplate.basename())"
    
  2. Vérifiez l'image de l'OS source de votre modèle d'instance existant. Ajoutez --region=REGION si le modèle est régional :

    gcloud compute instance-templates describe OLD_TEMPLATE_NAME \
      --project=PROJECT_ID \
      --format="value(properties.disks[0].initializeParams.sourceImage)"
    
  3. Inspectez le type de machine, la configuration du disque, le réseau, le sous-réseau, les tags et les métadonnées de OLD_TEMPLATE_NAME afin de pouvoir faire correspondre ces paramètres lors de la création du modèle. Ajoutez --region=REGION si le modèle est régional :

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

Créer un modèle d'instance et exécuter une mise à jour progressive

Créez un modèle d'instance avec une famille d'images d'OS compatible et lancez une mise à jour progressive sur le MIG. L'utilisation de --max-surge avec --max-unavailable=0 provisionne et vérifie les nouvelles VM avant de drainer et de supprimer les anciennes instances, ce qui évite les interruptions de trafic même si les nouvelles VM ne démarrent pas en raison d'une rupture de stock de ressources ou d'une erreur de configuration.

  1. Créer un modèle d'instance. La commande suivante est un exemple. Ajustez le réseau, le sous-réseau, les tags, le type de machine, la taille du disque et les métadonnées pour qu'ils correspondent à la configuration de votre modèle existant :

    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
    

    Cette commande crée un modèle d'instance global dans projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAME. Si vous préférez créer un modèle d'instance régional, ajoutez --instance-template-region=REGION et utilisez projects/PROJECT_ID/regions/REGION/instanceTemplates/NEW_TEMPLATE_NAME à l'étape suivante.

  2. Lancez une mise à jour progressive sur le MIG. Ajustez --max-surge si nécessaire en fonction de la taille et du quota de votre 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. Vérifiez que toutes les VM du MIG exécutent NEW_TEMPLATE_NAME et signalent l'état RUNNING :

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

Étapes suivantes