Private Service Connect를 사용하여 인스턴스에 연결

이 페이지에서는 Private Service Connect를 사용하여 Cloud SQL 인스턴스에 연결하는 방법을 설명합니다.

Private Service Connect를 사용하여 기본 Cloud SQL 인스턴스 또는 다른 그룹, 팀, 프로젝트, 조직에 속하는 여러 Virtual Private Cloud(VPC) 네트워크의 읽기 복제본에 연결할 수 있습니다.

시작하기 전에

Cloud SQL 인스턴스의 Private Service Connect 사용 지원은 gcloud CLI 버전 416.0.0 이상에서 제공됩니다.

사용자 역할

다음 표에서는 Cloud SQL 인스턴스에서 Private Service Connect를 사용하는 데 필요한 역할에 대한 정보를 제공합니다.

역할 설명
compute.networkAdmin

Cloud SQL 인스턴스에 대한 연결을 시작하는 VPC 네트워크에 대한 전체 제어 권한을 부여합니다. IP 주소, 방화벽 규칙, Private Service Connect 엔드포인트를 만들고 관리할 수 있습니다.

Private Service Connect를 사용하여 여러 VPC 네트워크에서 Cloud SQL 인스턴스에 연결하는 경우 각 네트워크에는 자체 관리자가 있습니다.

dns.admin DNS 영역 및 레코드를 포함한 Cloud DNS 리소스에 대한 전체 제어 권한을 부여합니다.
cloudsql.admin Cloud SQL 인스턴스의 전체 제어 권한을 제공하고 수명 주기 동안 인스턴스를 제어합니다.
cloudsql.instanceUser Cloud SQL 인스턴스에 대한 액세스 권한을 제공합니다. Cloud SQL 인증 프록시 클라이언트를 통해 연결하는 경우 Cloud SQL 클라이언트 역할이 있어야 합니다. 직접 연결하는 경우 Identity and Access Management(IAM) 역할 및 권한이 필요하지 않습니다.

Cloud SQL 인스턴스 만들기

gcloud CLI, Terraform 또는 API를 사용하여 인스턴스를 만들고 Private Service Connect를 사용 설정할 수 있습니다.

gcloud

인스턴스를 만들고 해당 인스턴스에 대해 Private Service Connect를 사용 설정하려면 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 \
--enable-bin-log

다음을 바꿉니다.

  • INSTANCE_NAME: 인스턴스 이름
  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
  • REGION_NAME: 인스턴스의 리전 이름
  • ALLOWED_PROJECTS: 허용되는 프로젝트 ID 또는 숫자의 목록(쉼표로 구분)입니다. 프로젝트가 이 목록에 포함되지 않은 경우 이를 사용하여 인스턴스를 만들고 Private Service Connect를 사용 설정할 수 없습니다.

  • AVAILABILITY_TYPE: 인스턴스에 고가용성을 사용 설정합니다. 이 매개변수에 대해 다음 값 중 하나를 지정합니다.
    • REGIONAL: 고가용성을 사용 설정하며, 프로덕션 인스턴스에 권장됩니다. 인스턴스는 선택한 리전 내의 다른 영역으로 장애 조치됩니다.
    • ZONAL: 장애 조치 기능을 제공하지 않습니다. 이 설정이 기본 설정입니다.

    인스턴스의 고가용성 설정 및 삭제에 대한 자세한 내용은 기존 인스턴스를 고가용성으로 구성인스턴스의 고가용성 비활성화를 참조하세요.

  • MACHINE_TYPE: 인스턴스의 머신 유형입니다.
  • DATABASE_VERSION: 인스턴스의 데이터베이스 버전입니다(예: MYSQL_8_0).

Terraform

Private Service Connect가 사용 설정된 인스턴스를 만들려면 google_sql_database_instance Terraform 리소스를 사용합니다.

resource "google_sql_database_instance" "default" {
  name             = "mysql-instance"
  region           = "us-central1"
  database_version = "MYSQL_8_0"
  settings {
    tier              = "db-f1-micro"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled            = true
      binary_log_enabled = true
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = []
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false # Set to "true" to prevent destruction of the resource
}

Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.

Cloud Shell 준비

  1. Cloud Shell을 실행합니다.
  2. Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.

    이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.

디렉터리 준비

각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.

  1. Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는 .tf 확장자가 있어야 합니다(예: main.tf). 이 튜토리얼에서는 파일을 main.tf라고 합니다.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.

    샘플 코드를 새로 만든 main.tf에 복사합니다.

    필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.

  3. 환경에 적용할 샘플 매개변수를 검토하고 수정합니다.
  4. 변경사항을 저장합니다.
  5. Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
    terraform init

    원하는 경우 최신 Google 공급업체 버전을 사용하려면 -upgrade 옵션을 포함합니다.

    terraform init -upgrade

변경사항 적용

  1. 구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
    terraform plan

    필요에 따라 구성을 수정합니다.

  2. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 Terraform 구성을 적용합니다.
    terraform apply

    Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.

  3. 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.

REST v1

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
  • INSTANCE_NAME: 인스턴스 이름
  • REGION_NAME: 인스턴스의 리전 이름
  • AVAILABILITY_TYPE: 인스턴스에 고가용성을 사용 설정합니다. 이 매개변수에 대해 다음 값 중 하나를 지정합니다.
    • REGIONAL: 고가용성을 사용 설정하며, 프로덕션 인스턴스에 권장됩니다. 인스턴스는 선택한 리전 내의 다른 영역으로 장애 조치됩니다.
    • ZONAL: 장애 조치 기능을 제공하지 않습니다. 이 설정이 기본 설정입니다.

    인스턴스의 고가용성 설정 및 삭제에 대한 자세한 내용은 기존 인스턴스를 고가용성으로 구성인스턴스의 고가용성 비활성화를 참조하세요.

  • ALLOWED_PROJECTS: 허용되는 프로젝트 ID 또는 숫자의 목록(쉼표로 구분)입니다. 프로젝트가 이 목록에 포함되지 않은 경우 이를 사용하여 인스턴스를 만들고 Private Service Connect를 사용 설정할 수 없습니다.

  • MACHINE_TYPE: 인스턴스의 머신 유형입니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "MYSQL_8_0",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true,
      "kind": "sql#backupConfiguration",
      "startTime": "00:00"
    },
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "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

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
  • INSTANCE_NAME: 인스턴스 이름
  • REGION_NAME: 인스턴스의 리전 이름
  • AVAILABILITY_TYPE: 인스턴스에 고가용성을 사용 설정합니다. 이 매개변수에 대해 다음 값 중 하나를 지정합니다.
    • REGIONAL: 고가용성을 사용 설정하며, 프로덕션 인스턴스에 권장됩니다. 인스턴스는 선택한 리전 내의 다른 영역으로 장애 조치됩니다.
    • ZONAL: 장애 조치 기능을 제공하지 않습니다. 이 설정이 기본 설정입니다.

    인스턴스의 고가용성 설정 및 삭제에 대한 자세한 내용은 기존 인스턴스를 고가용성으로 구성인스턴스의 고가용성 비활성화를 참조하세요.

  • ALLOWED_PROJECTS: 허용되는 프로젝트 ID 또는 숫자의 목록(쉼표로 구분)입니다. 프로젝트가 이 목록에 포함되지 않은 경우 이를 사용하여 인스턴스를 만들고 Private Service Connect를 사용 설정할 수 없습니다.

  • MACHINE_TYPE: 인스턴스의 머신 유형입니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "MYSQL_8_0",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true,
      "kind": "sql#backupConfiguration",
      "startTime": "00:00"
    },
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "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"
}

서비스 연결 가져오기

Private Service Connect가 사용 설정된 Cloud SQL 인스턴스를 만든 후 서비스 연결 URI를 가져오고 이를 사용하여 Private Service Connect 엔드포인트를 만듭니다.

gcloud

인스턴스의 서비스 연결을 가리키는 URI를 표시하는 pscServiceAttachmentLink 필드와 같이 Private Service Connect가 사용 설정된 인스턴스에 대한 요약 정보를 보려면 gcloud sql instances describe 명령어를 사용합니다.

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

다음을 바꿉니다.

  • INSTANCE_NAME: VPC 네트워크의 Private Service Connect 엔드포인트가 연결할 수 있는 Cloud SQL 인스턴스의 이름
  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호

다음 예시는 이 명령어의 샘플 출력을 보여줍니다.

gcloud sql instances describe myinstance \
--project=12345

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

Terraform

서비스 연결 URI를 가져오려면 google_compute_address Terraform 리소스를 사용합니다.

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.43" # 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
}

Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.

Cloud Shell 준비

  1. Cloud Shell을 실행합니다.
  2. Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.

    이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.

디렉터리 준비

각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.

  1. Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는 .tf 확장자가 있어야 합니다(예: main.tf). 이 튜토리얼에서는 파일을 main.tf라고 합니다.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.

    샘플 코드를 새로 만든 main.tf에 복사합니다.

    필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.

  3. 환경에 적용할 샘플 매개변수를 검토하고 수정합니다.
  4. 변경사항을 저장합니다.
  5. Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
    terraform init

    원하는 경우 최신 Google 공급업체 버전을 사용하려면 -upgrade 옵션을 포함합니다.

    terraform init -upgrade

변경사항 적용

  1. 구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
    terraform plan

    필요에 따라 구성을 수정합니다.

  2. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 Terraform 구성을 적용합니다.
    terraform apply

    Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.

  3. 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.

Private Service Connect 엔드포인트 만들기

Private Service Connect 엔드포인트의 내부 IP 주소를 예약하고 이 주소로 엔드포인트를 만들 수 있습니다. 엔드포인트를 만들려면 서비스 연결 URI 및 인스턴스에 허용되는 프로젝트가 필요합니다.

gcloud

  1. Private Service Connect 엔드포인트의 내부 IP 주소를 예약하려면 gcloud compute addresses create 명령어를 사용합니다.

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

    다음을 바꿉니다.

    • ADDRESS_NAME: 내부 IP 주소 이름
    • PROJECT_ID: 엔드포인트에 대한 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
    • REGION_NAME: 엔드포인트의 리전 이름
    • SUBNET_NAME: IP 주소의 서브넷 이름
    • INTERNAL_IP_ADDRESS: 예약할 IP 주소. 이 IP 주소는 서브넷의 기본 IP 범위 내에 있어야 합니다. IP 주소는 RFC 1918 주소이거나 RFC 이외의 범위가 있는 서브넷일 수 있습니다.
  2. IP 주소가 예약되어 있는지 확인하려면 gcloud compute addresses list 명령어를 사용합니다.

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    응답에서 IP 주소에 대해 RESERVED 상태가 표시되는지 확인합니다.

  3. Private Service Connect 엔드포인트를 만들고 Cloud SQL 서비스 연결을 가리키도록 하려면 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

    다음을 바꿉니다.

    • ENDPOINT_NAME: 엔드포인트의 이름
    • NETWORK_NAME: 엔드포인트의 VPC 네트워크 이름
    • SERVICE_ATTACHMENT_URI: 서비스 연결의 URI
  4. 서비스 연결에서 엔드포인트를 수락하는지 확인하려면 gcloud compute forwarding-rules describe 명령어를 사용합니다.

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

    응답에서 pscConnectionStatus 필드에 ACCEPTED 상태가 표시되는지 확인합니다. 엔드포인트를 서비스 연결에 연결할 수 있습니다.

Cloud SQL 인스턴스에 연결

내부 IP 주소, DNS 레코드, Cloud SQL 인증 프록시, Cloud SQL 언어 커넥터 또는 기타 Google Cloud 애플리케이션을 사용하여 Private Service Connect가 사용 설정된 Cloud SQL 인스턴스에 연결할 수 있습니다.

DNS 관리 영역 및 DNS 레코드 구성

Cloud SQL은 DNS 레코드를 자동으로 만들지 않습니다. 대신 인스턴스 조회 API 응답에서 추천하는 DNS 이름을 제공합니다. 해당 VPC 네트워크의 비공개 DNS 영역에 DNS 레코드를 만드는 것이 좋습니다. 이렇게 하면 Cloud SQL 인증 프록시를 사용하여 다른 네트워크에서 일관된 방식으로 연결할 수 있습니다.

gcloud

  1. 인스턴스의 DNS 이름을 포함하여 Cloud SQL 인스턴스에 대한 요약 정보를 보려면 gcloud sql instances describe 명령어를 사용합니다.

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    다음을 바꿉니다.

    • INSTANCE_NAME: Cloud SQL 인스턴스의 이름
    • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호

    응답에 DNS 이름이 표시되는지 확인합니다. 이 이름의 패턴은 INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.입니다. 예를 들면 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.입니다.

  2. 비공개 DNS 영역을 만들려면 gcloud dns managed-zones create 명령어를 사용합니다. 이 영역은 Private Service Connect 엔드포인트를 통해 Cloud SQL 인스턴스에 연결하는 데 사용되는 VPC 네트워크와 연결됩니다.

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

    다음을 바꿉니다.

    • ZONE_NAME: DNS 영역의 이름
    • PROJECT_ID: 영역이 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
    • DESCRIPTION: 영역에 대한 설명(예: Cloud SQL 인스턴스의 DNS 영역)
    • DNS_NAME: 영역에 대한 DNS 이름(예: REGION_NAME.sql.goog.) 여기서 REGION_NAME은 영역에 대한 리전 이름입니다.
    • NETWORK_NAME: VPC 네트워크의 이름입니다.
  3. Private Service Connect 엔드포인트를 만든 후 영역에 DNS 레코드를 만들려면 gcloud dns record-sets create 명령어를 사용합니다.

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

    다음을 바꿉니다.

    • DNS_NAME: 이 절차의 앞부분에서 검색한 DNS 이름
    • RRSET_TYPE: DNS 레코드 세트의 리소스 레코드 유형(예: A)
    • RR_DATA: Private Service Connect 엔드포인트에 할당된 IP 주소(예: 198.51.100.5)입니다. rrdata1 rrdata2 rrdata3와 같이 여러 개의 값을 입력할 수도 있습니다(예: 10.1.2.3 10.2.3.4 10.3.4.5).

DNS 레코드를 사용하여 직접 연결

DNS 레코드를 사용하여 Cloud SQL 인스턴스에 연결하기 전에 먼저 다음 작업을 완료합니다.

  1. Private Service Connect 엔드포인트를 만듭니다.
  2. 인스턴스의 서비스 연결에서 엔드포인트를 수락하는지 확인합니다. 엔드포인트 상태가 ACCEPTED인지 확인하려면 상태를 확인합니다.
  3. DNS 관리 영역 및 DNS 레코드를 구성합니다.

이러한 조건이 충족되면 DNS 이름을 사용하여 엔드포인트를 만든 VPC 네트워크에서 인스턴스에 액세스합니다.

gcloud

  1. Private Service Connect 엔드포인트의 DNS 레코드를 검색하려면 gcloud compute addresses describe 명령어를 사용합니다.

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

    다음을 바꿉니다.

    • DNS_RECORD: 엔드포인트의 DNS 레코드
    • PROJECT_ID: 엔드포인트가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
    • REGION_NAME: 엔드포인트의 리전 이름
  2. Cloud SQL 인스턴스에 연결하려면 DNS 레코드를 사용합니다.

    mysql --host=DNS_RECORD --user=USERNAME -p

    다음을 바꿉니다.

    • DNS_RECORD: 엔드포인트의 DNS 레코드입니다.
    • USERNAME: 인스턴스에 연결하는 사용자의 이름입니다.

내부 IP 주소를 통해 직접 연결

Private Service Connect가 사용 설정된 Cloud SQL 인스턴스에 연결하기 전에 먼저 다음 작업을 완료합니다.

  1. Private Service Connect 엔드포인트를 만듭니다.
  2. 인스턴스의 서비스 연결에서 엔드포인트를 수락하는지 확인합니다. 엔드포인트 상태가 ACCEPTED인지 확인하려면 상태를 확인합니다.

이러한 조건이 충족되면 엔드포인트의 IP 주소를 사용하여 엔드포인트를 만든 VPC 네트워크의 인스턴스에 액세스합니다.

gcloud

  1. Private Service Connect 엔드포인트의 IP 주소를 검색하려면 gcloud compute addresses describe 명령어를 사용합니다.

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

    다음을 바꿉니다.

    • ADDRESS_NAME: 엔드포인트의 IP 주소 이름
    • PROJECT_ID: 엔드포인트가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
    • REGION_NAME: 엔드포인트의 리전 이름
  2. Cloud SQL 인스턴스에 연결하려면 내부 IP 주소를 사용합니다.

    mysql --host=IP_ADDRESS --user=USERNAME -p

    다음을 바꿉니다.

    • IP_ADDRESS: 엔드포인트의 IP 주소입니다.
    • USERNAME: 인스턴스에 연결하는 사용자의 이름입니다.

Cloud SQL 인증 프록시를 사용하여 연결

Cloud SQL 인증 프록시는 승인된 네트워크가 없거나 SSL을 구성하지 않고도 Private Service Connect가 사용 설정된 인스턴스에 대한 보안 액세스 권한을 제공하는 커넥터입니다.

Cloud SQL 인증 프록시 클라이언트 연결을 허용하려면 인스턴스에 제공된 권장 DNS 이름과 일치하는 DNS 레코드를 설정해야 합니다. DNS 레코드는 DNS 리소스와 도메인 이름 간의 매핑입니다.

Cloud SQL 인증 프록시 다운로드 및 설치

Private Service Connect가 사용 설정된 인스턴스에 연결하려면 Cloud SQL 인증 프록시의 바이너리를 다운로드하고 설치해야 합니다. 운영체제 및 운영체제가 사용하는 커널(32비트 또는 64비트)에 따라 다른 바이너리를 다운로드합니다. 대부분의 최신 하드웨어는 64비트 커널을 사용합니다.

머신에서 32비트 커널을 실행 중인지 또는 64비트 커널을 실행 중인지 확실하지 않은 경우 Linux 또는 macOS에서 uname -a 명령어를 사용합니다. Windows의 경우 Windows 문서를 참조하세요.

Cloud SQL 인증 프록시 시작

Cloud SQL 인증 프록시는 Private Service Connect가 사용 설정된 인스턴스에 대한 연결을 지원합니다. 자세한 내용은 Cloud SQL 인증 프록시 시작을 참조하세요.

gcloud

  1. 인스턴스의 연결 이름을 포함하여 Cloud SQL 인스턴스에 대한 요약 정보를 보려면 gcloud sql instances describe 명령어를 사용합니다. 이 연결 이름은 PROJECT_ID:REGION_NAME:INSTANCE_NAME 형식입니다.

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

    다음을 바꿉니다.

    • INSTANCE_NAME: Cloud SQL 인스턴스의 이름
    • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
  2. 인스턴스 연결 이름을 복사합니다.
  3. Cloud SQL 인증 프록시를 실행합니다.

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    INSTANCE_CONNECTION_NAME은 이전 단계에서 복사한 인스턴스 연결 이름으로 바꿉니다.

Cloud SQL 언어 커넥터를 사용하여 연결

Cloud SQL 언어 커넥터는 승인된 네트워크가 없거나 SSL을 구성하지 않고도 Private Service Connect가 사용 설정된 Cloud SQL 인스턴스에 대한 보안 액세스 권한을 제공하는 라이브러리입니다.

Cloud SQL 언어 커넥터와의 연결을 허용하려면 인스턴스에 제공된 권장 DNS 이름과 일치하는 DNS 레코드를 설정해야 합니다. DNS 레코드는 DNS 리소스와 도메인 이름 간의 매핑입니다.

Cloud SQL 언어 커넥터는 해당 라이브러리 내에서 PSC IP 유형을 통해 Private Service Connect 연결을 지원합니다.

App Engine 표준, Cloud Run, Cloud Functions에서 연결

Private Service Connect가 사용 설정된 Cloud SQL 인스턴스에 연결하려면 App Engine 표준, Cloud Run 또는 Cloud Functions를 사용할 수 있습니다.

이러한 지원되는 서버리스 환경에서는 IP 주소와 포트 번호를 사용한 Cloud SQL 언어 커넥터 및 직접 TCP 연결 모두 지원됩니다. 직접 TCP 연결의 경우 Private Service Connect 엔드포인트를 만들 때 예약하는 IP 주소입니다. IP 주소를 데이터베이스 호스트의 주소로 지정할 수 있습니다.

엔드포인트에 DNS 레코드를 만드는 경우 호스트에 이 레코드를 지정할 수 있습니다.

BigQuery에서 연결

Cloud SQL의 데이터에 액세스하고 내부 IP 연결을 통해 이 데이터에 대해 쿼리하려면
--enable-google-private-path 매개변수를 사용합니다. 이 매개변수는 다음 경우에만 유효합니다.

  • --no-assign-ip 매개변수를 사용합니다.
  • --network 매개변수를 사용하여 내부 연결을 만드는 데 사용할 VPC 네트워크의 이름을 지정합니다.

연결 테스트

Private Service Connect가 사용 설정된 Cloud SQL 인스턴스에 대한 인바운드 연결을 테스트하려면 Private Service Connect 엔드포인트의 IP 주소를 대상 IP 주소로 설정합니다.

gcloud

Private Service Connect가 사용 설정된 Cloud SQL 인스턴스의 연결 테스트를 만들려면 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

다음을 바꿉니다.

  • CONNECTIVITY_TEST_NAME: 연결 테스트 이름
  • SOURCE_INSTANCE: 소스 IP 주소가 있는 Compute Engine 인스턴스의 URI(예: projects/myproject/zones/myzone/instances/myinstance)
  • DESTINATION_CLOUD_SQL_INSTANCE: Cloud SQL 인스턴스의 URL(예: projects/myproject/instances/myinstance)
  • DESTINATION_NETWORK: 대상 IP 주소가 있는 VPC 네트워크의 URI(예: projects/myproject/global/networks/mynetwork)
  • DESTINATION_PORT: 인스턴스에 예약된 포트 번호. MySQL용 Cloud SQL 인스턴스의 경우 포트 번호는 3306입니다.

제한사항

  • Private Service Connect가 사용 설정된 Cloud SQL 인스턴스의 서비스 연결에 연결하는 Private Service Connect 엔드포인트를 최대 20개까지 설정할 수 있습니다.
  • 다음 플래그가 무효화되거나 영향을 받습니다.
    • --no-assign-ip: Private Service Connect가 사용 설정된 Cloud SQL 인스턴스는 외부 IP 연결과 같은 다른 연결 유형을 사용할 수 없으므로 이 플래그를 사용합니다.
    • --authorized-networks: 이 플래그를 사용하여 승인된 네트워크를 추가할 수 없습니다.
    • --network: 이 플래그는 비공개 서비스 액세스와 연결되어 있으므로 사용할 수 없습니다.
    • --allocated-ip-range-name: 허용된 IP 범위 이름이 지원되지 않으므로 이 플래그를 사용할 수 없습니다.
  • Private Service Connect가 사용 설정된 인스턴스의 외부 복제본을 만들 수 없습니다.
  • 기존 인스턴스에서 Private Service Connect를 활성화하거나 비활성화할 수 없습니다.
  • 비공개 서비스 액세스나 외부 IP 연결을 사용하도록 Private Service Connect가 사용 설정된 인스턴스를 구성할 수 없습니다.
    • Private Service Connect가 사용 설정된 인스턴스에서는 외부 IP 연결을 사용 설정할 수 없습니다.
    • 인스턴스에 비공개 서비스 액세스를 사용 설정하거나 승인된 네트워크를 추가할 수 없습니다.
    • 인스턴스의 연결 유형을 변경할 수 없습니다.
    • Private Service Connect가 사용 설정된 Cloud SQL 인스턴스에는 gcloud sql connect 명령어, Cloud Shell, Cloud Build, Database Migration Service를 사용하여 연결할 수 없습니다.
    • Private Service Connect가 사용 설정된 Cloud SQL 인스턴스에 대한 연결을 테스트할 때는 다음 항목을 설정할 수 없습니다.
      • 인스턴스의 내부 IP 주소 또는 DNS 이름을 대상으로 직접 설정
      • 인스턴스를 소스로 설정
      • Private Service Connect 엔드포인트의 IP 주소를 소스로 설정
    • 승인된 네트워크를 사용한 IP 기반 허용 목록은 지원되지 않습니다.
    • 네트워크 프로젝트에 이전 Cloud SQL 네트워크 아키텍처를 사용하는 인스턴스가 포함된 경우 Private Service Connect 인스턴스를 만들 수 없습니다. Cloud SQL은 이전 네트워크 아키텍처에서 새 네트워크 아키텍처로 인스턴스를 업그레이드할 수 있는 도구를 제공합니다. 프로젝트에서 Cloud SQL 인스턴스의 네트워크 아키텍처를 확인하고 필요한 업그레이드를 수행하거나 자세한 내용을 알아보려면 새 네트워크 아키텍처로 인스턴스 업그레이드를 참조하세요.

    문제 해결

    이 섹션에는 Private Service Connect가 사용 설정된 Cloud SQL 인스턴스 관련 문제에 대한 정보와 문제 해결 단계가 포함되어 있습니다.

    문제 문제 해결
    인스턴스의 서비스 연결에서 Private Service Connect 엔드포인트를 수락하지 않습니다.
    1. 엔드포인트 상태를 확인하려면 gcloud compute forwarding-rules describe 명령어를 사용합니다.

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

      다음을 바꿉니다.

      • ENDPOINT_NAME: 엔드포인트의 이름
      • PROJECT_ID: 엔드포인트가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
      • REGION_NAME: 엔드포인트의 리전 이름
    2. 엔드포인트 상태가 ACCEPTED인지 확인합니다. 상태가 PENDING이면 인스턴스에서 엔드포인트가 포함된 Google Cloud 프로젝트를 허용하지 않는 것입니다. 엔드포인트가 생성된 네트워크 프로젝트가 허용되는지 확인합니다. 자세한 내용은 Private Service Connect가 사용 설정된 인스턴스 수정을 참조하세요.

    다음 단계

    • 비공개 IP 자세히 알아보기
    • Private Service Connect 자세히 알아보기
    • Private Service Connect가 사용 설정된 인스턴스의 읽기 복제본 만들기 자세히 알아보기
    • Private Service Connect가 사용 설정된 인스턴스 클론 자세히 알아보기
    • Private Service Connect가 사용 설정된 인스턴스에 대한 요약 정보 보기 자세히 알아보기
    • Private Service Connect가 사용 설정된 인스턴스의 고가용성 설정삭제 자세히 알아보기
    • Private Service Connect가 사용 설정된 인스턴스 수정삭제 자세히 알아보기