Apigee 관리형 인스턴스 그룹 업그레이드

이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.

Apigee Edge 문서 보기

이 문서에서는 Apigee로 북쪽 트래픽을 라우팅하는 Compute Engine 관리형 인스턴스 그룹을 검사하고 업그레이드하는 방법을 설명합니다.

개요

일부 Apigee 배포는 프로젝트에서 실행되는 Compute Engine MIG를 통해 부하 분산기에서 프록시 트래픽을 라우팅하고 Northbound 부하 분산 및 Private Service Connect를 사용한 활성 상태 점검을 포함하여 Apigee 런타임 엔드포인트로 요청을 전달합니다. Apigee는 이러한 MIG를 관리하지 않습니다. 보안 및 안정성 권장사항에 따라 Compute Engine 운영체제 수명 주기를 최신 상태로 유지하려면 이러한 MIG와 해당 VM을 직접 추적, 관리, 업그레이드해야 합니다.

OS가 지원 종료되면 Compute Engine은 새 VM의 이미지 계열 별칭을 삭제합니다. MIG의 기존 VM은 계속 실행되며 라이브 호스트 유지보수 이벤트 중에도 유지됩니다. 하지만 자동 확장, 자동 복구 또는 순차적 교체 중에 MIG가 새 VM을 만들려고 하면 소스 이미지 계열을 더 이상 찾을 수 없으므로 VM 만들기가 실패합니다. 정상 프록시 VM을 사용할 수 없게 되면 부하 분산기에서 HTTP 502 Bad Gateway 오류를 반환하고 API 트래픽이 중지됩니다.

시작하기 전에

이 문서의 명령어는 예시입니다. 배포에서 다른 네트워크 태그, 머신 유형, 디스크 크기, 메타데이터 또는 VM 수를 사용할 수 있습니다. 먼저 기존 구성을 검사하고 환경에 맞게 명령어 플래그를 조정합니다.

예시 명령어에서 다음 자리표시자를 환경의 값으로 바꿉니다.

  • PROJECT_ID: MIG 및 인스턴스 템플릿이 배포된 Google Cloud 프로젝트 ID입니다.
  • REGION: MIG의 Compute Engine 리전입니다.
  • EXISTING_MIG_NAME: 기존 MIG의 이름입니다.
  • OLD_TEMPLATE_NAME: EXISTING_MIG_NAME에 연결된 인스턴스 템플릿의 이름입니다.
  • NEW_TEMPLATE_NAME: 만드는 새 인스턴스 템플릿의 이름입니다.
  • VPC_NAME: MIG에서 사용하는 VPC 네트워크의 이름입니다.
  • VPC_SUBNET: MIG에서 사용하는 REGION의 VPC 서브넷 이름입니다.
  • IMAGE_FAMILY: Compute Engine 운영체제 세부정보에서 지원되는 OS 이미지 계열입니다.
  • IMAGE_PROJECT: IMAGE_FAMILY가 포함된 이미지 프로젝트입니다.
  • APIGEE_ENDPOINT: 기존 인스턴스 템플릿의 ENDPOINT 메타데이터에 구성된 대상 IP 주소입니다.
  • STARTUP_SCRIPT_URL: 기존 인스턴스 템플릿의 startup-script-url 메타데이터에 구성된 Cloud Storage URL입니다.

MIG 및 인스턴스 템플릿 검사

Apigee 라우팅 MIG는 일반적으로 apigee-mig-proxy 태그와 ENDPOINT 메타데이터를 사용합니다. MIG 및 인스턴스 템플릿을 검사하려면 다음 단계를 완료하세요.

  1. 프로젝트의 MIG를 나열하고 연결된 인스턴스 템플릿을 식별합니다.

    gcloud compute instance-groups managed list --project=PROJECT_ID \
      --format="table(name,region.basename(),zone.basename(),instanceTemplate.basename())"
    
  2. 기존 인스턴스 템플릿의 소스 OS 이미지를 확인합니다. 템플릿이 리전인 경우 --region=REGION를 추가합니다.

    gcloud compute instance-templates describe OLD_TEMPLATE_NAME \
      --project=PROJECT_ID \
      --format="value(properties.disks[0].initializeParams.sourceImage)"
    
  3. 새 템플릿을 만들 때 이러한 설정을 일치시킬 수 있도록 OLD_TEMPLATE_NAME의 머신 유형, 디스크 구성, 네트워크, 서브넷, 태그, 메타데이터를 검사합니다. 템플릿이 리전인 경우 --region=REGION를 추가합니다.

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

새 인스턴스 템플릿 만들기 및 순차적 업데이트 실행

지원되는 OS 이미지 계열로 새 인스턴스 템플릿을 만들고 MIG에서 순차적 업데이트를 시작합니다. --max-unavailable=0와 함께 --max-surge를 사용하면 이전 인스턴스를 드레이닝하고 삭제하기 전에 새 VM을 프로비저닝하고 확인하므로 리소스 재고 소진 또는 구성 오류로 인해 새 VM이 시작되지 않더라도 트래픽 중단이 방지됩니다.

  1. 새 인스턴스 템플릿을 만듭니다. 다음 명령어는 예시입니다. 기존 템플릿 구성과 일치하도록 네트워크, 서브넷, 태그, 머신 유형, 디스크 크기, 메타데이터를 조정합니다.

    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
    

    이 명령어는 projects/PROJECT_ID/global/instanceTemplates/NEW_TEMPLATE_NAME에서 전역 인스턴스 템플릿을 만듭니다. 리전 인스턴스 템플릿을 만들려면 --instance-template-region=REGION를 추가하고 다음 단계에서 projects/PROJECT_ID/regions/REGION/instanceTemplates/NEW_TEMPLATE_NAME를 사용합니다.

  2. MIG에서 순차적 업데이트를 시작합니다. MIG의 크기와 할당량에 따라 필요한 경우 --max-surge를 조정합니다.

    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. MIG의 모든 VM이 NEW_TEMPLATE_NAME을 실행하고 RUNNING 상태를 보고하는지 확인합니다.

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

다음 단계