agentleFS
cockroachdbcockroachdb/claude-plugin/skills/cockroachdb-operations-and-lifecycle/provisioning-cluster-for-production/SKILL.md

provisioning-cluster-for-production

Skill4 starsChanged 5 months agoApache-2.0View on GitHub

Guides initial CockroachDB cluster provisioning and production deployment. Self-Hosted covers cockroach start/init, Kubernetes deployment (Operator, Helm), hardware sizing, and production configuration. Advanced/BYOC covers Cloud Console, API, and Terraform provisioning with production settings. Standard covers cluster creation and provisioned compute selection. Basic covers cluster creation and spending limits. Use when creating a new cluster, preparing for production go-live, or validating deployment configuration.

  • Reads credentials
  • Sends data out

2 other projects use a version of this, 1 of them edited.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

15 rules. About 0 are common, 11 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈11

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    For post-deployment health checks: Use reviewing-cluster-health.

    line 21
  2. Distinctive:

    For ongoing settings management: Use managing-cluster-settings.

    line 22
  3. Distinctive:

    For capacity changes after deployment: Use managing-cluster-capacity.

    line 23
  4. Very specific:

    Every node started in step 3 should appear with is_live = true and the expected locality.

    line 133
  5. Distinctive:

    After cluster is running, apply production settings:

    line 154
  6. Distinctive:

    Create SQL users and databases

    line 237
  7. Distinctive:

    Follow Advanced Provisioning steps — BYOC uses the same Cloud Console, API, and Terraform interfaces.

    line 247
  8. Distinctive:

    Ensure your cloud account meets CRL prerequisites (service account, VPC, IAM roles)

    line 250
  9. Distinctive:

    Verify CRL service account permissions

    line 252
  10. Distinctive:

    Create (auto-scales, no sizing needed)

    line 284
  11. Very specific:

    Never use --insecure in production — always use TLS

    line 303
  12. Distinctive:

    Never use burstable instances for production workloads

    line 304
  13. Very specific:

    Always set --locality flags for multi-node clusters

    line 305
  14. Very specific:

    Always configure --cache and --max-sql-memory (defaults are too low)

    line 306
  15. Distinctive:

    Always create ballast files before going to production

    line 307

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Provisioning Cluster for Production

Guides CockroachDB cluster creation and production deployment configuration. Before providing procedures, this skill gathers context to deliver tier-appropriate provisioning steps and production hardening guidance.

When to Use This Skill

  • Creating a new CockroachDB cluster
  • Preparing a development/staging cluster for production go-live
  • Validating hardware and configuration for production readiness
  • Choosing the right deployment tier and sizing

For post-deployment health checks: Use reviewing-cluster-health. For ongoing settings management: Use managing-cluster-settings. For capacity changes after deployment: Use managing-cluster-capacity.


Step 1: Gather Context

Required Context

QuestionOptionsWhy It Matters
Deployment tier?Self-Hosted, Advanced, BYOC, Standard, BasicCompletely different provisioning procedures
Environment?Production, Staging, DevelopmentDetermines hardware sizing and configuration rigor

Additional Context (by tier)

If Self-Hosted:

QuestionOptionsWhy It Matters
Platform?Bare metal, VMs (AWS/GCP/Azure), KubernetesChanges installation and start commands
If Kubernetes?Operator (recommended), Helm, Manual StatefulSetDetermines deployment method
Node count?3 (minimum), 5, 9+Affects topology and replication
Multi-region?Yes (how many regions), NoRequires locality flags and topology planning
Expected workload?OLTP, mixed OLTP/analytics, write-heavyAffects hardware sizing
Security requirements?TLS required, encryption at rest, CMEKDetermines certificate and encryption setup

If Advanced or BYOC:

QuestionOptionsWhy It Matters
Provisioning method?Cloud Console, Cloud API, TerraformDetermines procedure
Cloud provider?AWS, GCP, AzureAffects region selection and networking
Node count and size?e.g., 3 nodes x 8 vCPUsDetermines initial capacity

If Standard: Gather expected workload size (vCPUs) and storage estimate.

If Basic: Gather expected usage pattern and monthly budget.

Context-Driven Routing

TierGo To
Self-HostedSelf-Hosted Provisioning
AdvancedAdvanced Provisioning
BYOCBYOC Provisioning
StandardStandard Provisioning
BasicBasic Provisioning

Self-Hosted Provisioning

Applies when: Tier = Self-Hosted

Hardware Sizing

ComponentMinimumProduction Recommended
Nodes33+ (odd number per failure domain)
CPU4 vCPUs (non-burstable)8+ vCPUs
RAM16 GB32+ GB
Storage150 GB SSD500+ GB NVMe SSD
Network1 Gbps10 Gbps

Memory formula: --cache + --max-sql-memory <= 75% of total RAM Recommended: --cache=.25 --max-sql-memory=.25

Never use: burstable instances, HDDs, network-attached HDD, shared CPU.

See hardware-and-infrastructure reference for cloud instance recommendations.

Deploy on VMs / Bare Metal

Step 1: Install CockroachDB on each node

curl https://binaries.cockroachdb.com/cockroach-v<version>.linux-amd64.tgz | tar -xz
cp cockroach-v<version>.linux-amd64/cockroach /usr/local/bin/

Step 2: Generate certificates

cockroach cert create-ca --certs-dir=certs --ca-key=my-safe-directory/ca.key
cockroach cert create-node <node-hostname> <node-ip> localhost 127.0.0.1 \
  --certs-dir=certs --ca-key=my-safe-directory/ca.key
cockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.key

Step 3: Start nodes (repeat on each node)

cockroach start \
  --certs-dir=certs \
  --store=path=<store-path> \
  --listen-addr=<node-address>:26257 \
  --http-addr=<node-address>:8080 \
  --join=<node1-address>,<node2-address>,<node3-address> \
  --locality=region=<region>,zone=<zone> \
  --cache=.25 \
  --max-sql-memory=.25 \
  --background

Step 4: Initialize cluster (once, from any node)

cockroach init --certs-dir=certs --host=<any-node-address>

Step 5: Verify

cockroach node status --certs-dir=certs --host=<any-node-address>

Every node started in step 3 should appear with is_live = true and the expected locality.

Deploy on Kubernetes

Operator (recommended):

kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach-operator/master/install/crds.yaml
kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach-operator/master/install/operator.yaml
# Apply CrdbCluster manifest with node count, resources, and storage

Helm:

helm repo add cockroachdb https://charts.cockroachdb.com/
helm install cockroachdb cockroachdb/cockroachdb \
  --set statefulset.replicas=3 \
  --set storage.persistentVolume.size=100Gi

Production Configuration (Self-Hosted)

After cluster is running, apply production settings:

-- Enable critical features
SET CLUSTER SETTING kv.rangefeed.enabled = true;
SET CLUSTER SETTING sql.stats.automatic_collection.enabled = true;
SET CLUSTER SETTING admission.kv.enabled = true;

-- Set timeouts
SET CLUSTER SETTING sql.defaults.idle_in_transaction_session_timeout = '300s';
SET CLUSTER SETTING sql.defaults.statement_timeout = '30s';

-- Install enterprise license (if applicable)
SET CLUSTER SETTING cluster.organization = '<org-name>';
SET CLUSTER SETTING enterprise.license = '<license-key>';

Create ballast files on each node:

cockroach debug ballast <store-path>/auxiliary/EMERGENCY_BALLAST --size=1GiB

Configure load balancer: Point to all nodes with health check on /health?ready=1.

See production-deployment-checklist reference for the full go-live checklist.


Advanced Provisioning

Applies when: Tier = Advanced

Via Cloud Console

  1. cockroachlabs.cloud → Create Cluster
  2. Select Advanced plan
  3. Choose cloud provider (AWS, GCP, Azure)
  4. Select region(s)
  5. Configure node count (minimum 3) and machine size (vCPUs per node)
  6. Configure storage
  7. Review and create

Via Cloud API

curl -X POST -H "Authorization: Bearer $COCKROACH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "<cluster-name>",
    "provider": "AWS",
    "spec": {
      "dedicated": {
        "region_nodes": {"us-east-1": 3},
        "machine_type": "m6i.xlarge",
        "storage_gib": 150
      }
    }
  }' \
  "https://cockroachlabs.cloud/api/v1/clusters"

Via Terraform

resource "cockroach_cluster" "production" {
  name           = "production"
  cloud_provider = "AWS"

  dedicated {
    num_virtual_cpus = 8
    storage_gib      = 150
    num_nodes        = 3
  }

  regions = [{
    name = "us-east-1"
  }]
}

Post-Provisioning

  • Configure IP allowlists or VPC Peering/PrivateLink
  • Create SQL users and databases
  • Set maintenance window (see performing-cluster-maintenance)
  • Configure metrics export to Datadog/Prometheus if needed

BYOC Provisioning

Applies when: Tier = BYOC

Follow Advanced Provisioning steps — BYOC uses the same Cloud Console, API, and Terraform interfaces.

Additional BYOC steps:

  • Ensure your cloud account meets CRL prerequisites (service account, VPC, IAM roles)
  • Configure PrivateLink/PSC for private connectivity
  • Verify CRL service account permissions

Standard Provisioning

Applies when: Tier = Standard

  1. cockroachlabs.cloud → Create Cluster
  2. Select Standard plan
  3. Choose cloud provider and region
  4. Set provisioned compute (vCPUs) based on expected workload
  5. Create

Post-provisioning:

  • Create SQL users and databases
  • Configure IP allowlists
  • Set session-level defaults:
    ALTER ROLE ALL SET statement_timeout = '30s';
    ALTER ROLE ALL SET idle_in_transaction_session_timeout = '300s';

Basic Provisioning

Applies when: Tier = Basic

  1. cockroachlabs.cloud → Create Cluster
  2. Select Basic plan
  3. Choose cloud provider and region
  4. Create (auto-scales, no sizing needed)

Post-provisioning:

  • Set spending limits (Cloud Console → Cluster → Settings)
  • Create SQL users and databases
  • Configure IP allowlists

Safety Considerations

OperationTierRisk
cockroach initSHSafe — only runs once; subsequent calls are no-ops
Certificate generationSHStore CA key securely — loss means no new certs
Cloud cluster creationADV/BYOC/STD/BASSafe — can be deleted if misconfigured
Production settings changesSHSee managing-cluster-settings

Critical (Self-Hosted):

  • Never use --insecure in production — always use TLS
  • Never use burstable instances for production workloads
  • Always set --locality flags for multi-node clusters
  • Always configure --cache and --max-sql-memory (defaults are too low)
  • Always create ballast files before going to production

Troubleshooting

IssueTierFix
cockroach init failsSHCheck all nodes are started and reachable on port 26257
Node won't join clusterSHVerify --join addresses; check firewall rules for ports 26257, 8080
"clock offset" errorSHSync clocks with NTP; check --max-offset setting
TLS handshake failureSHVerify certs match; check CA is the same across all nodes
Cloud cluster stuck in "Creating"ADV/BYOCWait 15 min; contact support if no progress
Cannot connect after creationALLCheck IP allowlist; verify connection string; try with root user

References

Skill references:

  • Hardware and infrastructure
  • Production deployment checklist

Related skills:

  • reviewing-cluster-health — Post-deployment health check
  • managing-cluster-settings — Production settings
  • managing-certificates-and-encryption — TLS setup
  • managing-cluster-capacity — Scaling after deployment

Official CockroachDB Documentation:

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.