Do Agentspace para um banco de dados auto-hospedado de NEG zonal

1. Introdução

Neste codelab, você vai implantar um balanceador de carga de proxy TCP interno e um grupo de endpoints de rede (NEG) zonal, publicado como um serviço de produtor do PSC. O NEG vai consistir em uma ou mais instâncias de computação no auto-hospedagem do GCP de um banco de dados, por exemplo, JIRA, Confluence, Sharepoint.

O Private Service Connect é um recurso da rede do Google Cloud que permite que os consumidores acessem serviços gerenciados de maneira particular na rede VPC deles. Da mesma forma, ele permite que produtores de serviços gerenciados hospedem esses serviços na própria rede VPC ou entre nuvens, oferecendo uma conexão particular aos consumidores. Por exemplo, ao usar o Private Service Connect para acessar um NEG zonal, você é o produtor de serviços, e o Google (Agentspace) é o consumidor de serviços.

O que você vai aprender

  • Requisitos de rede para o Agentspace
  • Práticas recomendadas de rede do Agentspace
  • Criar um serviço de produtor do Private Service Connect

O que é necessário

  • Projeto do Google Cloud com permissões de proprietário

2. O que você vai criar

Você vai estabelecer uma rede de produtor, agentspace-psc-demo, para implantar o balanceador de carga de proxy TCP interno e o NEG zonal publicado como um serviço pelo Private Service Connect (PSC).

3. Requisitos de rede

Confira abaixo o detalhamento dos requisitos de rede para a rede do produtor. O consumidor neste codelab é o Agentspace.

Componentes

Descrição

VPC (agentspace-psc-demo)

VPC de modo personalizado

Sub-rede NAT do PSC

Os pacotes da rede VPC do consumidor são convertidos usando a NAT de origem (SNAT) para que os endereços IP de origem sejam convertidos em endereços IP de origem da sub-rede NAT na rede VPC do produtor. O NAT do PSC aceita uma sub-rede /29 por anexo de serviço.

Sub-rede da regra de encaminhamento do PSC

Usada para alocar um endereço IP para o balanceador de carga de proxy TCP interno regional.A sub-rede da regra de encaminhamento é considerada uma sub-rede regular.

Sub-rede do NEG

Usado para alocar um endereço IP para o grupo de endpoints da rede de uma sub-rede normal.

Sub-rede somente proxy

Cada um dos proxies do balanceador de carga recebe um endereço IP interno. Os pacotes enviados de um proxy para uma VM de back-end ou um grupo de endpoints de rede têm um endereço IP de origem da sub-rede somente proxy.Uma sub-rede /23 é recomendada , embora a mínima, /26, seja compatível. Uma sub-rede de proxy regional é necessária por região.

Serviço de back-end

Um serviço de back-end atua como uma ponte entre o balanceador de carga e os recursos de back-end. No tutorial, o serviço de back-end está associado ao NEG zonal.

4. Práticas recomendadas

  • As NEGs zonais oferecem suporte a uma ou mais instâncias zonais do GCE com base em GCE_VM_IP_PORT.
  • Ative o acesso global na regra de encaminhamento do produtor antes de criar o anexo de serviço.
  • Ative o acesso global ao criar o endpoint do Agentspace.
  • O balanceador de carga de proxy TCP interno também é compatível com grupos de instâncias gerenciadas e não gerenciadas.
  • Um proxy TCP ou balanceador de carga de passagem do Google Cloud pode ser exposto como um serviço do produtor.

5. Topologia do codelab

9a8a948b0a4ad91e.png

6. Configuração e requisitos

Configuração de ambiente autoguiada

  1. Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto.
  • Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
  1. Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.

Inicie o Cloud Shell

Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.

No Console do Google Cloud, clique no ícone do Cloud Shell na barra de ferramentas superior à direita:

55efc1aaa7a4d3ad.png

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

7ffe5cbb04455448.png

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Neste codelab, todo o trabalho pode ser feito com um navegador. Você não precisa instalar nada.

7. Antes de começar

Ativar APIs

No Cloud Shell, verifique se o ID do projeto está configurado:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone1a=[YOUR-ZONE1a]
zone1b=[YOUR-ZONE1b]
echo $project
echo $region
echo $zone1a
echo $zone1b

Ative todos os serviços necessários:

gcloud services enable compute.googleapis.com

8. Criar rede VPC do produtor

Rede VPC

No Cloud Shell, faça o seguinte:

gcloud compute networks create agentspace-psc-demo --subnet-mode custom

Criar sub-redes

A sub-rede do PSC será associada ao anexo de serviço do PSC para fins de conversão de endereços de rede.

No Cloud Shell, crie a sub-rede NAT do PSC:

gcloud compute networks subnets create producer-psc-nat-subnet --network agentspace-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

No Cloud Shell, crie a sub-rede da regra de encaminhamento do produtor:

gcloud compute networks subnets create producer-psc-fr-subnet --network agentspace-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

No Cloud Shell, crie a sub-rede do grupo de endpoints de rede:

gcloud compute networks subnets create neg-subnet --network agentspace-psc-demo --range 172.16.30.0/28 --region $region --enable-private-ip-google-access

No Cloud Shell, crie a sub-rede somente proxy regional do produtor.

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=agentspace-psc-demo \
  --range=10.10.10.0/24

Reserve o endereço IP do balanceador de carga

No Cloud Shell, reserve um endereço IP interno para o balanceador de carga:

gcloud compute addresses create zonal-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

No Cloud Shell, confira o endereço IP reservado.

gcloud compute addresses describe zonal-neg-lb-ip \
  --region=$region | grep -i address:

Exemplo de saída:

gcloud compute addresses describe zonal-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2

Configurar o NEG zonal

Na seção a seguir, você vai criar um grupo de endpoints de rede zonal que contém um ou mais endereços IP ou combinações de endereço IP e porta de destino:

  • O endereço IPv4 interno principal de uma interface de rede da VM
  • O endereço IPv4 interno principal de uma interface de rede de VM mais um número de porta de destino
  • Um endereço IPv4 interno do intervalo de endereços IP do alias atribuído a uma interface de rede da VM
  • Um endereço IPv4 interno do intervalo de endereços IP do alias atribuído a uma interface de rede da VM, além de um número de porta de destino.

A interface de rede que contém o endpoint GCE_VM_IP_PORT precisa estar na sub-rede do NEG. Quando você omite um número de porta de um endpoint GCE_VM_IP_PORT, o Google Cloud usa o número de porta padrão do NEG para o endpoint.

Na arquitetura de referência, as instâncias do GCE associadas ao NEG zonal consistem no seguinte:

  • database-us-central1-a | us-central1-a | IP: 100.100.10.2 | Porta: 443
  • database-us-central1-a | us-central1-b | IP: 100.100.10.3 | Porta: 443
  • Nome da sub-rede: database-subnet-1

Criar o NEG zonal para zone1a

Na seção a seguir, você vai criar o grupo de endpoints de rede por zona, por exemplo, us-central1-a, e especificar o nome da sub-rede usada para criar a instância do GCE. Na arquitetura de referência, o nome da sub-rede é database-subnet-1.

No Cloud Shell, crie um NEG zonal:

gcloud compute network-endpoint-groups create us-central-zonal-neg-1a \
    --zone=$zone1a \
    --network=agentspace-psc-demo \
    --subnet=database-subnet-1 \
    --default-port=443

No Cloud Shell, atualize o NEG zonal com o IP:Port da instância do GCE implantada na zona 1a. Na arquitetura de referência, a instância do GCE é 100.100.10.2 Porta 443 implantada na zona us-central1-a.

gcloud compute network-endpoint-groups update us-central-zonal-neg-1a --zone=$zone1a --add-endpoint instance=database-us-central1-a,port=443

Criar o NEG zonal para zone1b

Na seção a seguir, você vai criar o grupo de endpoints de rede por zona, por exemplo, us-central1-b, e especificar o nome da sub-rede usada para criar a instância do GCE. Na arquitetura de referência, o nome da sub-rede é database-subnet-1.

No Cloud Shell, crie um NEG zonal:

gcloud compute network-endpoint-groups create us-central-zonal-neg-1b \
    --zone=$zone1b \
    --network=agentspace-psc-demo \
    --subnet=database-subnet-1 \
    --default-port=443

No Cloud Shell, atualize o NEG zonal com o IP:Port da instância do GCE implantada na zona 1b. Na arquitetura de referência, a instância do GCE é 100.100.10.3 Porta 443 implantada na zona us-central1-b.

gcloud compute network-endpoint-groups update us-central-zonal-neg-1b --zone=$zone1b --add-endpoint instance=database-us-central1-b,port=443

Criar uma verificação de integridade regional

No Cloud Shell, crie uma verificação de integridade que teste a porta do banco de dados local, 443:

gcloud compute health-checks create tcp zonal-443-healthcheck \
    --region=$region \
    --port=443

Criar uma política de firewall de rede e regras de firewall

No Cloud Shell, faça o seguinte:

gcloud compute network-firewall-policies create agentspace-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy agentspace-psc-demo-policy --network agentspace-psc-demo --name agentspace-psc-demo --global-firewall-policy

A regra de firewall a seguir permite o tráfego do intervalo da sub-rede NAT do PSC para todas as instâncias na rede.

No Cloud Shell, faça o seguinte:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow traffic from PSC NAT subnet to GCE" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

A regra de firewall a seguir permite o tráfego do intervalo de sondagem de verificação de integridade para todas as instâncias na rede. A porta de verificação de integridade e a porta do aplicativo precisam corresponder.

No Cloud Shell, faça o seguinte:

gcloud compute network-firewall-policies rules create 2002 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal probe health check range to GCE" --direction INGRESS --src-ip-ranges 35.191.0.0/16,130.211.0.0/22 --global-firewall-policy --layer4-configs=tcp:443

A regra de firewall a seguir permite o tráfego do intervalo da sub-rede somente proxy para todas as instâncias na rede. A sub-rede de proxy e a porta do aplicativo precisam ser iguais.

No Cloud Shell, faça o seguinte:

gcloud compute network-firewall-policies rules create 2003 --action ALLOW --firewall-policy agentspace-psc-demo-policy --description "allow internal tcp proxy health check range to GCE" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp:443

9. Criar serviço de produtor

Criar componentes do balanceador de carga

No Cloud Shell, crie um serviço de back-end:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=zonal-443-healthcheck --health-checks-region=$region

No Cloud Shell, associe o NEG zonal, us-central-zonal-neg-1a, ao serviço de back-end:

gcloud compute backend-services add-backend producer-backend-svc \
   --network-endpoint-group=us-central-zonal-neg-1a  \
   --network-endpoint-group-zone=$zone1a \
   --balancing-mode=CONNECTION \
   --max-connections-per-endpoint=100 \
   --region=$region

No Cloud Shell, associe o NEG zonal, us-central-zonal-neg-1b,ao serviço de back-end:

gcloud compute backend-services add-backend producer-backend-svc \
   --network-endpoint-group=us-central-zonal-neg-1b  \
   --network-endpoint-group-zone=$zone1b \
   --balancing-mode=CONNECTION \
   --max-connections-per-endpoint=100 \
   --region=$region

No Cloud Shell, crie um proxy TCP de destino para encaminhar solicitações ao serviço de back-end:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

Na sintaxe a seguir, crie uma regra de encaminhamento (balanceador de carga de proxy TCP interno) com o acesso global ativado.

No Cloud Shell, faça o seguinte:

gcloud compute forwarding-rules create producer-zonal-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=agentspace-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=zonal-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --allow-global-access \
     --ports=443

Validar a integridade do back-end

Valide a integridade (status verde) do serviço de back-end e das instâncias de computação associadas usando o console do Cloud na seção a seguir. Acesse:

Serviços de rede → Balanceamento de carga → Producer-backend-svc

dbbc97dcef9db785.png

Criar anexo de serviço

Para publicar um serviço, é preciso criar um anexo de serviço do Private Service Connect. É possível publicar o serviço com aprovação automática ou explícita.

  • Para publicar o serviço e permitir automaticamente que qualquer consumidor se conecte a ele, siga as instruções em Publicar um serviço com aprovação automática.
  • Para publicar o serviço com aprovação explícita do consumidor, nas configurações de conexão do anexo de serviço, selecione "Aceitar conexões para projetos selecionados" e deixe o campo "Projetos aceitos" em branco.
  • Depois de gerar o anexo de serviço, os endpoints do consumidor que solicitarem acesso ao serviço do produtor vão entrar em um estado pendente. Para autorizar a conexão, o produtor precisa aceitar o projeto de origem da solicitação de endpoint do consumidor.

No Cloud Shell, crie o anexo de serviço cc-database1-svc-attachment com aprovação automática:

gcloud compute service-attachments create zonal-database1-svc-attachment --region=$region --producer-forwarding-rule=producer-zonal-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Em seguida, obtenha e anote o anexo de serviço listado no URI selfLink que começa com "projects" para configurar o endpoint do PSC no Agentspace.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/zonal-database1-svc-attachment

No Cloud Shell, faça o seguinte:

gcloud compute service-attachments describe zonal-database1-svc-attachment --region=$region

Exemplo de saída esperada:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2025-07-12T16:00:22.429-07:00'
description: ''
enableProxyProtocol: false
fingerprint: zOpeRQnPWSc=
id: '1784245893044590569'
kind: compute#serviceAttachment
name: zonal-database1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '119824781489996776'
  low: '1784245893044590569'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/serviceAttachments/zonal-database1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project-svc4/regions/us-central1/forwardingRules/producer-zonal-neg-fr

No console do Cloud, navegue até:

Serviços de rede → Private Service Connect → Serviços publicados

898fe7673474be14.png

4d0b77966af14c7a.png

10. Estabelecer uma conexão de endpoint do PSC no Agentspace

Associe o URI do anexo de serviço dos produtores ao Agentspace e verifique se o acesso global está selecionado. Confira abaixo um exemplo de ativação do acesso global com o anexo de serviço da arquitetura de referência.

cb16ba8d7cfb86dd.png

Para finalizar a rede particular, consulte as fontes de dados de terceiros do Agentspace para mais instruções.

Validar o endpoint do PSC no console do Cloud

Para confirmar uma conexão PSC bem-sucedida entre o Agentspace (o consumidor) e o produtor, verifique o projeto locatário do Agentspace vinculado ao serviço do produtor. Ele pode ser encontrado em "Projetos conectados". O ID do projeto do locatário é atribuído aleatoriamente, mas sempre termina com "tp".

No console do Cloud, é possível validar a conexão do PSC. No console do Cloud, navegue até:

Serviços de rede → Private Service Connect → Serviço publicado e selecione o serviço zonal-database1-svc-attachment.

2f6b7830ce3db3b7.png

11. Limpar

Excluir componentes do laboratório em um único terminal do Cloud Shell

gcloud compute service-attachments delete zonal-database1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-zonal-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2002 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 2003 --firewall-policy agentspace-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=agentspace-psc-demo-policy  --name=agentspace-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete agentspace-psc-demo-policy --global -q

gcloud compute network-endpoint-groups delete us-central-zonal-neg-1a --zone=$zone1a -q

gcloud compute network-endpoint-groups delete us-central-zonal-neg-1b --zone=$zone1b -q

gcloud compute addresses delete zonal-neg-lb-ip --region=$region -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks subnets delete neg-subnet --region=$region -q

gcloud compute health-checks delete zonal-443-healthcheck --region=us-central1 -q

gcloud compute networks delete agentspace-psc-demo -q

12. Parabéns

Parabéns, você configurou e publicou um serviço de produtor com o Private Service Connect.

Você criou a infraestrutura do produtor, aprendeu a criar um NEG zonal, um serviço do produtor e associar o anexo de serviço ao Agentspace.

O Cosmopup acha que os codelabs são incríveis!

c911c127bffdee57.jpeg

Qual é a próxima etapa?

Confira alguns destes codelabs:

Leituras e vídeos complementares

Documentos de referência