Verbindung zu einer Instanz über Private Service Connect herstellen

Auf dieser Seite wird beschrieben, wie Sie mit Private Service Connect eine Verbindung zu einer Cloud SQL-Instanz herstellen.

Sie können Private Service Connect verwenden, um eine Verbindung zu einer primären Cloud SQL-Instanz oder zu einem der Lesereplikate aus mehreren VPC-Netzwerken (Virtual Private Cloud) herzustellen, die zu verschiedenen Gruppen, Teams, Projekten oder Organisationen gehören.

Hinweise

Unterstützung für die Verwendung von Private Service Connect mit einer Cloud SQL-Instanz ist für gcloud CLI Version 416.0.0 und höher verfügbar.

Nutzerrollen

Die folgende Tabelle enthält Informationen zu den Rollen, die für die Verwendung von Private Service Connect mit einer Cloud SQL-Instanz erforderlich sind:

Rolle Beschreibung
compute.networkAdmin

Vollständige Kontrolle über das VPC-Netzwerk, das eine Verbindung zu einer Cloud SQL-Instanz initiiert. Sie können IP-Adressen, Firewallregeln und Private Service Connect-Endpunkte erstellen und verwalten.

Wenn Sie mit Private Service Connect eine Verbindung zu einer Cloud SQL-Instanz von mehreren VPC-Netzwerken aus herstellen, hat jedes Netzwerk einen eigenen Administrator.

dns.admin Vollständige Kontrolle über Cloud DNS-Ressourcen, einschließlich DNS-Zonen und -Einträgen.
cloudsql.admin : Gewährt vollständige Kontrolle über eine Cloud SQL-Instanz und steuert die Instanz über ihren Lebenszyklus.
cloudsql.instanceUser : Gewährt Zugriff auf die Cloud SQL-Instanz. Wenn Sie die Verbindung über den Cloud SQL Auth-Proxyclient herstellen, benötigen Sie die Rolle Cloud SQL-Client. Wenn Sie direkt eine Verbindung herstellen, benötigen Sie keine IAM-Rollen und -Berechtigungen (Identity and Access Management).

Cloud SQL-Instanz erstellen

Sie können eine Instanz erstellen und Private Service Connect für sie aktivieren, indem Sie gcloud CLI, Terraform oder der API aktivieren.

gcloud

Verwenden Sie den Befehl gcloud sql instances create, um eine Instanz zu erstellen und Private Service Connect dafür zu aktivieren:

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 \
--database-version=DATABASE_VERSION
--cpu=NUMBER_OF_vCPUs \
--memory=MEMORY_SIZE \
--root-password=ROOT_PASSWORD

Ersetzen Sie die folgenden Werte:

  • INSTANCE_NAME: der Name der Instanz.
  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält.
  • REGION_NAME: der Name der Region für die Instanz.
  • ALLOWED_PROJECTS: eine Liste zulässiger Projekt-IDs oder -Nummern, durch Kommas getrennt. Wenn ein Projekt nicht in dieser Liste enthalten ist, können Sie es nicht verwenden, um eine Instanz zu erstellen und Private Service Connect dafür zu aktivieren.

  • AVAILABILITY_TYPE: Hochverfügbarkeit für die hochgestufte Instanz aktivieren Geben Sie für diesen Parameter einen der folgenden Werte an:
    • REGIONAL: Hochverfügbarkeit aktivieren und für Instanzen in der Produktionsumgebung empfohlen Die Instanz führt ein Failover auf eine andere Zone in der ausgewählten Region durch.
    • ZONAL: keine Failover-Funktion bereitstellen Dies ist der Standardwert.

    Weitere Informationen zum Festlegen und Entfernen von Hochverfügbarkeit für Instanzen finden Sie unter Bestehende Instanz für Hochverfügbarkeit konfigurieren und Hochverfügbarkeit für eine Instanz deaktivieren.

  • DATABASE_VERSION: die Datenbankversion für die Instanz (z. B. SQLSERVER_2019_STANDARD).
  • NUMBER_OF_vCPUs: die Anzahl der Kerne für die Instanz.
  • MEMORY_SIZE: die Größe des Arbeitsspeichers für die Instanz.
  • ROOT_PASSWORD: das Passwort des Cloud SQL-Nutzers root.

Terraform

Verwenden Sie die google_sql_database_instanceTerraform-Ressource, um eine Instanz mit aktiviertem Private Service Connect zu erstellen.

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = [] # Add consumer project IDs here.
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false # Set to "true" to prevent destruction of the resource
}

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.

    Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.

Verzeichnis vorbereiten

Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).

  1. Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung .tf haben, z. B. main.tf. In dieser Anleitung wird die Datei als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.

    Kopieren Sie den Beispielcode in das neu erstellte main.tf.

    Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
    terraform init

    Fügen Sie optional die Option -upgrade ein, um die neueste Google-Anbieterversion zu verwenden:

    terraform init -upgrade

Änderungen anwenden

  1. Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
    terraform plan

    Korrigieren Sie die Konfiguration nach Bedarf.

  2. Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie yes an der Eingabeaufforderung ein:
    terraform apply

    Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.

  3. Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.

REST Version 1

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält.
  • INSTANCE_NAME: der Name der Instanz.
  • REGION_NAME: der Name der Region für die Instanz.
  • ROOT_PASSWORD: das Passwort des Cloud SQL-Nutzers root.
  • AVAILABILITY_TYPE: Hochverfügbarkeit für die hochgestufte Instanz aktivieren Geben Sie für diesen Parameter einen der folgenden Werte an:
    • REGIONAL: Hochverfügbarkeit aktivieren und für Instanzen in der Produktionsumgebung empfohlen Die Instanz führt ein Failover auf eine andere Zone in der ausgewählten Region durch.
    • ZONAL: keine Failover-Funktion bereitstellen Dies ist der Standardwert.

    Weitere Informationen zum Festlegen und Entfernen von Hochverfügbarkeit für Instanzen finden Sie unter Bestehende Instanz für Hochverfügbarkeit konfigurieren und Hochverfügbarkeit für eine Instanz deaktivieren.

  • ALLOWED_PROJECTS: eine Liste zulässiger Projekt-IDs oder -Nummern, durch Kommas getrennt. Wenn ein Projekt nicht in dieser Liste enthalten ist, können Sie es nicht verwenden, um eine Instanz zu erstellen und Private Service Connect dafür zu aktivieren.

  • MACHINE_TYPE: ein Enum-Stringwert, der den Maschinentyp für die Instanz darstellt. Beispiel: db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE, wobei NUMBER_OF_vCPUs und MEMORY_SIZE die Anzahl der Kerne und die gewünschte Arbeitsspeichermenge für die Instanz sind.

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "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"
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "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"
}

REST v1beta4

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält.
  • INSTANCE_NAME: der Name der Instanz.
  • REGION_NAME: der Name der Region für die Instanz.
  • ROOT_PASSWORD: das Passwort des Cloud SQL-Nutzers root.
  • AVAILABILITY_TYPE: Hochverfügbarkeit für die hochgestufte Instanz aktivieren Geben Sie für diesen Parameter einen der folgenden Werte an:
    • REGIONAL: Hochverfügbarkeit aktivieren und für Instanzen in der Produktionsumgebung empfohlen Die Instanz führt ein Failover auf eine andere Zone in der ausgewählten Region durch.
    • ZONAL: keine Failover-Funktion bereitstellen Dies ist der Standardwert.

    Weitere Informationen zum Festlegen und Entfernen von Hochverfügbarkeit für Instanzen finden Sie unter Bestehende Instanz für Hochverfügbarkeit konfigurieren und Hochverfügbarkeit für eine Instanz deaktivieren.

  • ALLOWED_PROJECTS: eine Liste zulässiger Projekt-IDs oder -Nummern, durch Kommas getrennt. Wenn ein Projekt nicht in dieser Liste enthalten ist, können Sie es nicht verwenden, um eine Instanz zu erstellen und Private Service Connect dafür zu aktivieren.

  • MACHINE_TYPE: ein Enum-Stringwert, der den Maschinentyp für die Instanz darstellt. Beispiel: db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE, wobei NUMBER_OF_vCPUs und MEMORY_SIZE die Anzahl der Kerne und die gewünschte Arbeitsspeichermenge für die Instanz sind.

HTTP-Methode und URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

JSON-Text anfordern:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "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"
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "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/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Dienstanhang abrufen

Nachdem Sie eine Cloud SQL-Instanz mit aktiviertem Private Service Connect erstellt haben, rufen Sie den URI des Dienstanhangs ab und verwenden Sie ihn, um den Private Service Connect-Endpunkt zu erstellen.

gcloud

Verwenden Sie den Befehl gcloud sql instances describe, um zusammenfassende Informationen zu einer Instanz mit aktiviertem Private Service Connect aufzurufen, z. B. das Feld pscServiceAttachmentLink, das den URI anzeigt, der auf den Dienstanhang der Instanz verweist:

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

Ersetzen Sie die folgenden Werte:

  • INSTANCE_NAME: der Name der Cloud SQL-Instanz, zu der Private Service Connect-Endpunkte in VPC-Netzwerken eine Verbindung herstellen können
  • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält

Das folgende Beispiel zeigt eine Beispielausgabe für diesen Befehl.

gcloud sql instances describe myinstance \
--project=12345

...
pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment

Terraform

Verwenden Sie zum Abrufen des URI des Dienstanhangs die Terraform-Ressource google_compute_address.

resource "google_compute_address" "default" {
  name         = "psc-compute-address-${google_sql_database_instance.default.name}"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.44" # Replace value with the IP address to reserve.
}

data "google_sql_database_instance" "default" {
  name = resource.google_sql_database_instance.default.name
}

resource "google_compute_forwarding_rule" "default" {
  name                  = "psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region                = "us-central1"
  network               = "default"
  ip_address            = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target                = data.google_sql_database_instance.default.psc_service_attachment_link
}

Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.

Cloud Shell vorbereiten

  1. Rufen Sie Cloud Shell auf.
  2. Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.

    Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.

Verzeichnis vorbereiten

Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).

  1. Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung .tf haben, z. B. main.tf. In dieser Anleitung wird die Datei als main.tf bezeichnet.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.

    Kopieren Sie den Beispielcode in das neu erstellte main.tf.

    Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.

  3. Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
  4. Speichern Sie die Änderungen.
  5. Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
    terraform init

    Fügen Sie optional die Option -upgrade ein, um die neueste Google-Anbieterversion zu verwenden:

    terraform init -upgrade

Änderungen anwenden

  1. Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
    terraform plan

    Korrigieren Sie die Konfiguration nach Bedarf.

  2. Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie yes an der Eingabeaufforderung ein:
    terraform apply

    Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.

  3. Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.

Private Service Connect-Endpunkt erstellen

Sie können eine interne IP-Adresse für den Private Service Connect-Endpunkt reservieren und einen Endpunkt mit dieser Adresse erstellen. Zum Erstellen des Endpunkts benötigen Sie den URI des Dienstanhangs und die Projekte, die für die Instanz zulässig sind.

gcloud

  1. Verwenden Sie den Befehl gcloud compute addresses create, um eine interne IP-Adresse für den Private Service Connect-Endpunkt zu reservieren:

    gcloud compute addresses create ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --subnet=SUBNET_NAME \
    --addresses=INTERNAL_IP_ADDRESS

    Ersetzen Sie die folgenden Werte:

    • ADDRESS_NAME: der Name der internen IP-Adresse.
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts für den Endpunkt.
    • REGION_NAME: der Name der Region für den Endpunkt.
    • SUBNET_NAME: der Subnetzname für die IP-Adresse.
    • INTERNAL_IP_ADDRESS: Die zu reservierende IP-Adresse. Diese IP-Adresse muss sich innerhalb des primären IP-Bereichs des Subnetzes befinden. Die IP-Adresse kann eine RFC 1918-Adresse oder ein Subnetz mit Nicht-RFC-Bereichen sein.
  2. Prüfen Sie mit dem Befehl gcloud compute addresses list, ob die IP-Adresse reserviert ist:

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    Prüfen Sie in der Antwort, ob für die IP-Adresse der Status RESERVED angezeigt wird.

  3. Verwenden Sie den Befehl gcloud compute forwarding-rules create, um den Private Service Connect-Endpunkt zu erstellen und auf den Cloud SQL-Dienstanhang zu verweisen:

    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

    Ersetzen Sie die folgenden Werte:

    • ENDPOINT_NAME: der Name des Endpunkts.
    • NETWORK_NAME: der Name des VPC-Netzwerks für den Endpunkt.
    • SERVICE_ATTACHMENT_URI ist der URI des Dienstanhangs.
  4. Prüfen Sie mit dem Befehl gcloud compute forwarding-rules describe, ob der Dienstanhang den Endpunkt akzeptiert:

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Prüfen Sie in der Antwort, ob für das Feld pscConnectionStatus der Status ACCEPTED angezeigt wird. Der Endpunkt kann eine Verbindung zum Dienstanhang herstellen.

Verbindung mit einer Cloud SQL-Instanz herstellen

Sie können eine Verbindung zu einer Cloud SQL-Instanz mit aktiviertem Private Service Connect über eine interne IP-Adresse, einen DNS-Eintrag, den Cloud SQL Auth-Proxy, die Cloud SQL Language Connectors oder andere Google Cloud-Anwendungen herstellen.

Verwaltete DNS-Zone und DNS-Eintrag konfigurieren

Cloud SQL erstellt DNS-Einträge nicht automatisch. Stattdessen wird in der Antwort der API-Antwort für die Instanzsuche ein DNS-Name vorgeschlagen. Wir empfehlen, den DNS-Eintrag in einer privaten DNS-Zone im entsprechenden VPC-Netzwerk zu erstellen. Dies bietet eine konsistente Methode zur Verwendung des Cloud SQL Auth-Proxys, um eine Verbindung aus verschiedenen Netzwerken herzustellen.

gcloud

  1. Verwenden Sie den Befehl gcloud sql instances describe, um zusammenfassende Informationen zu einer Cloud SQL-Instanz einschließlich des DNS-Namens der Instanz aufzurufen:

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    Ersetzen Sie die folgenden Werte:

    • INSTANCE_NAME: Der Name der Cloud SQL-Instanz.
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält

    Prüfen Sie in der Antwort, ob der DNS-Name angezeigt wird. Dieser Name hat das folgende Muster: INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.. Beispiel: 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.

  2. Verwenden Sie zum Erstellen einer privaten DNS-Zone den Befehl gcloud dns managed-zones create. Diese Zone ist dem VPC-Netzwerk zugeordnet, das für die Verbindung mit der Cloud SQL-Instanz über den Private Service Connect-Endpunkt verwendet wird.

    gcloud dns managed-zones create ZONE_NAME \
    --project=PROJECT_ID \
    --description=DESCRIPTION \
    --dns-name=DNS_NAME \
    --networks=NETWORK_NAME \
    --visibility=private

    Ersetzen Sie die folgenden Werte:

    • ZONE_NAME: der Name der DNS-Zone
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Zone enthält
    • DESCRIPTION durch eine Beschreibung der Zone (z. B. eine DNS-Zone für die Cloud SQL-Instanz)
    • DNS_NAME: der DNS-Name für die Zone, z. B. REGION_NAME.sql.goog. (wobei REGION_NAME der Name der Region für die Zone ist)
    • NETWORK_NAME: Der Name des VPC-Netzwerks
  3. Nachdem Sie den Private Service Connect-Endpunkt erstellt haben, verwenden Sie den Befehl gcloud dns record-sets create, um einen DNS-Eintrag in der Zone zu erstellen:

    gcloud dns record-sets create DNS_NAME \
    --project=PROJECT_ID \
    --type=RRSET_TYPE \
    --rrdatas=RR_DATA \
    --zone=ZONE_NAME

    Ersetzen Sie die folgenden Werte:

    • DNS_NAME: der DNS-Name, den Sie zuvor in dieser Prozedur abgerufen haben.
    • RRSET_TYPE durch den Ressourceneintragstyp des DNS-Eintragssatzes (z. B. A).
    • RR_DATAdie IP-Adresse, die dem Private Service Connect-Endpunkt zugewiesen ist (z. B.198.51.100.5 ) Sie können auch mehrere Werte eingeben, z. B.rrdata1 rrdata2 rrdata3 (Beispiel: 10.1.2.3 10.2.3.4 10.3.4.5 )

Verbindung direkt über einen DNS-Eintrag herstellen

Führen Sie die folgenden Aktionen aus, bevor Sie mithilfe eines DNS-Eintrags eine Verbindung zu einer Cloud SQL-Instanz herstellen:

  1. Private Service Connect-Endpunkt erstellen
  2. Prüfen Sie, ob der Dienstanhang der Instanz den Endpunkt akzeptiert. Prüfen Sie den Status, um festzustellen, ob der Status des Endpunkts ACCEPTED lautet.
  3. Konfigurieren Sie eine verwaltete DNS-Zone und einen DNS-Eintrag.

Wenn Sie diese Bedingungen erfüllen, verwenden Sie den DNS-Namen, um von jedem VPC-Netzwerk, in dem Sie den Endpunkt erstellt haben, auf die Instanz zuzugreifen.

gcloud

  1. Verwenden Sie den Befehl gcloud compute addresses describe, um den DNS-Eintrag des Private Service Connect-Endpunkts abzurufen:

    gcloud compute addresses describe DNS_RECORD \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Ersetzen Sie die folgenden Werte:

    • DNS_RECORD: der DNS-Eintrag für den Endpunkt
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das den Endpunkt enthält
    • REGION_NAME: der Name der Region für den Endpunkt.
  2. Verwenden Sie den DNS-Eintrag, um eine Verbindung zur Cloud SQL-Instanz herzustellen.

    sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME

    Ersetzen Sie die folgenden Werte:

    • DNS_RECORD: der DNS-Eintrag des Endpunkts
    • DATABASE_NAME: der Name der Cloud SQL for SQL Server-Datenbank, die in der Instanz enthalten ist
    • USERNAME ist der Name des Nutzers, der eine Verbindung zur Instanz herstellt.

Direkte Verbindung über eine interne IP-Adresse

Führen Sie die folgenden Aktionen aus, bevor Sie eine Verbindung zu einer Cloud SQL-Instanz mit aktiviertem Private Service Connect herstellen:

  1. Private Service Connect-Endpunkt erstellen
  2. Prüfen Sie, ob der Dienstanhang der Instanz den Endpunkt akzeptiert. Prüfen Sie den Status, um festzustellen, ob der Status des Endpunkts ACCEPTED lautet.

Wenn diese Bedingungen erfüllt sind, verwenden Sie die IP-Adresse des Endpunkts, um von jedem VPC-Netzwerk, in dem Sie den Endpunkt erstellt haben, auf die Instanz zuzugreifen.

gcloud

  1. Verwenden Sie den Befehl gcloud compute addresses describe, um die IP-Adresse des Private Service Connect-Endpunkts abzurufen:

    gcloud compute addresses describe ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Ersetzen Sie die folgenden Werte:

    • ADDRESS_NAME: der Name der IP-Adresse des Endpunkts
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das den Endpunkt enthält
    • REGION_NAME: der Name der Region für den Endpunkt.
  2. Verwenden Sie die interne IP-Adresse, um eine Verbindung zur Cloud SQL-Instanz herzustellen.

    sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME

    Ersetzen Sie die folgenden Werte:

    • IP_ADDRESS: IP-Adresse des Endpunkts
    • DATABASE_NAME: der Name der Cloud SQL for SQL Server-Datenbank, die in der Instanz enthalten ist
    • USERNAME ist der Name des Nutzers, der eine Verbindung zur Instanz herstellt.

Verbindung über den Cloud SQL Auth-Proxy herstellen

Der Cloud SQL-Authentifizierungsproxy ist ein Connector, der einen sicheren Zugriff auf eine Instanz mit aktiviertem Private Service Connect ermöglicht, ohne dass autorisierte Netzwerke erforderlich sind oder SSL konfiguriert werden muss.

Richten Sie einen DNS-Eintrag ein, der dem empfohlenen DNS-Namen für die Instanz entspricht, um Cloud SQL Auth-Proxy-Clientverbindungen zuzulassen. Der DNS-Eintrag ist eine Zuordnung zwischen einer DNS-Ressource und einem Domainnamen.

Cloud SQL Auth-Proxy herunterladen und installieren

Wenn Sie eine Verbindung zu Instanzen mit aktiviertem Private Service Connect herstellen möchten, müssen Sie die Binärdatei für den Cloud SQL Auth-Proxy herunterladen und installieren. Welches Binärprogramm Sie herunterladen müssen, hängt davon ab, welches Betriebssystem Sie nutzen und ob darin ein 32-Bit- oder ein 64-Bit-Kernel verwendet wird. Auf neuerer Hardware wird meistens ein 64-Bit-Kernel verwendet.

Wenn Sie sich nicht sicher sind, ob auf Ihrem Computer ein 32-Bit- oder 64-Bit-Kernel ausgeführt wird, verwenden Sie den Befehl uname -a für Linux oder macOS. Für Windows finden Sie entsprechende Informationen in der Windows-Dokumentation.

Cloud SQL Auth-Proxy starten

Der Cloud SQL Auth-Proxy unterstützt Verbindungen zu Instanzen, auf denen Private Service Connect aktiviert ist. Weitere Informationen finden Sie unter Cloud SQL Auth-Proxy starten.

gcloud

  1. Verwenden Sie den Befehl gcloud sql instances describe, um zusammenfassende Informationen zu einer Cloud SQL-Instanz einschließlich des Verbindungsnamens der Instanz aufzurufen. Dieser Verbindungsname hat das Format PROJECT_ID:REGION_NAME:INSTANCE_NAME.

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID \
    --format='value(connectionName)'

    Ersetzen Sie die folgenden Werte:

    • INSTANCE_NAME: Der Name der Cloud SQL-Instanz.
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das die Instanz enthält
  2. Kopieren Sie den Namen der Instanzverbindung.
  3. Starten Sie den Cloud SQL Auth-Proxy:

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    Ersetzen Sie INSTANCE_CONNECTION_NAME durch den Namen der Instanzverbindung, den Sie im vorherigen Schritt kopiert haben.

Verbindung über die Cloud SQL Language Connectors herstellen

Die Cloud SQL Language Connectors sind Bibliotheken, die einen sicheren Zugriff auf eine Cloud SQL-Instanz mit aktiviertem Private Service Connect ermöglichen, ohne dass autorisierte Netzwerke erforderlich sind oder SSL konfiguriert werden muss.

Um Verbindungen mit Cloud SQL Language Connectors zuzulassen, richten Sie einen DNS-Eintrag ein, der dem empfohlenen DNS-Namen für die Instanz entspricht. Der DNS-Eintrag ist eine Zuordnung zwischen einer DNS-Ressource und einem Domainnamen.

Die Cloud SQL Language Connectors unterstützen Private Service Connect-Verbindungen über den IP-Typ PSC in den entsprechenden Bibliotheken.

Verbindung über App Engine Standard, Cloud Run oder Cloud Functions herstellen

Um eine Verbindung zu Cloud SQL-Instanzen mit aktiviertem Private Service Connect herzustellen, können Sie App Engine Standard, Cloud Run oder Cloud Functions verwenden.

In diesen unterstützten serverlosen Umgebungen werden sowohl die Cloud SQL Language Connectors als auch direkte TCP-Verbindungen über eine IP-Adresse und eine Portnummer unterstützt. Bei direkten TCP-Verbindungen ist dies die IP-Adresse, die Sie beim Erstellen des Private Service Connect-Endpunkts reservieren. Sie können die IP-Adresse als Adresse für den Datenbankhost angeben.

Wenn Sie für den Endpunkt einen DNS-Eintrag erstellen, können Sie diesen Eintrag für den Host angeben.

Von BigQuery aus verbinden

Verwenden Sie den Parameter
--enable-google-private-path, um auf Daten in Cloud SQL zuzugreifen und diese über eine interne IP-Verbindung abzufragen . Dieser Parameter ist nur in folgenden Fällen gültig:

  • Sie verwenden den Parameter --no-assign-ip.
  • Sie geben mit dem Parameter --network den Namen des VPC-Netzwerks an, das Sie zum Erstellen einer internen Verbindung verwenden möchten.

Verbindung testen

Legen Sie die IP-Adresse des Private Service Connect-Endpunkts als Ziel-IP-Adresse fest, um die eingehende Verbindung zu einer Cloud SQL-Instanz mit aktiviertem Private Service Connect zu testen.

gcloud

Verwenden Sie den gcloud network-management connectivity-tests create, um einen Konnektivitätstest für eine Cloud SQL-Instanz mit aktiviertem Private Service Connect zu erstellen:

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

Ersetzen Sie die folgenden Werte:

  • CONNECTIVITY_TEST_NAME: der Name des Konnektivitätstests.
  • SOURCE_INSTANCE: der URI für die Compute Engine-Instanz, in der sich die Quell-IP-Adresse befindet, z. B. projects/myproject/zones/myzone/instances/myinstance.
  • DESTINATION_CLOUD_SQL_INSTANCE: die URL für die Cloud SQL-Instanz, z. B. projects/myproject/instances/myinstance.
  • DESTINATION_NETWORK: der URI für das VPC-Netzwerk, in dem sich die Ziel-IP-Adresse befindet, z. B. projects/myproject/global/networks/mynetwork.
  • DESTINATION_PORT: die Portnummer, die für die Instanz reserviert ist. Bei Cloud SQL for SQL Server-Instanzen ist die Portnummer 1433.

Beschränkungen

  • Sie können bis zu 20 Private Service Connect-Endpunkte einrichten, die eine Verbindung zum Dienstanhang einer Cloud SQL-Instanz herstellen, auf der Private Service Connect aktiviert ist.
  • Die folgenden Flags sind ungültig oder beeinträchtigt:
    • --no-assign-ip: verwenden dieses Flag, da Cloud SQL-Instanzen mit aktiviertem Private Service Connect keine anderen Verbindungstypen wie externe IP-Verbindungen verwenden können
    • --authorized-networks: Sie können dieses Flag nicht verwenden, um autorisierte Netzwerke hinzuzufügen.
    • --network: Sie können dieses Flag nicht verwenden, da es dem Zugriff auf private Dienste zugeordnet ist.
    • --allocated-ip-range-name: Sie können dieses Flag nicht verwenden, da zulässige IP-Bereichsnamen nicht unterstützt werden
  • Sie können kein externes Replikat einer Instanz mit aktiviertem Private Service Connect erstellen.
  • Sie können Private Service Connect nicht auf einer vorhandenen Instanz aktivieren oder deaktivieren.
  • Sie können eine Instanz, für die Private Service Connect aktiviert ist, nicht für die Verwendung des Zugriffs auf private Dienste oder für externe IP-Verbindungen konfigurieren.
    • Sie können keine externen IP-Verbindungen für eine Instanz mit aktiviertem Private Service Connect aktivieren.
    • Sie können keinen Zugriff auf private Dienste aktivieren und der Instanz keine autorisierten Netzwerke hinzufügen.
    • Sie können den Verbindungstyp der Instanz nicht ändern.
    • Sie können den Befehl gcloud sql connect, Cloud Shell, Cloud Build oder Database Migration Service nicht verwenden, um eine Verbindung zu Cloud SQL-Instanzen mit aktiviertem Private Service Connect herzustellen.
    • Beim Testen der Verbindung zu einer Cloud SQL-Instanz mit aktiviertem Private Service Connect können Sie die folgenden Elemente nicht festlegen:
      • Die interne IP-Adresse oder der DNS-Name der Instanz direkt als Ziel
      • Die Instanz als Quelle
      • Die IP-Adresse des Private Service Connect-Endpunkts als Quelle
    • IP-basierte Zulassungslisten mithilfe autorisierter Netzwerke werden nicht unterstützt.
    • Bei Cloud SQL-Instanzen mit aktiviertem Private Service Connect werden sowohl Managed Service for Microsoft Active Directory (auch Managed Microsoft AD genannt) als auch verknüpfte Server nicht unterstützt.

    Fehlerbehebung

    Dieser Abschnitt enthält Informationen zu Problemen im Zusammenhang mit Cloud SQL-Instanzen mit aktiviertem Private Service Connect sowie Schritte zur Fehlerbehebung.

    Problem Fehlerbehebung
    Der Dienstanhang der Instanz akzeptiert den Private Service Connect-Endpunkt nicht.
    1. Verwenden Sie den Befehl gcloud compute forwarding-rules describe, um den Status des Endpunkts zu prüfen.

      
      gcloud compute forwarding-rules describe ENDPOINT_NAME \
      --project=PROJECT_ID \
      --region=REGION_NAME \
      | grep pscConnectionStatus

      Ersetzen Sie die folgenden Werte:

      • ENDPOINT_NAME: der Name des Endpunkts.
      • PROJECT_ID: die ID oder Projektnummer des Google Cloud-Projekts, das den Endpunkt enthält
      • REGION_NAME: der Name der Region für den Endpunkt.
    2. Prüfen Sie, ob der Status des Endpunkts ACCEPTED lautet. Wenn der Status PENDING lautet, lässt die Instanz das Google Cloud-Projekt, das den Endpunkt enthält, nicht zu. Achten Sie darauf, dass das Netzwerkprojekt, in dem der Endpunkt erstellt wird, zugelassen wird. Weitere Informationen finden Sie unter Instanz mit aktiviertem Private Service Connect bearbeiten.

    Nächste Schritte