Estabeleça ligação a uma instância através do Private Service Connect

Esta página descreve como usar o Private Service Connect para se ligar a uma instância do Cloud SQL.

Pode usar o Private Service Connect para se ligar a uma instância principal do Cloud SQL ou a qualquer uma das respetivas réplicas de leitura a partir de várias redes da nuvem virtual privada (VPC) pertencentes a diferentes grupos, equipas, projetos ou organizações.

Antes de começar

O suporte para a utilização do Private Service Connect com uma instância do Cloud SQL está disponível para as versões gcloud CLI 416.0.0 e posteriores.

Funções do utilizador

A tabela seguinte fornece informações sobre as funções necessárias para usar o Private Service Connect com uma instância do Cloud SQL:

Função Descrição
compute.networkAdmin

Concede controlo total sobre a rede VPC que inicia uma ligação a uma instância do Cloud SQL. Pode criar e gerir endereços IP, regras de firewall, políticas de ligação de serviços e pontos finais do Private Service Connect.

Se usar o Private Service Connect para se ligar a uma instância do Cloud SQL a partir de várias redes VPC, cada rede tem o seu próprio administrador.

dns.admin Concede controlo total sobre os recursos do Cloud DNS, incluindo zonas e registos de DNS.
cloudsql.admin Fornece controlo total de uma instância do Cloud SQL e controla a instância ao longo do respetivo ciclo de vida.
cloudsql.instanceUser Fornece acesso à instância do Cloud SQL. Se se ligar através do cliente do proxy Auth do Cloud SQL, tem de ter a função de cliente do Cloud SQL. Se fizer a associação direta, não precisa de funções e autorizações de gestão de identidade e de acesso (IAM).

Crie um ponto final do Private Service Connect

Os pontos finais do Private Service Connect são endereços IP internos numa rede VPC do consumidor, aos quais os clientes nessa rede podem aceder diretamente. Os clientes podem usar estes pontos finais para estabelecer ligação a instâncias do Cloud SQL.

Pode fazer com que o Cloud SQL crie automaticamente um ponto final do Private Service Connect na sua VPC ou criar o ponto final manualmente.

Crie o ponto final automaticamente

Para que o Cloud SQL crie automaticamente o ponto final do Private Service Connect, faça o seguinte:

  1. Crie uma política de ligação de serviço na sua rede VPC. Com esta política, pode aprovisionar automaticamente pontos finais do Private Service Connect.

  2. Crie uma instância do Cloud SQL com o Private Service Connect ativado para a instância e configure a instância para criar pontos finais do Private Service Connect automaticamente.

  3. Obtenha o ponto final da instância. Isto permite-lhe usar o ponto final para estabelecer ligação à instância.

Crie uma política de ligação de serviço

Uma política de ligação de serviço permite-lhe autorizar uma classe de serviço especificada a criar um ponto final do Private Service Connect na sua rede VPC do consumidor. Pode usar a política de ligação de serviço para permitir que o Cloud SQL crie automaticamente pontos finais do Private Service Connect.

Pode criar uma política de ligação de serviço através da Google Cloud consola, da CLI gcloud ou da API.

Consola

  1. Na Google Cloud consola, aceda à página Private Service Connect.

    Aceda ao Private Service Connect

  2. Clique no separador Políticas de ligação.

  3. Clique em Criar política de ligação.

  4. Introduza um Nome para a política de associação.

  5. Especifique a classe de serviço fazendo o seguinte:

    1. Em Classe de serviço de origem, selecione Serviços Google.
    2. No menu Classe de serviço, selecione google-cloud-sql porque o Cloud SQL é o serviço gerido para a política de ligação.
  6. Na secção Âmbito dos pontos finais de destino, selecione uma Rede e uma Região às quais esta política se aplica.

  7. Na secção Política, selecione uma ou mais sub-redes no menu Sub-redes. As sub-redes são usadas para atribuir endereços IP a pontos finais.

  8. Opcional: especifique um limite de associações para a política. O limite determina quantos pontos finais podem ser criados através desta política de ligação. Se não especificar um limite de ligações, não existe limite.

  9. Clique em Criar política.

gcloud

Para criar uma política de ligaçã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=RESOURCE_HIERARCHY_LEVEL

Substitua o seguinte:

  • POLICY_NAME: o nome da política de ligação de serviços.
  • NETWORK: a rede à qual esta política se aplica.
  • PROJECT_ID: o ID ou o número do projeto do projeto da rede VPC. Para redes de VPC partilhada, tem de implementar políticas de ligação de serviço no projeto anfitrião, uma vez que estas políticas não são suportadas em projetos de serviço.
  • REGION: a região à qual esta política se aplica. A mesma política tem de existir para todas as regiões nas quais quer automatizar a conetividade dos serviços.
  • SERVICE_CLASS: o identificador do recurso fornecido pelo produtor da classe de serviço. Para o Cloud SQL, a classe de serviço é google-cloud-sql.
  • SUBNETS: uma ou mais sub-redes de consumidor normais que são usadas para atribuir endereços IP para pontos finais do Private Service Connect. Estes endereços IP são atribuídos automaticamente e devolvidos ao conjunto da sub-rede à medida que as instâncias de serviços geridos são criadas e eliminadas. As sub-redes têm de estar na mesma região que a política de ligação de serviço. Se várias políticas de ligação partilharem a mesma região, pode reutilizar a mesma sub-rede nestas políticas. Pode introduzir várias sub-redes numa lista separada por vírgulas.
  • LIMIT: o número máximo de pontos finais que pode criar através desta política. Se não especificar um limite, não existe um limite.
  • DESCRIPTION: uma descrição opcional da política de ligação de serviços.
  • PRODUCER_INSTANCE_LOCATION: use esta flag opcional para especificar se deve autorizar uma hierarquia personalizada das localizações para uma instância do Cloud SQL. Pode definir o valor de PRODUCER_INSTANCE_LOCATION apenas para uma das seguintes opções:

    • custom-resource-hierarchy-levels: a instância tem de estar localizada num dos projetos, pastas ou organizações que indica como valor para o parâmetro allowed-google-producers-resource-hierarchy-level.
    • none: a instância está no mesmo projeto que a política de ligação de serviços.
  • RESOURCE_HIERARCHY_LEVEL: uma lista de projetos, pastas ou organizações onde a instância está localizada. Esta lista está no formato de projects/PROJECT_ID, folders/FOLDER_ID ou organizations/ORGANIZATION_ID.

Por exemplo, o seguinte comando cria uma política de ligação de serviço para a classe de serviço
google-cloud-sql que atribui endereços IP da sub-rede managed-services. É possível criar um máximo de 10 pontos finais do Private Service Connect através desta política. Os pontos finais têm de ser criados em projetos que estejam na mesma organização que a instância do serviço gerido. A instância do Cloud SQL está localizada no projeto myproject.

gcloud network-connectivity service-connection-policies create cloud-sql-policy \
    --network=default \
    --project=my-project \
    --region=us-central1 \
    --service-class=google-cloud-sql \
    --subnets=managed-service-subnet \
    --psc-connection-limit=10 \
    --producer-instance-location=custom-resource-hierarchy-levels \
    --allowed-google-producers-resource-hierarchy-level=projects/myproject

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu projeto.
  • REGION: a região da sua política de associação de serviços.
  • POLICY_NAME: o nome da sua política de associação de serviços.
  • DESCRIPTION: uma descrição opcional da sua política de associação de serviços.
  • NETWORK: a rede da política de associação de serviços.
  • LIMIT: o número máximo de pontos finais que pode criar através desta política. Se não especificar um limite, não existe um limite.
  • SUBNETS: uma ou mais sub-redes de consumidor normais que são usadas para atribuir endereços IP para pontos finais do Private Service Connect. Estes endereços IP são atribuídos automaticamente e devolvidos ao conjunto da sub-rede à medida que as instâncias de serviços geridos são criadas e eliminadas. As sub-redes têm de estar na mesma região que a política de ligação de serviços. Se várias políticas de ligação partilharem a mesma região, pode reutilizar a mesma sub-rede nestas políticas. Pode introduzir várias sub-redes numa lista separada por vírgulas.
  • SERVICE_CLASS: o identificador de recursos fornecido pelo produtor da classe de serviço.

Método HTTP e URL:

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME

Corpo JSON do pedido:

{
  "description": "DESCRIPTION",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "pscConfig": {
    "limit": "LIMIT",
    "subnetworks": [
      "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
    ]
  },
  "serviceClass": "SERVICE_CLASS"
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

{
  "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T16:59:29.236110917Z",
    "target": "projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Crie uma instância do Cloud SQL

Pode criar uma instância com o Private Service Connect ativado para a instância e configurar a instância para criar pontos finais automaticamente através da CLI gcloud ou da API.

gcloud

Para criar uma instância com o Private Service Connect ativado para a instância, use o comando gcloud sql instances create:

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip \
--tier=MACHINE_TYPE \
--database-version=DATABASE_VERSION \
--psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECT

Faça as seguintes substituições:

  • INSTANCE_NAME: o nome da instância.
  • PROJECT_ID: o ID ou o número do projeto do Google Cloud projeto que contém a instância.
  • REGION_NAME: o nome da região da instância.
  • ALLOWED_PROJECTS: uma lista separada por vírgulas de IDs ou números de projetos permitidos a partir dos quais os pontos finais do Private Service Connect se podem ligar a instâncias do Cloud SQL.

    Se um projeto não estiver incluído nesta lista, não pode criar pontos finais do Private Service Connect no projeto para estabelecer ligação à instância.

  • AVAILABILITY_TYPE: ativa a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
    • REGIONAL: ativa a alta disponibilidade e é recomendado para instâncias de produção. A instância comuta para outra zona na região selecionada.
    • ZONAL: não oferece capacidade de comutação em caso de falha. Este é o valor predefinido.

    Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para uma instância.

  • MACHINE_TYPE: o tipo de máquina da instância.
  • DATABASE_VERSION: a versão da base de dados para a instância (por exemplo, POSTGRES_13).
  • CONSUMER_NETWORK: o caminho para a rede VPC a partir da qual os pontos finais do Private Service Connect têm de ser criados. Por exemplo:
    projects/my-host-project/global/networks/default.
  • CONSUMER_PROJECT: o projeto onde o ponto final do Private Service Connect é criado. Se estiver a usar uma rede de VPC partilhada, pode ser o projeto anfitrião ou o projeto de serviço.

    Todos os projetos especificados nos parâmetros de associação automática são adicionados automaticamente aos seus projetos permitidos. Opcionalmente, para todos os projetos nos quais quer criar pontos finais do Private Service Connect manualmente, pode adicioná-los à sua lista de projetos permitidos.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID ou o número do projeto do Google Cloud projeto que contém a instância.
  • INSTANCE_NAME: o nome da instância.
  • REGION_NAME: o nome da região da instância.
  • AVAILABILITY_TYPE: ativa a elevada disponibilidade para a instância. Para este parâmetro, especifique um dos seguintes valores:
    • REGIONAL: ativa a alta disponibilidade e é recomendado para instâncias de produção. A instância comuta para outra zona na região selecionada.
    • ZONAL: não oferece capacidade de comutação em caso de falha. Este é o valor predefinido.

    Para mais informações sobre como definir e remover a elevada disponibilidade para instâncias, consulte os artigos Configure uma instância existente para elevada disponibilidade e Desative a elevada disponibilidade para uma instância.

  • ALLOWED_PROJECTS: uma lista separada por vírgulas de IDs ou números de projetos permitidos a partir dos quais os pontos finais do Private Service Connect se podem ligar a instâncias do Cloud SQL.

    Se um projeto não estiver incluído nesta lista, não pode criar pontos finais do Private Service Connect no projeto para estabelecer ligação à instância.

  • MACHINE_TYPE: o tipo de máquina da instância.
  • CONSUMER_NETWORK: a rede VPC onde quer permitir a criação automática de pontos finais do Private Service Connect.
  • PARENT_PROJECT: o projeto que contém a rede CONSUMER_NETWORK. Se não especificar um projeto diferente em CONSUMER_PROJECT, os pontos finais são criados automaticamente em PARENT_PROJECT
  • CONSUMER_PROJECT: opcional. Especifique apenas esta opção se CONSUMER_NETWORK for uma rede de VPC partilhada e quiser permitir a criação automática de pontos finais do Private Service Connect num projeto de serviço.

    Todos os projetos especificados nos parâmetros de associação automática são adicionados automaticamente aos seus projetos permitidos. Opcionalmente, para todos os projetos nos quais quer criar pontos finais do Private Service Connect manualmente, pode adicioná-los à sua lista de projetos permitidos.

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Corpo JSON do pedido:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "POSTGRES_13",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscAutoConnections": [
          {
            "consumerProject":"CONSUMER_PROJECT",
            "consumerNetwork":"projects/PARENT_PROJECT/global/networks/CONSUMER_NETWORK"
          }
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Para enviar o seu pedido, expanda uma destas opções: