[ Web Proxy ]
URL:
Viewing: https://cloud.google.com/alloydb/docs/instance-primary-create [Back]  [Original]

Create a primary instance  |  AlloyDB for PostgreSQL  |  Google Cloud Documentation Skip to main content
Google Cloud Documentation [Google Cloud Documentation]
Send feedback

Create a primary instance Stay organized with collections Save and categorize content based on your preferences.

This page describes how to create the primary instance in an AlloyDB cluster.

Before you begin

Create an AlloyDB primary instance

Console

  1. Go to the Clusters page.

    Go to Clusters

  2. Click a cluster in the Resource Name column.

  3. In the Overview page, go to Instances in your cluster, and click Create primary instance.

  4. Configure your primary instance:

    1. In the Instance ID field, enter an ID for your primary instance.
    2. Under Zonal availability, select one of the following options:
      1. To create a highly available production instance with automated failover, select Multiple zones (Highly available).
      2. To create a basic instance that does not need to be highly available, select Single zone.
    3. Select one of the following machine series:

      • C4A (Google Axion-based machine series)
      • N2 (x86-based machine series). This is the default machine series.
      • C4 (x86-based machine series)
      • Z3 (Intel Xeon-based machine series)
    4. Select a machine type.

      • C4A supports 1, 2, 4, 8, 16, 32, 48, 64, and 72 vCPUs
      • N2 supports 2, 4, 8, 16, 32, 64, 96, and 128 vCPUs
      • C4 supports 4, 8, 16, 24, 32, 48, 96, 144, 192, and 288 vCPUs
      • Z3 supports 8, 14, 16, 22, 32, 44, and 88 vCPUs
    5. Optional: To connect your applications and clients over the public internet, check the box Enable Public IP under Public IP Connectivity. Enabling public IP might require additional configuration to make sure that you have a secure connection. For more information, see Connect using public IP.

      By default, private IP is always enabled. For more information, see Enable private services access.

    6. Optional: To enable managed connection pooling, select Enable managed connection pool under Managed connection pool. For more information, see Configure managed connection pooling.

    7. Optional: To set custom flags for your instance, expand Advanced configuration options, then do the following for each flag:

      1. Click Add flag.
      2. Select a flag from the New database flag list.
      3. Provide a value for the flag.
      4. Click Done.
    8. Optional: To configure SSL or connector requirements on the instance, expand Advanced configuration options, then do the following:

      1. By default, AlloyDB instances require all connections to use SSL encryption. To allow non-SSL connections, clear the Only allow SSL connections checkbox.
      2. To require that all database connections to the instance use the AlloyDB Auth Proxy or the secure connector libraries provided by Google, select Enforce mTLS via AlloyDB connectors.
  5. Click Create instance.

gcloud

To use the gcloud CLI, you can install and initialize the Google Cloud CLI, or you can use Cloud Shell.

Use the gcloud alloydb instances create command to create a primary instance.

gcloud alloydb instances create INSTANCE_ID \
    --instance-type=PRIMARY \
    --availability-type=AVAILABILITY \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --cpu-count=CPU_COUNT \
    --machine-type=MACHINE_TYPE \
    --project=PROJECT_ID

By default, new instances require all connections to use SSL encryption. To allow non-SSL connections to the instance, add the --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED flag to the command:

gcloud alloydb instances create INSTANCE_ID \
  --instance-type=PRIMARY \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID \
  --cpu-count=CPU_COUNT \
  --machine-type=MACHINE_TYPE \
  --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED

To enforce a secure connection between the client and an AlloyDB instance through the Auth Proxy or other applications that use Google-provided connector libraries, add the --require-connectors flag to the command:

gcloud alloydb instances create INSTANCE_ID \
 --instance-type=PRIMARY \
 --region=REGION_ID \
 --cluster=CLUSTER_ID \
 --cpu-count=CPU_COUNT \
 --machine-type=MACHINE_TYPE \
 --project=PROJECT_ID \
 --require-connectors

To enable managed connection pooling in your AlloyDB instance, add the --enable-connection-pooling flag to the gcloud alloydb instances create command:

gcloud alloydb instances create INSTANCE_ID \
  --instance-type=PRIMARY \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --cpu-count=CPU_COUNT \
  --machine-type=MACHINE_TYPE \
  --project=PROJECT_ID \
  --enable-connection-pooling

You can also create an AlloyDB instance with Private Service Connect-enabled. For information about creating a primary instance for a Private Service Connect-enabled cluster, see Create an AlloyDB instance.

Terraform

Create an instance

To create an instance within your database cluster, use a Terraform resource.

resource "google_alloydb_instance" "default" {
  cluster       = google_alloydb_cluster.default.name
  instance_id   = "alloydb-instance"
  instance_type = "PRIMARY"

  machine_config {
    cpu_count = 2
  }

  depends_on = [google_service_networking_connection.vpc_connection]
}

resource "google_alloydb_cluster" "default" {
  cluster_id = "alloydb-cluster"
  location   = "us-central1"
  network_config {
    network = google_compute_network.default.id
  }

  initial_user {
    password = "alloydb-cluster"
  }
}

data "google_project" "project" {}

resource "google_compute_network" "default" {
  name = "alloydb-network"
}

resource "google_compute_global_address" "private_ip_alloc" {
  name          =  "alloydb-cluster"
  address_type  = "INTERNAL"
  purpose       = "VPC_PEERING"
  prefix_length = 16
  network       = google_compute_network.default.id
}

resource "google_service_networking_connection" "vpc_connection" {
  network                 = google_compute_network.default.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
}

This example creates an N2 instance. For a list of other supported machine-types such as n2-highmem-4, c4-highmem-4-lssd, or c4a-highmem-4-lssd, see Choose an AlloyDB machine type.

Prepare Cloud Shell

To apply your Terraform configuration in a Google Cloud project, prepare Cloud Shell as follows:

  1. Launch Cloud Shell.
  2. Set the default Google Cloud projectwhere you want to apply your Terraform configurations.

    You only need to run this command once per project, and you can run it in any directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Environment variables are overridden if you set explicit values in the Terraform configuration file.

Prepare the directory

Each Terraform configuration file must have its own directory, also called a root module.

  1. In Cloud Shell, create a directory and a new file within that directory. The filename must be a TF file—for example, main.tf. In this document, the file is referred to as main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Copy the sample code into the newly created main.tf. Optionally, copy the code from GitHub. This is recommended when the Terraform snippet is part of an end-to-end solution.
    git clone https://github.com/terraform-google-modules/terraform-docs-samples
  3. In the terraform-docs-samples directory, navigate to the alloydb directory.
    cd terraform-docs-samples/alloydb
  4. Copy the sample code into the newly created main.tf.
    cp SAMPLE_FILE
    Replace <var>SAMPLE_FILE</var> with the name of the sample file to copyfor example, main.tf.
  5. Review and modify the sample parameters to apply to your environment.
  6. Save your changes.
  7. Initialize Terraform. You only need to do this once per directory.
    terraform init
    Optional: To use the latest Google provider version, include the -upgradeoption:
    terraform init -upgrade

Apply the changes

Note: Terraform samples typically assume that the required APIs are enabled in your Google Cloud project.
  1. Review the configuration to confirm that the Terraform updates match your expectations:
    terraform plan
    Make corrections to the configuration as necessary.
  2. Apply the Terraform configuration by running the following command and entering yes at the prompt:
    terraform apply
    Wait until Terraform displays the Apply complete! message.

Open your Google Cloud project to view the results. In the Google Cloud console, navigate to your resources in the UI to make sure that Terraform has created or updated them.

REST v1

Create an instance

This example creates a primary instance. For a complete list of parameters for this call, see Method: projects.locations.clusters.instances.create. For information about cluster settings, see View cluster and instance settings.

Don't include sensitive or personally identifiable information in your cluster ID, because it's externally visible. You don't need to include the project ID in the cluster name because this is done automatically where appropriate—for example, in the log files.

To send your request, save the request body in a file named instance_request.json.

{
  "instance_type": "PRIMARY",
  "machine_config": {
    "cpu_count": "vCPU_COUNT",
  },
}

Make the following replacement:

The preceding example creates an N2 instance with the following specifications:

machine_config: {
  machine_type : MACHINE_TYPE,
},

Replace MACHINE_TYPE with a supported machine type such as n2-highmem-4, c4-highmem-4-lssd, or c4a-highmem-4-lssd. For more information about supported machine types, see Choose an AlloyDB machine type.

Use the following HTTP method and URL:

POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances?instance_id=INSTANCE_ID

Make the following replacements:

You can use curl to execute the request, as shown in the following example:

curl -X POST   -H "Authorization: Bearer $(gcloud auth print-access-token)"   -H "Content-Type: application/json"   https://alloydb.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances?instance_id=INSTANCE_ID   -d @instance_request.json

What's next

Send feedback

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-08-14 UTC.

Need to tell us more? [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-08-14 UTC."],[],[]]

Web Proxy Viewer  |  New URL  |  Original Page