Apache Kafka via Confluent Platform
Self-managed Apache Kafka deployed with Confluent Platform for event streaming, durable logs, and integration pipelines.
Extra Small — up to 500 users
Monthly cost
$359.40
Annual cost
$4,313/year
| Compute | $276.90 |
| Storage | $82.50 |
| Other | $0.00 |
| Role | Instance | vCPU | GB RAM | Storage |
|---|---|---|---|---|
| Application | 1 × n2-standard-4 | 4 | 16 | 200 GB |
| Database | 1 × n2-standard-4 | 4 | 16 | 250 GB |
| Cache | 1 × n2-standard-2 | 2 | 8 | — |
| Object Storage Gateway | 1 × n2-standard-2 | 2 | 8 | 300 GB |
This Extra Small GitLab deployment supports up to 500 users with no high availability. The primary cost driver is compute, specifically the four n2-standard instances. The architecture includes two n2-standard-4 instances for core services and two n2-standard-2 instances for supporting roles, reflecting a distributed but non-redundant setup. This configuration prioritizes minimal cost over resilience or scalability beyond 500 users.
Share the current URL or copy the launch 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" "application_1_data" {
count = 1
name = "gitlab-application-1-data-${count.index + 1}"
type = "pd-ssd"
zone = "us-central1-a"
size = 200
}
resource "google_compute_instance" "application_1" {
count = 1
name = "gitlab-application-1-${count.index + 1}"
machine_type = "n2-standard-4"
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.application_1_data[count.index].id
mode = "READ_WRITE"
}
labels = {
app = "gitlab"
role = "application"
}
}
resource "google_compute_disk" "database_2_data" {
count = 1
name = "gitlab-database-2-data-${count.index + 1}"
type = "pd-ssd"
zone = "us-central1-a"
size = 250
}
resource "google_compute_instance" "database_2" {
count = 1
name = "gitlab-database-2-${count.index + 1}"
machine_type = "n2-standard-4"
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 = "gitlab"
role = "database"
}
}
resource "google_compute_instance" "cache_3" {
count = 1
name = "gitlab-cache-3-${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 {}
}
labels = {
app = "gitlab"
role = "cache"
}
}
resource "google_compute_disk" "object_storage_gateway_4_data" {
count = 1
name = "gitlab-object-storage-gateway-4-data-${count.index + 1}"
type = "pd-standard"
zone = "us-central1-a"
size = 300
}
resource "google_compute_instance" "object_storage_gateway_4" {
count = 1
name = "gitlab-object-storage-gateway-4-${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.object_storage_gateway_4_data[count.index].id
mode = "READ_WRITE"
}
labels = {
app = "gitlab"
role = "object-storage-gateway"
}
}
Reference architecture: GitLab Self-Managed for 1k-users, version 17.11, retrieved April 12, 2026.
https://archives.docs.gitlab.com/17.11/administration/reference_architectures/
Pricing: Google Cloud pricing snapshot, retrieved May 6, 2026.
Commercial pricing only. GovCloud, sovereign cloud, and discounts beyond those shown are not modelled.
Based on GitLab's published reference architectures and simplified to a VM-based baseline.
Production deployments should be verified against workload-specific RPS, monorepos, and CI patterns.
Self-managed Apache Kafka deployed with Confluent Platform for event streaming, durable logs, and integration pipelines.
Self-hosted CockroachDB for resilient SQL workloads that need distributed transactions and scale-out storage.
Self-managed Confluence Data Center for enterprise documentation, knowledge bases, and collaborative editing.