Padrões de rede vinculados

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

Confira a documentação da Apigee Edge.

Neste documento, explicamos como usar o Private Service Connect (PSC) para criar uma conexão particular entre a Apigee e os serviços de destino de back-end. Por padrão, é possível acessar endpoints de destino globalmente. Observe que o tráfego de proxy de API que flui entre a Apigee e um serviço de destino de back-end é chamado de tráfego "sul".

As etapas de configuração de rede no sentido sul descritas neste documento se aplicam a instâncias da Apigee com e sem peering de VPC. Mas lembre-se que o peering de DNS particular permite apenas instâncias da Apigee com peering de VPC.

Como conectar a Apigee de maneira particular a destinos de back-end

Para conectar a Apigee de maneira particular a um destino de back-end, é preciso criar duas entidades: um anexo de serviço na rede VPC em que o destino está implantado e um anexo de endpoint na VPC da Apigee. Essas duas entidades permitem que a Apigee se conecte ao serviço de destino.

A Figura 1 ilustra a arquitetura de rede da Apigee que é compatível com o acesso global para conexões do sul em várias regiões:

Figura 1: arquitetura de rede da Apigee para o sul.

Limitações

Em uma organização da Apigee, um anexo de endpoint é permitido para determinado anexo de serviço. Por exemplo, suponha que você tenha 10 anexos de serviço que expõem serviços de destino. É possível criar 10 anexos de endpoint na organização da Apigee, um para cada anexo de serviço.

Exemplo: como expor um serviço de destino na Apigee

Este exemplo mostra como usar o PSC para permitir que a Apigee se comunique com um serviço de destino em execução em uma rede VPC que não esteja em peering direto com a Apigee. As etapas neste exemplo usam gcloud e chamadas de API da Apigee para configurar um anexo de serviço na rede VPC em que o destino está implantado e um anexo de endpoint na VPC da Apigee.

Exemplo

Este exemplo considera um caso em que você tem um servidor da Web Apache implantado em um grupo gerenciado de instâncias (MIG, na sigla em inglês) em execução na sua VPC. Para se comunicar com a Apigee nesse contexto, expomos os serviços por um gateway de entrada.

Configurar um balanceador de carga

Configure um balanceador de carga na VPC em que os microsserviços que você quer expor estão localizados:

  1. Crie estas variáveis de ambiente:
    export PROJECT_ID=YOUR_PROJECT_ID
    export IMAGE_PROJECT=debian-cloud
    export IMAGE_FAMILY=debian-10
    export BACKEND=foo
    export REGION=us-west1
    export ZONE=us-west1-a
    export NETWORK=default
    export SUBNET_NAME=default
  2. Criar um modelo de instância:
    gcloud compute instance-templates create "$BACKEND" \
        --tags=psc-demo,http-server,https-server \
        --image-family "$IMAGE_FAMILY" --image-project "$IMAGE_PROJECT" \
        --network "$NETWORK" --subnet "$SUBNET_NAME" --region "$REGION" \
        --project "$PROJECT_ID" \
        --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>foo[/]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
        sudo mkdir /var/www/html/foo
        echo '<!doctype html><html><body><h1>foo[/foo]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/foo/index.html"
  3. Criar um grupo gerenciado de instâncias:
    gcloud compute instance-groups managed create $BACKEND \
        --project $PROJECT_ID --base-instance-name $BACKEND \
        --size 1 --template $BACKEND --region $REGION
  4. Crie uma verificação de integridade:
    gcloud compute instance-groups managed set-named-ports $BACKEND \
        --project $PROJECT_ID --region $REGION --named-ports http:80
    gcloud compute health-checks create tcp hc-tcp-$BACKEND \
      --region=$REGION \
      --description="health check for psc backend" \
      --port-name=http --project=$PROJECT_ID
  5. Crie um balanceador de carga:
    1. Crie um serviço de back-end:
      gcloud compute backend-services create be-ilb \
          --load-balancing-scheme=internal \
          --protocol=tcp \
          --region=$REGION \
          --network=$NETWORK \
          --health-checks=hc-tcp-$BACKEND \
          --health-checks-region=$REGION \
          --project=$PROJECT_ID
    2. Adicione o grupo de instâncias gerenciadas ao serviço de back-end:
      gcloud compute backend-services add-backend be-ilb \
          --region=$REGION \
          --instance-group=$BACKEND \
          --instance-group-zone=$ZONE \
          --project=$PROJECT_ID
      
    3. Criar uma regra de encaminhamento:
      gcloud compute forwarding-rules create fr-ilb \
          --region=$REGION \
          --load-balancing-scheme=internal \
          --network=$NETWORK \
          --subnet=$SUBNET_NAME \
          --ip-protocol=TCP \
          --ports=80 \
          --backend-service=be-ilb \
          --backend-service-region=$REGION \
          --project=$PROJECT_ID

Criar um anexo de serviço

Crie um anexo de serviço PSC na rede VPC em que os serviços de destino estão implantados.

  1. Para executar esta tarefa, você precisa ter a permissão compute.subnetworks.create ou o papel do IAM de administrador da rede do Compute (roles/compute.networkAdmin).
  2. Crie uma sub-rede PSC com o purpose parâmetro definido como PRIVATE_SERVICE_CONNECT:
    gcloud compute networks subnets create PSC_SUBNET_NAME \
      --network NETWORK --region=REGION --purpose=PRIVATE_SERVICE_CONNECT --range=RANGE
    gcloud compute --project=$PROJECT_ID firewall-rules create allow-psc-nat-80 \
      --direction=INGRESS --priority=1000 --network NETWORK --action=ALLOW --rules=tcp:80
      --source-ranges=RANGE --target-tags=psc-demo

    Para uma descrição detalhada dos parâmetros de comando, consulte a referência da Google Cloud CLI. Você também pode realizar esta etapa no Console ou com uma API.

    Exemplo:

    gcloud compute networks subnets create psc-subnet --network default \
    --region=us-west1 --purpose=PRIVATE_SERVICE_CONNECT --range=10.100.0.0/28
    .
  3. Crie um anexo de serviço na rede VPC:
    1. Consiga a regra de encaminhamento do balanceador de carga interno. Você vai usar essa regra em uma etapa posterior:
      gcloud compute forwarding-rules list --project=PROJECT_ID

      Em que PROJECT_ID é um ID de projeto do Google Cloud. Exemplo:

      gcloud compute forwarding-rules list --project=my-project
      NAME                                                  REGION    IP_ADDRESS    IP_PROTOCOL  TARGET
      k8s2-tcp-e61tta3j-apps-istio-ingressgateway-0kl92frk  us-west1  10.138.0.53   TCP
      
    2. Crie o anexo do serviço:
      gcloud compute service-attachments create PSC_NAME \
          --region=REGION --producer-forwarding-rule=PRODUCER_FORWARDING_RULE \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=PSC_SUBNET_NAME --project=PROJECT_ID

      O parâmetro NAME precisa ser uma string com 1 a 63 caracteres, contendo apenas letras minúsculas, números e hifens. Ele não pode começar com números e hifens. Além disso, ele não pode terminar com hifens. Para uma descrição detalhada dos parâmetros desse comando, consulte a referência da CLI do Google Cloud.

      Exemplo:

      gcloud compute service-attachments create gkebackend \
          --region=us-west1 --producer-forwarding-rule=k8s2-tcp-e62tta1j-apps-istio-ingressgateway-0kl92frk \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-subnet --project=my-project

      Também é possível realizar esta etapa na IU do Console. Consulte, por exemplo, Publicar um serviço com aprovação automática de projeto.

Criar um anexo de endpoint

Crie um anexo de endpoint na organização da Apigee. É possível executar esta etapa pela linha de comando ou pela IU do anexo de endpoint da Apigee.

Pré-requisito: antes de criar um anexo de endpoint, publique os serviços que quer expor usando o Private Service Connect (PSC) criando um balanceador de carga e um anexo de serviço, conforme explicado anteriormente neste exemplo. Para mais informações sobre como expor serviços com o PSC, consulte Publicar serviços gerenciados usando o Private Service Connect. Lembre-se que o anexo do serviço precisa estar configurado para aceitar novas conexões.

Linha de comando

Crie um anexo de endpoint na VPC da Apigee pela linha de comando:

  1. Consiga o recurso de anexo do serviço:
    gcloud compute service-attachments list

    O comando retorna as informações do anexo de serviço. Você vai usar essas informações na próxima etapa. Exemplo:

    NAME       REGION   TARGET_SERVICE                                       CONNECTION_PREFERENCE
    gkebackend us-west1 k8s2-tcp-tgysilgj-apps-istio-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
  2. Receba o token de autenticação para a API Apigee:
    TOKEN="$(gcloud auth print-access-token)"
  3. Use esta API da Apigee para criar o anexo do endpoint. Use os valores retornados do comando gcloud compute service-attachments list no corpo da solicitação:
    curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type:application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/endpointAttachments?endpointAttachmentId=EA_NAME" \
    -d '{
        "location": "REGION",
        "serviceAttachment": "projects/PROJECT_ID/regions/REGION/serviceAttachments/SA_NAME"
    }'

    Em que:

    • REGION é a região do anexo de serviço. Exemplo: us-west1
    • ORGANIZATION é o nome da sua organização da Apigee.
    • PROJECT_ID é o projeto do Google Cloud em que o anexo de serviço foi criado.
    • EA_NAME é o nome do anexo de endpoint. O nome precisa ser único. Não pode haver outros anexos de endpoints com o mesmo nome, e não é possível alterar o nome mais tarde. O nome precisa começar com uma letra minúscula seguida por até 31 letras minúsculas, números ou hífens, mas não pode terminar com um hífen. O comprimento mínimo é 2.
    • SA_NAME: é o nome do anexo de serviço.

    A Apigee inicia uma operação de longa duração. Quando a operação estiver concluída, você vai ver uma resposta semelhante a esta:

    {
      "name": "organizations/my-organization/operations/6e249895-e78e-48f0-a28f-7140e15e1676",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/my-organization/endpointAttachments/gkebackend",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.EndpointAttachment",
        "name": "organizations/my-organization/endpointAttachments/gkebackend",
        "location": "us-west1",
        "host": "7.0.3.4",
        "serviceAttachment": "projects/my-project/regions/us-west1/serviceAttachments/gkebackend"
      }
    }

    Agora é possível usar o endereço IP 7.0.3.4 retornado na resposta para se conectar aos serviços por trás do anexo de serviço, como mostrado na próxima etapa. Observação: 7.0.3.4 é um IP público de uso particular (PUPI) atribuído pela Apigee ao gateway de entrada. Ele não é anunciado na Internet e nenhum serviço do Google usa IPs nesse intervalo internamente.

  4. Use o IP do host do anexo de serviço como o destino de um proxy de API. Exemplo:
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.3.4/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

IU da Apigee

Crie um anexo do endpoint na organização da Apigee na IU da Apigee:

  1. Na IU da Apigee, acesse Administrador > Anexos de endpoints.
  2. Clique em + Anexo de endpoint. A caixa de diálogo Anexo de endpoint será exibida.
  3. Digite um nome para o anexo de endpoint. O nome precisa ser único. Não pode haver outros anexos de endpoints com o mesmo nome, e não é possível alterar o nome mais tarde. O nome precisa começar com uma letra minúscula seguida por até 31 letras minúsculas, números ou hífens, mas não pode terminar com um hífen. O comprimento mínimo é 2.
  4. Clique em Next.
  5. Na lista suspensa Anexo de serviço, escolha o anexo de serviço para se conectar.

    O comportamento da IU depende das suas permissões. Se você tiver permissão para listar regiões e anexos de serviço, basta selecionar o anexo de serviço na lista suspensa. Se você não tiver permissão para listar regiões, uma lista estática de regiões será exibida para você selecionar. Se não tiver permissão para listar anexos de serviço, insira o nome manualmente localizado e o nome do anexo de serviço. Se você não tiver permissão para listar regiões, uma lista estática de regiões será exibida para você escolher.

    Local do ID do projeto da Apigee necessário para a configuração do anexo de serviço.

  6. Verifique se o endpoint de serviço aceita conexões. Para ver as etapas, consulte Verificar e gerenciar a conectividade do anexo.
  7. Clique em Próxima.
  8. Clique em Criar. A operação normalmente leva um ou dois minutos para ser concluída.
  9. Para verificar o status atual da criação, clique em Atualizar na página de lista.
  10. Use o IP do host do anexo de serviço como o destino de um proxy de API. O IP do host aparece na IU de anexos de endpoints quando o processo de criação é concluído, como mostrado na captura de tela a seguir:

    O IP do host do anexo de serviço é exibido na IU do anexo de endpoint

    Exemplo:
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.5.2/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

Verificar e gerenciar a conectividade do anexo

Nesta seção, explicamos como verificar se um anexo de serviço pode acessar um anexo de endpoint no projeto da Apigee e como alterar a preferência de conexão se quiser modificá-lo.

  1. Siga as etapas em Listar serviços publicados para ver a lista de anexos de serviço no projeto.
  2. Selecione o anexo de serviço para se conectar, conforme explicado em Ver detalhes de um serviço publicado.
  3. Escolha uma preferência de conexão para o anexo de serviço publicado. O Private Service Connect oferece duas opções descritas abaixo. Se você quiser alterar a preferência de conexão atual, siga as etapas em Alterar a preferência de conexão de um serviço publicado.
    • Aceitar automaticamente todas as conexões: o anexo de serviço aceita anexos de endpoint de qualquer projeto. Se você escolher essa opção, o anexo de serviço poderá aceitar a conexão de um anexo de endpoint no projeto da Apigee. Nenhuma outra configuração é necessária.
    • Aceitar conexões de projetos selecionados: você especifica os projetos de que o anexo de serviço aceitará as conexões. Se você escolher essa opção, precisará adicionar o ID do projeto da Apigee ao anexo de serviço. É possível encontrar o ID do projeto da Apigee na etapa Verificar conexão do projeto na IU do Anexo de endpoint, conforme mostrado nesta captura de tela:

      Local do ID do projeto da Apigee necessário para a configuração do anexo de serviço.

      Também é possível recuperar o ID do projeto da Apigee usando a API Apigee Organizations, que retorna o ID em um campo chamado apigeeProjectId.

  4. Se você fez alterações nas preferências de conexão, salve-as.
  5. Na IU da Apigee, acesse Administrador > Anexos de endpoints. Também é possível listar os anexos de endpoint com a API Apigee Endpoints.
  6. Na lista de anexos, verifique se o status da conexão do PSC agora é ACCEPTED. Se o campo mostrar um status diferente de ACCEPTED, consulte Solução de problemas de estado da conexão do PSC.

Como gerenciar anexos de endpoint

A API endpointAttachments da Apigee fornece métodos para criar, excluir, conseguir e listar anexos de endpoints.

Como listar anexos de endpoints

Veja uma lista de anexos de endpoints na respectiva IU da Apigee ou chame a API Apigee Endpoints.

Para listar anexos de endpoints na IU da Apigee:

  1. Na IU da Apigee, acesse Administrador > Anexos de endpoints.
  2. Veja a lista de anexos de endpoints.

Como criar um anexo de endpoint

Para criar um anexo de endpoint na IU ou com a API Apigee Endpoints, consulte Criar um anexo de endpoint.

Como excluir um anexo de endpoint

Para excluir um endpoint usando a IU da Apigee:

  1. Na IU da Apigee, acesse Administrador > Anexos de endpoints.
  2. Selecione o anexo de endpoint para excluir.
  3. Clique em Excluir anexo de endpoint.

Também é possível usar a API Apigee Endpoints para listar, criar e excluir anexos de endpoint.

Peering de DNS particular

Se você tiver uma zona privada do Cloud DNS hospedada no projeto do Cloud que faz peering com a Apigee, será possível configurar o peering de DNS para permitir que a Apigee resolva nomes na sua zona particular. Por padrão, as zonas particulares são particulares da rede VPC em que estão hospedadas. Para ver as etapas de configuração de peering de DNS entre uma zona de DNS particular e a Apigee (o produtor de serviços), consulte Compartilhar zonas de DNS particular com produtores de serviços.

Solução de problemas

Problemas de estado da conexão com o PSC

Nesta seção, descrevemos as possíveis soluções quando um anexo de endpoint é provisionado e o status é Ativo, mas o estado da conexão não é Aceito. Alguns estados de conexão possíveis são mostrados na Figura 2.

Figura 2: detalhes do estado do anexo do endpoint

O estado fornecido pode ajudar a indicar a causa provável, conforme descrito na tabela a seguir:

Estado de conexão Possível causa Solução recomendada
ACCEPTED O anexo do serviço aceitou a conexão do endpoint da conexão. N/A
PENDING O ID do projeto da Apigee não pode estar na lista de projetos aceitos pelo consumidor nem na lista de projetos recusados. Adicione o ID do projeto da Apigee à lista de aceitação do consumidor no anexo de serviço. Consulte Mudar a preferência de conexão de um serviço publicado.
REJECTED O ID do projeto da Apigee está na lista de rejeição dos consumidores. Remova o ID do projeto da Apigee da lista de rejeição de consumidores e adicione-o à lista de aceitação dos consumidores no anexo do serviço. Consulte Gerenciar solicitações de acesso a um serviço publicado.
FROZEN O anexo de serviço deste anexo de endpoint foi suspenso ou desativado. Descreva o anexo do serviço para mais detalhes. Consulte Ver detalhes de um serviço publicado.
CLOSED O anexo do serviço para este anexo de endpoint foi excluído. Crie novamente o anexo de serviço e o endpoint.
NEEDS_ATTENTION O anexo do endpoint foi aceito pelo anexo de serviço, mas há um problema com o anexo. Descreva o anexo do serviço para saber mais detalhes. Consulte Ver detalhes de um serviço publicado.
UNAVAILABLE O estado da conectividade não está disponível, o que pode ocorrer durante o provisionamento. Aguarde alguns minutos para ver se o status muda.

Configuração do PSC com Apigee

Consulte o manual sobre problemas de conectividade da Apigee com os destinos do PSC no sentido sul.