이 페이지에서는 Private Service Connect를 사용하여 PostgreSQL용 AlloyDB 인스턴스에 연결하는 방법을 설명합니다.
Private Service Connect를 사용하여 기본 AlloyDB 인스턴스, 읽기 복제본 또는 보조 AlloyDB 인스턴스에 연결할 수 있습니다. 이때 서로 다른 그룹, 팀, 프로젝트 또는 조직에 속하는 여러 Virtual Private Cloud (VPC) 네트워크에서 연결할 수 있습니다.
필요한 역할
AlloyDB 인스턴스에 연결하려면 VPC 네트워크의 사용자에게 다음 역할을 모두 부여해야 합니다.
역할 | 설명 |
---|---|
compute.networkAdmin |
AlloyDB 인스턴스에 대한 연결을 시작하는 VPC 네트워크에 대한 전체 제어 권한을 부여합니다. Private Service Connect를 사용하여 여러 VPC 네트워크에서 AlloyDB 인스턴스에 연결하는 경우 각 네트워크에는 자체 관리자가 있습니다. |
dns.admin |
DNS 영역 및 레코드를 포함한 Cloud DNS 리소스에 대한 전체 제어 권한을 부여합니다. |
alloydb.admin |
AlloyDB 인스턴스의 전체 제어 권한을 제공하고 수명 주기 동안 인스턴스를 제어합니다. |
alloydb.databaseUser (선택사항) |
AlloyDB 인스턴스에 대한 액세스 권한을 제공합니다. AlloyDB 인증 프록시 클라이언트를 통해 연결하는 경우 AlloyDB 클라이언트 역할이 있어야 합니다. 직접 연결하는 경우 Identity and Access Management (IAM) 역할 및 권한이 필요하지 않습니다. |
Custom AlloyDB role (선택사항) |
커스텀 역할을 사용하는 경우 compute.networkAdmin 및 dns.admin 역할을 부여하는 것 외에도 권한을 부여합니다.
|
Private Service Connect 엔드포인트 만들기
Private Service Connect 엔드포인트는 해당 네트워크의 클라이언트가 직접 액세스할 수 있는 소비자 VPC 네트워크의 내부 IP 주소입니다. 클라이언트는 이러한 엔드포인트를 사용하여 AlloyDB 인스턴스에 연결할 수 있습니다.
AlloyDB가 Private Service Connect 엔드포인트를 자동으로 만들도록 하려면 다음 단계를 따르세요.
- 기존 서비스 연결 정책을 재사용하거나 VPC 네트워크에서 서비스 연결 정책을 만듭니다. 이 정책을 사용하면 Private Service Connect 엔드포인트를 자동으로 프로비저닝할 수 있습니다.
- 인스턴스에 대해 Private Service Connect가 사용 설정된 AlloyDB 클러스터 및 인스턴스를 만들고 Private Service Connect 엔드포인트를 자동으로 만들도록 인스턴스를 구성합니다.
- 인스턴스의 엔드포인트를 검색합니다. 이렇게 하면 엔드포인트를 사용하여 인스턴스에 연결할 수 있습니다.
- (선택사항) Private Service Connect가 사용 설정된 기존 AlloyDB 클러스터 및 인스턴스를 업데이트하여 엔드포인트를 자동으로 생성합니다.
Private Service Connect 엔드포인트를 수동으로 만들 수도 있습니다. 자세한 내용은 엔드포인트 수동으로 만들기를 참고하세요.
엔드포인트 자동 생성
다음 섹션에서는 AlloyDB에서 Private Service Connect 엔드포인트를 자동으로 만들도록 인스턴스를 구성하는 방법을 설명합니다.
서비스 연결 정책 만들기
기존 서비스 연결 정책을 재사용하거나 Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 서비스 연결 정책을 만들 수 있습니다.
서비스 연결 정책을 사용하면 지정된 서비스 클래스가 소비자 VPC 네트워크에 Private Service Connect 엔드포인트를 만들도록 승인할 수 있습니다. 서비스 연결 정책을 사용하여 AlloyDB에서 Private Service Connect 엔드포인트를 자동으로 만들게 할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Private Service Connect 페이지로 이동합니다.
연결 정책 탭을 클릭합니다.
연결 정책 만들기를 클릭합니다.
연결 정책의 이름을 입력합니다.
다음을 수행하여 서비스 클래스를 지정합니다.
- 소스 서비스 클래스에서 Google 서비스를 선택합니다.
- AlloyDB가 연결 정책의 관리형 서비스이므로 서비스 클래스 메뉴에서
google-cloud-alloydb
을 선택합니다.
대상 엔드포인트 범위 섹션에서 이 정책이 적용되는 네트워크 및 리전을 선택합니다.
정책 섹션의 서브네트워크 메뉴에서 하나 이상의 서브넷을 선택합니다. 서브넷은 엔드포인트에 IP 주소를 할당하는 데 사용됩니다.
선택사항: 정책에 대한 연결 한도를 지정합니다. 이 연결 정책에 대해 AlloyDB에서 만들 수 있는 엔드포인트 수를 결정합니다. 연결 한도를 지정하지 않으면 제한이 없습니다.
정책 만들기를 클릭합니다.
gcloud
서비스 연결 정책을 만들려면 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=LIST_OF_NODES
다음을 바꿉니다.
POLICY_NAME
: 서비스 연결 정책의 이름NETWORK
: 이 정책이 적용되는 네트워크입니다.PROJECT_ID
: 프로젝트 ID 또는 VPC 네트워크 프로젝트의 번호. 공유 VPC 네트워크의 경우 서비스 프로젝트에서는 서비스 연결 정책이 지원되지 않으므로 호스트 프로젝트에 서비스 연결 정책을 배포해야 합니다.REGION
: 이 정책이 적용되는 리전입니다. 서비스 연결을 자동화하려는 모든 리전에 동일한 정책이 있어야 합니다.SERVICE_CLASS
: 프로듀서가 제공한 서비스 클래스의 리소스 식별자. AlloyDB의 경우 서비스 클래스는google-cloud-alloydb
입니다.SUBNETS
: Private Service Connect 엔드포인트의 IP 주소를 할당하는 데 사용되는 하나 이상의 일반 소비자 서브넷. 이러한 IP 주소는 관리형 서비스 인스턴스가 생성 및 삭제될 때 서브넷 풀에 자동으로 할당 및 반환됩니다. 서브넷은 서비스 연결 정책과 동일한 리전에 있어야 합니다. 여러 연결 정책이 동일한 리전을 공유하는 경우 이러한 정책에서 동일한 서브네트워크를 재사용할 수 있습니다. 쉼표로 구분된 목록으로 여러 서브넷을 입력할 수 있습니다.LIMIT
: 이 정책으로 만들 수 있는 최대 엔드포인트 수입니다. 한도를 지정하지 않으면 제한이 없습니다.DESCRIPTION
: 서비스 연결 정책의 설명입니다(선택사항).PRODUCER_INSTANCE_LOCATION
: 정책이 AlloyDB 인스턴스에 대한 연결을 자동화하는지 여부를 지정합니다. 이 값은 다음 중 하나로 설정할 수 있습니다.none
(기본값): AlloyDB 인스턴스가 서비스 연결 정책과 동일한 프로젝트에 있습니다 (또는 공유 VPC의 경우 연결된 프로젝트에 있음).custom-resource-hierarchy-levels
:allowed-google-producers-resource-hierarchy-level
매개변수를 통해 연결을 자동화하려는 프로젝트의 Resource Manager 위치 경로를 설정해야 합니다.
LIST_OF_NODES
: 프로듀서 인스턴스 위치가custom-resource-hierarchy-levels
로 설정된 경우 이 파라미터를 설정합니다. 이 매개변수는 연결을 자동화하려는 인스턴스가 있는 프로젝트, 폴더, 조직의 목록입니다. 목록은projects/PROJECT_ID
,folders/FOLDER_ID
,organizations/ORGANIZATION_ID
형식입니다.
예를 들어 다음 명령어는 managed-services
서브넷에서 IP 주소를 할당하는
google-cloud-alloydb
서비스 클래스에 대한 서비스 연결 정책을 만듭니다. 이 정책을 사용하여 최대 10개의 Private Service Connect 엔드포인트를 만들 수 있습니다. 엔드포인트는 관리형 서비스 인스턴스와 동일한 조직에 있는 프로젝트에서 만들어야 합니다. AlloyDB 인스턴스는 myproject
프로젝트에 있습니다.
gcloud network-connectivity service-connection-policies create alloydb-policy \ --network=default \ --project=my-project \ --region=us-central1 \ --service-class=google-cloud-alloydb \ --subnets=managed-service-subnet \ --psc-connection-limit=10 \ --producer-instance-location=custom-resource-hierarchy-levels \ --allowed-google-producers-resource-hierarchy-level=projects/myproject
AlloyDB 인스턴스 만들기
콘솔, gcloud CLI 또는 Terraform을 사용하여 인스턴스에 Private Service Connect가 사용 설정된 인스턴스를 만들고 엔드포인트를 자동으로 만들도록 인스턴스를 구성할 수 있습니다.
콘솔
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 만들기를 클릭합니다.
클러스터 ID에
my-cluster
를 입력합니다.비밀번호를 입력합니다. 이 빠른 시작에서 사용되므로 이 비밀번호를 기록해 둡니다.
기본 데이터베이스 버전을 유지합니다.
us-central1 (Iowa)
리전을 선택합니다.기본 인스턴스 ID(
my-cluster-primary
)를 유지합니다.영역 가용성에서 단일 영역을 선택된 옵션으로 유지합니다. 프로덕션에는 단일 영역 인스턴스가 권장되지 않지만 이 빠른 시작에서는 비용을 최소화하기 위해 단일 영역을 사용합니다. 자세한 내용은 기본 인스턴스를 사용하여 비용 절감을 참고하세요.
2 vCPU, 16 GB
머신 유형을 선택합니다.비공개 IP 연결을 유지합니다.
- Private Service Connect (PSC)를 선택합니다.
- 엔드포인트 추가를 클릭합니다.
- 엔드포인트를 만들 프로젝트를 선택합니다.
- 네트워크를 선택합니다.
- 서비스 연결 정책 정보를 확인하려면 정책 확인을 클릭합니다.
네트워크 보안에서 기본 설정을 유지합니다.
고급 옵션 표시에서 아무 것도 변경하지 마세요.
클러스터 만들기를 클릭합니다. AlloyDB에서 클러스터를 생성하고 기본 클러스터 개요 페이지에 표시하는 데 몇 분 정도 걸릴 수 있습니다.
gcloud
클러스터를 만들려면 gcloud alloydb clusters
create
명령어를 사용합니다.
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connect
다음을 바꿉니다.
CLUSTER_ID
: 생성 중인 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.PASSWORD
: 기본postgres
사용자에 사용할 비밀번호입니다.REGION_ID
: 클러스터를 배치할 리전입니다.PROJECT_ID
: 클러스터를 배치할 프로젝트의 ID입니다.
이 명령어는 장기 실행 작업을 시작하고 작업 ID를 반환합니다.
Private Service Connect를 사용하는 기본 또는 읽기 풀인 AlloyDB 인스턴스를 만들려면 gcloud alloydb instances create 명령어를 사용합니다. 이 인스턴스에 연결할 엔드포인트를 만들 수 있는 소비자 프로젝트를 지정하려면 --allowed-psc-projects
매개변수를 포함해야 합니다.
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST \
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI \
--psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECT
다음을 바꿉니다.
INSTANCE_ID
: 만들려는 인스턴스의 ID 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.CPU_COUNT
: 인스턴스에 필요한 vCPU 수입니다. 유효한 값은 다음과 같습니다.2
: vCPU 2개, RAM 16GB4
: vCPU 4개, RAM 32GB8
: vCPU 8개, RAM 64GB16
: vCPU 16개, RAM 128GB32
: vCPU 32개, RAM 256GB64
: vCPU 64개, RAM 512GB96
: vCPU 96개, RAM 768GB128
: vCPU 128개, RAM 864GB
AVAILABILITY
: 이 인스턴스가 여러 영역의 노드를 사용하여 고가용성 (HA)인지 여부를 나타냅니다. 유효한 값은 다음과 같습니다.REGIONAL
: 별도의 활성 노드와 대기 노드, 노드 간 자동 장애 조치가 있는 HA 인스턴스를 만듭니다. 프로덕션 환경에 적합한 기본값입니다.ZONAL
: 노드가 하나만 포함되고 자동 장애 조치가 없는 기본 인스턴스를 만듭니다.
REGION_ID
: 인스턴스를 배치할 리전입니다.CLUSTER_ID
: 앞에서 만든 클러스터의 ID입니다.ALLOWED_PROJECT_LIST
: 인스턴스에 액세스할 수 있도록 허용할 프로젝트 ID 또는 프로젝트 번호의 쉼표로 구분된 목록입니다(예:my-project-1
,12345
,my-project-n
).NETWORK_ATTACHMENT_URI
(선택사항): 아웃바운드 연결을 위해 만든 네트워크 연결 URI의 전체 리소스 이름입니다. 예를 들면projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID
입니다.CONSUMER_NETWORK
: Private Service Connect 엔드포인트를 만들어야 하는 VPC 네트워크의 경로. 예를 들면projects/my-host-project/global/networks/default
입니다. 이 옵션은 엔드포인트를 자동으로 만들 때 적용됩니다. 서비스 연결 정책이 생성되었는지 확인합니다. 인스턴스를 만들기 전이나 후에 정책을 만들 수 있습니다.CONSUMER_PROJECT
: Private Service Connect 엔드포인트가 생성된 프로젝트. 공유 VPC 네트워크를 사용하는 경우 호스트 프로젝트 또는 서비스 프로젝트일 수 있습니다. 자동 연결 파라미터에 지정된 모든 프로젝트는 허용된 프로젝트에 자동으로 추가됩니다. 선택적으로 Private Service Connect 엔드포인트를 수동으로 만들려는 프로젝트의 경우 이러한 프로젝트를 허용된 프로젝트 목록에 추가할 수 있습니다.
Private Service Connect가 사용 설정된 기본 클러스터에 대해 생성된 보조 클러스터는 Private Service Connect 구성을 자동으로 상속합니다. 자세한 내용은 보조 클러스터 만들기를 참고하세요.
Terraform
데이터베이스 클러스터 내에 인스턴스를 만들려면 Terraform 리소스를 사용합니다.
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
psc_instance_config {
allowed_consumer_projects = ["123456789"]
psc_interface_configs {
network_attachment_resource = google_compute_network_attachment.default.id
}
}
}
resource "google_compute_network" "default" {
name = "alloydb-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "default" {
name = "alloydb-subnetwork"
region = "us-central1"
network = google_compute_network.default.id
ip_cidr_range = "10.0.0.0/16"
}
resource "google_compute_network_attachment" "default" {
name = "alloydb-network-attachment"
region = "us-central1"
connection_preference = "ACCEPT_AUTOMATIC"
subnetworks = [
google_compute_subnetwork.default.self_link
]
}
data "google_project" "project" {}
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참고하세요.
엔드포인트 검색
인스턴스의 Private Service Connect 엔드포인트인 내부 IP 주소를 검색하여 이 엔드포인트를 사용해 인스턴스에 연결할 수 있습니다.
인스턴스의 Private Service Connect 엔드포인트인 IP 주소를 비롯해 인스턴스에 대한 정보를 보려면 gcloud alloydb instances describe
명령어를 사용합니다.
gcloud alloydb instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'
다음을 바꿉니다.
- INSTANCE_NAME: AlloyDB 인스턴스 이름 이 인스턴스에 Private Service Connect가 사용 설정되어 있으면 VPC 네트워크의 Private Service Connect 엔드포인트가 연결할 수 있습니다.
- PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호
응답의 pscConfig:pscAutoConnections:ipAddress
필드 옆에 표시된 값을 확인합니다. 이 값은 인스턴스의 Private Service Connect 엔드포인트이기도 한 내부 IP 주소입니다.
엔드포인트를 자동으로 생성하도록 인스턴스 업데이트
엔드포인트를 자동으로 생성하도록 인스턴스를 업데이트하려면 --psc-auto-connections
매개변수를 gcloud alloydb instances update 명령어에 전달합니다.
아웃바운드 연결 구성
Private Service Connect가 사용 설정된 AlloyDB 인스턴스에 아웃바운드 연결을 사용 설정하려면 인스턴스의 네트워크 연결 URI를 설정해야 합니다. 자세한 내용은 아웃바운드 연결 구성을 참고하세요.
수동으로 엔드포인트 만들기
다음 섹션에서는 Private Service Connect 엔드포인트를 수동으로 만드는 방법을 설명합니다.
AlloyDB 인스턴스 만들기
콘솔, gcloud CLI 또는 Terraform을 사용하여 인스턴스에 Private Service Connect가 사용 설정된 인스턴스를 만들고 엔드포인트를 자동으로 만들도록 인스턴스를 구성할 수 있습니다.
콘솔
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 만들기를 클릭합니다.
클러스터 ID에
my-cluster
를 입력합니다.비밀번호를 입력합니다. 이 빠른 시작에서 사용되므로 이 비밀번호를 기록해 둡니다.
기본 데이터베이스 버전을 유지합니다.
us-central1 (Iowa)
리전을 선택합니다.기본 인스턴스 ID(
my-cluster-primary
)를 유지합니다.영역 가용성에서 단일 영역을 선택된 옵션으로 유지합니다. 프로덕션에는 단일 영역 인스턴스가 권장되지 않지만 이 빠른 시작에서는 비용을 최소화하기 위해 단일 영역을 사용합니다. 자세한 내용은 기본 인스턴스를 사용하여 비용 절감을 참고하세요.
2 vCPU, 16 GB
머신 유형을 선택합니다.비공개 IP 연결을 유지합니다.
- Private Service Connect(PSC)를 선택합니다.
- 엔드포인트 추가를 클릭합니다.
- 엔드포인트를 만들 프로젝트를 선택합니다.
- 네트워크를 선택합니다.
- 서비스 연결 정책 정보를 확인하려면 정책 확인을 클릭합니다.
네트워크 보안에서 기본 설정을 유지합니다.
고급 옵션 표시에서 아무 것도 변경하지 마세요.
클러스터 만들기를 클릭합니다. AlloyDB에서 클러스터를 생성하고 기본 클러스터 개요 페이지에 표시하는 데 몇 분 정도 걸릴 수 있습니다.
gcloud
클러스터를 만들려면 gcloud alloydb clusters
create
명령어를 사용합니다.
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connect
다음을 바꿉니다.
CLUSTER_ID
: 생성 중인 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.PASSWORD
: 기본postgres
사용자에 사용할 비밀번호입니다.REGION_ID
: 클러스터를 배치할 리전입니다.PROJECT_ID
: 클러스터를 배치할 프로젝트의 ID입니다.
이 명령어는 장기 실행 작업을 시작하고 작업 ID를 반환합니다.
기본 인스턴스를 만들려면 gcloud alloydb instances create 명령어를 사용합니다.
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST \
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI \
다음을 바꿉니다.
INSTANCE_ID
: 만들려는 인스턴스의 ID 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.CPU_COUNT
: 인스턴스에 필요한 vCPU 수입니다. 유효한 값은 다음과 같습니다.2
: vCPU 2개, RAM 16GB4
: vCPU 4개, RAM 32GB8
: vCPU 8개, RAM 64GB16
: vCPU 16개, RAM 128GB32
: vCPU 32개, RAM 256GB64
: vCPU 64개, RAM 512GB96
: vCPU 96개, RAM 768GB128
: vCPU 128개, RAM 864GB
AVAILABILITY
: 이 인스턴스가 여러 영역의 노드를 사용하여 고가용성 (HA)인지 여부를 나타냅니다. 유효한 값은 다음과 같습니다.REGIONAL
: 별도의 활성 노드와 대기 노드, 노드 간 자동 장애 조치가 있는 HA 인스턴스를 만듭니다. 프로덕션 환경에 적합한 기본값입니다.ZONAL
: 노드가 하나만 포함되고 자동 장애 조치가 없는 기본 인스턴스를 만듭니다.
REGION_ID
: 인스턴스를 배치할 리전입니다.CLUSTER_ID
: 앞에서 만든 클러스터의 ID입니다.ALLOWED_PROJECT_LIST
: 인스턴스에 액세스할 수 있도록 허용할 프로젝트 ID 또는 프로젝트 번호의 쉼표로 구분된 목록입니다(예:my-project-1
,12345
,my-project-n
).NETWORK_ATTACHMENT_URI
(선택사항): 아웃바운드 연결을 위해 만든 네트워크 연결 URI의 전체 리소스 이름입니다. 예를 들면projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID
입니다.CONSUMER_NETWORK
: Private Service Connect 엔드포인트를 만들어야 하는 VPC 네트워크의 경로. 예를 들면projects/my-host-project/global/networks/default
입니다. 이 옵션은 엔드포인트를 자동으로 만들 때 적용됩니다. 서비스 연결 정책이 생성되었는지 확인합니다. 인스턴스를 만들기 전이나 후에 정책을 만들 수 있습니다.CONSUMER_PROJECT
: Private Service Connect 엔드포인트가 생성된 프로젝트. 공유 VPC 네트워크를 사용하는 경우 호스트 프로젝트 또는 서비스 프로젝트일 수 있습니다. 자동 연결 파라미터에 지정된 모든 프로젝트는 허용된 프로젝트에 자동으로 추가됩니다. 선택적으로 Private Service Connect 엔드포인트를 수동으로 만들려는 프로젝트의 경우 이러한 프로젝트를 허용된 프로젝트 목록에 추가할 수 있습니다.
Private Service Connect가 사용 설정된 기본 클러스터에 대해 생성된 보조 클러스터는 Private Service Connect 구성을 자동으로 상속합니다. 자세한 내용은 보조 클러스터 만들기를 참고하세요.
Terraform
데이터베이스 클러스터 내에 인스턴스를 만들려면 Terraform 리소스를 사용합니다.
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
psc_instance_config {
allowed_consumer_projects = ["123456789"]
psc_interface_configs {
network_attachment_resource = google_compute_network_attachment.default.id
}
}
}
resource "google_compute_network" "default" {
name = "alloydb-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "default" {
name = "alloydb-subnetwork"
region = "us-central1"
network = google_compute_network.default.id
ip_cidr_range = "10.0.0.0/16"
}
resource "google_compute_network_attachment" "default" {
name = "alloydb-network-attachment"
region = "us-central1"
connection_preference = "ACCEPT_AUTOMATIC"
subnetworks = [
google_compute_subnetwork.default.self_link
]
}
data "google_project" "project" {}
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참고하세요.
서비스 연결 가져오기
Private Service Connect가 사용 설정된 AlloyDB 인스턴스를 만든 후 서비스 연결 URL을 가져오고 이를 사용하여 Private Service Connect 엔드포인트를 만듭니다.
gcloud alloydb instances describe
명령어를 사용하여 인스턴스에 관한 세부정보를 확인합니다.
gcloud alloydb instances describe INSTANCE_ID \
--cluster=CLUSTER_ID \
--region=REGION_ID
다음을 바꿉니다.
INSTANCE_ID
: 인스턴스의 ID입니다.CLUSTER_ID
: 클러스터의 ID입니다.REGION_ID
: AlloyDB 클러스터가 배포되는 리전입니다.
명령어의 샘플 응답은 다음과 같습니다.
"pscInstanceConfig": {
"serviceAttachmentLink:": "https://www.googleapis.com/compute/v1/projects/my-project/regions/my-region/serviceAttachments/my-service-attachment-id"
"allowedConsumerProjects": {
"45678",
"12345",
"67890",
},
"pscDnsName": "11111111-1111-1111-1111-111111111111.22222222-2222-2222-2222-222222222222.alloydb-psc.goog."
}
serviceAttachmentLink
매개변수는 서비스 연결 URL의 값을 보유합니다.
Private Service Connect 엔드포인트 만들기
Private Service Connect 엔드포인트를 만들려면 고유한 엔드포인트 이름과 함께 서비스 연결 URL을 전달합니다. Private Service Connect 엔드포인트를 만드는 방법에 대한 자세한 내용은 엔드포인트 만들기를 참고하세요.
gcloud compute addresses create
명령어를 사용하여 Private Service Connect 엔드포인트의 내부 IP 주소를 예약한 다음 엔드포인트를 만들 때 예약된 IP 주소를 사용할 수도 있습니다.
아웃바운드 연결 구성
아웃바운드 연결을 사용 설정하려면 AlloyDB 인스턴스를 만들거나 업데이트할 때 네트워크 연결 URI를 설정하세요. 이 URI를 사용하면 이전과 같은 아웃바운드 작업 중에 프로젝트와 AlloyDB 인스턴스 간에 보안 연결이 가능합니다.
네트워크 연결 만들기
연결을 자동으로(ACCEPT_AUTOMATIC
) 또는 수동으로 (ACCEPT_MANUAL
) 수락할 수 있는 네트워크 연결을 만들 수 있습니다. 네트워크 연결 만들기에 대한 자세한 내용은 네트워크 연결 만들기 및 관리를 참고하세요.
연결을 자동으로 수락하는 네트워크 연결을 만들기로 선택한 경우 허용된 프로젝트 목록을 명시적으로 설정할 필요가 없습니다. 연결을 수동으로 수락하려면 AlloyDB 인스턴스가 있는 프로젝트의 서비스 소유 프로젝트 번호를 허용된 프로젝트 목록에 추가해야 합니다.
서비스 소유 프로젝트 번호를 찾으려면 다음 명령어를 실행하세요.
gcloud alpha alloydb clusters describe CLUSTER_ID --region=REGION_ID
다음은 샘플 응답입니다.
pscConfig:
pscEnabled: true
serviceOwnedProjectNumber: 123456789012
서비스 소유 프로젝트 번호를 확인한 후 프로젝트를 허용된 프로젝트 목록에 추가한 다음 네트워크 연결을 만듭니다.
네트워크 연결의 리전이 AlloyDB 인스턴스의 리전과 동일한지 확인합니다. 또한 네트워크 연결을 만드는 데 사용되는 서브넷은 RFC 1918 IP 범위(10.0.0.0/8
, 172.16.0.0/12
, 192.168.0.0/16
)에 속해야 합니다.
아웃바운드 연결을 위해 인스턴스 업데이트
Private Service Connect가 사용 설정된 기존 AlloyDB 인스턴스에 대해 아웃바운드 연결을 사용 설정하려면 --psc-network-attachment-uri
매개변수를 gcloud alloydb instances update
명령어에 전달합니다.
2025년 3월 1일 이전에 생성된 AlloyDB 인스턴스는 아웃바운드 연결을 사용 설정하도록 업데이트할 수 없습니다. 대안으로 다음 옵션 중 하나를 사용하는 것이 좋습니다.
- 아웃바운드 연결이 사용 설정된 기본 인스턴스의 리전 간 복제본 (CRR) 복제본을 만듭니다. 그런 다음 전환을 실행하여 복제본 인스턴스를 새 기본 인스턴스로 지정합니다.
- 기존 AlloyDB 클러스터 및 기본 인스턴스를 백업합니다. 그런 다음 아웃바운드 연결이 사용 설정된 새 AlloyDB 클러스터와 기본 인스턴스를 만듭니다. 마지막으로 이전에 만든 백업을 새 클러스터로 복원합니다.
아웃바운드 연결 비활성화
기존 AlloyDB 인스턴스의 아웃바운드 연결을 비활성화하려면 --clear-psc-network-attachment-uri
매개변수를 gcloud alloydb instances update
명령어에 전달합니다.
AlloyDB 인스턴스에 연결
다음 옵션 중 하나를 사용하여 Private Service Connect가 사용 설정된 AlloyDB 인스턴스에 연결할 수 있습니다.
- DNS 레코드를 사용하여 직접 연결
- DNS 레코드와 함께 AlloyDB 인증 프록시 사용
- DNS 레코드와 함께 AlloyDB 언어 커넥터 사용
- 내부 IP 주소를 사용하여 직접 연결
DNS 레코드를 사용하는 메서드의 경우 해당 VPC 네트워크의 비공개 DNS 영역에 레코드를 만들어야 합니다. DNS 레코드를 만든 후 이 레코드를 사용하여 Private Service Connect 지원 인스턴스에 연결할 수 있습니다.
DNS 관리 영역 및 DNS 레코드 구성
네트워크에서 DNS 관리 영역과 DNS 레코드를 구성하려면 다음 단계를 따르세요.
인스턴스의 DNS 이름을 포함하여 AlloyDB 인스턴스에 대한 요약 정보를 보려면
gcloud alloydb instances describe
명령어를 사용합니다.gcloud alloydb instances describe INSTANCE_ID \ --cluster=CLUSTER_ID --region=REGION_ID
다음을 바꿉니다.
INSTANCE_ID
: 인스턴스의 IDCLUSTER_ID
: 클러스터의 ID입니다.
응답에 DNS 이름이 표시되는지 확인합니다. DNS 이름은
INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
패턴을 따릅니다.비공개 DNS 영역을 만들려면
gcloud dns managed-zones create
명령어를 사용합니다. 이 영역은 Private Service Connect 엔드포인트를 통해 AlloyDB 인스턴스에 연결하는 데 사용되는 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
: 영역에 대한 설명 (예: AlloyDB 인스턴스의 DNS 영역)DNS_NAME
: 영역의 DNS 이름(예:INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
)NETWORK_NAME
: VPC 네트워크의 이름 공유 VPC 네트워크의 경우 VPC 네트워크의 정규화된 경로로 설정합니다(예:projects/cymbal-project/global/networks/shared-vpc-network
).
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 레코드를 사용하여 직접 연결
Private Service Connect 엔드포인트를 만들고 DNS 레코드를 만든 후 DNS 레코드를 사용하여 직접 연결할 수 있습니다.
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
: 엔드포인트의 리전 이름
AlloyDB 인스턴스에 연결하려면 DNS 레코드를 사용합니다.
psql -U USERNAME -h DNS_RECORD
다음을 바꿉니다.
USERNAME
: 인스턴스에 연결하는 사용자의 이름입니다.DNS_RECORD
: 엔드포인트의 DNS 레코드입니다.
AlloyDB 인증 프록시를 사용하여 연결
AlloyDB 인증 프록시는 AlloyDB 데이터베이스에 승인된 암호화된 연결을 설정할 수 있는 커넥터입니다. AlloyDB 인증 프록시는 로컬 환경에서 로컬 클라이언트를 실행하여 작동합니다. 애플리케이션은 데이터베이스에서 사용하는 표준 데이터베이스 프로토콜을 사용하여 AlloyDB 인증 프록시와 통신합니다.
인증 프록시 클라이언트를 시작할 때 --psc
플래그를 설정하면 AlloyDB 인증 프록시가 생성한 DNS 레코드를 사용하여 Private Service Connect가 사용 설정된 인스턴스에 연결합니다.
gcloud alloydb instances list
명령어를 사용하여 가져온 인스턴스 URI를 전달하여 인증 프록시 클라이언트를 시작하고 --psc
플래그를 설정해야 합니다.
인증 프록시를 사용하여 인스턴스에 연결하는 방법에 대한 자세한 내용은 인증 프록시를 사용하여 연결을 참고하세요.
AlloyDB 언어 커넥터를 사용하여 연결
AlloyDB 언어 커넥터는 AlloyDB 인스턴스에 연결할 때 TLS 1.3 및 Identity and Access Management (IAM) 승인을 사용하여 자동화된 mTLS를 제공하는 라이브러리입니다.
언어 커넥터가 인스턴스에서 Private Service Connect를 지원하는지 확인한 후 사용자가 만든 DNS 레코드를 사용하여 인스턴스에 연결합니다.
자바
Private Service Connect를 사용하여 AlloyDB 인스턴스에 연결하는 경우 다음을 포함하세요.
config.addDataSourceProperty("alloydbIpType", "PSC");
Java 언어 커넥터에서 Private Service Connect 엔드포인트를 사용하는 방법에 대한 자세한 내용은 GitHub 저장소를 참고하세요.
Python (pg8000)
Private Service Connect를 사용하여 AlloyDB 인스턴스에 연결하는 경우 다음을 포함하세요.
def getconn() -> pg8000.dbapi.Connection:
conn: pg8000.dbapi.Connection = connector.connect(
inst_uri,
"pg8000",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Python 언어 커넥터에서 Private Service Connect 엔드포인트를 사용하는 방법에 대한 자세한 내용은 GitHub 저장소를 참고하세요.
Python (asyncpg)
Private Service Connect를 사용하여 AlloyDB 인스턴스에 연결하는 경우 다음을 포함하세요.
async def getconn() -> asyncpg.Connection:
conn: asyncpg.Connection = await connector.connect(
inst_uri,
"asyncpg",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Python 언어 커넥터에서 Private Service Connect 엔드포인트를 사용하는 방법에 대한 자세한 내용은 GitHub 저장소를 참고하세요.
Go (pgx)
Private Service Connect를 사용하여 AlloyDB 인스턴스에 연결하는 경우 다음을 포함하세요.
d.Dial(ctx, instURI, alloydbconn.WithPSC())
Go 언어 커넥터에서 Private Service Connect 엔드포인트를 사용하는 방법에 관한 자세한 내용은 GitHub 저장소를 참고하세요.
Go (database/sql)
Private Service Connect를 사용하여 AlloyDB 인스턴스에 연결하는 경우 다음을 포함하세요.
cleanup, err := pgxv5.RegisterDriver(
"alloydb",
alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC())
)
Go 언어 커넥터에서 Private Service Connect 엔드포인트를 사용하는 방법에 관한 자세한 내용은 GitHub 저장소를 참고하세요.
내부 IP 주소를 통해 직접 연결
Private Service Connect 엔드포인트를 만든 후 구성한 IP 주소를 사용하여 AlloyDB 인스턴스에 직접 연결할 수 있습니다.
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
: 엔드포인트의 리전 이름
AlloyDB 인스턴스에 연결하려면 내부 IP 주소를 사용합니다.
psql -U USERNAME -h IP_ADDRESS"
다음을 바꿉니다.
USERNAME
: 인스턴스에 연결하는 사용자의 이름입니다.IP_ADDRESS
: 엔드포인트의 IP 주소입니다.
제한사항
- Private Service Connect가 사용 설정된 AlloyDB 인스턴스의 서비스 연결에 연결하는 Private Service Connect 엔드포인트를 최대 20개까지 설정할 수 있습니다.
- 비공개 서비스 액세스와 연결되어 있으므로 Private Service Connect 지원 클러스터를 만들 때
--network
플래그를 사용할 수 없습니다. - 기존 인스턴스에서 Private Service Connect를 활성화하거나 비활성화할 수 없습니다.
- 비공개 서비스 액세스를 사용하도록 Private Service Connect가 사용 설정된 인스턴스를 구성할 수 없습니다.