Como usar redes VPC compartilhadas

Esta página se aplica à Apigee, mas não à Apigee híbrida.

Confira a documentação da Apigee Edge.

Neste documento, você verá como configurar um host de nuvem privada virtual (VPC) compartilhada e anexar projetos separados de serviço de destino de back-end da Apigee. As redes VPC compartilhadas permitem implementar uma infraestrutura de rede centralizada e gerenciada com o Google Cloud. É possível usar uma única rede VPC em um projeto host para conectar recursos de vários projetos de serviço.

Benefício da VPC compartilhada

O ambiente de execução da Apigee (em execução em uma VPC gerenciada pelo Google) está em peering com sua VPC. Nessa topologia, o endpoint do ambiente de execução da Apigee pode se comunicar com a rede VPC, como mostrado no diagrama a seguir:

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

Consulte também a visão geral da arquitetura da Apigee.

Em muitos cenários, a topologia descrita acima é muito simples, porque a rede VPC faz parte de um único projeto do Google Cloud, e muitas organizações querem seguir as práticas recomendadas das hierarquias de recursos e separar a infraestrutura em vários projetos. Imagine uma topologia de rede em que temos o projeto de locatário da Apigee em peering com uma rede VPC, mas com back-ends internos localizados na VPC de outro projeto. Conforme mostrado neste diagrama:

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

Se você fizer o peering da VPC da Apigee com a VPC de back-end, como mostra o diagrama, o back-end poderá ser acessado na rede VPC da Apigee e vice-versa, porque o peering de rede é simétrico. No entanto, o projeto de locatário da Apigee só pode se comunicar com a VPC da Apigee, já que o peering não é transitivo, conforme descrito na documentação de peering de VPC. Para que isso aconteça, implante mais proxies na sua VPC da Apigee para encaminhar tráfego com o link de peering para a VPC de back-end. No entanto, essa abordagem adiciona sobrecarga operacional e manutenção extra.

A VPC compartilhada oferece uma solução para o problema descrito acima. A VPC compartilhada permite estabelecer conectividade entre o ambiente de execução da Apigee e os back-ends localizados em outros projetos do Google Cloud na mesma organização sem componentes de rede adicionais.

Como configurar uma VPC compartilhada com a Apigee

Nesta seção, explicamos como anexar um projeto de serviço da VPC da Apigee a um host da VPC compartilhada. As sub-redes definidas no projeto host são compartilhadas com os projetos de serviço. Em uma seção posterior, explicaremos como criar uma segunda sub-rede para serviços de back-end implantados em um segundo projeto de serviço VPC. O diagrama a seguir mostra a arquitetura resultante:

Visão geral da arquitetura
de VPC compartilhada

A Apigee fornece um script de provisionamento para simplificar a criação da topologia necessária. Siga as etapas nesta seção para fazer o download e usar o script de provisionamento para configurar a Apigee X com uma VPC compartilhada.

Pré-requisitos

  1. Veja os conceitos discutidos em Visão geral da VPC compartilhada. É importante entender os conceitos de projeto host e projeto de serviço.
  2. Crie um novo projeto do Google Cloud que você possa configurar para a VPC compartilhada. Este é o projeto host. Consulte Como criar e gerenciar projetos.
  3. Siga as etapas em Como provisionar a VPC compartilhada para provisionar o projeto para a VPC compartilhada. Você precisa ser um administrador da organização ou ter recebido papéis administrativos de gerenciamento de identidade e acesso (IAM) apropriados para ativar o projeto host para a VPC compartilhada.
  4. Crie um segundo projeto do Google Cloud. Este é um projeto de serviço. Posteriormente, você o anexará ao projeto host.

Faça o download do script

A Apigee fornece um script de provisionamento para simplificar a criação da topologia necessária. Você precisa extrair o script pelo GitHub:

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

    Em que:

    • HOST_PROJECT_ID é o ID do projeto host da VPC compartilhada que você criou como um dos pré-requisitos.
    • SERVICE_PROJECT_ID é o ID do projeto de serviço do Google Cloud que você criou nos pré-requisitos.

Configurar o projeto host

  1. Configure as variáveis de ambiente a seguir:
  2. export NETWORK=YOUR_SHARED_VPC
    export SUBNET=YOUR_SHARED_SUBNET
    export PEERING_CIDR=CIDR_BLOCK

    Em que:

    • YOUR_SHARED_VPC é o nome da sua rede VPC compartilhada.
    • YOUR_SHARED_SUBNET é o nome da sua sub-rede da VPC compartilhada.
    • CIDR_BLOCK é o bloco CIDR da VPC da Apigee. Por exemplo, 10.111.0.0/23.
  3. Para configurar o peering e o firewall da VPC da 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 host. A saída será semelhante à seguinte, em que NETWORK e SUBNET representam os caminhos totalmente qualificados no projeto host:

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

Configurar o projeto de serviço

Nesta etapa, você configura o projeto de serviço. Quando o script for concluído, ele criará e implantará um proxy de API de amostra no ambiente da Apigee que poderá ser usado para testar o provisionamento.

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

    O script cria um proxy de amostra no ambiente da Apigee e imprime um comando curl em STDOUT que você pode chamar para testar o provisionamento.

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

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

Recomendamos separar a infraestrutura do Google Cloud em vários projetos. Veja uma hierarquia de recursos para sua zona de destino do Google Cloud. Nesta seção, explicamos como implantar um serviço de back-end em um projeto de serviço separado e anexá-lo ao host da VPC compartilhada. A Apigee pode usar o serviço de back-end como um destino de proxy da API, porque o projeto de serviço da Apigee e o projeto de serviço de back-end estão anexados ao host da VPC compartilhada.

Pré-requisitos

Para realizar essas etapas, presumimos que você tenha sua VPC compartilhada já configurada e compartilhada com o projeto de serviço de back-end, conforme descrito em Como configurar a VPC compartilhada.

Configurar o projeto de serviço

Nesta seção, você testará um serviço de back-end em outra sub-rede VPC compartilhada, criará uma segunda sub-rede no projeto host e usará o endereço IP RFC1918 particular como o URL de destino para os proxies de API da Apigee.

  1. No seu projeto de serviço de back-end, execute o comando a seguir para ver todas as sub-redes compartilhadas 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
    

    Em que:

    • PROJECT_ID é o nome do projeto de serviço que você criou para os serviços de back-end.
    • SUBNET é uma das saídas de sub-redes do comando anterior.
  3. Para criar um serviço httpbin de back-end no projeto para fins de teste, use o comando a seguir:
    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 implante um proxy de API da Apigee seguindo as etapas em Criar um proxy de API.
  5. Consiga o endereço IP interno da máquina virtual (VM) em que o serviço de destino está sendo executado. Você usará esse IP na próxima etapa para chamar o proxy de API de teste:
    gcloud compute instances list --filter=name=httpbin
  6. Para testar a configuração, chame o proxy. Use o endereço IP interno da VM que você recebeu na etapa anterior. No exemplo a seguir, presumimos que você nomeou o caminho base do proxy como /myproxy. Exemplo:
    curl -v https://INTERNAL_IP/myproxy

    Essa chamada de API retorna Hello, Guest!.