이 페이지에서는 비공개 서비스 액세스와 Private Service Connect를 둘 다 구성하는 방법을 설명합니다.
비공개 서비스 액세스를 구성하면 Google Cloud 프로젝트에서 가상 프라이빗 클라우드(VPC) 네트워크의 IP 주소 범위를 할당하고 비공개 서비스 연결을 만들 수 있습니다. 그러면 VPC 네트워크의 리소스를 Cloud SQL 인스턴스에 연결할 수 있습니다.
Private Service Connect를 구성하면 다른 그룹, 팀, 프로젝트 또는 조직에 속하는 여러 VPC 네트워크에서 기본 Cloud SQL 인스턴스 또는 읽기 복제본에 연결할 수 있습니다.
비공개 서비스 액세스 및 Private Service Connect를 지원하는 인스턴스 만들기
비공개 서비스 액세스와 Private Service Connect를 모두 지원하는 Cloud SQL 인스턴스를 만들면 두 서비스의 이점을 모두 누릴 수 있습니다. 자세한 내용은 인스턴스 연결 옵션을 참조하세요.
Private Service Connect를 사용하면 서로 다른 그룹, 팀, 프로젝트 또는 조직에 속하는 여러 VPC 네트워크에서 Cloud SQL 인스턴스에 연결할 수 있습니다.
gcloud CLI 또는 API를 사용하여 비공개 서비스 액세스 및 Private Service Connect를 지원하는 Cloud SQL 인스턴스를 만들 수 있습니다.
gcloud
비공개 서비스 액세스와 Private Service Connect를 모두 지원하는 인스턴스를 만들려면 gcloud beta sql instances create
명령어를 사용합니다.
gcloud beta 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 \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --network=VPC_PSA_NETWORK_PATH \ --enable-bin-log \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
다음을 바꿉니다.
- INSTANCE_NAME: 인스턴스 이름
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
- REGION_NAME: 인스턴스의 리전 이름
ALLOWED_PROJECTS: 허용되는 프로젝트 ID 또는 숫자의 목록(쉼표로 구분). 프로젝트가 이 목록에 없으면 프로젝트에서 인스턴스에 연결할 Private Service Connect 엔드포인트를 만들 수 없습니다.
- AVAILABILITY_TYPE: 인스턴스에 고가용성을 사용 설정합니다. 이 매개변수에 대해 다음 값 중 하나를 지정합니다.
REGIONAL
: 고가용성을 사용 설정하며, 프로덕션 인스턴스에 권장됩니다. 인스턴스는 선택한 리전 내의 다른 영역으로 장애 조치됩니다.ZONAL
: 장애 조치 기능을 제공하지 않습니다. 이 설정이 기본 설정입니다.
인스턴스의 고가용성 설정 및 삭제에 대한 자세한 내용은 기존 인스턴스를 고가용성으로 구성 및 인스턴스의 고가용성 비활성화를 참조하세요.
- RANGE_NAME: 이 선택적 파라미터에는 IP 범위가 할당되는 범위 이름을 설정합니다. 범위 이름은
RFC 1035
를 준수해야 하며 1~63(영문 기준)자 이내여야 합니다. - MACHINE_TYPE: 인스턴스의 머신 유형
- DATABASE_VERSION: 인스턴스의 데이터베이스 버전(예:
MYSQL_8_0
) - VPC_PSA_NETWORK_PATH: 인스턴스가 연결되는 VPC 네트워크의 이름 및 경로(예:
"projects/PROJECT_ID/global/networks/default"
). 이 네트워크는 비공개 서비스 액세스 연결과 Cloud SQL 인스턴스의 비공개 서비스 액세스 IP 주소에 사용됩니다. - VPC_PSC_NETWORK_PATH: Private Service Connect 엔드포인트를 만들어야 하는 VPC 네트워크의 경로. 예를 들면 다음과 같습니다.
projects/my-host-project/global/networks/default
SERVICE_PROJECT: Private Service Connect 엔드포인트가 생성된 프로젝트. VPC 네트워크가 공유 VPC가 아닌 경우 네트워크의 호스트 프로젝트만 될 수 있습니다. 공유 VPC인 경우 호스트 프로젝트 또는 서비스 프로젝트일 수 있습니다.
Private Service Connect가 사용 설정된 인스턴스에 연결하는 방법을 알아보려면 Cloud SQL 인스턴스에 연결을 참조하세요.
공개 IP를 비활성화하려면 --no-assign-ip
파라미터를 사용합니다.
또는 원하는 경우 --enable-google-private-path
파라미터를 사용하여 BigQuery와 같은 다른 Google Cloud 서비스에서 Cloud SQL의 데이터에 액세스하고 비공개 IP 연결을 통해 이 데이터에 대해 쿼리를 수행하도록 허용합니다. 이 매개변수는 다음 경우에만 유효합니다.
--no-assign-ip
매개변수를 사용합니다.--network
매개변수를 사용하여 비공개 연결을 만드는 데 사용할 VPC 네트워크의 이름을 지정합니다.
Terraform
비공개 서비스 액세스와 Private Service Connect가 모두 사용 설정된 인스턴스를 만들려면 google_sql_database_instance
Terraform 리소스를 사용합니다.
Google Cloud 프로젝트에 Terraform 구성을 적용하려면 다음 섹션의 단계를 완료하세요.
Cloud Shell 준비
- Cloud Shell을 실행합니다.
-
Terraform 구성을 적용할 기본 Google Cloud 프로젝트를 설정합니다.
이 명령어는 프로젝트당 한 번만 실행하면 되며 어떤 디렉터리에서도 실행할 수 있습니다.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 구성 파일에서 명시적 값을 설정하면 환경 변수가 재정의됩니다.
디렉터리 준비
각 Terraform 구성 파일에는 자체 디렉터리(루트 모듈이라고도 함)가 있어야 합니다.
-
Cloud Shell에서 디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만드세요. 파일 이름에는
.tf
확장자가 있어야 합니다(예:main.tf
). 이 튜토리얼에서는 파일을main.tf
라고 합니다.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
튜토리얼을 따라 하는 경우 각 섹션이나 단계에서 샘플 코드를 복사할 수 있습니다.
샘플 코드를 새로 만든
main.tf
에 복사합니다.필요한 경우 GitHub에서 코드를 복사합니다. 이는 Terraform 스니펫이 엔드 투 엔드 솔루션의 일부인 경우에 권장됩니다.
- 환경에 적용할 샘플 매개변수를 검토하고 수정합니다.
- 변경사항을 저장합니다.
-
Terraform을 초기화합니다. 이 작업은 디렉터리당 한 번만 수행하면 됩니다.
terraform init
원하는 경우 최신 Google 공급업체 버전을 사용하려면
-upgrade
옵션을 포함합니다.terraform init -upgrade
변경사항 적용
-
구성을 검토하고 Terraform에서 만들거나 업데이트할 리소스가 예상과 일치하는지 확인합니다.
terraform plan
필요에 따라 구성을 수정합니다.
-
다음 명령어를 실행하고 프롬프트에
yes
를 입력하여 Terraform 구성을 적용합니다.terraform apply
Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.
- 결과를 보려면 Google Cloud 프로젝트를 엽니다. Google Cloud 콘솔에서 UI의 리소스로 이동하여 Terraform이 리소스를 만들었거나 업데이트했는지 확인합니다.
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
- INSTANCE_NAME: 인스턴스 이름
- REGION_NAME: 인스턴스의 리전 이름
- AVAILABILITY_TYPE: 인스턴스에 고가용성을 사용 설정합니다. 이 매개변수에 대해 다음 값 중 하나를 지정합니다.
REGIONAL
: 고가용성을 사용 설정하며, 프로덕션 인스턴스에 권장됩니다. 인스턴스는 선택한 리전 내의 다른 영역으로 장애 조치됩니다.ZONAL
: 장애 조치 기능을 제공하지 않습니다. 이 설정이 기본 설정입니다.
인스턴스의 고가용성 설정 및 삭제에 대한 자세한 내용은 기존 인스턴스를 고가용성으로 구성 및 인스턴스의 고가용성 비활성화를 참조하세요.
- VPC_PSA_NETWORK_PATH: 인스턴스가 연결되는 VPC 네트워크의 경로(예:
"projects/PROJECT_ID/global/networks/default"
). 이 네트워크는 비공개 서비스 액세스 연결과 Cloud SQL 인스턴스의 비공개 서비스 액세스 IP 주소에 사용됩니다. - RANGE_NAME: 이 선택적 파라미터에는 IP 범위가 할당되는 범위 이름을 설정합니다. 범위 이름은
RFC 1035
를 준수해야 하며 1~63(영문 기준)자 이내여야 합니다. ALLOWED_PROJECTS: 허용되는 프로젝트 ID 또는 숫자의 목록(쉼표로 구분). 프로젝트가 이 목록에 없으면 프로젝트에서 인스턴스에 연결할 Private Service Connect 엔드포인트를 만들 수 없습니다.
- VPC_PSC_NETWORK_PATH: Private Service Connect 엔드포인트를 만들어야 하는 VPC 네트워크의 경로. 예를 들면 다음과 같습니다.
projects/my-host-project/global/networks/default
SERVICE_PROJECT: Private Service Connect 엔드포인트가 생성된 프로젝트. VPC 네트워크가 공유 VPC가 아닌 경우 네트워크의 호스트 프로젝트만 될 수 있습니다. 공유 VPC인 경우 호스트 프로젝트 또는 서비스 프로젝트일 수 있습니다.
- MACHINE_TYPE: 인스턴스의 머신 유형
Private Service Connect가 사용 설정된 인스턴스에 연결하는 방법을 알아보려면 Cloud SQL 인스턴스에 연결을 참조하세요.
인스턴스에 내부 IP 주소가 있으므로 ipv4Enabled
파라미터를 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_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, "privateNetwork": VPC_PSA_NETWORK_PATH, "allocatedIpRange": "RANGE_NAME", "enablePrivatePathForGoogleCloudServices": true, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "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" }
인스턴스의 Private Service Connect 비활성화
비공개 서비스 액세스와 Private Service Connect가 모두 사용 설정된 인스턴스의 Private Service Connect를 비활성화할 수 있습니다.
인스턴스의 Private Service Connect를 비활성화하는 경우 이 작업에 8분이 소요되며 인스턴스에서 약 45초의 다운타임이 발생할 수 있습니다. 작업이 완료되면 비공개 서비스 액세스와 Private Service Connect 연결 경로가 더 이상 동일한 인스턴스에 공존하지 않습니다. Private Service Connect를 사용하여 인스턴스에 연결할 수 없습니다.
gcloud CLI 또는 API를 사용하여 인스턴스의 Private Service Connect를 비활성화할 수 있습니다.
gcloud
인스턴스의 Private Service Connect를 비활성화하려면 gcloud beta sql instances patch
명령어를 사용합니다.
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --no-enable-private-service-connect \ --clear-allowed-psc-projects
다음을 바꿉니다.
- INSTANCE_NAME: 인스턴스 이름
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
- INSTANCE_NAME: 인스턴스 이름
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 요청 본문:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscEnabled": "false", "allowedConsumerProjects": [{}] } }, "kind": "sql#settings" } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 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": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
인스턴스의 Private Service Connect 사용 설정
비공개 서비스 액세스가 이미 사용 설정된 인스턴스에 Private Service Connect를 사용 설정할 수 있습니다. Private Service Connect를 사용하여 여러 VPC 네트워크에서 Cloud SQL 인스턴스에 연결할 수 있습니다.
인스턴스의 Private Service Connect를 사용 설정하는 경우 이 작업에 8분이 소요되며 인스턴스에서 약 45초의 다운타임이 발생할 수 있습니다. 작업이 완료되면 비공개 서비스 액세스와 Private Service Connect 연결 경로가 모두 동일한 인스턴스에 공존합니다.
gcloud CLI 또는 API를 사용하여 인스턴스에 Private Service Connect를 사용 설정할 수 있습니다.
gcloud
인스턴스에 Private Service Connect를 사용 설정하려면 gcloud beta sql instances patch
명령어를 사용합니다.
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
다음을 바꿉니다.
- INSTANCE_NAME: 인스턴스 이름
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
ALLOWED_PROJECTS: 허용되는 프로젝트 ID 또는 숫자의 목록(쉼표로 구분). 프로젝트가 이 목록에 없으면 프로젝트에서 인스턴스에 연결할 Private Service Connect 엔드포인트를 만들 수 없습니다.
- VPC_PSC_NETWORK_PATH: Private Service Connect 엔드포인트가 생성된 VPC 네트워크의 경로. 예를 들면 다음과 같습니다.
projects/my-host-project/global/networks/default
SERVICE_PROJECT: Private Service Connect 엔드포인트가 생성된 프로젝트. VPC 네트워크가 공유 VPC가 아닌 경우 네트워크의 호스트 프로젝트만 될 수 있습니다. 공유 VPC인 경우 호스트 프로젝트 또는 서비스 프로젝트일 수 있습니다.
Private Service Connect가 사용 설정된 인스턴스에 연결하는 방법을 알아보려면 Cloud SQL 인스턴스에 연결을 참조하세요.
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
- INSTANCE_NAME: 인스턴스 이름
- ALLOWED_PROJECTS: 허용되는 프로젝트 ID 또는 숫자의 목록(쉼표로 구분). 이러한 프로젝트는 이미 Private Service Connect를 사용하도록 구성된 프로젝트를 재정의합니다. 프로젝트가 이 목록에 없으면 프로젝트에서 인스턴스에 연결할 Private Service Connect 엔드포인트를 만들 수 없습니다.
- VPC_PSC_NETWORK_PATH: Private Service Connect 엔드포인트가 생성된 VPC 네트워크의 경로. 예를 들면 다음과 같습니다.
projects/my-host-project/global/networks/default
SERVICE_PROJECT: Private Service Connect 엔드포인트가 생성된 프로젝트. VPC 네트워크가 공유 VPC가 아닌 경우 네트워크의 호스트 프로젝트만 될 수 있습니다. 공유 VPC인 경우 호스트 프로젝트 또는 서비스 프로젝트일 수 있습니다.
HTTP 메서드 및 URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
JSON 요청 본문:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": "true", "allowedConsumerProjects": [ALLOWED_PROJECTS] } }, "kind": "sql#settings" } }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 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": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Private Service Connect가 사용 설정된 인스턴스에 연결하는 방법을 알아보려면 Cloud SQL 인스턴스에 연결을 참조하세요.