Aprovisione uma organização de avaliação com intercâmbio da VPC

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

Veja a documentação do Apigee Edge.

Resumo dos passos

Este documento explica como instalar e configurar uma organização de avaliação do Apigee (ou organização de avaliação) a partir da linha de comandos. As organizações de avaliação expiram após 60 dias e podem ter outras limitações. Consulte também Comparar organizações de avaliação e pagas.

Os passos de aprovisionamento são os seguintes:

Passo 1: defina variáveis de ambiente

Configure o gcloud e defina variáveis de ambiente para utilização em passos posteriores:

  1. Certifique-se de que cumpriu os requisitos indicados em Pré-requisitos.
  2. Tem de ter a CLI gcloud instalada. Se precisar de a instalar, consulte o artigo Instalar a CLI gcloud.
  3. Inicialize a CLI gcloud, conforme descrito em Inicializar a CLI gcloud ou, se a CLI já estiver inicializada, certifique-se de que o projeto do Google Cloud que criou em Pré-requisitos é o projeto predefinido 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"

    Onde:

    • AUTH define o cabeçalho Authentication com um token de portador. Vai usar este cabeçalho quando chamar as APIs Apigee. Tenha em atenção que o token expira após um período e, quando isso acontece, pode simplesmente regenerá-lo através do mesmo comando. Para mais informações, consulte a página de referência do comando print-access-token.
    • PROJECT_ID é o ID do projeto do Google Cloud que criou como parte dos Pré-requisitos.
    • RUNTIME_LOCATION é a localização física onde a instância do Apigee está localizada. Para ver uma lista de localizações de tempo de execução disponíveis, consulte Localizações do Apigee.

    • ANALYTICS_REGION é a localização física na qual os dados de estatísticas do Apigee serão armazenados. Para uma lista das regiões do Apigee API Analytics disponíveis, consulte as localizações do Apigee.

      RUNTIME_LOCATION e ANALYTICS_REGION podem ser a mesma região, mas não têm de ser. No entanto, pode haver uma vantagem em termos de desempenho se forem iguais.

  5. (Opcional) Verifique o seu trabalho repetindo os valores que acabou de definir. Tenha em atenção que, quando quiser usar uma variável nos seus comandos, preceda o nome da variável com um cifrão ($).
    echo $AUTH
    echo $PROJECT_ID
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    

    As respostas aos seus comandos echo devem ter um aspeto semelhante ao seguinte:

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

Passo 2: ative as APIs

  1. O Apigee requer que ative várias APIs Google Cloud. Ative-as executando o 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 o 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 acabou de ativar (Apigee, Service Networking, Cloud KMS e Compute Engine).

Passo 3: configure a rede de serviços

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

    Onde:

    • RANGE_NAME é o nome do intervalo de endereços IP que está a criar. Pode atribuir qualquer nome ao intervalo. Por exemplo: google-svcs
    • NETWORK_NAME é o nome do recurso de rede no qual os endereços devem ser reservados. A Google cria uma rede predefinida (denominada default) para cada novo projeto, para que a possa usar. No entanto, a Google não recomenda a utilização da rede predefinida para fins que não sejam testes.
  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 opcionalmente um ou mais IPs de endereço para o comprimento do prefixo de /22. Por exemplo, para atribuir o bloco CIDR 192.168.0.0/22, especifique 192.168.0.0 para o endereço e 22 para o comprimento do prefixo. Consulte também Criar uma atribuição de IP.

    Se não fornecer o parâmetro --addresses, o gcloud seleciona um intervalo de endereços disponível para si.

    Em caso de êxito, o gcloud responde com o seguinte:

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

    Depois de criar um intervalo de endereços IP, os endereços são associados ao projeto até os libertar.

  3. Crie um segundo intervalo de IP com um comprimento CIDR de /28. Este intervalo é usado pelo Apigee para fins de resolução de problemas e não pode ser personalizado nem 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 opcionalmente um ou mais IPs de endereço para o comprimento do prefixo de /28. Por exemplo, para atribuir o bloco CIDR 192.168.0.0/28, especifique 192.168.0.0 para o endereço e 28 para o comprimento do prefixo. Consulte também Criar uma atribuição de IP.

    Se não fornecer o parâmetro --addresses, o gcloud seleciona um intervalo de endereços disponível para si.

  4. Associe os seus serviços à rede através do 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

    Esta operação pode demorar alguns minutos a ser concluída. Em caso de êxito, o gcloud responde com o seguinte:

    Operation "operations/OPERATION_ID" finished successfully.

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

    O Apigee cria uma ligação entre a sua rede e os serviços da Google; especificamente, o Apigee liga o seu projeto à API Service Networking através do intercâmbio de VPC. O Apigee também associa endereços IP ao seu projeto.

Passo 4: crie uma organização

Uma organização é o contentor de nível superior no Apigee. Contém todos os seus proxies de API e recursos relacionados. Para obter detalhes, consulte o artigo Compreender as organizações.

  1. Crie uma nova organização de avaliação com 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 executa o comando provision, a Google inicia um LRO para criar a organização de avaliação. Esta operação demora até 40 minutos a ser concluída. Durante esse período, o gcloud apresenta o seguinte:

    Provisioning organization...

    Quando a organização de avaliação e a respetiva instância de tempo de execução associada são criadas, gcloud responde com a seguinte mensagem:

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

    gcloud alpha apigee operations list --organization=$PROJECT_ID

    deve ver que todos os UUIDs estão no estado FINISHED. Por 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

Passo 5: configure o encaminhamento

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

Tipo de acesso Descrição do processo de configuração e implementação
Internos

Permita apenas o acesso interno aos seus proxies de API.

Tem de criar uma nova VM na rede e estabelecer ligação à mesma. A partir da nova VM, pode enviar um pedido a um proxy de API do Apigee.

Externo

Permita o acesso externo aos seus proxies de API.

Use o Private Service Connect (PSC) para ativar a ligação privada entre um produtor de serviços (Apigee) e um consumidor de serviços (o projeto de VPC com peering e/ou um ou mais projetos do Google Cloud que controla). Com este método, os pedidos passam por um balanceador de carga externo global para um único ponto de ligação, denominado anexo de serviço. Esta configuração permite-lhe enviar pedidos de proxy de API do Apigee a partir de qualquer máquina com ligação à rede.

Cada uma destas abordagens de planeamento de trajeto é apresentada num separador nas instruções abaixo.

Encaminhamento interno

Não existem tarefas a realizar para este passo se estiver a usar a linha de comandos para configurar um proxy de API apenas para acesso interno. Pode avançar para o Passo 6: chame o proxy da API de exemplo, onde vai enviar um pedido ao seu proxy da API.

Encaminhamento externo

Esta secção descreve como configurar o encaminhamento externo através do Private Service Connect (PSC) para permitir a comunicação entre o Apigee e as VPCs que controla. Tem de o fazer antes de poder enviar um pedido de um cliente externo para a sua instância do tempo de execução do Apigee.

Os passos de configuração externos são:

Passo 5a: crie um grupo de pontos finais de rede (NEG)
Passo 5b: configure o balanceador de carga

Cada um destes passos é descrito nas secções seguintes.

Passo 5a: crie um grupo de pontos finais de rede (NEG)

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

    Na saída de exemplo seguinte, o valor serviceAttachment é apresentado a 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 pontos finais da rede (NEG) do Private Service Connect que aponte para a associação de serviços que obteve do corpo da resposta da instância no passo 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 o seguinte:

    • NEG_NAME: um nome para o grupo de pontos finais da rede.
    • TARGET_SERVICE: o anexo de serviço ao qual quer estabelecer ligação. Por exemplo: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
    • SUBNET_NAME: nome da sub-rede usada para a conetividade privada ao produtor. O tamanho da sub-rede pode ser pequeno: o NEG do PSC só precisa de um IP da sub-rede. Para o Apigee, só é necessário um NEG do PSC por região. A sub-rede pode ser partilhada e usada por VMs ou outras entidades. Se não for especificada uma sub-rede, os pontos finais de rede podem pertencer a qualquer sub-rede na região onde o grupo de pontos finais de rede é criado.

Passo 5b: configure o equilibrador 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 equilíbrio de carga nesta 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 NEG ao serviço de back-end:
    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 o seguinte:

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

    Um mapa de URLs tem de fazer referência a um serviço de back-end predefinido. Defina o serviço de back-end que acabou de criar como predefinição.

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

    Substitua o seguinte:

    • URL_MAP_NAME: um nome para o mapa de URLs.
    • DEFAULT_BACKEND_SERVICE_NAME: o nome do serviço de back-end predefinido do balanceador de carga. A predefinição é usada quando nenhuma regra de anfitrião corresponde ao nome do anfitrião pedido.
  6. Crie um certificado SSL para o proxy HTTPS de destino.

    Para criar um balanceador de carga HTTPS, tem de ter um recurso de certificado SSL para usar no proxy de destino HTTPS. Pode criar um recurso de certificado SSL através de um certificado SSL gerido pela Google ou de um certificado SSL autogerido.

    Use este comando para criar um recurso de certificado SSL gerido pela Google:

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

    Substitua o seguinte:

    • CERTIFICATE: um nome para o certificado.
    • DOMAIN: o nome do domínio que vai usar para o balanceador de carga externo.

    Para criar um certificado SSL autogerido, precisa de um ficheiro de chave privada local e um ficheiro de certificado local. Se precisar de criar estes ficheiros, consulte o artigo Usar certificados SSL autogeridos.

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

    Substitua o seguinte:

    • CERTIFICATE: um nome para o certificado.
    • LB_CERT: o caminho para o ficheiro de certificado no formato PEM do seu certificado autogerido.
    • LB_PRIVATE_KEY: o caminho para o ficheiro de chave privada no formato PEM do seu certificado autogerido.
  7. O aprovisionamento do certificado pode demorar até uma hora. Para verificar o estado do aprovisionamento, 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 do Apigee que foi criado para si. O nome do grupo de ambientes é 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 estado da operação do grupo de ambientes:
    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 HTTPS de destino.

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

    Substitua o seguinte:

    • PROXY_NAME: um nome para o proxy HTTPS de destino.
    • URL_MAP_NAME: o nome do mapa de URLs.
    • CERTIFICATE: o nome do recurso do 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 o seguinte:

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

O aprovisionamento do Apigee está concluído.

Passo 6: chame o proxy da API de exemplo

Foi criado e implementado um proxy de API denominado hello-world para si durante o aprovisionamento. Neste passo, vai testar a nova organização de avaliação chamando o proxy.

Chame o proxy com o encaminhamento interno

Se escolheu a opção de encaminhamento interno no passo 5, siga os passos em Chamar um proxy de API com acesso apenas interno.

Chame o proxy com o encaminhamento externo

Se escolheu a opção de encaminhamento externo no passo 5, siga os passos desta secção.

  1. Configure uma entrada DNS para o seu domínio. Seguem-se duas formas de realizar esta tarefa:
    • Na entidade de registo, crie um registo A que aponte para o seu domínio. Por exemplo, se o seu domínio for sales.example.com e o IP for 10.23.0.2, então direcione o registo para 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 Cloud DNS da Google para mapear um URL para um endereço IP.
  2. Confirme se o proxy hello-world está implementado:
    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
  3. Chame o proxy da API:

    Envie um pedido para o proxy de API a partir de qualquer máquina com ligação à rede executando o seguinte comando:

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

    Onde DOMAIN é o domínio que colocou no certificado e adicionou ao grupo de ambientes, conforme abordado no passo 5: configure o encaminhamento. Se necessário, pode usar esta API para obter o valor DOMAIN do grupo de ambientes:

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

    Após o êxito, o proxy da API de exemplo devolve a resposta:

    Hello, Guest!

    Sugestões de resolução de problemas:

    Se receber um erro de handshake, verifique o estado do certificado SSL. Para obter informações sobre a resolução de problemas de certificados autogeridos e geridos pela Google, consulte o artigo Resolva problemas de certificados SSL.

    Certifique-se de que o seu domínio registado tem um registo A que aponta para o endereço IP do endereço IPv4 externo global criado no passo 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 conseguir resolver a configuração do domínio, experimente chamar o proxy com este comando:

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

Seguinte: para saber mais sobre a criação e a implementação de proxies de API, consulte o artigo Crie a sua primeira vista geral do proxy de API.