공개 IP 구성

이 페이지에서는 Cloud SQL 인스턴스에 대한 공개 IP 연결을 구성하는 방법을 설명합니다.

소개

Cloud SQL 인스턴스가 공개 IPv4 주소를 사용하고 승인된 주소를 인스턴스에 추가하는 방법으로 특정 IP 주소 또는 IP 주소 범위에서의 연결을 수락하도록 구성할 수 있습니다.

비공개 네트워크(예: 10.x.x.x)를 승인된 네트워크로 지정할 수 없습니다.

PostgreSQL 인스턴스의 공개 IP 주소:

  • IPv6: 인스턴스는 IPv6를 지원하지 않습니다.
  • IPv4: 인스턴스에 고정 IPv4 주소가 자동으로 할당됩니다. 인스턴스가 꺼져(비활성화되어) 있는 동안에는 IP 주소에 소액의 요금이 부과됩니다.

IP 연결을 통해 관리 클라이언트를 인스턴스에 연결하는 방법에 관한 도움말은 IP 주소로 psql 클라이언트 연결을 참조하세요.

인스턴스에서 공개 IP 주소를 사용하여 연결을 수락하도록 구성할 경우 데이터 보안을 위해 SSL도 사용하도록 구성합니다. 자세한 내용은 인스턴스에 SSL 구성을 참조하세요.

공용 인터넷에 노출되지 않는 IP 주소로 인스턴스를 구성하려면 비공개 IP 연결 구성을 참조하세요.

공개 IP 사용 설정 및 승인된 주소 또는 IP 주소 범위 추가

인스턴스에 공개 IP를 사용 설정하면 Cloud SQL이 공개 정적 IPv4 주소로 인스턴스를 구성합니다. 공개 IP를 사용 설정한 후에는 데이터베이스 연결에 대한 승인을 설정해야 합니다. 자세한 내용은 승인 옵션을 참조하세요.

공개 IP를 사용 설정하고 승인된 주소를 추가하는 방법은 다음과 같습니다.

Console

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
  3. SQL 탐색 메뉴에서 연결을 선택합니다.
  4. 네트워킹 탭을 클릭합니다.
  5. 공개 IP 체크박스를 선택합니다.
  6. 네트워크 추가를 클릭합니다.
  7. 필요한 경우 이름 필드에 이 네트워크의 이름을 입력합니다.
  8. 네트워크 필드에 연결을 허용할 IP 주소나 IP 주소 범위를 입력합니다.

    CIDR 표기법을 사용하세요.

  9. 완료를 클릭합니다.
  10. 저장을 클릭합니다.

gcloud

  1. 아직 인스턴스에 IPv4 주소를 추가하지 않은 경우 지금 추가합니다.
    gcloud sql instances patch INSTANCE_NAME\
    --assign-ip
  2. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.
    gcloud sql instances describe INSTANCE_NAME

    ipConfiguration에서 authorizedNetwork 항목을 찾고, 유지하고자 하는 승인된 주소를 확인해 둡니다.

  3. 포함시키려는 모든 주소를 비롯한 승인된 네트워크 목록을 업데이트합니다.
    gcloud sql instances patch INSTANCE_NAME \
    --authorized-networks=IP_ADDR1,IP_ADDR2...

    CIDR 표기법을 사용하세요.

  4. 변경사항을 확인합니다.
    gcloud sql instances describe INSTANCE_NAME

REST v1

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. 인스턴스에 설정하려는 모든 주소를 포함하여 인스턴스를 업데이트합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • network_range_1: 승인된 IP 주소 또는 범위
    • network_range_2: 승인된 다른 IP 주소 또는 범위

    HTTP 메서드 및 URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

    JSON 요청 본문:

    {
      "settings":
      {
        "ipConfiguration":
        {
          "authorizedNetworks":
            [{"value": "network_range_1"}, {"value": "network_range_2"}]
        }
      }
    }
    

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

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

    CIDR 표기법을 사용하세요.

  3. 변경사항을 확인합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address1: 첫 번째 IP 주소의 CIDR 형식
    • ip-address-name1: 첫 번째 IP 주소의 이름
    • ip-address2: 두 번째 IP 주소의 CIDR 형식
    • ip-address-name2: 두 번째 IP 주소의 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

Terraform

공개 IP를 사용 설정하고 승인된 주소 또는 주소 범위를 추가하려면 Terraform 리소스를 사용합니다.

resource "google_sql_database_instance" "postgres_public_ip_instance_name" {
  database_version = "POSTGRES_14"
  name             = "postgres-public-ip-instance-name"
  region           = "asia-southeast2"
  settings {
    availability_type = "ZONAL"
    ip_configuration {
      # Add optional authorized networks
      # Update to match the customer's networks
      authorized_networks {
        name  = "test-net-3"
        value = "203.0.113.0/24"
      }
      # Enable public IP
      ipv4_enabled = true
    }
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

변경사항 적용

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이 리소스를 만들었거나 업데이트했는지 확인합니다.

변경사항 삭제

변경사항을 삭제하려면 다음 단계를 따르세요.

  1. Terraform 구성 파일에서 삭제 보호를 사용 중지하려면 deletion_protection 인수를 false로 설정합니다.
    deletion_protection =  "false"
  2. 다음 명령어를 실행하고 프롬프트에 yes를 입력하여 업데이트된 Terraform 구성을 적용합니다.
    terraform apply
  1. 다음 명령어를 실행하고 프롬프트에서 yes를 입력하여 Terraform 구성으로 이전에 적용한 리소스를 삭제합니다.

    terraform destroy

REST v1beta4

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. 인스턴스에 설정하려는 모든 주소를 포함하여 인스턴스를 업데이트합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • network_range_1: 승인된 IP 주소 또는 범위
    • network_range_2: 승인된 다른 IP 주소 또는 범위

    HTTP 메서드 및 URL:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    JSON 요청 본문:

    {
      "settings":
      {
        "ipConfiguration":
        {
          "authorizedNetworks":
            [{"value": "network_range_1"}, {"value": "network_range_2"}]
        }
      }
    }
    

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

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

    CIDR 표기법을 사용하세요.

  3. 변경사항을 확인합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address1: 첫 번째 IP 주소의 CIDR 형식
    • ip-address-name1: 첫 번째 IP 주소의 이름
    • ip-address2: 두 번째 IP 주소의 CIDR 형식
    • ip-address-name2: 두 번째 IP 주소의 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

승인된 주소 또는 주소 범위 삭제

승인된 주소를 삭제하려면 다음 안내를 따르세요.

Console

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
  3. SQL 탐색 메뉴에서 연결을 선택합니다.
  4. 삭제할 주소의 삭제 아이콘(삭제를 탭합니다.)을 클릭합니다.
  5. 저장을 클릭하여 인스턴스를 업데이트합니다.

gcloud

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.
    gcloud sql instances describe INSTANCE_NAME

    ipConfiguration에서 authorizedNetwork 항목을 찾고, 유지하고자 하는 승인된 주소를 확인해 둡니다.

  2. 삭제하려는 모든 주소가 삭제되도록 승인된 네트워크 목록을 업데이트합니다.
    gcloud sql instances patch INSTANCE_NAME \
    --authorized-networks=IP_ADDR1,IP_ADDR2...
  3. 변경사항을 확인합니다.
    gcloud sql instances describe INSTANCE_NAME

REST v1

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address1: 첫 번째 IP 주소의 CIDR 형식
    • ip-address-name1: 첫 번째 IP 주소의 이름
    • ip-address2: 두 번째 IP 주소의 CIDR 형식
    • ip-address-name2: 두 번째 IP 주소의 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. 유지하려는 모든 주소를 포함하고 삭제하려는 모든 주소를 삭제하여 인스턴스를 업데이트합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • network_range_1: 삭제할 승인된 IP 주소 또는 네트워크 범위

    HTTP 메서드 및 URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

    JSON 요청 본문:

    {
      "settings":
      {
        "ipConfiguration":
        {
          "authorizedNetworks":
            [{"value": "network_range_1"}]
        }
      }
    }
    
    

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

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

  3. 변경사항을 확인합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address: IP 주소의 CIDR 형식
    • ip-address-name: IP 주소 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

REST v1beta4

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address1: 첫 번째 IP 주소의 CIDR 형식
    • ip-address-name1: 첫 번째 IP 주소의 이름
    • ip-address2: 두 번째 IP 주소의 CIDR 형식
    • ip-address-name2: 두 번째 IP 주소의 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. 유지하려는 모든 주소를 포함하고 삭제하려는 모든 주소를 삭제하여 인스턴스를 업데이트합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • network_range_1: 삭제할 승인된 IP 주소 또는 네트워크 범위

    HTTP 메서드 및 URL:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    JSON 요청 본문:

    {
      "settings":
      {
        "ipConfiguration":
        {
          "authorizedNetworks":
            [{"value": "network_range_1"}]
        }
      }
    }
    
    

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

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

  3. 변경사항을 확인합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address: IP 주소의 CIDR 형식
    • ip-address-name: IP 주소 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

모든 공개 IP 연결을 거부하도록 인스턴스 구성

인스턴스에서 모든 공개 IP 연결을 거부하도록 구성하는 방법은 다음과 같습니다.

Console

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
  3. SQL 탐색 메뉴에서 연결을 선택합니다.
  4. 승인된 모든 주소의 삭제 아이콘(삭제를 탭합니다.)을 클릭합니다.
  5. 저장을 클릭하여 인스턴스를 업데이트합니다.

gcloud

  1. 승인된 주소 목록을 삭제합니다.
    gcloud sql instances patch INSTANCE_NAME \
    --clear-authorized-networks
  2. 변경사항을 확인합니다.
    gcloud sql instances describe INSTANCE_NAME

REST v1

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address1: 첫 번째 IP 주소의 CIDR 형식
    • ip-address-name1: 첫 번째 IP 주소의 이름
    • ip-address2: 두 번째 IP 주소의 CIDR 형식
    • ip-address-name2: 두 번째 IP 주소의 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. 빈 주소 목록으로 인스턴스를 업데이트합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

    JSON 요청 본문:

    {
      "settings":
      {
        "ipConfiguration":
        {
          "authorizedNetworks": []
        }
      }
    }
    

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

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

  3. 변경사항을 확인합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

REST v1beta4

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address1: 첫 번째 IP 주소의 CIDR 형식
    • ip-address-name1: 첫 번째 IP 주소의 이름
    • ip-address2: 두 번째 IP 주소의 CIDR 형식
    • ip-address-name2: 두 번째 IP 주소의 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. 빈 주소 목록으로 인스턴스를 업데이트합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    JSON 요청 본문:

    {
      "settings":
      {
        "ipConfiguration":
        {
          "authorizedNetworks": []
        }
      }
    }
    

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

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

  3. 변경사항을 확인합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

공개 IP 사용 중지

공개 IP를 사용 중지할 수 있지만 인스턴스도 비공개 IP를 사용하도록 구성된 경우에만 가능합니다. 비공개 IP를 사용 설정하려면 기존 인스턴스에서 비공개 IP를 사용하도록 구성을 참조하세요.

공개 IP를 사용 중지하려면 다음 안내를 따르세요.

Console

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
  3. SQL 탐색 메뉴에서 연결을 선택합니다.
  4. 공개 IP 체크박스를 선택 해제합니다.
  5. 저장을 클릭하여 인스턴스를 업데이트합니다.

gcloud

  1. 인스턴스를 업데이트합니다.
    gcloud sql instances patch INSTANCE_NAME \
    --no-assign-ip
  2. 변경사항을 확인합니다.
    gcloud sql instances describe INSTANCE_NAME

REST v1

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address1: 첫 번째 IP 주소의 CIDR 형식
    • ip-address-name1: 첫 번째 IP 주소의 이름
    • ip-address2: 두 번째 IP 주소의 CIDR 형식
    • ip-address-name2: 두 번째 IP 주소의 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

  2. 인스턴스를 업데이트합니다.

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

    • PROJECT_ID:: 프로젝트 ID
    • INSTANCE_ID:: 인스턴스 ID
    • VPC_NETWORK_NAME:: 이 인스턴스에 사용하려는 Virtual Private Cloud(VPC) 네트워크 이름을 지정합니다. 비공개 서비스 액세스가 이미 네트워크에 구성되어 있어야 합니다.
    • RANGE_NAME:: 선택사항입니다. 지정하면 IP 범위가 할당되는 범위 이름이 설정됩니다. 범위 이름은 RFC-1035를 준수해야 하며 1~63(영문 기준)자 이내여야 합니다.
    • AUTHORIZED_NETWORKS:: 공개 IP 연결의 경우 인스턴스에 연결할 수 있는 승인된 네트워크의 연결을 지정합니다.

    ipv4Enabled 매개변수의 경우 인스턴스에 공개 IP 주소를 사용하려면 값을 true로 설정하고, 인스턴스에 비공개 IP 주소가 포함되었으면 false로 설정합니다.

    enablePrivatePathForGoogleCloudServices 매개변수를 true로 설정하면 BigQuery와 같은 다른 Google Cloud 서비스가 Cloud SQL의 데이터에 액세스하고 비공개 IP 연결을 통해 이 데이터에 대해 쿼리할 수 있습니다. 이 매개변수를 false로 설정하면 다른 Google Cloud 서비스에서 비공개 IP 연결을 통해 Cloud SQL의 데이터에 액세스할 수 없습니다.

    HTTP 메서드 및 URL:

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

    JSON 요청 본문:

    {
      "name": "INSTANCE_ID",
      "region": "region",
      "databaseVersion": "database-version",
      "settings": {
        "tier": "machine-type",
        "ipConfiguration": {
          "ipv4Enabled": false,
          "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
          "allocatedIpRange": "RANGE_NAME"
          "authorizedNetworks": [AUTHORIZED_NETWORKS],
          
          "enablePrivatePathForGoogleCloudServices": true
          
        }
      }
    }
    

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

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

  3. 변경사항을 확인합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id?fields=settings

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

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

REST v1beta4

  1. 인스턴스 설명으로 기존에 승인된 모든 주소를 표시합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • ip-address1: 첫 번째 IP 주소의 CIDR 형식
    • ip-address-name1: 첫 번째 IP 주소의 이름
    • ip-address2: 두 번째 IP 주소의 CIDR 형식
    • ip-address-name2: 두 번째 IP 주소의 이름
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

  2. 인스턴스를 업데이트합니다.

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

    • PROJECT_ID:: 프로젝트 ID
    • INSTANCE_ID:: 인스턴스 ID
    • VPC_NETWORK_NAME:: 이 인스턴스에 사용하려는 Virtual Private Cloud(VPC) 네트워크 이름을 지정합니다. 비공개 서비스 액세스가 이미 네트워크에 구성되어 있어야 합니다.
    • RANGE_NAME:: 선택사항입니다. 지정하면 IP 범위가 할당되는 범위 이름이 설정됩니다. 범위 이름은 RFC-1035를 준수해야 하며 1~63(영문 기준)자 이내여야 합니다.
    • AUTHORIZED_NETWORKS:: 공개 IP 연결의 경우 인스턴스에 연결할 수 있는 승인된 네트워크의 연결을 지정합니다.

    ipv4Enabled 매개변수의 경우 인스턴스에 공개 IP 주소를 사용하려면 값을 true로 설정하고, 인스턴스에 비공개 IP 주소가 포함되었으면 false로 설정합니다.

    enablePrivatePathForGoogleCloudServices 매개변수를 true로 설정하면 BigQuery와 같은 다른 Google Cloud 서비스가 Cloud SQL의 데이터에 액세스하고 비공개 IP 연결을 통해 이 데이터에 대해 쿼리할 수 있습니다. 이 매개변수를 false로 설정하면 다른 Google Cloud 서비스에서 비공개 IP 연결을 통해 Cloud SQL의 데이터에 액세스할 수 없습니다.

    HTTP 메서드 및 URL:

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

    JSON 요청 본문:

    {
      "name": "INSTANCE_ID",
      "region": "region",
      "databaseVersion": "database-version",
      "settings": {
        "tier": "machine-type",
        "ipConfiguration": {
          "ipv4Enabled": false,
          "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
          "allocatedIpRange": "RANGE_NAME"
          "authorizedNetworks": [AUTHORIZED_NETWORKS],
          
          "enablePrivatePathForGoogleCloudServices": true
          
        }
      }
    }
    

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

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

  3. 변경사항을 확인합니다.

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

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • machine-type: 인스턴스 머신 유형
    • zone: 인스턴스 영역

    HTTP 메서드 및 URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=settings

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

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

문제 해결

문제 문제 해결
Aborted connection. 문제 원인:
  • 네트워킹 불안정.
  • TCP 연결 유지 명령어에 대한 응답이 없습니다. 클라이언트 또는 서버가 응답하지 않으며 과부하되었을 수 있습니다.
  • 데이터베이스 엔진 연결 수명이 초과되어 서버에서 연결을 종료했습니다.

애플리케이션은 네트워크 장애를 허용하고 연결 풀링 및 재시도와 같은 권장사항을 따라야 합니다. 대부분의 연결 풀러는 이러한 오류를 포착합니다(가능한 경우). 그렇지 않으면 애플리케이션이 다시 시도하거나 정상적으로 실패해야 합니다.

연결을 다시 시도하려면 다음 방법을 사용하는 것이 좋습니다.

  1. 지수 백오프. 재시도 간격을 기하급수적으로 늘립니다.
  2. 무작위 백오프도 추가합니다.

이러한 방법을 조합하면 제한을 줄일 수 있습니다.

Certificate verify failed.

클라이언트 인증서가 만료되었거나 인증서 경로가 올바르지 않습니다.

인증서를 다시 만들어 다시 생성합니다.

FATAL: database 'user' does not exist. gcloud sql connect --user가 기본 postgres 사용자에서만 작동합니다.

기본 사용자와 연결한 후 사용자를 변경합니다.

연결된 사용자를 확인하려는 경우 데이터베이스에 로그인하고 아래 명령어를 실행합니다.

SELECT datname,
usename,
application_name as appname,
client_addr,
state,
now() - backend_start as conn_age,
now() - state_change as last_activity_age
FROM pg_stat_activity
WHERE backend_type = 'client backend'
ORDER BY 6 DESC
LIMIT 20
   

Hostname/IP does not match certificate's altnames: Host: localhost. is not in the cert's altnames.

호스트 주소가 서버 인증서의 대체 이름에 있는 주소와 일치하지 않습니다.

verify-full 또는 이에 상응하는 Node.js를 사용하는 경우 servername 매개변수에 DNS 이름을 사용하세요. openssl을 사용하여 서버 인증서에서 DNS 이름을 찾을 수 있습니다. 예를 들면 openssl x509 -in server-cert.pem -noout -text |grep 'DNS:'입니다.

 ssl: {
  rejectUnauthorized: true,
  ca: fs.readFileSync("/path/to/server/CA"),
  servername: 'N-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx.us-central1.sql.goog'
}

다음 단계