CloudEstimate

Size Keycloak on Google Cloud

Extra Small — up to 25 peak logins per second

Monthly cost

$229.64

Annual cost

$2,756/year

Line-item breakdown

Compute $195.64
Storage $34.00
Other $0.00

Components provisioned

Role Instance vCPU GB RAM Storage
Keycloak 1 × n2-standard-2 2 8 100 GB
Database 1 × n2-standard-2 2 8 100 GB

Why this sizing

Keycloak at the extra small tier maps to the single-node-small reference architecture on Google Cloud in us-central1. Compute is the largest line item in this estimate, accounting for 85% of monthly cost. High availability is not included here, so this baseline stays lean and leaves failover headroom out of the monthly total. Keycloak carries the heaviest storage footprint at 100 GB.

Export

Share the current URL or copy the launch Terraform baseline.

Google Cloud Terraform baseline
terraform {
  required_version = ">= 1.6.0"

  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 6.0"
    }
  }
}

variable "project_id" {
  description = "Google Cloud project ID for this deployment."
  type        = string
  default     = "replace-with-project-id"
}

provider "google" {
  project = var.project_id
  region  = "us-central1"
  zone    = "us-central1-a"
}

# Generated for Google Cloud from the current estimate state.

resource "google_compute_disk" "keycloak_1_data" {
  count = 1
  name  = "keycloak-keycloak-1-data-${count.index + 1}"
  type  = "pd-ssd"
  zone  = "us-central1-a"
  size  = 100
}

resource "google_compute_instance" "keycloak_1" {
  count        = 1
  name         = "keycloak-keycloak-1-${count.index + 1}"
  machine_type = "n2-standard-2"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "projects/debian-cloud/global/images/family/debian-12"
      size  = 50
      type  = "pd-balanced"
    }
  }

  network_interface {
    network = "default"
    access_config {}
  }
  attached_disk {
    source = google_compute_disk.keycloak_1_data[count.index].id
    mode   = "READ_WRITE"
  }

  labels = {
    app  = "keycloak"
    role = "keycloak"
  }
}


resource "google_compute_disk" "database_2_data" {
  count = 1
  name  = "keycloak-database-2-data-${count.index + 1}"
  type  = "pd-ssd"
  zone  = "us-central1-a"
  size  = 100
}

resource "google_compute_instance" "database_2" {
  count        = 1
  name         = "keycloak-database-2-${count.index + 1}"
  machine_type = "n2-standard-2"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "projects/debian-cloud/global/images/family/debian-12"
      size  = 50
      type  = "pd-balanced"
    }
  }

  network_interface {
    network = "default"
    access_config {}
  }
  attached_disk {
    source = google_compute_disk.database_2_data[count.index].id
    mode   = "READ_WRITE"
  }

  labels = {
    app  = "keycloak"
    role = "database"
  }
}

Related views

Sources

Reference architecture: Keycloak for single-node-small, version Keycloak current high-availability sizing guidance, retrieved April 13, 2026.

https://www.keycloak.org/high-availability/single-cluster/concepts-memory-and-cpu-sizing

Pricing: Google Cloud pricing snapshot, retrieved April 12, 2026.

Commercial pricing only. GovCloud, sovereign cloud, and discounts beyond those shown are not modelled.

Not included in this estimate

  • Vendor licensing and support
  • Professional services
  • Network egress
  • Compliance controls
  • Backup storage
  • Monitoring

Based on Keycloak's official HA sizing concepts and translated into VM-based planning inputs for self-managed deployments.

Estimate excludes external IdPs, SMTP, user federation backends, separate caching infrastructure, and license costs for any commercial database choice.

Other workloads on Google Cloud