Usar redes VPC partilhadas

Esta página aplica-se ao Apigee, mas não ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

Este documento explica como configurar um anfitrião da nuvem virtual privada (VPC) partilhada e anexar-lhe projetos de serviços de destino do Apigee e de back-end separados. As redes VPC partilhadas permitem-lhe implementar uma infraestrutura de rede gerida centralmente com o Google Cloud. Pode usar uma única rede VPC num projeto anfitrião para ligar recursos de vários projetos de serviço.

Vantagem da VPC partilhada

O tempo de execução do Apigee (em execução numa VPC gerida pela Google) tem intercâmbio com a VPC pertencente a si. Nesta topologia, o ponto final do tempo de execução do Apigee pode comunicar com a sua rede VPC, conforme mostrado no diagrama seguinte:

VPC partilhada com back-ends internos na VPC de outro projeto

Veja também a vista geral da arquitetura do Apigee.

Em muitos cenários, a topologia descrita acima é demasiado simples, porque a rede VPC faz parte de um único projeto do Google Cloud, e muitas organizações querem seguir as práticas recomendadas para hierarquias de recursos e separar a respetiva infraestrutura em vários projetos. Imagine uma topologia de rede em que o projeto de inquilino do Apigee está interligado a uma rede VPC como antes, mas tem back-ends internos localizados na VPC de outro projeto. Conforme mostrado neste diagrama:

VPC partilhada com back-ends internos na VPC de outro projeto

Se estabelecer o intercâmbio da sua VPC do Apigee com a VPC de back-end, conforme mostrado no diagrama, o back-end pode ser alcançado a partir da sua rede VPC do Apigee e vice-versa, porque o intercâmbio de redes é simétrico. No entanto, o projeto de inquilino do Apigee só pode comunicar com a VPC do Apigee, uma vez que o intercâmbio não é transitivo, conforme descrito na documentação sobre o intercâmbio de VPCs. Para que funcione, pode implementar proxies adicionais na sua VPC do Apigee para encaminhar o tráfego através do link de intercâmbio para a VPC de back-end. No entanto, esta abordagem adiciona custos gerais e manutenção operacionais adicionais.

A VPC partilhada oferece uma solução para o problema descrito acima. A VPC partilhada permite-lhe estabelecer conetividade entre o tempo de execução do Apigee e os back-ends localizados noutros projetos do Google Cloud na mesma organização sem componentes de rede adicionais.

Configurar a VPC partilhada com o Apigee

Esta secção explica como anexar um projeto de serviço de VPC do Apigee a um anfitrião de VPC partilhada. As sub-redes definidas no projeto anfitrião são partilhadas com os projetos de serviço. Numa secção posterior, explicamos como criar uma segunda sub-rede para serviços de back-end implementados num segundo projeto de serviço de VPC. O diagrama seguinte mostra a arquitetura resultante:

Vista geral da arquitetura
da VPC partilhada

O Apigee fornece um script de aprovisionamento para simplificar a criação da topologia necessária. Siga os passos nesta secção para transferir e usar o script de aprovisionamento para configurar o Apigee com uma VPC partilhada.

Pré-requisitos

  1. Reveja os conceitos abordados na vista geral da VPC partilhada. É importante compreender os conceitos de projeto anfitrião e projeto de serviço.
  2. Crie um novo projeto do Google Cloud que possa configurar para a VPC partilhada. Este projeto é o projeto anfitrião. Consulte o artigo Criar e gerir projetos.
  3. Siga os passos em Aprovisionar VPC partilhada para aprovisionar o projeto para a VPC partilhada. Tem de ser um administrador da organização ou ter-lhe sido concedidas funções de gestão de identidade e de acesso (IAM) administrativas adequadas para ativar o projeto anfitrião para a VPC partilhada.
  4. Crie um segundo projeto do Google Cloud. Este projeto é um projeto de serviço. Posteriormente, vai anexá-lo ao projeto anfitrião.

Transfira o script

O Apigee fornece um script de aprovisionamento para simplificar a criação da topologia necessária. Tem de transferir o script do GitHub:

  1. Clone o projeto do GitHub que contém o script:
    git clone https://github.com/apigee/devrel.git
  2. Aceda ao seguinte diretório no projeto:
    cd devrel/tools/apigee-x-trial-provision
  3. Defina as seguintes variáveis de ambiente:
    export HOST_PROJECT=HOST_PROJECT_ID
    export SERVICE_PROJECT=SERVICE_PROJECT_ID

    Onde:

    • HOST_PROJECT_ID é o ID do projeto anfitrião da VPC partilhada que criou como um dos pré-requisitos.
    • SERVICE_PROJECT_ID é o ID do projeto do serviço Google Cloud que criou nos pré-requisitos.

Configure o projeto anfitrião

  1. Defina as seguintes variáveis de ambiente:
  2. export NETWORK=YOUR_SHARED_VPC
    export SUBNET=YOUR_SHARED_SUBNET
    export PEERING_CIDR=CIDR_BLOCK

    Onde:

    • YOUR_SHARED_VPC é o nome da sua rede VPC partilhada.
    • YOUR_SHARED_SUBNET é o nome da sua sub-rede da VPC partilhada.
    • CIDR_BLOCK é o bloco CIDR para a VPC do Apigee. Por exemplo: 10.111.0.0/23.
  3. Para configurar o peering de VPC e a firewall do Apigee, execute o script com estas opções:
    ./apigee-x-trial-provision.sh \
        -p $HOST_PROJECT --shared-vpc-host-config --peering-cidr $PEERING_CIDR

    O script configura o projeto anfitrião. A saída será semelhante à seguinte, em que NETWORK e SUBNET representam os caminhos totalmente qualificados no projeto anfitrião:

    export NETWORK=projects/$HOST_PROJECT/global/networks/$NETWORK
    export SUBNET=projects/$HOST_PROJECT/regions/us-west1/subnetworks/$SUBNET
  4. Exporte as variáveis que foram devolvidas na saída.

Configure o projeto de serviço

Neste passo, configura o projeto de serviço. Quando o script terminar, cria e implementa um exemplo de proxy de API no seu ambiente do Apigee que pode usar para testar o aprovisionamento.

  1. Execute o script apigee-x-trial-provision.sh uma segunda vez para aprovisionar o projeto de serviço com as definições de rede partilhadas:
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

    O script cria um proxy de exemplo no seu ambiente do Apigee e imprime um comando curl que pode chamar para testar o aprovisionamento.STDOUT

  2. Chame o proxy da API de teste. Por exemplo:
    curl -v https://10-111-111-111.nip.io/hello-world

Configure outro projeto de serviço para serviços de back-end

É uma prática recomendada separar a sua infraestrutura do Google Cloud em vários projetos. Consulte o artigo Decida uma hierarquia de recursos para a sua zona de destino do Google Cloud. Esta secção explica como implementar um serviço de back-end num projeto de serviço separado e anexá-lo ao anfitrião de VPC partilhada. O Apigee pode usar o serviço de back-end como um destino de proxy de API porque o projeto de serviço do Apigee e o projeto de serviço de back-end estão anexados ao anfitrião da VPC partilhada.

Pré-requisitos

Para seguir estes passos, partimos do princípio de que já configurou a VPC partilhada e a partilhou com o projeto de serviço de back-end, conforme descrito em Configurar a VPC partilhada.

Configure o projeto de serviço

Nesta secção, vai testar um serviço de back-end noutra sub-rede da VPC partilhada, criar uma segunda sub-rede no projeto anfitrião e usar o respetivo endereço IP privado RFC1918 como o URL de destino para os proxies de API do Apigee.

  1. No projeto de serviço de back-end, execute o seguinte comando para ver todas as sub-redes partilhadas disponíveis:
    gcloud compute networks subnets list-usable --project $HOST_PROJECT  --format yaml
    

    Exemplo de saída:

    ipCidrRange: 10.0.0.0/20
    network: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/global/networks/hub-vpc
    subnetwork: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/regions/europe-west1/subnetworks/sub1
  2. Crie estas variáveis de ambiente:
    BACKEND_SERVICE_PROJECT=PROJECT_ID
    SHARED_VPC_SUBNET=SUBNET
    

    Onde:

    • PROJECT_ID é o nome do projeto de serviço que criou para os serviços de back-end.
    • SUBNET é uma das sub-redes geradas pelo comando anterior.
  3. Para criar um serviço de back-end httpbin no projeto para fins de teste, use o seguinte comando:
    gcloud compute --project=$BACKEND_SERVICE_PROJECT instances create-with-container httpbin \
      --machine-type=e2-small --subnet=$SHARED_VPC_SUBNET \
      --image-project=cos-cloud --image-family=cos-stable --boot-disk-size=10GB \
      --container-image=kennethreitz/httpbin --container-restart-policy=always --tags http-server
    
  4. Crie e implemente um proxy de API do Apigee seguindo os passos em Criar um proxy de API.
  5. Obtenha o endereço IP interno da máquina virtual (VM) onde o serviço de destino está em execução. Vai usar este IP no passo seguinte para chamar o proxy da API de teste:
    gcloud compute instances list --filter=name=httpbin
  6. Para testar a configuração, ligue para o proxy. Use o endereço IP interno da VM que obteve no passo anterior. O exemplo seguinte pressupõe que deu o nome /myproxy ao caminho base do proxy. Por exemplo:
    curl -v https://INTERNAL_IP/myproxy

    Esta chamada API devolve Hello, Guest!.