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 de cenário
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:
- Crie estas variáveis de ambiente:
export PROJECT_ID=YOUR_PROJECT_ID
export IMAGE_PROJECT=debian-cloud
export IMAGE_FAMILY=debian-12
export BACKEND=foo
export REGION=us-west1
export ZONE=us-west1-a
export NETWORK=default
export SUBNET_NAME=default
- 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"
- 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
- criar 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
- Crie um balanceador de carga:
- 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
- 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
- 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
- Crie um serviço de back-end:
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.
- 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
). - Crie uma sub-rede PSC com o
purpose
parâmetro definido comoPRIVATE_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
- Crie um anexo de serviço na rede VPC:
- 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
- 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.
- Consiga a regra de encaminhamento do
balanceador de carga interno.
Você vai usar essa regra em uma etapa posterior:
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:
- 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
- Receba o token de autenticação para a API Apigee:
TOKEN="$(gcloud auth print-access-token)"
- 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. - REGION é a região do anexo de serviço. Exemplo:
- Use o IP do host do anexo de serviço como o destino de um proxy de API. Por 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:
- Na IU da Apigee, acesse Administrador > Anexos de endpoints.
- Clique em + Anexo de endpoint. A caixa de diálogo Anexo de endpoint será exibida.
- 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.
- Clique em Próxima.
- 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.
- Verifique se o endpoint de serviço aceita conexões. Para ver as etapas, consulte Verificar e gerenciar a conectividade do anexo.
- Clique em Próxima.
- Clique em Criar. A operação normalmente leva um ou dois minutos para ser concluída.
- Para verificar o status atual da criação, clique em Atualizar na página de lista.
- 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:
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.
- Siga as etapas em Listar serviços publicados para ver a lista de anexos de serviço no projeto.
- Selecione o anexo de serviço para se conectar, conforme explicado em Ver detalhes de um serviço publicado.
- 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:
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
.
- Se você fez alterações nas preferências de conexão, salve-as.
- Na IU da Apigee, acesse Administrador > Anexos de endpoints. Também é possível listar os anexos de endpoint com a API Apigee Endpoints.
- Na lista de anexos, verifique se o status da conexão do PSC agora é
ACCEPTED
. Se o campo mostrar um status diferente deACCEPTED
, 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:
- Na IU da Apigee, acesse Administrador > Anexos de endpoints.
- 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:
- Na IU da Apigee, acesse Administrador > Anexos de endpoints.
- Selecione o anexo de endpoint para excluir.
- 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 da 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.