Como chamar um proxy de API com acesso somente interno

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

Confira a documentação da Apigee Edge.

Neste documento, explicamos como chamar proxies de API de clientes em execução na sua rede interna. Essas etapas são úteis para testar sua configuração se a Apigee estiver provisionada para usar roteamento de rede interno. Siga as etapas deste documento se a Apigee tiver sido provisionada com qualquer uma destas configurações de roteamento de rede:

Opção de provisionamento Opção de rede Etapas de provisionamento
Assinatura Com peering de VPC Roteamento interno (VPC)
Roteamento interno (PSC)
Pagamento por uso Com peering de VPC Roteamento interno (VPC)
Roteamento interno (PSC)
Avaliação Com peering de VPC Configurar o roteamento (interno)
Avaliação Sem peering de VPC Roteamento interno (PSC, na sigla em inglês)

Consulte também Opções de rede.

Antes de começar

Siga estas etapas de configuração preliminar:

  1. Inicialize o SDK do Cloud, caso ainda não tenha feito isso, conforme descrito em Como inicializar o SDK do Cloud, ou verifique se o projeto do Google Cloud criado em Pré-requisitos é o projeto padrão para o gcloud.
  2. Defina as seguintes variáveis de ambiente locais:

    export PROJECT_ID=YOUR_PROJECT_ID
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export SUBNET=NETWORK_NAME
    export INSTANCE_NAME=INSTANCE_NAME
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

    Em que:

    • PROJECT_ID é o ID do projeto do Cloud que você criou como parte dos Pré-requisitos.
    • 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.
    • SUBNET é a sub-rede especificada durante o provisionamento. Por exemplo: default.
    • INSTANCE_NAME: o nome da nova instância. Por exemplo, my-runtime-instance. O nome precisa começar com uma letra minúscula, ter até 32 caracteres e incluir apenas letras minúsculas, números e hifens. Ele não pode começar nem terminar com um hífen e precisa ter pelo menos dois caracteres.
    • PROJECT_NUMBER é o número do projeto do Cloud que você criou como parte dos Pré-requisitos. Este exemplo emite um comando gcloud para conseguir o número do projeto para você.
  3. Encontre o valor da propriedade location na sua instância da Apigee. Esse valor é a região em que a instância está localizada, como us-west1:
    curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances
  4. Escolha uma zona na região da instância e coloque o nome da zona em uma variável. A zona precisa estar dentro da instância. Exemplo:
    export VM_ZONE="us-west1-b"

    Se você precisar de ajuda para identificar uma zona na região da instância, use este comando da gcloud para retornar um nome da zona para a região do ambiente de execução configurada. Exemplo:

    VM_ZONE=$(gcloud compute zones list | grep "us-west1" | head -n 1 | awk '{print $1}')

Criar uma VM e chamar o proxy de API

Crie uma nova VM dentro da rede VPC usando o comando gcloud beta compute. A VM atua como uma ponte que permite enviar solicitações ao IP do balanceador de carga interno. Depois de configurar a VM, é possível chamar um proxy de API implantado:

  1. No exemplo a seguir, criamos uma nova VM com algumas opções comuns e usamos variáveis de ambiente definidas anteriormente como entradas.
    gcloud beta compute --project=$PROJECT_ID \
      instances create $INSTANCE_NAME \
      --zone=$VM_ZONE \
      --machine-type=e2-micro \
      --subnet=$SUBNET \
      --network-tier=PREMIUM \
      --no-restart-on-failure \
      --maintenance-policy=TERMINATE \
      --preemptible \
      --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --tags=http-server,https-server \
      --image=debian-10-buster-v20210217 \
      --image-project=debian-cloud \
      --boot-disk-size=10GB \
      --boot-disk-type=pd-standard \
      --boot-disk-device-name=$INSTANCE_NAME \
      --no-shielded-secure-boot \
      --shielded-vtpm \
      --shielded-integrity-monitoring \
      --reservation-affinity=any
  2. Abra uma conexão segura com a nova VM que você acabou de criar.

    gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
  3. No shell da VM, instale o utilitário jq. Ele é usado nas etapas subsequentes:
    sudo apt-get update -y
    sudo apt-get install -y jq
    
  4. No shell da VM, crie as seguintes variáveis de ambiente para facilitar a ação de copiar/colar a solicitação do proxy de API:
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export PROJECT_ID=YOUR_PROJECT_ID
    export ENV_GROUP_HOSTNAME=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups -s | jq -r '.environmentGroups[0].hostnames[0]')
    
  5. Verifique se as variáveis estão definidas corretamente:
    echo $AUTH
    echo $PROJECT_ID
    echo $ENV_GROUP_HOSTNAME
  6. Chamar um proxy de API. Selecione uma opção abaixo correspondente ao modo como você configurou o roteamento durante o provisionamento da Apigee.

    Opções para instalações que usam peering de VPC

    • (Opção de TLS 1) Se você configurou um balanceador de carga interno (ILB, na sigla em inglês) no seu projeto, conforme explicado em Roteamento interno (VPC), chame o proxy usando o IP desse ILB. Esta opção usa certificados de CA que estão sob seu controle e que foram criados quando o balanceador de carga interno foi criado:
      1. Encontre o IP do ILB no projeto, conforme explicado em Configurar o balanceamento de carga HTTP(S) interno com back-ends de grupo de instâncias de VM.
      2. Chame um proxy de API:
        curl -H "Host: $ENV_GROUP_HOSTNAME" \
          https://INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Opção de TLS 2) Use o nome de domínio padrão totalmente qualificado que é resolvido para o balanceador de carga interno no projeto da Apigee. Com essa opção, o TLS é empregado usando certificados autoassinados criados internamente da Apigee. Você não tem controle sobre esses certificados.
      1. Consiga o IP do balanceador de carga interno no projeto da Apigee:
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. Extraia o certificado de CA que foi gerado durante a criação da organização com o seguinte comando:
        curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID | jq -r .caCertificate | base64 -d > cacert.crt
      3. Envie a solicitação para um proxy de API implantado, em que example.$PROJECT_ID.apigee.internal é o nome de domínio interno, padrão e totalmente qualificado que é resolvido para o balanceador de carga interno.
        curl -is -H "Host: $ENV_GROUP_HOSTNAME" \
          https://example.$PROJECT_ID.apigee.internal/PROXY_BASEPATH \
          --cacert cacert.crt \
          --resolve example.$PROJECT_ID.apigee.internal:443:$INTERNAL_LOAD_BALANCER_IP
    • (Opção não TLS) Se você não precisar de TLS, use a flag -k no comando curl para desativar o TLS e possivelmente evitar problemas de SSL:
      1. Consiga o IP do balanceador de carga interno no projeto da Apigee:
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. Chame um proxy de API:
        curl -i -k \
          -H "Host: $ENV_GROUP_HOSTNAME" \
          https://$INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Opção de endpoint de serviço) Se você provisionou uma organização paga ou de avaliação com o PSC e escolheu a opção de roteamento do endpoint de serviço:
      1. Encontre o IP do endpoint de serviço. Se você precisar buscar o IP do endpoint, consulte Listar endpoints.
      2. Chame um proxy de API:
        curl -i -k \
           -H "Host: $ENV_GROUP_HOSTNAME" \
           https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Exemplo:

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    Opções para instalações que não usam peering sem VPC

    • (Opção de endpoint de serviço) Se você provisionou uma organização paga ou de avaliação com o PSC e escolheu a opção de roteamento do endpoint de serviço:
      1. Encontre o IP do endpoint de serviço. Se você precisar buscar o IP do endpoint, consulte Listar endpoints.
      2. Chame um proxy de API:
        curl -i -k \
            -H "Host: $ENV_GROUP_HOSTNAME" \
            https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Exemplo:

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    Se você encontrar erros durante esta parte do processo, verifique se todas as variáveis de ambiente criadas e usadas em comandos têm valores válidos. Consulte também Solução de problemas.

    Próxima etapa

    Crie um proxy em que você possa fazer a implantação ou faça um tour dos tutoriais da Apigee que apresentam os recursos da Apigee, como proteção contra picos de tráfego repentinos ou receber uma visualização detalhada do fluxo de solicitação/resposta.

    (Avançado) Se você planeja transformar tudo isso em uma configuração de produção, defina um perímetro de segurança ao redor do novo cluster e dos serviços do Cloud relacionados. Isso é possível com o VPC Service Controls.