Para se conectar a uma instância primária, de pool de leitura ou secundária do AlloyDB para PostgreSQL em várias redes de nuvem privada virtual (VPC) que pertencem a diferentes grupos, equipes, projetos ou organizações sem configurar o peering de rede VPC, configure o Private Service Connect.
Funções exigidas
Dependendo se você está configurando a infraestrutura do Private Service Connect ou se conectando como um cliente de banco de dados, conceda os papéis apropriados do Identity and Access Management (IAM):
| Tarefa | Papel | Descrição |
|---|---|---|
| Configurar endpoints e anexos de rede do Private Service Connect | Administrador de rede do Compute (roles/compute.networkAdmin) |
Concede controle total sobre a rede VPC do consumidor que inicia uma conexão com uma instância do AlloyDB. Se você se conectar de várias redes VPC, cada rede será gerenciada pelo próprio administrador. |
| Criar endpoints do Private Service Connect ou recursos de cliente em projetos de serviço de VPC compartilhada | Usuário da rede do Compute (roles/compute.networkUser) |
Concede permissões no projeto host da VPC compartilhada ou nas sub-redes compartilhadas para que os administradores de projetos de serviço e os agentes de serviço em projetos de serviço anexados possam criar endpoints do Private Service Connect ou VMs de cliente que usem a rede VPC compartilhada e as sub-redes do projeto host. |
| Configurar zonas de DNS e registros de DNS particulares | Administrador do DNS (roles/dns.admin) |
Concede controle total sobre os recursos do Cloud DNS, incluindo zonas de DNS particulares e conjuntos de registros. |
| Criar e gerenciar clusters e instâncias do AlloyDB | Administrador do AlloyDB (roles/alloydb.admin) |
Concede controle total sobre os clusters e as instâncias do AlloyDB durante o ciclo de vida deles. Se você usar um papel personalizado, conceda alloydb.clusters.create (para ativar o Private Service Connect em um cluster) e alloydb.instances.create e alloydb.instances.update (para configurar projetos de consumidor permitidos e URIs de anexo de rede). |
| Conectar-se a uma instância como cliente | Cliente do AlloyDB (roles/alloydb.client) e consumidor do Service Usage (roles/serviceusage.serviceUsageConsumer) (opcional) |
Obrigatório se você se conectar pelo proxy de autenticação do AlloyDB ou pelos conectores de linguagem do AlloyDB. Se você também usa a autenticação de banco de dados do IAM, conceda o papel de usuário do banco de dados do AlloyDB (roles/alloydb.databaseUser). Se você se conectar diretamente usando a autenticação de banco de dados integrada, nenhum papel do IAM será necessário para a conexão do cliente. |
Criar um endpoint do Private Service Connect
Os endpoints do Private Service Connect são endereços IP internos em uma rede VPC do consumidor que os clientes nessa rede podem acessar diretamente para se conectar às instâncias do AlloyDB.
Para que o AlloyDB crie o endpoint do Private Service Connect automaticamente, faça o seguinte:
- Reutilize uma política de conexão de serviço ou crie uma nas suas redes VPC. Com essa política, é possível provisionar endpoints do Private Service Connect automaticamente.
- Crie um cluster e uma instância do AlloyDB com o Private Service Connect ativado para a instância e configure-a para criar endpoints do Private Service Connect automaticamente.
- Recupere o endpoint da instância. Isso permite que você use o endpoint para se conectar à instância.
- Opcional: atualize um cluster e uma instância do AlloyDB com o Private Service Connect ativado para gerar endpoints automaticamente.
Também é possível criar o endpoint do Private Service Connect manualmente ou configurar endpoints em uma VPC compartilhada de vários projetos ou em uma rede hub-and-spoke.
Criar o endpoint automaticamente
Para configurar sua instância de modo que o AlloyDB crie o endpoint do Private Service Connect automaticamente, siga estas etapas gerais:
- Crie uma política de conexão de serviço.
- Crie uma instância do AlloyDB.
- Recupere o endpoint.
- Atualizar uma instância para criar endpoints automaticamente.
- Configurar a conectividade de saída.
Criar uma política de conexão de serviço
É possível reutilizar uma política de conexão de serviço ou criar uma usando o console do Google Cloud ou a Google Cloud CLI.
Com uma política de conexão de serviço, você autoriza uma classe de serviço especificada a criar um endpoint do Private Service Connect na sua rede VPC de consumidor. É possível usar a política de conexão de serviço para permitir que o AlloyDB crie endpoints do Private Service Connect automaticamente.
Console
No console do Google Cloud , acesse a página Private Service Connect.
Clique na guia Políticas de conexão.
Clique em Criar política de conexão.
Digite um nome para a conexão.
Na seção Detalhes do serviço, em Classe de serviço, selecione
google-cloud-alloydb.Na seção Escopo de endpoints, selecione uma Rede e uma Região a que essa política se aplica.
Na seção Configuração de endpoints, selecione uma ou mais sub-redes no menu Sub-redes. As sub-redes são usadas para alocar endereços IP para endpoints.
Opcional: especifique um Limite de conexão para a política. O limite determina quantos endpoints o AlloyDB pode criar para essa política de conexão. Se você não especificar um limite de conexão, não haverá limite.
Clique em Criar política.
gcloud
Para criar uma política de conexão de serviço, use o
comando service-connection-policies create.
gcloud network-connectivity service-connection-policies create POLICY_NAME \
--network=NETWORK \
--project=PROJECT_ID \
--region=REGION \
--service-class=SERVICE_CLASS \
--subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \
--psc-connection-limit=LIMIT \
--description="DESCRIPTION" \
--producer-instance-location=PRODUCER_INSTANCE_LOCATION \
--allowed-google-producers-resource-hierarchy-level=LIST_OF_NODES
Substitua:
POLICY_NAME: o nome da política de conexão de serviço.NETWORK: a rede em que essa política é aplicável.PROJECT_ID: o ID do projeto ou o número do projeto da rede VPC. Para redes VPC compartilhadas, é preciso implantar políticas de conexão de serviço no projeto host, porque essas políticas não são compatíveis com projetos de serviço.REGION: a região em que a política será aplicada. A mesma política precisa existir para todas as regiões em que você queira automatizar a conectividade do serviço.SERVICE_CLASS: o identificador de recurso fornecido pelo produtor da classe de serviço. Para o AlloyDB, a classe de serviço égoogle-cloud-alloydb.SUBNETS: uma ou mais sub-redes de consumidor regulares usadas para alocar endereços IP para endpoints do Private Service Connect. Esses endereços IP são alocados automaticamente e retornados ao pool da sub-rede à medida que as instâncias de serviço gerenciado são criadas e excluídas. As sub-redes precisam estar na mesma região que a política de conexão do serviço. Se várias políticas de conexão compartilharem a mesma região, será possível reutilizar a mesma sub-rede nessas políticas. É possível fornecer várias sub-redes em uma lista separada por vírgulas.LIMIT: o número máximo de endpoints que podem ser criados com essa política. Se você não especificar um limite, não haverá limite.DESCRIPTION: uma descrição opcional do política de conexão de serviço.PRODUCER_INSTANCE_LOCATION: especifica se a política automatiza as conexões com instâncias do AlloyDB. É possível definir esse valor como uma das seguintes opções:none(padrão): a instância do AlloyDB está no mesmo projeto que a política de conexão de serviço. Em um ambiente de VPC compartilhada, se a instância do AlloyDB estiver em um projeto de serviço e você estiver criando a política de conexão no projeto host, defina esse parâmetro comocustom-resource-hierarchy-levels.custom-resource-hierarchy-levels: exige que você defina o caminho do local do Resource Manager para os projetos em que quer automatizar a conectividade usando o parâmetroallowed-google-producers-resource-hierarchy-level.
LIST_OF_NODES: defina esse parâmetro se o local da instância do produtor estiver definido comocustom-resource-hierarchy-levels. Esse parâmetro é uma lista de projetos, pastas e organizações em que estão as instâncias para as quais você quer automatizar a conectividade. A lista está no formato deprojects/PROJECT_ID,folders/FOLDER_IDouorganizations/ORGANIZATION_ID.
Por exemplo, o comando a seguir cria uma política de conexão de serviço para a classe de serviço google-cloud-alloydb que aloca endereços IP da sub-rede managed-service-subnet. É possível criar até 10 endpoints do Private Service Connect com esta política. Os endpoints precisam ser criados em projetos que estejam na mesma organização da instância de serviço gerenciado. A instância do AlloyDB
está localizada no projeto myproject.
gcloud network-connectivity service-connection-policies create alloydb-policy \
--network=default \
--project=my-project \
--region=us-central1 \
--service-class=google-cloud-alloydb \
--subnets=managed-service-subnet \
--psc-connection-limit=10 \
--producer-instance-location=custom-resource-hierarchy-levels \
--allowed-google-producers-resource-hierarchy-level=projects/myproject
Criar uma instância do AlloyDB
É possível criar uma instância com o Private Service Connect ativado e configurá-la para criar endpoints automaticamente usando o console do Google Cloud , a CLI gcloud ou o Terraform.
Console
No Google Cloud console, acesse a página Clusters.
Clique em Criar cluster.
Em ID do cluster, insira
my-cluster.Digite uma senha. Anote essa senha, porque você vai usá-la neste guia de início rápido.
Mantenha a versão padrão do banco de dados.
Selecione a região
us-central1 (Iowa).Mantenha o ID de instância padrão,
my-cluster-primary.Em Disponibilidade por zona, mantenha Zona única como a opção selecionada. Embora não recomendemos uma instância de zona única para produção, você usará uma zona única neste guia de início rápido para minimizar os custos. Para mais informações, consulte Reduzir custos usando instâncias básicas.
Selecione o tipo de máquina
2 vCPU, 16 GB.Manter a conexão por IP privado.
- Selecione Private Service Connect (PSC).
- Clique em Adicionar um endpoint.
- Selecione o projeto em que você quer criar o endpoint.
- Selecione a rede.
- Clique em Verificar política para ver informações sobre a política de conexão de serviço.
Mantenha as configurações padrão em Segurança de rede.
Não faça mudanças em Mostrar opções avançadas.
Clique em Criar cluster. Pode levar vários minutos para o AlloyDB criar o cluster e exibi-lo na página Visão geral do cluster principal.
gcloud
Para criar o cluster, use o comando gcloud alloydb clusters
create.
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connectSubstitua:
CLUSTER_ID: o ID do cluster que você está criando. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.PASSWORD: a senha a ser usada para o usuário padrãopostgres.REGION_ID: a região em que o cluster está localizado.PROJECT_ID: o ID do projeto em que o cluster está localizado.
Esse comando inicia uma operação de longa duração e retorna um ID de operação.
Para criar a instância do AlloyDB, seja primária ou um pool de leitura para usar o Private Service Connect, use o comando gcloud alloydb instances create. Inclua o parâmetro --allowed-psc-projects para especificar quais projetos de consumidor podem criar endpoints para se conectar a essa instância.
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST \
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI \
--psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECTSubstitua:
INSTANCE_ID: o ID da instância que você está criando. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.CPU_COUNT: o número de vCPUs que você quer para a instância. Os valores válidos incluem os seguintes:2: 2 vCPUs, 16 GB RAM4: 4 vCPUs, 32 GB RAM8: 8 vCPUs, 64 GB RAM16: 16 vCPUs, 128 GB RAM32: 32 vCPUs, 256 GB RAM64: 64 vCPUs, 512 GB RAM96: 96 vCPUs, 768 GB RAM128: 128 vCPUs, 864 GB RAM
AVAILABILITY: indica se essa instância precisa ou não ser de alta disponibilidade (HA), com nós em várias zonas. Valores válidos incluem:REGIONAL: cria uma instância de alta disponibilidade com nós ativos e em espera separados e failover automatizado entre eles. Esse é o valor padrão, adequado para ambientes de produção.ZONAL: cria uma instância básica, contendo apenas um nó e sem failover automatizado.
REGION_ID: a região em que a instância está localizada.CLUSTER_ID: o ID do cluster que você criou anteriormente.ALLOWED_PROJECT_LIST: a lista separada por vírgulas de IDs do projeto ou números de projetos que você quer permitir o acesso à instância, por exemplo,my-project-1,12345,my-project-n.NETWORK_ATTACHMENT_URI(opcional): o nome completo do recurso do URI do anexo de rede que você cria para a conectividade de saída. Por exemplo:projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID.CONSUMER_NETWORK: o caminho para a rede VPC em que os endpoints do Private Service Connect são criados. Por exemplo,projects/my-host-project/global/networks/default. Essa opção se aplica quando você cria endpoints automaticamente. Verifique se a política de conexão de serviço foi criada. É possível criar a política antes ou depois de criar a instância.CONSUMER_PROJECT: o projeto em que o endpoint do Private Service Connect é criado. Se você estiver usando uma rede VPC compartilhada, esse poderá ser o projeto host ou o projeto de serviço. Todos os projetos especificados nos parâmetros de conexão automática são adicionados automaticamente aos projetos permitidos. Se quiser, você pode adicionar os projetos em que quer criar endpoints do Private Service Connect manualmente à lista de projetos permitidos.
Um cluster secundário criado para um cluster primário com o Private Service Connect ativado herda automaticamente a configuração do Private Service Connect. Para mais informações, consulte Criar um cluster secundário.
Terraform
Para criar um cluster e uma instância do AlloyDB com o Private Service Connect ativado, use os recursos do Terraform google_alloydb_cluster e google_alloydb_instance:
resource "google_alloydb_cluster" "default" {
cluster_id = "alloydb-cluster"
location = "us-central1"
psc_config {
psc_enabled = true
}
}
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
psc_instance_config {
allowed_consumer_projects = [data.google_project.project.number]
psc_auto_connections {
consumer_network = google_compute_network.default.id
consumer_project = data.google_project.project.project_id
}
psc_interface_configs {
network_attachment_resource = google_compute_network_attachment.default.id
}
}
}
resource "google_compute_network" "default" {
name = "alloydb-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "default" {
name = "alloydb-subnetwork"
region = "us-central1"
network = google_compute_network.default.id
ip_cidr_range = "10.0.0.0/16"
}
resource "google_compute_network_attachment" "default" {
name = "alloydb-network-attachment"
region = "us-central1"
connection_preference = "ACCEPT_AUTOMATIC"
subnetworks = [
google_compute_subnetwork.default.self_link
]
}
data "google_project" "project" {}
Para aprender a aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Recuperar o endpoint
Ao recuperar o endereço IP interno, que é o endpoint do Private Service Connect de uma instância, é possível usar esse endpoint para se conectar à instância.
Para ver informações sobre uma instância, incluindo o endereço IP que é o endpoint do Private Service Connect para a instância, use o comando gcloud alloydb instances describe:
gcloud alloydb instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --cluster=CLUSTER_ID \ --region=REGION_ID \ --format='json(pscInstanceConfig.pscAutoConnections)'
Substitua:
- INSTANCE_NAME: o nome da instância do AlloyDB. Se o Private Service Connect estiver ativado nessa instância, os endpoints do Private Service Connect nas redes VPC poderão se conectar a ela.
- PROJECT_ID: o ID ou número do projeto do Google Cloud projeto que contém a instância.
- CLUSTER_ID: o ID do cluster.
- REGION_ID: a região em que a instância está localizada.
Na resposta, observe o valor que aparece ao lado do campo pscInstanceConfig.pscAutoConnections.ipAddress. Esse valor é o endereço IP interno que também é o endpoint do Private Service Connect da instância.
Atualizar uma instância para criar endpoints automaticamente
Para atualizar uma instância para criar endpoints automaticamente, use o comando
gcloud alloydb instances update
com o parâmetro --psc-auto-connections:
gcloud alloydb instances update INSTANCE_ID \
--cluster=CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_ID \
--psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECTSubstitua:
INSTANCE_ID: o ID da instância que você está atualizando.CLUSTER_ID: o ID do cluster.REGION_ID: a região em que a instância está localizada.PROJECT_ID: o ID do projeto em que a instância está localizada.CONSUMER_NETWORK: o caminho para a rede VPC em que os endpoints do Private Service Connect são criados, por exemplo,projects/my-host-project/global/networks/default.CONSUMER_PROJECT: o projeto em que o endpoint do Private Service Connect é criado.
Configurar a conectividade de saída
Para ativar a conectividade de saída da instância do AlloyDB com o Private Service Connect ativado, defina o URI do anexo de rede da instância. Para mais informações, consulte Configurar a conectividade de saída.
Criar o endpoint manualmente
As seções a seguir explicam como criar um endpoint do Private Service Connect manualmente.
Criar uma instância do AlloyDB
É possível criar uma instância com o Private Service Connect ativado usando o console do Google Cloud , a CLI gcloud ou o Terraform.
Console
No Google Cloud console, acesse a página Clusters.
Clique em Criar cluster.
Em ID do cluster, insira
my-cluster.Digite uma senha. Anote essa senha, porque você vai usá-la neste guia de início rápido.
Mantenha a versão padrão do banco de dados.
Selecione a região
us-central1 (Iowa).Mantenha o ID de instância padrão,
my-cluster-primary.Em Disponibilidade por zona, mantenha Zona única como a opção selecionada. Embora não recomendemos uma instância de zona única para produção, você usará uma zona única neste guia de início rápido para minimizar os custos. Para mais informações, consulte Reduzir custos usando instâncias básicas.
Selecione o tipo de máquina
2 vCPU, 16 GB.Mantenha a conectividade de IP particular e selecione Private Service Connect (PSC).
Em Projetos de consumidor permitidos, insira os IDs do projeto ou números dos projetos que você quer permitir que se conectem à instância.
Mantenha as configurações padrão em Segurança de rede.
Não faça mudanças em Mostrar opções avançadas.
Clique em Criar cluster. Pode levar vários minutos para o AlloyDB criar o cluster e exibi-lo na página Visão geral do cluster principal.
gcloud
Para criar o cluster, use o comando gcloud alloydb clusters
create.
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connectSubstitua:
CLUSTER_ID: o ID do cluster que você está criando. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.PASSWORD: a senha a ser usada para o usuário padrãopostgres.REGION_ID: a região em que o cluster está localizado.PROJECT_ID: o ID do projeto em que o cluster está localizado.
Esse comando inicia uma operação de longa duração e retorna um ID de operação.
Para criar a instância principal, use o comando gcloud alloydb instances create.
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST \
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URISubstitua:
INSTANCE_ID: o ID da instância que você está criando. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.CPU_COUNT: o número de vCPUs que você quer para a instância. Os valores válidos incluem os seguintes:2: 2 vCPUs, 16 GB RAM4: 4 vCPUs, 32 GB RAM8: 8 vCPUs, 64 GB RAM16: 16 vCPUs, 128 GB RAM32: 32 vCPUs, 256 GB RAM64: 64 vCPUs, 512 GB RAM96: 96 vCPUs, 768 GB RAM128: 128 vCPUs, 864 GB RAM
AVAILABILITY: indica se essa instância precisa ou não ser de alta disponibilidade (HA), com nós em várias zonas. Valores válidos incluem:REGIONAL: cria uma instância de alta disponibilidade com nós ativos e em espera separados e failover automatizado entre eles. Esse é o valor padrão, adequado para ambientes de produção.ZONAL: cria uma instância básica, contendo apenas um nó e sem failover automatizado.
REGION_ID: a região em que a instância está localizada.CLUSTER_ID: o ID do cluster que você criou anteriormente.ALLOWED_PROJECT_LIST: a lista separada por vírgulas de IDs do projeto ou números de projetos que você quer permitir o acesso à instância, por exemplo,my-project-1,12345,my-project-n.NETWORK_ATTACHMENT_URI(opcional): o nome completo do recurso do URI do anexo de rede que você cria para a conectividade de saída. Por exemplo:projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID.
Um cluster secundário criado para um cluster primário com o Private Service Connect ativado herda automaticamente a configuração do Private Service Connect. Para mais informações, consulte Criar um cluster secundário.
Terraform
Para criar um cluster e uma instância do AlloyDB com o Private Service Connect ativado, use os recursos do Terraform google_alloydb_cluster e google_alloydb_instance:
resource "google_alloydb_cluster" "default" {
cluster_id = "alloydb-cluster"
location = "us-central1"
psc_config {
psc_enabled = true
}
}
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
psc_instance_config {
allowed_consumer_projects = [data.google_project.project.number]
psc_interface_configs {
network_attachment_resource = google_compute_network_attachment.default.id
}
}
}
resource "google_compute_network" "default" {
name = "alloydb-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "default" {
name = "alloydb-subnetwork"
region = "us-central1"
network = google_compute_network.default.id
ip_cidr_range = "10.0.0.0/16"
}
resource "google_compute_network_attachment" "default" {
name = "alloydb-network-attachment"
region = "us-central1"
connection_preference = "ACCEPT_AUTOMATIC"
subnetworks = [
google_compute_subnetwork.default.self_link
]
}
data "google_project" "project" {}
Para aprender a aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Acessar o anexo de serviço
Depois de criar uma instância do AlloyDB com o Private Service Connect ativado, acesse o URL do anexo de serviço e use-o para criar o endpoint do Private Service Connect.
Para ver detalhes sobre uma instância, use o comando gcloud alloydb instances describe.
gcloud alloydb instances describe INSTANCE_ID \
--cluster=CLUSTER_ID \
--region=REGION_IDSubstitua:
INSTANCE_ID: o ID da instância.CLUSTER_ID: o ID do cluster.REGION_ID: a região em que o cluster do AlloyDB está implantado.
Veja um exemplo de resposta para o comando:
{
"pscInstanceConfig": {
"serviceAttachmentLink": "https://www.googleapis.com/compute/v1/projects/my-project/regions/my-region/serviceAttachments/my-service-attachment-id",
"allowedConsumerProjects": [
"45678",
"12345",
"67890"
],
"pscDnsName": "015f5524-0555-4a0a-ac5a-0d15d64b15cb.008225d5-070a-4566-aaad-fcb3c87c5901.us-east4.alloydb-psc.goog."
}
}
O parâmetro serviceAttachmentLink contém o valor do URL do anexo de serviço.
Criar um endpoint do Private Service Connect
Para criar um endpoint do Private Service Connect, transmita o URL do anexo de serviço com um nome de endpoint exclusivo. Para mais informações sobre como criar um endpoint do Private Service Connect, consulte Criar um endpoint.
Também é possível reservar um endereço IP interno para o endpoint do Private Service Connect usando o comando gcloud compute addresses create e, em seguida, usar o endereço IP reservado ao criar o endpoint ou provisionar o endereço IP interno e a regra de encaminhamento usando o Terraform:
resource "google_compute_address" "psc_endpoint_ip" {
name = "alloydb-psc-endpoint-ip"
region = "us-central1"
subnetwork = google_compute_subnetwork.default.id
address_type = "INTERNAL"
}
resource "google_compute_forwarding_rule" "psc_endpoint" {
name = "alloydb-psc-endpoint"
region = "us-central1"
network = google_compute_network.default.id
ip_address = google_compute_address.psc_endpoint_ip.self_link
load_balancing_scheme = ""
target = google_alloydb_instance.default.psc_instance_config[0].service_attachment_link
}
Configurar endpoints em uma VPC compartilhada de vários projetos ou em uma rede hub-and-spoke
Em uma arquitetura de vários projetos, é possível implantar um endpoint centralizado do Private Service Connect em um projeto host ou hub. Os clientes de banco de dados em vários projetos de serviço ou spoke podem se conectar a uma instância do AlloyDB por esse endpoint.
A forma como os clientes em projetos spoke acessam o endpoint centralizado depende da topologia de rede:
VPC compartilhada: o projeto host e os projetos de serviço anexados compartilham uma única rede VPC. Os clientes de banco de dados em qualquer projeto de serviço anexado podem acessar o endpoint na mesma região ou em várias regiões quando o acesso global está ativado.
Hub-and-spoke de várias VPCs com o Network Connectivity Center: os projetos spoke usam redes VPC separadas que se conectam a um hub do Network Connectivity Center. Os clientes em outros spokes de VPC podem acessar um endpoint do Private Service Connect no spoke de VPC do hub quando você ativa a propagação de conexão do Private Service Connect no hub.
Hub-and-spoke de várias VPCs com peering de rede VPC: os endpoints do Private Service Connect não são acessíveis de forma transitiva pelo peering de rede VPC. Em vez disso, implante um endpoint separado do Private Service Connect em cada rede VPC com peering.
Recomendamos que você crie uma política de conexão de serviço no projeto host para provisionar o endpoint automaticamente. Se não for possível criar uma política de conexão de serviço, crie um endpoint do Private Service Connect manualmente em um projeto host da VPC compartilhada como alternativa, seguindo as etapas abaixo:
Permita o projeto que possui o endpoint na configuração da instância do AlloyDB.
Inclua o ID do projeto em que você cria o endpoint na flag
--allowed-psc-projectsda instância do AlloyDB. Ao implantar um endpoint centralizado no projeto host, inclua o ID do projeto host. Os projetos de serviço que executam apenas cargas de trabalho do cliente que se conectam ao endpoint do projeto host não precisam ser listados. Para permitir que os projetos de serviço implantem os próprios endpoints localmente, inclua também os IDs desses projetos de serviço. Para atualizar os projetos permitidos em uma instância, execute o comandogcloud alloydb instances updatecom a flag--allowed-psc-projects. A flag--allowed-psc-projectssubstitui a lista atual de projetos permitidos em vez de adicionar a ela. Inclua todos os IDs de projeto permitidos, além do ID do novo projeto host, para que os endpoints atuais não sejam desconectados.No projeto host, reserve um endereço IP interno para o endpoint usando o comando
gcloud compute addresses create:gcloud compute addresses create ADDRESS_NAME \ --project=HOST_PROJECT_ID \ --region=REGION_ID \ --subnet=HOST_SUBNETSubstitua:
ADDRESS_NAME: o nome a ser atribuído ao endereço IP reservado.HOST_PROJECT_ID: o ID do projeto do projeto host da VPC compartilhada.REGION_ID: a região do endereço IP do endpoint. Essa região precisa ser a mesma que contém a instância do AlloyDB.HOST_SUBNET: o nome da sub-rede do projeto host que fornece o endereço IP do endpoint.
No projeto host, crie a regra de encaminhamento para o endpoint usando o comando
gcloud compute forwarding-rules create:gcloud compute forwarding-rules create ENDPOINT_NAME \ --project=HOST_PROJECT_ID \ --region=REGION_ID \ --network=HOST_NETWORK \ --address=ADDRESS_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URLSubstitua:
ENDPOINT_NAME: o nome a ser atribuído ao endpoint.HOST_PROJECT_ID: o ID do projeto do projeto host da VPC compartilhada.REGION_ID: a região do endpoint.HOST_NETWORK: o nome da rede VPC host.ADDRESS_NAME: o nome do endereço IP reservado da etapa anterior.SERVICE_ATTACHMENT_URL: o URL do anexo de serviço que você recuperou da instância do AlloyDB.
Para permitir que clientes em qualquer região da rede VPC compartilhada acessem o endpoint, inclua a flag opcional
--allow-psc-global-access.Verifique se o status da conexão do endpoint é
ACCEPTEDusando o comandogcloud compute forwarding-rules describe:gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=HOST_PROJECT_ID \ --region=REGION_ID \ --format="value(pscConnectionStatus)"Conceda o papel de Usuário da rede do Compute (
roles/compute.networkUser) na sub-rede compartilhada aos administradores e agentes de serviço de cada projeto de serviço.As cargas de trabalho do cliente em uma rede VPC compartilhada não precisam do papel
roles/compute.networkUserna sub-rede do endpoint para enviar tráfego de rede a um endpoint do projeto host. No entanto, um administrador de VPC compartilhada precisa conceder o papelroles/compute.networkUserno projeto host ou nas sub-redes compartilhadas para que os administradores de projetos de serviço e os agentes de serviço possam provisionar VMs do Compute Engine ou clusters do Google Kubernetes Engine (GKE) em sub-redes compartilhadas.Para conceder o papel
roles/compute.networkUserem uma sub-rede compartilhada, execute o comandogcloud compute networks subnets add-iam-policy-binding:gcloud compute networks subnets add-iam-policy-binding SHARED_SUBNET \ --project=HOST_PROJECT_ID \ --region=SUBNET_REGION_ID \ --member=PRINCIPAL \ --role=roles/compute.networkUserSubstitua:
SHARED_SUBNET: o nome da sub-rede compartilhada no projeto host em que o projeto de serviço implanta recursos do cliente, como VMs do Compute Engine ou nós do GKE. Essa sub-rede não precisa ser a sub-redeHOST_SUBNETem que você reservou o endereço IP do endpoint.HOST_PROJECT_ID: o ID do projeto do projeto host da VPC compartilhada.SUBNET_REGION_ID: a região da sub-rede compartilhada.PRINCIPAL: o principal no projeto de serviço, comouser:admin@example.comouserviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com.
Se as cargas de trabalho do cliente em um projeto de serviço ou spoke se conectarem usando o proxy de autenticação do AlloyDB, os conectores de linguagem do AlloyDB ou a autenticação de banco de dados do IAM, conceda os papéis de cliente do AlloyDB necessários (
roles/alloydb.clienteroles/alloydb.databaseUser) à conta de serviço da carga de trabalho no projeto que contém o cluster do AlloyDB, em vez de no projeto host ou hub.Configure uma zona de DNS particular e um registro no projeto host e associe a zona à rede VPC compartilhada.
Na VPC compartilhada, todos os projetos de serviço anexados compartilham a rede VPC host e resolvem automaticamente o nome do host
pscDnsNameda instância sem zonas de DNS separadas em cada projeto de serviço. Em uma topologia hub-and-spoke de várias VPCs em que os projetos spoke usam redes VPC separadas, vincule a zona de DNS particular às redes VPC spoke usando a vinculação entre projetos ou zonas de peering de DNS do Cloud DNS.
Como alternativa, para permitir que os administradores de projetos de serviço criem e gerenciem os próprios endpoints diretamente nos respectivos projetos de serviço usando sub-redes compartilhadas, consulte Criar um endpoint em um projeto de serviço de VPC compartilhada.
Configurar a conectividade de saída
Para ativar a conectividade de saída, defina o URI do anexo de rede ao criar ou atualizar uma instância do AlloyDB. Esse URI permite uma conectividade segura entre seu projeto e a instância do AlloyDB durante operações de saída, como migrações.
Criar o anexo de rede
É possível criar um anexo de rede que aceite conexões automaticamente (ACCEPT_AUTOMATIC) ou manualmente (ACCEPT_MANUAL). Para mais informações sobre como criar um anexo de rede, consulte Criar e gerenciar anexos de rede.
Se você optar por criar um anexo de rede que aceite conexões automaticamente, não será necessário definir uma lista de projetos aceitos explicitamente. Para aceitar conexões manualmente, adicione o número do projeto de propriedade do serviço em que a instância do AlloyDB está localizada à lista de projetos aceitos.
Para encontrar o número do projeto de propriedade do serviço, execute o seguinte comando:
gcloud alloydb clusters describe CLUSTER_ID --region=REGION_IDConfira um exemplo de resposta:
pscConfig:
pscEnabled: true
serviceOwnedProjectNumber: 123456789012
Depois de identificar o número do projeto de propriedade do serviço, adicione o projeto à lista de projetos aceitos e crie o anexo de rede.
Verifique se a região do anexo de rede é a mesma da instância do AlloyDB. Além disso, a sub-rede usada para criar o anexo de rede precisa pertencer aos intervalos de IP RFC 1918, que são 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16.
Atualizar uma instância para conectividade de saída
Para ativar a conectividade de saída em uma instância do AlloyDB
com o Private Service Connect ativado, use o comando
gcloud alloydb instances update
com o parâmetro --psc-network-attachment-uri:
gcloud alloydb instances update INSTANCE_ID \
--cluster=CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_ID \
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URISubstitua:
INSTANCE_ID: o ID da instância.CLUSTER_ID: o ID do cluster.REGION_ID: a região em que a instância está localizada.PROJECT_ID: o ID do projeto em que a instância está.NETWORK_ATTACHMENT_URI: o nome completo do recurso do URI do anexo de rede que você cria para conectividade de saída, por exemplo,projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID.
As instâncias do AlloyDB criadas antes de 1º de março de 2025 não podem ser atualizadas para permitir conexões de saída. Como alternativa, recomendamos usar uma das seguintes opções:
- Crie uma réplica regional de replicação entre regiões (CRR) da sua instância principal com a conectividade de saída ativada. Em seguida, faça uma alternância para designar a instância de réplica como a nova instância principal.
- Faça um backup do cluster e da instância principal do AlloyDB. Em seguida, crie um novo cluster do AlloyDB e uma instância primária com a conectividade de saída ativada. Por fim, restaure o backup criado anteriormente no novo cluster.
Desativar a conectividade de saída
Para desativar a conectividade de saída de uma instância atual do AlloyDB, use o comando gcloud alloydb instances update com o parâmetro --clear-psc-network-attachment-uri:
gcloud alloydb instances update INSTANCE_ID \
--cluster=CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_ID \
--clear-psc-network-attachment-uriSubstitua:
INSTANCE_ID: o ID da instância.CLUSTER_ID: o ID do cluster.REGION_ID: a região em que a instância está localizada.PROJECT_ID: o ID do projeto em que a instância está.
Conectar-se a uma instância do AlloyDB
É possível se conectar a uma instância do AlloyDB com o Private Service Connect ativado usando uma das seguintes opções:
- Conectar-se diretamente usando um registro DNS
- Usar o proxy de autenticação do AlloyDB com um registro DNS
- Usar os conectores de linguagem do AlloyDB com um registro DNS
- Conectar diretamente usando um endereço IP interno
pscDnsName pré-gerado da instância para o endereço IP interno do endpoint do Private Service Connect ao se conectar usando o proxy de autenticação do AlloyDB ou os conectores de linguagem do AlloyDB.Para métodos que usam um registro DNS, é necessário criar o registro em uma zona de DNS particular na rede VPC do consumidor correspondente. O pscDnsName retornado pela API AlloyDB é uma string de nome do host pré-gerada e não é resolvido até que você crie uma zona de DNS particular e um registro A na sua rede VPC de consumidor.
Configurar uma zona gerenciada de DNS e um registro DNS
Para configurar uma zona gerenciada de DNS e um registro DNS na sua rede de consumidor, siga estas etapas:
gcloud
Para ver informações resumidas sobre uma instância do AlloyDB, incluindo o
pscDnsNamepré-gerado da instância, use o comandogcloud alloydb instances describe:gcloud alloydb instances describe INSTANCE_ID \ --cluster=CLUSTER_ID \ --region=REGION_ID \ --format='json(pscInstanceConfig)'Substitua:
INSTANCE_ID: o ID da instância.CLUSTER_ID: o ID do cluster.REGION_ID: a região em que a instância está localizada.
Na resposta, verifique se o campo
pscDnsNameaparece. O nome do DNS tem o padrãoINSTANCE_UID.CLUSTER_UID.REGION_NAME.alloydb-psc.goog.. Por exemplo,015f5524-0555-4a0a-ac5a-0d15d64b15cb.008225d5-070a-4566-aaad-fcb3c87c5901.us-east4.alloydb-psc.goog..Para criar uma zona de DNS particular, use o comando
gcloud dns managed-zones create. Essa zona está associada à rede VPC usada para se conectar à instância do AlloyDB pelo endpoint do Private Service Connect.gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=privateSubstitua:
ZONE_NAME: o nome da zona de DNS.PROJECT_ID: o ID ou o número do projeto do Google Cloud que contém a zona.DESCRIPTION: uma descrição da zona (por exemplo,DNS zone for the AlloyDB instance).DNS_NAME: o nome DNS da zona, comoINSTANCE_UID.CLUSTER_UID.REGION_NAME.alloydb-psc.goog.(ou o domínio paialloydb-psc.goog.).NETWORK_NAME: o nome da rede VPC do consumidor. Para uma rede VPC compartilhada, defina como o caminho totalmente qualificado da rede VPC, por exemplo,projects/cymbal-project/global/networks/shared-vpc-network.
Depois de criar o endpoint do Private Service Connect, crie um registro DNS
Ana zona usando o comandogcloud dns record-sets create:gcloud dns record-sets create DNS_NAME \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAMESubstitua:
DNS_NAME: opscDnsNameque você recuperou anteriormente neste procedimento.RRSET_TYPE: o tipo de registro de recurso do conjunto de registros DNS (A).RR_DATA: o endereço IP interno alocado para o endpoint do Private Service Connect (por exemplo,198.51.100.5).
Terraform
Para criar uma zona particular do Cloud DNS e um registro A que mapeie o pscDnsName da instância para o endereço IP interno do endpoint do Private Service Connect, use os recursos do Terraform google_dns_managed_zone e google_dns_record_set:
resource "google_dns_managed_zone" "psc_dns_zone" {
name = "alloydb-psc-zone"
dns_name = google_alloydb_instance.default.psc_instance_config[0].psc_dns_name
description = "Private DNS zone for AlloyDB PSC endpoint"
visibility = "private"
private_visibility_config {
networks {
network_url = google_compute_network.default.id
}
}
}
resource "google_dns_record_set" "psc_dns_record" {
name = google_alloydb_instance.default.psc_instance_config[0].psc_dns_name
type = "A"
ttl = 300
managed_zone = google_dns_managed_zone.psc_dns_zone.name
rrdatas = [google_compute_address.psc_endpoint_ip.address]
}
Conectar-se diretamente usando um registro DNS
Depois de criar um endpoint do Private Service Connect e configurar um registro DNS particular A para o pscDnsName da instância, é possível se conectar diretamente de um cliente na rede VPC do consumidor usando o nome DNS (sem o ponto final):
psql -U USERNAME -h DNS_NAME -d DATABASE_NAMESubstitua:
USERNAME: o nome do usuário do banco de dados que está se conectando à instância.DNS_NAME: o nome do registro DNS (como opscDnsNameda instância sem o ponto final) que é resolvido para o endpoint do Private Service Connect.DATABASE_NAME: o nome do banco de dados a ser conectado (por exemplo,postgres).
Conectar-se usando o proxy de autenticação do AlloyDB
O proxy de autenticação do AlloyDB é um conector que permite fazer conexões autorizadas e criptografadas com bancos de dados do AlloyDB. O proxy de autenticação do AlloyDB funciona com um cliente local em execução no ambiente local. O aplicativo se comunica com o proxy de autenticação do AlloyDB usando o protocolo padrão do seu banco de dados.
Quando você define a flag --psc ao iniciar o cliente do proxy de autenticação, o proxy de autenticação do AlloyDB resolve o pscDnsName da instância usando o registro DNS particular que você criou para se conectar à instância com o Private Service Connect ativado.
Inicie o cliente do proxy de autenticação transmitindo o URI da instância que você recupera usando o comando gcloud alloydb instances describe e defina a flag --psc.
Para mais informações sobre como se conectar a uma instância usando o proxy de autenticação, consulte Conectar-se usando o proxy de autenticação do AlloyDB.
Conectar-se usando os conectores de linguagem do AlloyDB
Os conectores de linguagem do AlloyDB são bibliotecas que fornecem mTLS automatizado com TLS 1.3 e autorização do IAM ao se conectar a uma instância do AlloyDB.
Depois que o conector de linguagem é configurado para o Private Service Connect, ele resolve o pscDnsName da instância usando o registro DNS privado que você criou para se conectar à instância.
Java
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
config.addDataSourceProperty("alloydbIpType", "PSC");
Para mais informações sobre como usar um endpoint do Private Service Connect no conector Java do AlloyDB, consulte o repositório do GitHub.
Python (pg8000)
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
def getconn() -> pg8000.dbapi.Connection:
conn: pg8000.dbapi.Connection = connector.connect(
inst_uri,
"pg8000",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Para mais informações sobre como usar um endpoint do Private Service Connect no conector do AlloyDB para Python, consulte o repositório do GitHub.
Python (asyncpg)
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
async def getconn() -> asyncpg.Connection:
conn: asyncpg.Connection = await connector.connect(
inst_uri,
"asyncpg",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Para mais informações sobre como usar um endpoint do Private Service Connect no conector do AlloyDB para Python, consulte o repositório do GitHub.
Go (pgx)
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
d.Dial(ctx, instURI, alloydbconn.WithPSC())
Para mais informações sobre como usar um endpoint do Private Service Connect no conector do AlloyDB para Go, consulte o repositório do GitHub.
Go (database/sql)
Se você estiver usando o Private Service Connect para se conectar à instância do AlloyDB, inclua o seguinte:
cleanup, err := postgres.RegisterDriver(
"alloydb",
alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC()),
)
Para mais informações sobre como usar um endpoint do Private Service Connect no conector do AlloyDB para Go, consulte o repositório do GitHub.
Conectar diretamente por um endereço IP interno
Depois de criar um endpoint do Private Service Connect, é possível se conectar diretamente a uma instância do AlloyDB usando o endereço IP interno do endpoint sem configurar um registro DNS.
Para recuperar o endereço IP de um endpoint do Private Service Connect criado manualmente, use o comando
gcloud compute addresses describe:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAMESubstitua:
ADDRESS_NAME: o nome do recurso de endereço IP reservado do endpoint.PROJECT_ID: o ID ou número do projeto do Google Cloud que contém o endpoint.REGION_NAME: o nome da região do endpoint.
Para se conectar à instância do AlloyDB, use o endereço IP interno:
psql -U USERNAME -h IP_ADDRESSSubstitua:
USERNAME: o nome do usuário que está se conectando à instância.IP_ADDRESS: o endereço IP interno do endpoint.
Limitações
- É possível configurar até 20 endpoints do Private Service Connect que se conectam ao anexo de serviço de uma instância do AlloyDB com o Private Service Connect ativado.
- Não é possível usar a flag
--networkao criar um cluster com o Private Service Connect ativado porque ela está associada ao acesso a serviços particulares. - Não é possível ativar ou desativar o Private Service Connect em uma instância.
- Não é possível configurar uma instância que tenha o Private Service Connect ativado para usar o acesso a serviços privados.