Esta página describe cómo usar Private Service Connect para conectarse a una instancia de Cloud SQL.
Puede usar Private Service Connect para conectarse a una instancia principal de Cloud SQL o a cualquiera de sus réplicas de lectura desde múltiples redes de nube privada virtual (VPC) que pertenecen a diferentes grupos, equipos, proyectos u organizaciones.
Antes de empezar
La compatibilidad para usar Private Service Connect con una instancia de Cloud SQL está disponible para las versiones 416.0.0 y posteriores gcloud CLI
.
Roles de usuario
La siguiente tabla proporciona información sobre los roles necesarios para usar Private Service Connect con una instancia de Cloud SQL:
Role | Descripción |
---|---|
compute.networkAdmin | Otorga control total sobre la red de VPC que inicia una conexión a una instancia de Cloud SQL. Puede crear y administrar direcciones IP, reglas de firewall, políticas de conexión de servicio y puntos de conexión de servicio privado . Si usa Private Service Connect para conectarse a una instancia de Cloud SQL desde varias redes de VPC, cada red tendrá su propio administrador. |
dns.admin | Otorga control total sobre los recursos de Cloud DNS, incluidas las zonas y registros DNS. |
cloudsql.admin | Proporciona control total de una instancia de Cloud SQL y controla la instancia durante su ciclo de vida. |
cloudsql.instanceUser | Proporciona acceso a la instancia de Cloud SQL. Si se conecta a través del cliente proxy de autenticación de Cloud SQL, debe tener el rol de cliente de Cloud SQL . Si se conecta directamente, no necesita roles ni permisos de administración de identidades y accesos (IAM) . |
Crear un punto final de conexión de servicio privado
Los puntos de conexión de servicio privado son direcciones IP internas en una red VPC de consumidor, a las que los clientes de esa red pueden acceder directamente. Los clientes pueden usar estos puntos de conexión para conectarse a instancias de Cloud SQL.
Puede hacer que Cloud SQL cree un punto final de conexión de servicio privado automáticamente en su VPC o puede crear el punto final manualmente.
Para que Cloud SQL cree automáticamente el punto final de conexión de servicio privado, haga lo siguiente:
- Cree una política de conexión de servicio en sus redes VPC. Con esta política, podrá aprovisionar automáticamente los endpoints de conexión de servicio privado.
- Cree una instancia de Cloud SQL con Private Service Connect habilitado para la instancia y configúrela para crear puntos finales de Private Service Connect automáticamente.
- Recuperar el punto final de la instancia . Esto permite usar el punto final para conectarse a la instancia.
Para crear manualmente el punto final de conexión de servicio privado, haga lo siguiente:
- Cree una instancia de Cloud SQL con Private Service Connect habilitado para la instancia.
- Obtenga la URI de conexión del servicio . Úsela para crear el punto de conexión de servicio privado.
- Reserve una dirección IP interna para el punto final de Private Service Connect y cree un punto final con esa dirección.
Crear el punto final automáticamente
Las siguientes secciones explican cómo configurar su instancia para permitir que Cloud SQL cree automáticamente el punto final de Private Service Connect.
Crear una política de conexión de servicio
Una política de conexión de servicio le permite autorizar a una clase de servicio específica a crear un punto de conexión de servicio privado en su red VPC de consumidor. Puede usar la política de conexión de servicio para que Cloud SQL cree puntos de conexión de servicio privado automáticamente.
Puede crear una política de conexión de servicio mediante el uso de Google Cloud consola, gcloud CLI , o la API.
Consola
En el Google Cloud consola, vaya a la página Conectar servicio privado .
Haga clic en la pestaña Políticas de conexión .
Haga clic en Crear política de conexión .
Introduzca un nombre para la política de conexión.
Especifique la clase de servicio haciendo lo siguiente:
- Para la clase de servicio de origen , seleccione Servicios de Google .
- En el menú de clase Servicio , seleccione
google-cloud-sql
porque Cloud SQL es el servicio administrado para la política de conexión.
En la sección Alcance de los puntos finales de destino , seleccione una red y una región a las que se aplica esta política.
En la sección Política , seleccione una o más subredes del menú Subredes . Las subredes se utilizan para asignar direcciones IP a los endpoints.
Opcional: Especifique un límite de conexión para la política. Este límite determina cuántos puntos finales se pueden crear con esta política de conexión. Si no especifica un límite de conexión, no hay límite.
Haga clic en Crear política .
nube g
Para crear una política de conexión de servicio, utilice el 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
Reemplace lo siguiente:
-
POLICY_NAME
: el nombre de su política de conexión de servicio. -
NETWORK
: la red a la que se aplica esta política. -
PROJECT_ID
: ID o número de proyecto de la red de VPC. Para redes de VPC compartidas, debe implementar políticas de conexión de servicio en el proyecto host, ya que estas políticas no son compatibles con los proyectos de servicio. -
REGION
: la región a la que se aplica esta política. La misma política debe existir para cada región donde se desee automatizar la conectividad del servicio. -
SERVICE_CLASS
: el identificador de recurso proporcionado por el productor para la clase de servicio. Para Cloud SQL, la clase de servicio esgoogle-cloud-sql
. -
SUBNETS
: una o más subredes de consumidor habituales que se utilizan para asignar direcciones IP a los endpoints de Conexión de Servicio Privado. Estas direcciones IP se asignan automáticamente y se devuelven al grupo de subredes a medida que se crean y eliminan instancias de servicio administradas. Las subredes deben estar en la misma región que la política de conexión de servicio. Si varias políticas de conexión comparten la misma región, puede reutilizar la misma subred en ellas. Puede introducir varias subredes en una lista separada por comas. -
LIMIT
: el número máximo de endpoints que se pueden crear con esta política. Si no se especifica un límite, no hay límite. -
DESCRIPTION
: una descripción opcional de la política de conexión del servicio. PRODUCER_INSTANCE_LOCATION
: Use este indicador opcional para especificar si se autoriza una jerarquía personalizada de ubicaciones para una instancia de Cloud SQL. Puede establecer el valor dePRODUCER_INSTANCE_LOCATION
en solo uno de los siguientes:-
custom-resource-hierarchy-levels
: la instancia debe estar ubicada en uno de los proyectos, carpetas u organizaciones que proporcione como valor para el parámetroallowed-google-producers-resource-hierarchy-level
. -
none
: la instancia está en el mismo proyecto que la política de conexión del servicio.
-
RESOURCE_HIERARCHY_LEVEL
: lista de proyectos, carpetas u organizaciones donde se encuentra la instancia. Esta lista tiene el formatoprojects/ PROJECT_ID
,folders/ FOLDER_ID
uorganizations/ ORGANIZATION_ID
.
Por ejemplo, el siguiente comando crea una política de conexión de servicio para el
Clase de servicio google-cloud-sql
que asigna direcciones IP desde la subred managed-services
. Se puede crear un máximo de 10 puntos de conexión de servicio privado con esta política. Los puntos de conexión deben crearse en proyectos que pertenezcan a la misma organización que la instancia de servicio administrado. La instancia de Cloud SQL se encuentra en el proyecto 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
DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
-
PROJECT_ID
: el ID de su proyecto. -
REGION
: la región de su política de conexión de servicio. -
POLICY_NAME
: el nombre de su política de conexión de servicio. -
DESCRIPTION
: una descripción opcional de su política de conexión de servicio. -
NETWORK
: la red de su política de conexión de servicio. -
LIMIT
: el número máximo de endpoints que se pueden crear con esta política. Si no se especifica un límite, no hay límite. -
SUBNETS
: una o más subredes de consumidor habituales que se utilizan para asignar direcciones IP a los endpoints de Conexión de Servicio Privado. Estas direcciones IP se asignan automáticamente y se devuelven al grupo de subredes a medida que se crean y eliminan instancias de servicio administradas. Las subredes deben estar en la misma región que la política de conexión de servicio. Si varias políticas de conexión comparten la misma región, puede reutilizar la misma subred en ellas. Puede introducir varias subredes en una lista separada por comas. -
SERVICE_CLASS
: el identificador de recurso proporcionado por el productor de la clase de servicio.
Método HTTP y URL:
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME
Cuerpo JSON de la solicitud:
{ "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 su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "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 }
Crear una instancia de Cloud SQL
Puede crear una instancia con Private Service Connect habilitado para la instancia y configurar la instancia para crear puntos finales automáticamente mediante gcloud CLI o la API.
nube g
Para crear una instancia con Private Service Connect habilitado para la instancia, use el 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
Realice las siguientes sustituciones:
- INSTANCE_NAME : el nombre de la instancia.
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia.
- REGION_NAME : el nombre de la región para la instancia.
ALLOWED_PROJECTS : una lista separada por comas de ID o números de proyectos permitidos desde donde los puntos finales de Private Service Connect pueden conectarse a instancias de Cloud SQL.
Si un proyecto no está incluido en esta lista, no podrás crear puntos finales de conexión de servicio privado en el proyecto para conectarte a la instancia.
- AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
-
REGIONAL
: Permite alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada. -
ZONAL
: no ofrece conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .
-
- MACHINE_TYPE : el tipo de máquina para la instancia.
- DATABASE_VERSION : la versión de la base de datos para la instancia (por ejemplo,
POSTGRES_13
). - CONSUMER_NETWORK : la ruta a la red VPC desde donde se deben crear los puntos de conexión de Private Service Connect. Por ejemplo:
projects/my-host-project/global/networks/default
. CONSUMER_PROJECT : el proyecto donde se crea el punto de conexión de servicio privado. Si utiliza una red VPC compartida, puede ser el proyecto host o el proyecto de servicio.
Los proyectos que especifique en los parámetros de conexión automática se añadirán automáticamente a sus proyectos permitidos. Opcionalmente, puede añadir los proyectos para los que desee crear puntos de conexión de servicio privado manualmente a su lista de proyectos permitidos.
DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia.
- INSTANCE_NAME : el nombre de la instancia.
- REGION_NAME : el nombre de la región para la instancia.
- AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
-
REGIONAL
: Permite alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada. -
ZONAL
: no ofrece conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .
-
ALLOWED_PROJECTS : una lista separada por comas de ID o números de proyectos permitidos desde donde los puntos finales de Private Service Connect pueden conectarse a instancias de Cloud SQL.
Si un proyecto no está incluido en esta lista, no podrás crear puntos finales de conexión de servicio privado en el proyecto para conectarte a la instancia.
- MACHINE_TYPE : el tipo de máquina para la instancia.
- CONSUMER_NETWORK : la red VPC donde desea permitir la creación automática de puntos finales de conexión de servicio privado.
- PARENT_PROJECT : el proyecto que contiene la red CONSUMER_NETWORK . Si no se especifica otro proyecto en CONSUMER_PROJECT , los puntos finales se crean automáticamente en PARENT_PROJECT
CONSUMER_PROJECT : Opcional. Especifique esto solo si CONSUMER_NETWORK es una red de VPC compartida y desea permitir la creación automática de puntos de conexión de servicio privado en un proyecto de servicio.
Los proyectos que especifique en los parámetros de conexión automática se añadirán automáticamente a sus proyectos permitidos. Opcionalmente, puede añadir los proyectos para los que desee crear puntos de conexión de servicio privado manualmente a su lista de proyectos permitidos.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{ "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 su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Recuperar el punto final
Al recuperar la dirección IP interna, que es el punto final de conexión de servicio privado para una instancia, puede usar este punto final para conectarse a la instancia .
nube g
Para ver información sobre una instancia, incluida la dirección IP que es el punto final de conexión de servicio privado para la instancia, use el comando gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'
Realice las siguientes sustituciones:
- INSTANCE_NAME : el nombre de la instancia de Cloud SQL. Si esta instancia tiene habilitada la Conexión de Servicio Privado , los puntos de conexión de la Conexión de Servicio Privado en redes VPC podrán conectarse a ella.
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia.
En la respuesta, observe el valor que aparece junto al campo pscConfig:pscAutoConnections:ipAddress
. Este valor corresponde a la dirección IP interna que también es el punto final de Private Service Connect para la instancia.
DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia.
- INSTANCE_NAME : el nombre de la instancia de Cloud SQL. Si esta instancia tiene habilitada la Conexión de Servicio Privado , los puntos de conexión de la Conexión de Servicio Privado en redes VPC podrán conectarse a ella.
Método HTTP y URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "POSTGRES_13", "settings": { "authorizedGaeApplications": [], "tier": "db-custom-2-7680", "kind": "sql#settings", "availabilityType": "REGIONAL", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "authorizedNetworks": [], "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": { consumerNetwork:"projects/PARENT_PROJECT/global/networks/CONSUMER_NETWORK", consumerNetworkStatus:"CONSUMER_NETWORK_STATUS", consumerProject:"CONSUMER_PROJECT", ipAddress:"IP_ADDRESS", status:"STATUS" }, "pscEnabled": true }, "ipv4Enabled": false }, }
Los siguientes campos existen para las instancias que tienen habilitada la Conexión de servicio privado:
-
allowedConsumerProjects
: lista de los proyectos permitidos para la instancia. Puede crear puntos de conexión de servicio privado desde cualquier red de VPC de estos proyectos hasta la conexión de servicio de la instancia. -
pscAutoConnections
: la red VPC permitida, el estado de la política de conexión del servicio y el estado de la dirección IP que es el punto final de la instancia. -
pscEnabled
: si una instancia tiene habilitada la Conexión de servicio privado.
Para ver cómo construir la solicitud de API REST subyacente para esta tarea, consulte la página instancias:get .
Crear el punto final manualmente
Las siguientes secciones explican cómo crear manualmente un punto final de conexión de servicio privado.
Crear una instancia de Cloud SQL
Puede crear una instancia con Private Service Connect habilitado para la instancia mediante gcloud CLI , Terraform o la API.
nube g
Para crear una instancia con Private Service Connect habilitado para la instancia, use el 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
Realice las siguientes sustituciones:
- INSTANCE_NAME : el nombre de la instancia.
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia.
- REGION_NAME : el nombre de la región para la instancia.
ALLOWED_PROJECTS : una lista separada por comas de ID o números de proyectos permitidos desde donde los puntos finales de Private Service Connect pueden conectarse a instancias de Cloud SQL.
Si un proyecto no está incluido en esta lista, no podrás crear puntos finales de conexión de servicio privado en el proyecto para conectarte a la instancia.
- AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
-
REGIONAL
: Permite alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada. -
ZONAL
: no ofrece conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .
-
- MACHINE_TYPE : el tipo de máquina para la instancia.
- DATABASE_VERSION : la versión de la base de datos para la instancia (por ejemplo,
POSTGRES_13
).
Terraformar
Para crear una instancia con Private Service Connect habilitado para la instancia, use el recurso de Terraform google_sql_database_instance
.
Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.
Preparar Cloud Shell
- Inicie Cloud Shell .
Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si establece valores explícitos en el archivo de configuración de Terraform.
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).
- En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión
.tf
; por ejemplo,main.tf
En este tutorial, el archivo se denominamain.tf
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.
Copie el código de muestra en el
main.tf
recién creado.Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
- Guarde sus cambios.
- Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
terraform init
Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción
-upgrade
:terraform init -upgrade
Aplicar los cambios
- Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
terraform plan
Realice correcciones en la configuración según sea necesario.
- Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando
yes
en el indicador:terraform apply
Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"
- Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.
DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia.
- INSTANCE_NAME : el nombre de la instancia.
- REGION_NAME : el nombre de la región para la instancia.
- AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
-
REGIONAL
: Permite alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada. -
ZONAL
: no ofrece conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .
-
ALLOWED_PROJECTS : una lista separada por comas de ID o números de proyectos permitidos desde donde los puntos finales de Private Service Connect pueden conectarse a instancias de Cloud SQL.
Si un proyecto no está incluido en esta lista, no podrás crear puntos finales de conexión de servicio privado en el proyecto para conectarte a la instancia.
- MACHINE_TYPE : el tipo de máquina para la instancia.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{ "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" ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "[email protected]", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Obtener el archivo adjunto de servicio
Después de crear una instancia de Cloud SQL con Private Service Connect habilitado, obtenga el URI adjunto del servicio y úselo para crear el punto final de Private Service Connect.
nube g
Para ver información resumida sobre una instancia con Conexión de servicio privado habilitada, como el campo pscServiceAttachmentLink
que muestra el URI que apunta a la conexión de servicio de la instancia, use el comando gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Realice las siguientes sustituciones:
- INSTANCE_NAME : el nombre de la instancia de Cloud SQL a la que se pueden conectar los puntos finales de Private Service Connect en redes VPC
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
El siguiente ejemplo muestra una muestra de salida para este comando:
gcloud sql instances describe myinstance \ --project=12345 ... pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment
Terraformar
Para obtener la URI de conexión del servicio, utilice el recurso Terraform google_compute_address
.
Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.
Preparar Cloud Shell
- Inicie Cloud Shell .
Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si establece valores explícitos en el archivo de configuración de Terraform.
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).
- En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión
.tf
; por ejemplo,main.tf
En este tutorial, el archivo se denominamain.tf
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.
Copie el código de muestra en el
main.tf
recién creado.Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
- Guarde sus cambios.
- Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
terraform init
Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción
-upgrade
:terraform init -upgrade
Aplicar los cambios
- Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
terraform plan
Realice correcciones en la configuración según sea necesario.
- Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando
yes
en el indicador:terraform apply
Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"
- Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.
DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
- INSTANCE_NAME : el nombre de la instancia
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ ... pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" }
El campo pscServiceAttachmentLink
muestra la URI que apunta al servicio adjunto de la instancia.
Crear un punto final de conexión de servicio privado
Puede reservar una dirección IP interna para el punto de conexión de Private Service Connect y crear un punto de conexión con esa dirección. Para crear el punto de conexión, necesita el URI de conexión del servicio y los proyectos permitidos para la instancia.
nube g
Para reservar una dirección IP interna para el punto final de Private Service Connect, utilice el
Comandogcloud compute addresses create
:gcloud compute addresses create ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --subnet=SUBNET_NAME \ --addresses=INTERNAL_IP_ADDRESS
Realice las siguientes sustituciones:
- ADDRESS_NAME : el nombre de la dirección IP interna.
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto para el punto final.
- REGION_NAME : el nombre de la región para el punto final.
- SUBNET_NAME : el nombre de la subred para la dirección IP.
- INTERNAL_IP_ADDRESS : La dirección IP que se reservará. Esta dirección IP debe estar dentro del rango IP principal de la subred. Puede ser una dirección RFC 1918 o una subred con rangos no RFC.
Para verificar que la dirección IP esté reservada, utilice el comando
gcloud compute addresses list
:gcloud compute addresses list ADDRESS_NAME \ --project=PROJECT_ID
En la respuesta, verifique que aparezca el estado
RESERVED
para la dirección IP.Para crear el punto final de conexión de servicio privado y apuntarlo al adjunto del servicio Cloud SQL, utilice el comando
gcloud compute forwarding-rules create
:gcloud compute forwarding-rules create ENDPOINT_NAME \ --address=ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --network=NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URI \ --allow-psc-global-access
Realice las siguientes sustituciones:
- ENDPOINT_NAME : el nombre del punto final
- NETWORK_NAME : el nombre de la red VPC para el punto final
- SERVICE_ATTACHMENT_URI : el URI del archivo adjunto de servicio
Para verificar que el archivo adjunto del servicio acepta el punto final, utilice el
gcloud compute forwarding-rules describe
:gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
En la respuesta, verifique que el campo
pscConnectionStatus
tenga el estado "ACCEPTED
". El punto final puede conectarse al servicio adjunto.
Terraformar
Para crear un punto final de conexión de servicio privado, utilice el recurso de Terraform google_sql_database_instance
.
Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.
Preparar Cloud Shell
- Inicie Cloud Shell .
Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si establece valores explícitos en el archivo de configuración de Terraform.
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).
- En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión
.tf
; por ejemplo,main.tf
En este tutorial, el archivo se denominamain.tf
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.
Copie el código de muestra en el
main.tf
recién creado.Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
- Guarde sus cambios.
- Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
terraform init
Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción
-upgrade
:terraform init -upgrade
Aplicar los cambios
- Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
terraform plan
Realice correcciones en la configuración según sea necesario.
- Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando
yes
en el indicador:terraform apply
Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"
- Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.
DESCANSAR
Reserve una dirección IP interna para el punto final de Private Service Connect.
Verifique que la dirección IP esté reservada.
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene el punto final de conexión de servicio privado
- REGION_NAME : el nombre de la región
- ADDRESS_NAME : el nombre de la dirección IP
Método HTTP y URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
En la respuesta, verifique que aparezca el estado
RESERVED
para la dirección IP.Cree el punto final de conexión de servicio privado y apúntelo al archivo adjunto del servicio Cloud SQL.
Verifique que el archivo adjunto del servicio acepte el punto final.
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene el punto final de conexión de servicio privado
- REGION_NAME : el nombre de la región
- ENDPOINT_NAME : el nombre del punto final
Método HTTP y URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
En la respuesta, verifique que el campo
pscConnectionStatus
tenga el estado "ACCEPTED
". El punto final puede conectarse al servicio adjunto.
Conectarse a una instancia de Cloud SQL
Puede conectarse a una instancia de Cloud SQL con Private Service Connect habilitado mediante una dirección IP interna, un registro DNS, el proxy de autenticación de Cloud SQL, los conectores de idioma de Cloud SQL u otros Google Cloud aplicaciones.
Configurar una zona administrada por DNS y un registro DNS
Cloud SQL no crea registros DNS automáticamente. En su lugar, la respuesta de la API de búsqueda de instancias proporciona un nombre DNS sugerido. Recomendamos crear el registro DNS en una zona DNS privada de la red VPC correspondiente. Esto proporciona una forma consistente de usar el proxy de autenticación de Cloud SQL para conectarse desde diferentes redes.
nube g
Para ver información resumida sobre una instancia de Cloud SQL, incluido el nombre DNS de la instancia, utilice el comando
gcloud sql instances describe
:gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Realice las siguientes sustituciones:
- INSTANCE_NAME : el nombre de la instancia de Cloud SQL
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
En la respuesta, verifique que aparezca el nombre DNS. Este nombre tiene el siguiente patrón:
INSTANCE_UID . PROJECT_DNS_LABEL . REGION_NAME .sql.goog.
. Por ejemplo:1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
Si desea usar un nombre DNS personalizado para conectarse a una instancia de Cloud SQL en lugar del nombre DNS predefinido en esta sección, configure el nombre alternativo del sujeto (SAN) personalizado al crear la instancia. El nombre DNS personalizado que inserte en el SAN personalizado se añadirá al campo SAN del certificado de servidor de la instancia. Esto le permite usar el nombre DNS personalizado con la validación del nombre de host de forma segura.
Para obtener más información sobre cómo configurar la configuración SAN personalizada, consulte Crear instancias .
Para crear una zona DNS privada, use el comando
gcloud dns managed-zones create
. Esta zona está asociada a la red de VPC que se utiliza para conectarse a la instancia de Cloud SQL a través del punto de conexión de servicio privado.gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description="DESCRIPTION" \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private
Realice las siguientes sustituciones:
- ZONE_NAME : el nombre de la zona DNS
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la zona
- DESCRIPTION : una descripción de la zona (por ejemplo, una zona DNS para la instancia de Cloud SQL)
- DNS_NAME : el nombre del sufijo DNS para la zona, como
REGION_NAME .sql.goog.
(donde REGION_NAME es el nombre de la región de la zona) - NETWORK_NAME : el nombre de la red VPC
Después de crear el punto final de conexión de servicio privado , para crear un registro DNS en la zona, utilice el comando
gcloud dns record-sets create
:gcloud dns record-sets create DNS_RECORD \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Realice las siguientes sustituciones:
- DNS_RECORD : el nombre del registro DNS. Este registro se establece con el nombre DNS que obtuvo de la instancia de Cloud SQL anteriormente en este procedimiento (por ejemplo,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE : el tipo de registro de recurso del conjunto de registros DNS (por ejemplo,
A
). - RR_DATA : la dirección IP asignada al punto final de Conexión de Servicio Privado (por ejemplo,
198.51.100.5
). También puede introducir varios valores, comorrdata1 rrdata2 rrdata3
(por ejemplo,10.1.2.3 10.2.3.4 10.3.4.5
).
- DNS_RECORD : el nombre del registro DNS. Este registro se establece con el nombre DNS que obtuvo de la instancia de Cloud SQL anteriormente en este procedimiento (por ejemplo,
DESCANSAR
- Obtenga el nombre DNS de una instancia de Cloud SQL.
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
- INSTANCE_NAME : el nombre de la instancia
- Cree una zona DNS privada. Esta zona está asociada a la red de VPC que se utiliza para conectarse a la instancia de Cloud SQL a través del punto de conexión de servicio privado.
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la zona DNS
- ZONE_NAME : el nombre de la zona
- DESCRIPTION : una descripción de la zona (por ejemplo, una zona DNS para la instancia de Cloud SQL)
- DNS_NAME : el nombre del sufijo DNS para la zona, como
REGION_NAME .sql.goog.
(donde REGION_NAME es el nombre de la región de la zona) - NETWORK_NAME : el nombre de la red VPC
- Después de crear el punto final de Conexión de servicio privado , cree un registro DNS en la zona.
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la zona DNS.
- ZONE_NAME : el nombre de la zona.
- DNS_RECORD : el nombre del registro DNS. Este registro se establece con el nombre DNS que obtuvo de la instancia de Cloud SQL anteriormente en este procedimiento (por ejemplo,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE : el tipo del conjunto de registros (por ejemplo,
A
). - TTL : el tiempo de vida (TTL) para el conjunto de registros en número de segundos (por ejemplo,
300
). - RR_DATA : la dirección IP asignada al punto final de Conexión de Servicio Privado (por ejemplo,
198.51.100.5
). También puede introducir varios valores, comorrdata1 rrdata2 rrdata3
(por ejemplo,10.1.2.3 10.2.3.4 10.3.4.5
).
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ ... "dnsName": "INSTANCE_ID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog." }
El campo dnsName
muestra el nombre DNS de la instancia de Cloud SQL. Los nombres DNS siempre terminan con un punto ( .
).
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
Método HTTP y URL:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
Cuerpo JSON de la solicitud:
{ "name": "ZONE_NAME", "description": "DESCRIPTION", "dnsName": "DNS_NAME", "visibility": "private", "privateVisibilityConfig": { "kind": "dns#managedZonePrivateVisibilityConfig", "networks": [ { "kind": "dns#managedZonePrivateVisibilityConfigNetwork", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME" } ] } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "name": "ZONE_NAME", "dnsName": "DNS_NAME", "description": "DESCRIPTION", "id": "ID", "nameServers": [ "ns-gcp-private.googledomains.com." ], "creationTime": "2024-05-10T17:05:34.607Z", "visibility": "private", "privateVisibilityConfig": { "networks": [ { "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME", "kind": "dns#managedZonePrivateVisibilityConfigNetwork" } ], "gkeClusters": [], "kind": "dns#managedZonePrivateVisibilityConfig" }, "cloudLoggingConfig": { "kind": "dns#managedZoneCloudLoggingConfig" }, "kind": "dns#managedZone" }
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
Método HTTP y URL:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME
Cuerpo JSON de la solicitud:
{ "deletions": [] "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ] } ] }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ], "signatureRrdatas": [], "kind": "dns#resourceRecordSet" } ], "deletions": [], "startTime": "2024-05-10T17:29:44.375Z", "id": "CHANGE_ID", "status": "pending", "kind": "dns#change" }
Conectarse directamente mediante un registro DNS
Antes de conectarse a una instancia de Cloud SQL mediante un registro DNS, haga lo siguiente:
- Cree un punto final de conexión de servicio privado .
- Confirme que la conexión de servicio de la instancia acepta el punto final. Para verificar que el estado del punto final sea
ACCEPTED
, verifique el estado . - Configurar una zona administrada DNS y un registro DNS .
Después de cumplir estas condiciones, use el registro DNS para conectarse a la instancia desde cualquier red VPC donde haya creado el punto final.
psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME host=DNS_RECORD"
Realice las siguientes sustituciones:
- DATABASE_NAME : el nombre de la base de datos de Cloud SQL para PostgreSQL que está contenida dentro de la instancia
- USERNAME : el nombre del usuario que se conecta a la instancia
- DNS_RECORD : el registro DNS del punto final
Conectarse directamente a través de una dirección IP interna
Antes de conectarse a una instancia de Cloud SQL con Private Service Connect habilitado, haga lo siguiente:
- Cree un punto final de conexión de servicio privado .
- Confirme que la conexión de servicio de la instancia acepta el punto final. Para verificar que el estado del punto final sea
ACCEPTED
, verifique el estado .
Después de cumplir estas condiciones, use la dirección IP del punto final para acceder a la instancia desde cualquier red VPC donde haya creado el punto final.
Recupere la dirección IP interna del punto final de Private Service Connect utilizando el nombre de la dirección IP del punto final.
nube g
Para recuperar la dirección IP, utilice el comando
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Realice las siguientes sustituciones:
- ADDRESS_NAME : el nombre de la dirección IP del punto final
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene el punto final
- REGION_NAME : el nombre de la región para el punto final
En la respuesta, verifique que aparezca una dirección IP en el campo
address
. Esta es la dirección IP interna.DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene el punto final
- REGION_NAME : el nombre de la región para el punto final
- ADDRESS_NAME : el nombre de la dirección IP del punto final
Método HTTP y URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
La dirección IP interna es el valor asociado con el campo
address
.Como alternativa, recupere la dirección IP interna del punto final de Private Service Connect mediante el archivo adjunto de servicio de la instancia de Cloud SQL.
nube g
Para recuperar la dirección IP, utilice el comando
gcloud compute forwarding-rules list
:gcloud compute forwarding-rules list \ --filter="TARGET:REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" \ --project=PROJECT_ID
Realice las siguientes sustituciones:
- REGION_NAME : el nombre de la región para el punto final
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene el punto final
- SERVICE_ATTACHMENT_NAME : el nombre del archivo adjunto de servicio para la instancia de Cloud SQL
En la respuesta, verifique que aparezca una dirección IP. Esta es la dirección IP interna.
A continuación se muestra un ejemplo de respuesta:
NAME
REGION
IP_ADDRESS
TARGET
myInstance
us-central1
10.10.10.10
us-central1/serviceAttachments/a-123456789e0a-psc-service-attachment-abc123d4e5f67gh8
DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene el punto final
- REGION_NAME : el nombre de la región para el punto final
- SERVICE_ATTACHMENT_PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene el archivo adjunto de servicio
- SERVICE_ATTACHMENT_NAME : el nombre del archivo adjunto de servicio para la instancia de Cloud SQL
Método HTTP y URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "compute#forwardingRuleList", "id": "projects/PROJECT_ID/regions/REGION_NAME/forwardingRules", "items": [ { "kind": "compute#forwardingRule", "id": "FORWARDING_RULE_ID", "creationTimestamp": "2023-10-31T13:04:37.168-07:00", "name": "FORWARDING_RULE_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/FORWARDING_RULE_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "PSC_CONNECTION_ID", "pscConnectionStatus": "CLOSED", "allowPscGlobalAccess": true } ], "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules" }
La dirección IP interna es el valor asociado con el campo
IPAddress
.Para conectarse a la instancia de Cloud SQL, utilice la dirección IP interna.
psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME hostaddr=IP_ADDRESS"
Realice las siguientes sustituciones:
- DATABASE_NAME : el nombre de la base de datos de Cloud SQL para PostgreSQL que está contenida dentro de la instancia
- USERNAME : el nombre del usuario que se conecta a la instancia
- IP_ADDRESS : la dirección IP del punto final
Conectarse mediante el proxy de autenticación de Cloud SQL
El proxy de autenticación de Cloud SQL es un conector que proporciona acceso seguro a una instancia con Private Service Connect habilitado sin necesidad de redes autorizadas ni de configurar SSL.
Para permitir conexiones de cliente de proxy de autenticación de Cloud SQL, configure un registro DNS que coincida con el nombre DNS recomendado proporcionado para la instancia. El registro DNS es una correspondencia entre un recurso DNS y un nombre de dominio.
Si se conecta a través de Private Service Connect, se requiere la versión v2.5.0 o posterior del proxy de autenticación de Cloud SQL.
Descargue e instale el proxy de autenticación de Cloud SQL
Para conectarse a instancias con la Conexión de Servicio Privado habilitada, debe descargar e instalar el archivo binario del proxy de autenticación de Cloud SQL . El archivo binario que descargue dependerá del sistema operativo y de si utiliza un kernel de 32 o 64 bits. La mayoría del hardware más reciente utiliza un kernel de 64 bits.
Si no está seguro de si su equipo ejecuta un kernel de 32 o 64 bits, utilice el comando uname -a
para Linux o macOS. Para Windows, consulte la documentación de Windows .
Iniciar el proxy de autenticación de Cloud SQL
El proxy de autenticación de Cloud SQL admite conexiones a instancias con la Conexión a servicios privados habilitada. Para obtener más información, consulte Iniciar el proxy de autenticación de Cloud SQL .
- Ver información resumida sobre una instancia de Cloud SQL, incluido el nombre de conexión de la instancia.
nube g
Para ver información resumida sobre una instancia de Cloud SQL, utilice el
Comandogcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='value(connectionName)'
Realice las siguientes sustituciones:
- INSTANCE_NAME : el nombre de la instancia de Cloud SQL
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
El nombre de la conexión tiene el formato
PROJECT_ID : REGION_NAME : INSTANCE_NAME
.DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
- INSTANCE_NAME : el nombre de la instancia
Método HTTP y URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ ... "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME" }
El nombre de la conexión tiene el formato
PROJECT_ID : REGION_NAME : INSTANCE_NAME
. - Copiar el nombre de la conexión de la instancia.
Inicie el proxy de autenticación de Cloud SQL:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc
Reemplace INSTANCE_CONNECTION_NAME con el nombre de conexión de instancia que copió en el paso anterior.
Conectarse mediante los conectores de lenguaje de Cloud SQL
Los conectores de lenguaje de Cloud SQL son bibliotecas que brindan acceso seguro a una instancia de Cloud SQL con Private Service Connect habilitado sin necesidad de redes autorizadas ni de configurar SSL.
Para permitir conexiones con conectores de lenguaje de Cloud SQL, configure un registro DNS que coincida con el nombre DNS recomendado para la instancia. El registro DNS es una correspondencia entre un recurso DNS y un nombre de dominio.
Los conectores de lenguaje de Cloud SQL admiten conexiones de servicio privado a través del tipo de IP PSC
dentro de sus respectivas bibliotecas.
- Conector Python de Cloud SQL (v1.3.0 o posterior)
- Conector Go de Cloud SQL (v1.4.0 o posterior)
- Conector Java de Cloud SQL (v1.13.0 o posterior)
- Conector Node.js de Cloud SQL (v0.5.0 o posterior)
Conectarse desde App Engine Standard, Cloud Run o funciones de Cloud Run
Para conectarse a instancias de Cloud SQL con Private Service Connect habilitado, puede usar App Engine Standard , Cloud Run o las funciones de Cloud Run .
En estos entornos sin servidor compatibles, se admiten tanto los conectores de lenguaje de Cloud SQL como las conexiones TCP directas mediante una dirección IP y un número de puerto. Para las conexiones TCP directas, esta es la dirección IP que se reserva al crear el punto de conexión de Private Service Connect . Puede especificar la dirección IP como la dirección del host de la base de datos.
Si crea un registro DNS para el punto final, puede especificar este registro para el host.
Conectarse desde BigQuery
Para acceder a los datos en Cloud SQL y realizar consultas sobre estos datos a través de una conexión IP interna, utilice el
Parámetro --enable-google-private-path
. Este parámetro solo es válido si:
- Utilice el parámetro
--no-assign-ip
. - Utilice el parámetro
--network
para especificar el nombre de la red VPC que desea utilizar para crear una conexión interna.
Probar la conectividad
Para probar la conectividad entrante a una instancia de Cloud SQL con Private Service Connect habilitado, configure la dirección IP del punto final de Private Service Connect como la dirección IP de destino.
nube g
Para crear una prueba de conectividad para una instancia de Cloud SQL con Private Service Connect habilitado, use el comando gcloud network-management connectivity-tests create
:
gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \ --source-instance=SOURCE_INSTANCE \ --destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \ --destination-network=DESTINATION_NETWORK \ --destination-port=DESTINATION_PORT \ --protocol=tcp
Realice las siguientes sustituciones:
- CONNECTIVITY_TEST_NAME : el nombre de la prueba de conectividad.
- SOURCE_INSTANCE : la URI de la instancia de Compute Engine donde se encuentra la dirección IP de origen (por ejemplo,
projects/myproject/zones/myzone/instances/myinstance
). - DESTINATION_CLOUD_SQL_INSTANCE : la URL de la instancia de Cloud SQL (por ejemplo,
projects/myproject/instances/myinstance
). - DESTINATION_NETWORK : la URI de la red VPC donde se encuentra la dirección IP de destino (por ejemplo,
projects/myproject/global/networks/mynetwork
). - DESTINATION_PORT : el número de puerto reservado para la instancia. Para la nube SQL para instancias PostgreSQL, el número de puerto es
5432
.
DESCANSAR
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia.
- CONNECTIVITY_TEST_NAME : el nombre de la prueba de conectividad.
- SOURCE_IP_ADDRESS : la dirección IP de la instancia de motor de computa de origen.
- SOURCE_INSTANCE : el URI para la instancia del motor de cómputo donde se encuentra la dirección IP de origen (por ejemplo,
projects/myproject/zones/myzone/instances/myinstance
). - SOURCE_NETWORK : el URI para la red VPC donde se encuentra la dirección IP de origen (por ejemplo,
projects/myproject/global/networks/mynetwork
). - DESTINATION_IP_ADDRESS : la dirección IP de la instancia SQL de Destination Cloud.
- DESTINATION_PORT : el número de puerto reservado para la instancia. Para la nube SQL para instancias PostgreSQL, el número de puerto es
5432
. - DESTINATION_NETWORK : el URI para la red VPC donde se encuentra la dirección IP de destino (por ejemplo,
projects/myproject/global/networks/mynetwork
).
Método HTTP y URL:
POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME
Cuerpo JSON de la solicitud:
{ "source": { "ipAddress": "SOURCE_IP_ADDRESS", "instance": "SOURCE_INSTANCE", "network": "SOURCE_NETWORK" }, "destination": { "ipAddress": "DESTINATION_IP_ADDRESS", "port": DESTINATION_PORT, "network": "DESTINATION_NETWORK", "projectId": "PROJECT_ID" }, "protocol": "TCP" }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata", "createTime": "2024-05-23T16:43:49.313981473Z", "target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME", "verb": "create", "cancelRequested": false, "apiVersion": "v1" }, "done": false }
Limitaciones
- Puede configurar hasta 20 puntos finales de Service Connect privados que se conectan al archivo adjunto de una instancia SQL en la nube con el servicio privado Connect habilitado.
- No puede usar backends de servicio de servicio privado para instancias que tengan habilitado el servicio privado Connect.
- Las siguientes banderas están invalidadas o afectadas:
-
--no-assign-ip:
use este indicador porque las instancias con el servicio privado Connect habilitado no son compatibles para usar otros tipos de conectividad, como las conexiones de IP externas -
--authorized-networks:
no puede usar este indicador para agregar redes autorizadas -
--network:
no puede usar esta bandera porque está asociada con el acceso a los servicios privados -
--allocated-ip-range-name:
no puede usar esta bandera porque no se admiten los nombres de rango IP permitidos
-
- No puede crear una réplica externa de una instancia con el servicio privado Connect habilitado.
- No puede configurar una instancia que tenga un servicio privado Connect habilitado para utilizar el acceso a los servicios privados o las conexiones IP externas.
- No puede habilitar conexiones IP externas en una instancia con el servicio privado Connect habilitado.
- No puede habilitar el acceso a los servicios privados o agregar redes autorizadas a la instancia.
- No puede cambiar el tipo de conectividad de la instancia.
- No puede usar el comando
gcloud sql connect
, Cloud Shell, Cloud Build o DataStream para conectarse a las instancias de Cloud SQL con el servicio privado Connect habilitado. - Si realiza migraciones homogéneas a Cloud SQL , no puede usar el servicio de migración de bases de datos para conectarse a instancias de Cloud SQL con el servicio privado Connect habilitado.
- Al probar la conectividad a una instancia de Cloud SQL con el servicio privado Connect habilitado , no puede establecer los siguientes elementos:
- La dirección IP interna de la instancia o el nombre DNS como destino directamente
- La instancia como fuente
- La dirección IP del punto final de conexión de servicio privado como fuente
- La lista de permitientes basada en IP mediante el uso de redes autorizadas no es compatible.
- Las extensiones
pglogical
,pl/proxy
,dblink
ypostgres_fdw
no son compatibles. - El control, el registro y las métricas basadas en la IP del cliente no son compatibles con la consulta y las ideas del sistema. Sin embargo, se admiten VPN e interconexión.
- Si su proyecto de red contiene instancias que usan la antigua arquitectura de red SQL Cloud, entonces no puede crear una instancia de Service Connect privado. Cloud SQL proporciona herramientas para ayudarlo a actualizar sus instancias desde la arquitectura de red anterior hasta la nueva arquitectura de red. Para obtener más información o verificar la arquitectura de red de las instancias de Cloud SQL en su proyecto y realizar las actualizaciones necesarias, consulte Actualizar una instancia a la nueva arquitectura de red .
Solucionar problemas
Esta sección contiene información sobre los problemas asociados con las instancias de Cloud SQL con el servicio privado Connect habilitado junto con los pasos para solucionar los problemas de los problemas.
Asunto | Solución de problemas |
---|---|
El archivo adjunto del servicio de la instancia no acepta el punto final de servicio privado Connect. |
|
¿Qué sigue?
- Obtenga más información sobre IP privada .
- Obtenga más información sobre el servicio privado Connect .
- Obtenga más información sobre cómo crear una réplica de lectura de una instancia con el servicio privado Connect habilitado.
- Obtenga más información sobre la clonación de una instancia con el servicio privado Connect habilitado.
- Obtenga más información sobre cómo ver la información resumida sobre las instancias con el servicio privado Connect habilitado.
- Obtenga más información sobre cómo configurar y eliminar una alta disponibilidad para una instancia con Service Private Service Connect habilitado.
- Obtenga más información sobre cómo editar y eliminar una instancia con el servicio privado Connect habilitado.