Provisionar uma organização de avaliação com peering de VPC

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

Confira a documentação da Apigee Edge.

Resumo das etapas

Neste documento, explicamos como instalar e configurar uma organização (ou organização de avaliação) da Apigee na linha de comando. As organizações de avaliação expiram após 60 dias e podem ter outras limitações. Consulte também Como comparar organizações pagas e de avaliação.

As etapas de provisionamento são as seguintes:

Etapa 1: definir variáveis de ambiente

Configure gcloud e defina variáveis de ambiente para uso em etapas posteriores:

  1. Verifique se você atende aos requisitos de configuração listados em Pré-requisitos.
  2. A CLI gcloud precisa estar instalada. Se precisar instalá-lo, consulte Como instalar a CLI gcloud.
  3. Inicialize a CLI gcloud, conforme descrito em Como inicializar a CLI gcloud, ou, se a CLI já estiver inicializada, verifique se o projeto do Google Cloud que você criou em Pré-requisitos é o projeto padrão para o gcloud.
  4. Defina as seguintes variáveis de ambiente:
    AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    ANALYTICS_REGION="YOUR_ANALYTICS_REGION"

    Em que:

    • AUTH define o cabeçalho Authentication com um token do portador. Você usará esse cabeçalho ao chamar as APIs da Apigee. Observe que o token expira após um certo tempo. Quando isso acontecer, basta gerar o token novamente usando o mesmo comando. Saiba mais na página de referência do comando print-access-token.
    • PROJECT_ID é o ID do projeto do Cloud que você criou como parte dos pré-requisitos.
    • RUNTIME_LOCATION é o local físico em que a instância da Apigee está localizada. Para conferir uma lista de locais disponíveis para o ambiente de execução, consulte Locais da Apigee.

    • ANALYTICS_REGION é o local físico em que os dados de análise da Apigee são armazenados. Para uma lista de regiões disponíveis da Apigee API Analytics, consulte Locais da Apigee.

      RUNTIME_LOCATION e ANALYTICS_REGION podem ser a mesma região, mas não precisam ser os mesmos. No entanto, isso poderá resultar em uma melhoria no desempenho.

  5. (Opcional) Verifique seu trabalho incluindo os valores que você acabou de definir. Quando quiser usar uma variável nos comandos, coloque o cifrão ($) antes do nome dela.
    echo $AUTH
    echo $PROJECT_ID
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    

    As respostas aos comandos echo precisam ser semelhantes a estas:

    Authorization: Bearer ya29.a123456678940B63hPSAMPLEsampleKKYVsample0f3pWDWZDuH2-hENkNa
    TvgZ1PD977TMvv6edBQPJezdHw040880Ol_LoD5ZDkt-i-knizia_KhA9L20sSvztL81-SAMPLE42ELPMASk2_
    1CxN
    my-cloud-project
    us-west1
    us-west1
    

Etapa 2: ativar as APIs

  1. A Apigee requer a ativação de várias APIs do Google Cloud. Ative as APIs executando o seguinte comando services enable:

    gcloud services enable apigee.googleapis.com \
      servicenetworking.googleapis.com compute.googleapis.com \
      cloudkms.googleapis.com --project=$PROJECT_ID
  2. (Opcional) Para verificar seu trabalho, use o comando services list para mostrar todas as APIs ativadas:

    gcloud services list

    A resposta mostra todos os serviços ativados, incluindo as APIs que você acabou de ativar (Apigee, Service Networking, Cloud KMS e Compute Engine).

Etapa 3: configurar a rede de serviços

  1. Crie estas variáveis de ambiente:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    Em que:

    • RANGE_NAME é o nome do intervalo de endereços IP que você está criando. Você dá o nome que quiser a ele; Por exemplo: google-svcs
    • NETWORK_NAME é o nome do recurso de rede em que os endereços precisam ser reservados. O Google cria uma rede padrão (chamada default) para cada novo projeto, para que você possa usar isso. No entanto, o Google não recomenda usar a rede padrão para qualquer finalidade que não seja teste.
  2. Crie um intervalo de IP com um comprimento CIDR de /22:
    gcloud compute addresses create $RANGE_NAME \
      --global \
      --prefix-length=22 \
      --description="Peering range for Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    Em que --addresses permite especificar um ou mais IPs de endereço para o comprimento do prefixo de /22. Por exemplo, para alocar o bloco CIDR 192.168.0.0/22, especifique 192.168.0.0 como endereço e 22 como tamanho de prefixo. Consulte também Como criar uma alocação de IP.

    Se você não fornecer o parâmetro --addresses, a gcloud selecionará um intervalo de endereços disponível.

    Em caso de sucesso, gcloud responderá com o seguinte:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].

    Depois que você criar um intervalo de endereços IP, os endereços serão associados ao projeto até que você os libere.

  3. Crie um segundo intervalo de IP com um comprimento CIDR de /28. Esse intervalo é usado pela Apigee para fins de solução de problemas e não pode ser personalizado ou alterado.
    gcloud compute addresses create google-managed-services-support-1 \
      --global \
      --prefix-length=28 \
      --description="Peering range for supporting Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    Em que --addresses permite especificar um ou mais IPs de endereço para o comprimento do prefixo de /28. Por exemplo, para alocar o bloco CIDR 192.168.0.0/28, especifique 192.168.0.0 como endereço e 28 como tamanho de prefixo. Consulte também Como criar uma alocação de IP.

    Se você não fornecer o parâmetro --addresses, a gcloud selecionará um intervalo de endereços disponível.

  4. Conecte os serviços à VPC usando o seguinte comando:
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK_NAME \
      --ranges=$RANGE_NAME,google-managed-services-support-1 \
      --project=$PROJECT_ID

    Essa operação pode levar vários minutos para ser concluída. Em caso de sucesso, gcloud responderá com o seguinte:

    Operation "operations/OPERATION_ID" finished successfully.

    Em que OPERATION_ID é o UUID da LRO (operação de longa duração).

    A Apigee cria uma conexão entre sua VPC e os serviços do Google. Especificamente, a Apigee conecta seu projeto à API Service Networking usando o peering de VPC. A Apigee também associa os endereços IP ao seu projeto.

Etapa 4: criar uma organização

Uma organização é o contêiner de nível superior no Apigee. Ela contém todos os proxies de API e recursos relacionados. Saiba mais em Noções básicas sobre organizações.

  1. Crie uma nova organização de avaliação usando o comando gcloud alpha apigee organizations:
    gcloud alpha apigee organizations provision \
      --runtime-location=$RUNTIME_LOCATION \
      --analytics-region=$ANALYTICS_REGION \
      --authorized-network=$NETWORK_NAME \
      --project=$PROJECT_ID

    Em que --authorized-network é o nome da sua rede de peering personalizada. Por exemplo, default.

  2. Quando você executa o comando provision, o Google inicia uma LRO para criar a organização de avaliação. Essa operação leva até 40 minutos para ser concluída. Durante esse período, gcloud exibe o seguinte:

    Provisioning organization...

    Quando a organização de avaliação e a instância de ambiente de execução associada são criadas, o gcloud responde assim:

    Provisioning organization...done.
  3. Se você executar o seguinte comando:

    gcloud alpha apigee operations list --organization=$PROJECT_ID

    Você verá que todos os UUIDs estão no estado FINISHED. Exemplo:

    UUID                                  ORGANIZATION  STATE
    00bab06f-c60c-41a5-4242-7SAMPLE7f     my-org        FINISHED
    429790a7-3151-4642-4343-7SAMPLE7f     my-org        FINISHED
    d00a92a9-9b83-4642-4343-7SAMPLE7f     my-org        FINISHED
    f48a00ff-7daa-4c4a-4444-7SAMPLE7f     my-org        FINISHED

Etapa 5: configurar o roteamento

Decida se quer permitir o acesso externo ou somente o acesso interno:

Tipo de acesso Descrição do processo de configuração e implantação
Interno

Permita apenas o acesso interno aos proxies da API.

Você precisa criar uma nova VM dentro da rede e conectar-se a ela. Na nova VM, é possível enviar uma solicitação a um proxy de API da Apigee.

Externo

Permita o acesso externo aos proxies de API.

Use o Private Service Connect (PSC) para ativar a conexão particular entre um produtor de serviços (Apigee) e um consumidor de serviço (o projeto VPC com peering e/ou um ou mais projetos do Cloud que você controla). Com esse método, as solicitações passam por um balanceador de carga externo global para um único ponto de anexo, chamado de Anexo de serviço. Essa configuração permite enviar solicitações de proxy de API da Apigee de qualquer máquina ativada para rede.

Cada uma destas abordagens de roteamento é apresentada em uma guia nas instruções abaixo.

Roteamento interno

Não há tarefas a serem executadas nesta etapa, se você usa a linha de comando para configurar um proxy de API somente para acesso interno. Pule para a Etapa 6: chamar o proxy de API de exemplo, em que você vai enviar uma solicitação para o proxy de API.

Roteamento externo

Nesta seção, descrevemos como configurar o roteamento externo usando o Private Service Connect (PSC, na sigla em inglês) para permitir a comunicação entre a Apigee e as VPCs que você controla. É necessário fazer isso para enviar uma solicitação de um cliente externo à instância de ambiente de execução da Apigee.

As etapas de configuração externas são:

Etapa 5a: criar um grupo de endpoints da rede (NEG)
Etapa 5b: configurar o balanceador de carga

Cada uma dessas etapas é descrita nas seções a seguir.

Etapa 5a: criar um grupo de endpoints de rede (NEG)

  1. Acesse o anexo de serviço da sua instância da Apigee:
    curl -i -X GET -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    No exemplo de saída a seguir, o valor serviceAttachment é mostrado em negrito:

    {
      "instances": [
        {
          "name": "eval-instance",
          "location": "us-west1",
          "host": "10.72.100.2",
          "port": "443",
          "createdAt": "1657832463500",
          "lastModifiedAt": "1657833920670",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-8-0-apigee-18",
          "ipRange": "10.74.100.0/28,10.74.100.16/28",
          "consumerAcceptList": [
            "apigee-eval-test"
          ],
          "serviceAttachment": "projects/s8da1b0111eb33765-tp/regions/us-west1/serviceAttachments/apigee-us-west1-icza"
        }
      ]
    }
  2. Crie um grupo de endpoints da rede (NEG, na sigla em inglês) do Private Service Connect que aponte para o anexo de serviço obtido do corpo de resposta da instância na etapa anterior.

    gcloud compute network-endpoint-groups create NEG_NAME \
      --network-endpoint-type=private-service-connect \
      --psc-target-service=TARGET_SERVICE \
      --region=$RUNTIME_LOCATION \
      --network=$NETWORK_NAME \
      --subnet=SUBNET_NAME \
      --project=$PROJECT_ID
    

    Substitua:

    • NEG_NAME: um nome para o grupo de endpoints da rede.
    • TARGET_SERVICE: o anexo de serviço ao qual você quer se conectar. Por exemplo: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
    • SUBNET_NAME: nome da sub-rede usada para conectividade particular com o produtor. O tamanho da sub-rede pode ser pequeno: o NEC PSC só precisa de um IP da sub-rede. Para a Apigee, apenas um NEG de PSC é necessário por região. A sub-rede pode ser compartilhada e usada por VMs ou outras entidades. Se uma sub-rede não for especificada, os endpoints de rede poderão pertencer a qualquer sub-rede na região em que o grupo de endpoints de rede é criado.

Etapa 5b: configurar o balanceador de carga

Configure um balanceador de carga HTTP(S) externo global (esquema de balanceamento de carga definido como EXTERNAL_MANAGED).

Embora o NEG do Private Service Connect seja regional, todos os outros componentes de balanceamento de carga nessa configuração são globais.

  1. Reserve um endereço IPv4 externo global para o balanceador de carga.
    gcloud compute addresses create ADDRESS_NAME \
      --ip-version=IPV4 --global --project=$PROJECT_ID

    Substitua ADDRESS_NAME por um nome para o recurso de endereço IP.

    Execute este comando para ver o endereço IP reservado:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID
  2. Crie um serviço de back-end para o NEG:
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global --project=$PROJECT_ID
  3. Substitua BACKEND_SERVICE_NAME pelo nome do serviço de back-end.

  4. Adicione o serviço de back-end ao NEG.
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=$RUNTIME_LOCATION \
      --global --project=$PROJECT_ID

    Substitua:

    • BACKEND_SERVICE_NAME: o nome do serviço de back-end.
    • NEG_NAME: o nome do grupo de endpoints da rede.
  5. Crie um mapa de URL para o balanceador de carga.

    Um mapa de URL precisa referir-se a um serviço de back-end padrão. Defina o serviço de back-end que você acabou de criar como padrão.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=DEFAULT_BACKEND_SERVICE_NAME \
      --global --project=$PROJECT_ID

    Substitua:

    • URL_MAP_NAME: um nome para o mapa de URL.
    • DEFAULT_BACKEND_SERVICE_NAME: o nome do serviço de back-end padrão do balanceador de carga. O padrão é usado quando nenhuma regra de host corresponde ao nome do host solicitado.
  6. Crie um certificado SSL para o proxy de destino HTTPS.

    Para criar um balanceador de carga HTTPS, você precisa ter um recurso de certificado SSL para usar no proxy de destino HTTPS. É possível criar um recurso de certificado SSL usando um certificado SSL gerenciado pelo Google ou um certificado SSL autogerenciado.

    Use este comando para criar um recurso de certificado SSL gerenciado pelo Google:

    gcloud compute ssl-certificates create CERTIFICATE \
      --domains DOMAIN --project=$PROJECT_ID

    Substitua:

    • CERTIFICATE: um nome para o certificado.
    • DOMAIN: o nome de domínio que você usará para o balanceador de carga externo.

    Para criar um certificado SSL autogerenciado, você precisa de um arquivo de chave privada local e de um arquivo de certificado local. Se você precisar criar esses arquivos, consulte Como usar certificados SSL autogerenciados.

    gcloud compute ssl-certificates create CERTIFICATE \
      --certificate LB_CERT \
      --private-key LB_PRIVATE_KEY --project=$PROJECT_ID

    Substitua:

    • CERTIFICATE: um nome para o certificado.
    • LB_CERT: o caminho para o arquivo de certificado formatado em PEM do certificado autogerenciado.
    • LB_PRIVATE_KEY: o caminho para o arquivo de chave privada formatado em PEM do certificado autogerenciado.
  7. O provisionamento do certificado pode levar até uma hora. Para ver o status do provisionamento, execute este comando:

    gcloud compute ssl-certificates describe CERTIFICATE \
       --global \
       --format="get(name,managed.status, managed.Status)"
  8. Adicione o domínio ao grupo de ambientes da Apigee que foi criado para você. O nome do grupo de ambiente é eval-group:
    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group" \
      -H "$AUTH" \
      -X PATCH \
      -H "Content-Type:application/json" \
      -d '{
        "hostnames":["'"DOMAIN"'"]
      }'
  9. Verifique o status da operação do grupo de ambiente:
    curl -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
    
  10. Use o recurso de certificado SSL para criar um proxy de destino HTTPS.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE --project=$PROJECT_ID

    Substitua:

    • PROXY_NAME: um nome para o proxy HTTPS de destino.
    • URL_MAP_NAME: o nome do mapa de URL.
    • CERTIFICATE: o nome do recurso de certificado.
  11. Crie a regra de encaminhamento.
    gcloud compute forwarding-rules create FWD_RULE \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=ADDRESS_NAME \
      --target-https-proxy=PROXY_NAME \
      --ports=443 \
      --global --project=$PROJECT_ID

    Substitua:

    • FWD_RULE: um nome para a regra de encaminhamento.
    • ADDRESS_NAME: o recurso de endereço IP que você reservou para usar na regra de encaminhamento.
    • PROXY_NAME: o nome do proxy HTTPS de destino.

O provisionamento da Apigee foi concluído.

Etapa 6: chamar o proxy de API de amostra

Um proxy de API chamado hello-world foi criado e implantado para você durante o provisionamento. Nesta etapa, você testa a nova organização de avaliação chamando o proxy.

Chamar o proxy com roteamento interno

Se você escolheu a opção de roteamento interno na etapa 5, siga as etapas em Como chamar um proxy de API com acesso somente interno.

Chamar o proxy com roteamento externo

Se você escolheu a opção de roteamento externo na Etapa 5, siga as etapas nesta seção.

  1. Configure uma entrada DNS para o host. Veja duas maneiras de realizar essa tarefa:
    • No registrador, crie um registro A que aponte para seu domínio. Por exemplo, se o nome do host for sales.example.com e o IP for 10.23.0.2, aponte o registro de sales.example.com para o endereço 10.23.0.2.

      Execute este comando para ver o endereço IP reservado:

      gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --global --project=$PROJECT_ID
    • Use o Google Cloud DNS para mapear um URL para um endereço IP.
  2. Confirme se o proxy hello-world está implantado:
    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
  3. Chame o proxy de API:

    Envie uma solicitação ao proxy de API de qualquer máquina em rede executando o seguinte comando:

    curl -i -H "Host: DOMAIN" \
      https://DOMAIN/hello-world

    Em que DOMAIN é o domínio que você colocou no certificado e adicionado ao grupo de ambiente, conforme discutido na Etapa 5: configurar o roteamento. Se necessário, use essa API para receber o valor DOMAIN do grupo de ambiente:

    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"

    Após a conclusão, o proxy de API de amostra retornará a resposta:

    Hello, Guest!

    Dicas para solução de problemas:

    Se você receber um erro de handshake, verifique o status do certificado SSL. Para informações sobre como solucionar problemas de certificados autogerenciados e gerenciados pelo Google, consulte Solução de problemas de certificados SSL.

    Verifique se o domínio registrado tem um registro A que aponta para o endereço IP do endereço IPv4 externo global criado na etapa 5. Execute este comando para ver o endereço IP reservado:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID

    Se não for possível resolver a configuração do domínio, tente chamar o proxy com este comando:

    curl  -H Host:DOMAIN --resolve \
      DOMAIN:443:EXTERNAL_IP_ADDRESS  \
      https://DOMAIN:443/hello-world -k

Próxima: para saber mais sobre como criar e implantar proxies de API, consulte Criar a primeira visão geral do proxy de API.