[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-cockroachdb-provisioning-cluster-for-production":3,"mdc-qhnyww-key":36,"related-org-cockroachdb-provisioning-cluster-for-production":3018,"related-repo-cockroachdb-provisioning-cluster-for-production":3179},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":31,"sourceUrl":34,"mdContent":35},"provisioning-cluster-for-production","provision CockroachDB clusters for production","Guides initial CockroachDB cluster provisioning and production deployment. Self-Hosted covers cockroach start\u002Finit, Kubernetes deployment (Operator, Helm), hardware sizing, and production configuration. Advanced\u002FBYOC 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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"cockroachdb","CockroachDB","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fcockroachdb.png",[12,16,19],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":17,"slug":18,"type":15},"Database","database",{"name":20,"slug":21,"type":15},"Deployment","deployment",3,"https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fclaude-plugin","2026-07-12T07:57:12.294899",null,2,[28,29,8,30],"claude","cockroach-cloud","developer-tools",{"repoUrl":23,"stars":22,"forks":26,"topics":32,"description":33},[28,29,8,30],"CockroachDB development plugin for Claude","https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fclaude-plugin\u002Ftree\u002FHEAD\u002Fskills\u002Fcockroachdb-operations-and-lifecycle\u002Fprovisioning-cluster-for-production","---\nname: provisioning-cluster-for-production\ndescription: Guides initial CockroachDB cluster provisioning and production deployment. Self-Hosted covers cockroach start\u002Finit, Kubernetes deployment (Operator, Helm), hardware sizing, and production configuration. Advanced\u002FBYOC 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.\ncompatibility: Self-Hosted requires CLI access and infrastructure provisioning. Advanced\u002FBYOC requires Cloud Console with Org Admin role. Standard requires Cloud Console. Basic requires Cloud Console.\nmetadata:\n  author: cockroachdb\n  version: \"1.0\"\n---\n\n# Provisioning Cluster for Production\n\nGuides CockroachDB cluster creation and production deployment configuration. Before providing procedures, this skill gathers context to deliver tier-appropriate provisioning steps and production hardening guidance.\n\n## When to Use This Skill\n\n- Creating a new CockroachDB cluster\n- Preparing a development\u002Fstaging cluster for production go-live\n- Validating hardware and configuration for production readiness\n- Choosing the right deployment tier and sizing\n\n**For post-deployment health checks:** Use [reviewing-cluster-health](..\u002Freviewing-cluster-health\u002FSKILL.md).\n**For ongoing settings management:** Use [managing-cluster-settings](..\u002Fmanaging-cluster-settings\u002FSKILL.md).\n**For capacity changes after deployment:** Use [managing-cluster-capacity](..\u002Fmanaging-cluster-capacity\u002FSKILL.md).\n\n---\n\n## Step 1: Gather Context\n\n### Required Context\n\n| Question | Options | Why It Matters |\n|----------|---------|----------------|\n| **Deployment tier?** | Self-Hosted, Advanced, BYOC, Standard, Basic | Completely different provisioning procedures |\n| **Environment?** | Production, Staging, Development | Determines hardware sizing and configuration rigor |\n\n### Additional Context (by tier)\n\n**If Self-Hosted:**\n\n| Question | Options | Why It Matters |\n|----------|---------|----------------|\n| **Platform?** | Bare metal, VMs (AWS\u002FGCP\u002FAzure), Kubernetes | Changes installation and start commands |\n| **If Kubernetes?** | Operator (recommended), Helm, Manual StatefulSet | Determines deployment method |\n| **Node count?** | 3 (minimum), 5, 9+ | Affects topology and replication |\n| **Multi-region?** | Yes (how many regions), No | Requires locality flags and topology planning |\n| **Expected workload?** | OLTP, mixed OLTP\u002Fanalytics, write-heavy | Affects hardware sizing |\n| **Security requirements?** | TLS required, encryption at rest, CMEK | Determines certificate and encryption setup |\n\n**If Advanced or BYOC:**\n\n| Question | Options | Why It Matters |\n|----------|---------|----------------|\n| **Provisioning method?** | Cloud Console, Cloud API, Terraform | Determines procedure |\n| **Cloud provider?** | AWS, GCP, Azure | Affects region selection and networking |\n| **Node count and size?** | e.g., 3 nodes x 8 vCPUs | Determines initial capacity |\n\n**If Standard:** Gather expected workload size (vCPUs) and storage estimate.\n\n**If Basic:** Gather expected usage pattern and monthly budget.\n\n### Context-Driven Routing\n\n| Tier | Go To |\n|------|-------|\n| Self-Hosted | [Self-Hosted Provisioning](#self-hosted-provisioning) |\n| Advanced | [Advanced Provisioning](#advanced-provisioning) |\n| BYOC | [BYOC Provisioning](#byoc-provisioning) |\n| Standard | [Standard Provisioning](#standard-provisioning) |\n| Basic | [Basic Provisioning](#basic-provisioning) |\n\n---\n\n## Self-Hosted Provisioning\n\n**Applies when:** Tier = Self-Hosted\n\n### Hardware Sizing\n\n| Component | Minimum | Production Recommended |\n|-----------|---------|----------------------|\n| Nodes | 3 | 3+ (odd number per failure domain) |\n| CPU | 4 vCPUs (non-burstable) | 8+ vCPUs |\n| RAM | 16 GB | 32+ GB |\n| Storage | 150 GB SSD | 500+ GB NVMe SSD |\n| Network | 1 Gbps | 10 Gbps |\n\n**Memory formula:** `--cache + --max-sql-memory \u003C= 75% of total RAM`\nRecommended: `--cache=.25 --max-sql-memory=.25`\n\n**Never use:** burstable instances, HDDs, network-attached HDD, shared CPU.\n\nSee [hardware-and-infrastructure reference](references\u002Fhardware-and-infrastructure.md) for cloud instance recommendations.\n\n### Deploy on VMs \u002F Bare Metal\n\n**Step 1: Install CockroachDB on each node**\n```bash\ncurl https:\u002F\u002Fbinaries.cockroachdb.com\u002Fcockroach-v\u003Cversion>.linux-amd64.tgz | tar -xz\ncp cockroach-v\u003Cversion>.linux-amd64\u002Fcockroach \u002Fusr\u002Flocal\u002Fbin\u002F\n```\n\n**Step 2: Generate certificates**\n```bash\ncockroach cert create-ca --certs-dir=certs --ca-key=my-safe-directory\u002Fca.key\ncockroach cert create-node \u003Cnode-hostname> \u003Cnode-ip> localhost 127.0.0.1 \\\n  --certs-dir=certs --ca-key=my-safe-directory\u002Fca.key\ncockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory\u002Fca.key\n```\n\n**Step 3: Start nodes (repeat on each node)**\n```bash\ncockroach start \\\n  --certs-dir=certs \\\n  --store=path=\u003Cstore-path> \\\n  --listen-addr=\u003Cnode-address>:26257 \\\n  --http-addr=\u003Cnode-address>:8080 \\\n  --join=\u003Cnode1-address>,\u003Cnode2-address>,\u003Cnode3-address> \\\n  --locality=region=\u003Cregion>,zone=\u003Czone> \\\n  --cache=.25 \\\n  --max-sql-memory=.25 \\\n  --background\n```\n\n**Step 4: Initialize cluster (once, from any node)**\n```bash\ncockroach init --certs-dir=certs --host=\u003Cany-node-address>\n```\n\n**Step 5: Verify**\n```bash\ncockroach node status --certs-dir=certs --host=\u003Cany-node-address>\n```\nEvery node started in step 3 should appear with `is_live = true` and the expected `locality`.\n\n### Deploy on Kubernetes\n\n**Operator (recommended):**\n```bash\nkubectl apply -f https:\u002F\u002Fraw.githubusercontent.com\u002Fcockroachdb\u002Fcockroach-operator\u002Fmaster\u002Finstall\u002Fcrds.yaml\nkubectl apply -f https:\u002F\u002Fraw.githubusercontent.com\u002Fcockroachdb\u002Fcockroach-operator\u002Fmaster\u002Finstall\u002Foperator.yaml\n# Apply CrdbCluster manifest with node count, resources, and storage\n```\n\n**Helm:**\n```bash\nhelm repo add cockroachdb https:\u002F\u002Fcharts.cockroachdb.com\u002F\nhelm install cockroachdb cockroachdb\u002Fcockroachdb \\\n  --set statefulset.replicas=3 \\\n  --set storage.persistentVolume.size=100Gi\n```\n\n### Production Configuration (Self-Hosted)\n\nAfter cluster is running, apply production settings:\n\n```sql\n-- Enable critical features\nSET CLUSTER SETTING kv.rangefeed.enabled = true;\nSET CLUSTER SETTING sql.stats.automatic_collection.enabled = true;\nSET CLUSTER SETTING admission.kv.enabled = true;\n\n-- Set timeouts\nSET CLUSTER SETTING sql.defaults.idle_in_transaction_session_timeout = '300s';\nSET CLUSTER SETTING sql.defaults.statement_timeout = '30s';\n\n-- Install enterprise license (if applicable)\nSET CLUSTER SETTING cluster.organization = '\u003Corg-name>';\nSET CLUSTER SETTING enterprise.license = '\u003Clicense-key>';\n```\n\n**Create ballast files on each node:**\n```bash\ncockroach debug ballast \u003Cstore-path>\u002Fauxiliary\u002FEMERGENCY_BALLAST --size=1GiB\n```\n\n**Configure load balancer:** Point to all nodes with health check on `\u002Fhealth?ready=1`.\n\nSee [production-deployment-checklist reference](references\u002Fproduction-deployment-checklist.md) for the full go-live checklist.\n\n---\n\n## Advanced Provisioning\n\n**Applies when:** Tier = Advanced\n\n### Via Cloud Console\n\n1. **cockroachlabs.cloud → Create Cluster**\n2. Select **Advanced** plan\n3. Choose cloud provider (AWS, GCP, Azure)\n4. Select region(s)\n5. Configure node count (minimum 3) and machine size (vCPUs per node)\n6. Configure storage\n7. Review and create\n\n### Via Cloud API\n\n```bash\ncurl -X POST -H \"Authorization: Bearer $COCKROACH_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"\u003Ccluster-name>\",\n    \"provider\": \"AWS\",\n    \"spec\": {\n      \"dedicated\": {\n        \"region_nodes\": {\"us-east-1\": 3},\n        \"machine_type\": \"m6i.xlarge\",\n        \"storage_gib\": 150\n      }\n    }\n  }' \\\n  \"https:\u002F\u002Fcockroachlabs.cloud\u002Fapi\u002Fv1\u002Fclusters\"\n```\n\n### Via Terraform\n\n```hcl\nresource \"cockroach_cluster\" \"production\" {\n  name           = \"production\"\n  cloud_provider = \"AWS\"\n\n  dedicated {\n    num_virtual_cpus = 8\n    storage_gib      = 150\n    num_nodes        = 3\n  }\n\n  regions = [{\n    name = \"us-east-1\"\n  }]\n}\n```\n\n### Post-Provisioning\n\n- Configure IP allowlists or VPC Peering\u002FPrivateLink\n- Create SQL users and databases\n- Set maintenance window (see [performing-cluster-maintenance](..\u002Fperforming-cluster-maintenance\u002FSKILL.md))\n- Configure metrics export to Datadog\u002FPrometheus if needed\n\n---\n\n## BYOC Provisioning\n\n**Applies when:** Tier = BYOC\n\nFollow [Advanced Provisioning](#advanced-provisioning) steps — BYOC uses the same Cloud Console, API, and Terraform interfaces.\n\n**Additional BYOC steps:**\n- Ensure your cloud account meets CRL prerequisites (service account, VPC, IAM roles)\n- Configure PrivateLink\u002FPSC for private connectivity\n- Verify CRL service account permissions\n\n---\n\n## Standard Provisioning\n\n**Applies when:** Tier = Standard\n\n1. **cockroachlabs.cloud → Create Cluster**\n2. Select **Standard** plan\n3. Choose cloud provider and region\n4. Set provisioned compute (vCPUs) based on expected workload\n5. Create\n\n**Post-provisioning:**\n- Create SQL users and databases\n- Configure IP allowlists\n- Set session-level defaults:\n  ```sql\n  ALTER ROLE ALL SET statement_timeout = '30s';\n  ALTER ROLE ALL SET idle_in_transaction_session_timeout = '300s';\n  ```\n\n---\n\n## Basic Provisioning\n\n**Applies when:** Tier = Basic\n\n1. **cockroachlabs.cloud → Create Cluster**\n2. Select **Basic** plan\n3. Choose cloud provider and region\n4. Create (auto-scales, no sizing needed)\n\n**Post-provisioning:**\n- Set spending limits (Cloud Console → Cluster → Settings)\n- Create SQL users and databases\n- Configure IP allowlists\n\n---\n\n## Safety Considerations\n\n| Operation | Tier | Risk |\n|-----------|------|------|\n| `cockroach init` | SH | Safe — only runs once; subsequent calls are no-ops |\n| Certificate generation | SH | Store CA key securely — loss means no new certs |\n| Cloud cluster creation | ADV\u002FBYOC\u002FSTD\u002FBAS | Safe — can be deleted if misconfigured |\n| Production settings changes | SH | See [managing-cluster-settings](..\u002Fmanaging-cluster-settings\u002FSKILL.md) |\n\n**Critical (Self-Hosted):**\n- Never use `--insecure` in production — always use TLS\n- Never use burstable instances for production workloads\n- Always set `--locality` flags for multi-node clusters\n- Always configure `--cache` and `--max-sql-memory` (defaults are too low)\n- Always create ballast files before going to production\n\n## Troubleshooting\n\n| Issue | Tier | Fix |\n|-------|------|-----|\n| `cockroach init` fails | SH | Check all nodes are started and reachable on port 26257 |\n| Node won't join cluster | SH | Verify `--join` addresses; check firewall rules for ports 26257, 8080 |\n| \"clock offset\" error | SH | Sync clocks with NTP; check `--max-offset` setting |\n| TLS handshake failure | SH | Verify certs match; check CA is the same across all nodes |\n| Cloud cluster stuck in \"Creating\" | ADV\u002FBYOC | Wait 15 min; contact support if no progress |\n| Cannot connect after creation | ALL | Check IP allowlist; verify connection string; try with root user |\n\n## References\n\n**Skill references:**\n- [Hardware and infrastructure](references\u002Fhardware-and-infrastructure.md)\n- [Production deployment checklist](references\u002Fproduction-deployment-checklist.md)\n\n**Related skills:**\n- [reviewing-cluster-health](..\u002Freviewing-cluster-health\u002FSKILL.md) — Post-deployment health check\n- [managing-cluster-settings](..\u002Fmanaging-cluster-settings\u002FSKILL.md) — Production settings\n- [managing-certificates-and-encryption](..\u002Fmanaging-certificates-and-encryption\u002FSKILL.md) — TLS setup\n- [managing-cluster-capacity](..\u002Fmanaging-cluster-capacity\u002FSKILL.md) — Scaling after deployment\n\n**Official CockroachDB Documentation:**\n- [Install CockroachDB](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Finstall-cockroachdb)\n- [Start a Cluster](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Fstart-a-local-cluster)\n- [Deploy on Kubernetes](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Fdeploy-cockroachdb-with-kubernetes)\n- [Production Checklist](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Frecommended-production-settings)\n- [Create an Advanced Cluster](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fcreate-an-advanced-cluster)\n- [Cloud API](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fcloud-api)\n",{"data":37,"body":41},{"name":4,"description":6,"compatibility":38,"metadata":39},"Self-Hosted requires CLI access and infrastructure provisioning. Advanced\u002FBYOC requires Cloud Console with Org Admin role. Standard requires Cloud Console. Basic requires Cloud Console.",{"author":8,"version":40},"1.0",{"type":42,"children":43},"root",[44,52,58,65,90,137,141,147,154,229,235,243,393,401,488,498,508,514,621,624,629,639,645,762,787,797,810,816,824,934,942,1087,1095,1354,1362,1404,1412,1456,1476,1482,1490,1549,1557,1650,1656,1661,1768,1776,1828,1845,1857,1860,1865,1874,1880,1928,1934,2139,2145,2264,2270,2301,2304,2309,2318,2329,2337,2355,2358,2363,2372,2406,2414,2454,2457,2462,2471,2499,2506,2522,2525,2531,2634,2642,2702,2708,2859,2865,2873,2892,2900,2941,2949,3012],{"type":45,"tag":46,"props":47,"children":48},"element","h1",{"id":4},[49],{"type":50,"value":51},"text","Provisioning Cluster for Production",{"type":45,"tag":53,"props":54,"children":55},"p",{},[56],{"type":50,"value":57},"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.",{"type":45,"tag":59,"props":60,"children":62},"h2",{"id":61},"when-to-use-this-skill",[63],{"type":50,"value":64},"When to Use This Skill",{"type":45,"tag":66,"props":67,"children":68},"ul",{},[69,75,80,85],{"type":45,"tag":70,"props":71,"children":72},"li",{},[73],{"type":50,"value":74},"Creating a new CockroachDB cluster",{"type":45,"tag":70,"props":76,"children":77},{},[78],{"type":50,"value":79},"Preparing a development\u002Fstaging cluster for production go-live",{"type":45,"tag":70,"props":81,"children":82},{},[83],{"type":50,"value":84},"Validating hardware and configuration for production readiness",{"type":45,"tag":70,"props":86,"children":87},{},[88],{"type":50,"value":89},"Choosing the right deployment tier and sizing",{"type":45,"tag":53,"props":91,"children":92},{},[93,99,101,108,110,115,116,122,123,128,129,135],{"type":45,"tag":94,"props":95,"children":96},"strong",{},[97],{"type":50,"value":98},"For post-deployment health checks:",{"type":50,"value":100}," Use ",{"type":45,"tag":102,"props":103,"children":105},"a",{"href":104},"..\u002Freviewing-cluster-health\u002FSKILL.md",[106],{"type":50,"value":107},"reviewing-cluster-health",{"type":50,"value":109},".\n",{"type":45,"tag":94,"props":111,"children":112},{},[113],{"type":50,"value":114},"For ongoing settings management:",{"type":50,"value":100},{"type":45,"tag":102,"props":117,"children":119},{"href":118},"..\u002Fmanaging-cluster-settings\u002FSKILL.md",[120],{"type":50,"value":121},"managing-cluster-settings",{"type":50,"value":109},{"type":45,"tag":94,"props":124,"children":125},{},[126],{"type":50,"value":127},"For capacity changes after deployment:",{"type":50,"value":100},{"type":45,"tag":102,"props":130,"children":132},{"href":131},"..\u002Fmanaging-cluster-capacity\u002FSKILL.md",[133],{"type":50,"value":134},"managing-cluster-capacity",{"type":50,"value":136},".",{"type":45,"tag":138,"props":139,"children":140},"hr",{},[],{"type":45,"tag":59,"props":142,"children":144},{"id":143},"step-1-gather-context",[145],{"type":50,"value":146},"Step 1: Gather Context",{"type":45,"tag":148,"props":149,"children":151},"h3",{"id":150},"required-context",[152],{"type":50,"value":153},"Required Context",{"type":45,"tag":155,"props":156,"children":157},"table",{},[158,182],{"type":45,"tag":159,"props":160,"children":161},"thead",{},[162],{"type":45,"tag":163,"props":164,"children":165},"tr",{},[166,172,177],{"type":45,"tag":167,"props":168,"children":169},"th",{},[170],{"type":50,"value":171},"Question",{"type":45,"tag":167,"props":173,"children":174},{},[175],{"type":50,"value":176},"Options",{"type":45,"tag":167,"props":178,"children":179},{},[180],{"type":50,"value":181},"Why It Matters",{"type":45,"tag":183,"props":184,"children":185},"tbody",{},[186,208],{"type":45,"tag":163,"props":187,"children":188},{},[189,198,203],{"type":45,"tag":190,"props":191,"children":192},"td",{},[193],{"type":45,"tag":94,"props":194,"children":195},{},[196],{"type":50,"value":197},"Deployment tier?",{"type":45,"tag":190,"props":199,"children":200},{},[201],{"type":50,"value":202},"Self-Hosted, Advanced, BYOC, Standard, Basic",{"type":45,"tag":190,"props":204,"children":205},{},[206],{"type":50,"value":207},"Completely different provisioning procedures",{"type":45,"tag":163,"props":209,"children":210},{},[211,219,224],{"type":45,"tag":190,"props":212,"children":213},{},[214],{"type":45,"tag":94,"props":215,"children":216},{},[217],{"type":50,"value":218},"Environment?",{"type":45,"tag":190,"props":220,"children":221},{},[222],{"type":50,"value":223},"Production, Staging, Development",{"type":45,"tag":190,"props":225,"children":226},{},[227],{"type":50,"value":228},"Determines hardware sizing and configuration rigor",{"type":45,"tag":148,"props":230,"children":232},{"id":231},"additional-context-by-tier",[233],{"type":50,"value":234},"Additional Context (by tier)",{"type":45,"tag":53,"props":236,"children":237},{},[238],{"type":45,"tag":94,"props":239,"children":240},{},[241],{"type":50,"value":242},"If Self-Hosted:",{"type":45,"tag":155,"props":244,"children":245},{},[246,264],{"type":45,"tag":159,"props":247,"children":248},{},[249],{"type":45,"tag":163,"props":250,"children":251},{},[252,256,260],{"type":45,"tag":167,"props":253,"children":254},{},[255],{"type":50,"value":171},{"type":45,"tag":167,"props":257,"children":258},{},[259],{"type":50,"value":176},{"type":45,"tag":167,"props":261,"children":262},{},[263],{"type":50,"value":181},{"type":45,"tag":183,"props":265,"children":266},{},[267,288,309,330,351,372],{"type":45,"tag":163,"props":268,"children":269},{},[270,278,283],{"type":45,"tag":190,"props":271,"children":272},{},[273],{"type":45,"tag":94,"props":274,"children":275},{},[276],{"type":50,"value":277},"Platform?",{"type":45,"tag":190,"props":279,"children":280},{},[281],{"type":50,"value":282},"Bare metal, VMs (AWS\u002FGCP\u002FAzure), Kubernetes",{"type":45,"tag":190,"props":284,"children":285},{},[286],{"type":50,"value":287},"Changes installation and start commands",{"type":45,"tag":163,"props":289,"children":290},{},[291,299,304],{"type":45,"tag":190,"props":292,"children":293},{},[294],{"type":45,"tag":94,"props":295,"children":296},{},[297],{"type":50,"value":298},"If Kubernetes?",{"type":45,"tag":190,"props":300,"children":301},{},[302],{"type":50,"value":303},"Operator (recommended), Helm, Manual StatefulSet",{"type":45,"tag":190,"props":305,"children":306},{},[307],{"type":50,"value":308},"Determines deployment method",{"type":45,"tag":163,"props":310,"children":311},{},[312,320,325],{"type":45,"tag":190,"props":313,"children":314},{},[315],{"type":45,"tag":94,"props":316,"children":317},{},[318],{"type":50,"value":319},"Node count?",{"type":45,"tag":190,"props":321,"children":322},{},[323],{"type":50,"value":324},"3 (minimum), 5, 9+",{"type":45,"tag":190,"props":326,"children":327},{},[328],{"type":50,"value":329},"Affects topology and replication",{"type":45,"tag":163,"props":331,"children":332},{},[333,341,346],{"type":45,"tag":190,"props":334,"children":335},{},[336],{"type":45,"tag":94,"props":337,"children":338},{},[339],{"type":50,"value":340},"Multi-region?",{"type":45,"tag":190,"props":342,"children":343},{},[344],{"type":50,"value":345},"Yes (how many regions), No",{"type":45,"tag":190,"props":347,"children":348},{},[349],{"type":50,"value":350},"Requires locality flags and topology planning",{"type":45,"tag":163,"props":352,"children":353},{},[354,362,367],{"type":45,"tag":190,"props":355,"children":356},{},[357],{"type":45,"tag":94,"props":358,"children":359},{},[360],{"type":50,"value":361},"Expected workload?",{"type":45,"tag":190,"props":363,"children":364},{},[365],{"type":50,"value":366},"OLTP, mixed OLTP\u002Fanalytics, write-heavy",{"type":45,"tag":190,"props":368,"children":369},{},[370],{"type":50,"value":371},"Affects hardware sizing",{"type":45,"tag":163,"props":373,"children":374},{},[375,383,388],{"type":45,"tag":190,"props":376,"children":377},{},[378],{"type":45,"tag":94,"props":379,"children":380},{},[381],{"type":50,"value":382},"Security requirements?",{"type":45,"tag":190,"props":384,"children":385},{},[386],{"type":50,"value":387},"TLS required, encryption at rest, CMEK",{"type":45,"tag":190,"props":389,"children":390},{},[391],{"type":50,"value":392},"Determines certificate and encryption setup",{"type":45,"tag":53,"props":394,"children":395},{},[396],{"type":45,"tag":94,"props":397,"children":398},{},[399],{"type":50,"value":400},"If Advanced or BYOC:",{"type":45,"tag":155,"props":402,"children":403},{},[404,422],{"type":45,"tag":159,"props":405,"children":406},{},[407],{"type":45,"tag":163,"props":408,"children":409},{},[410,414,418],{"type":45,"tag":167,"props":411,"children":412},{},[413],{"type":50,"value":171},{"type":45,"tag":167,"props":415,"children":416},{},[417],{"type":50,"value":176},{"type":45,"tag":167,"props":419,"children":420},{},[421],{"type":50,"value":181},{"type":45,"tag":183,"props":423,"children":424},{},[425,446,467],{"type":45,"tag":163,"props":426,"children":427},{},[428,436,441],{"type":45,"tag":190,"props":429,"children":430},{},[431],{"type":45,"tag":94,"props":432,"children":433},{},[434],{"type":50,"value":435},"Provisioning method?",{"type":45,"tag":190,"props":437,"children":438},{},[439],{"type":50,"value":440},"Cloud Console, Cloud API, Terraform",{"type":45,"tag":190,"props":442,"children":443},{},[444],{"type":50,"value":445},"Determines procedure",{"type":45,"tag":163,"props":447,"children":448},{},[449,457,462],{"type":45,"tag":190,"props":450,"children":451},{},[452],{"type":45,"tag":94,"props":453,"children":454},{},[455],{"type":50,"value":456},"Cloud provider?",{"type":45,"tag":190,"props":458,"children":459},{},[460],{"type":50,"value":461},"AWS, GCP, Azure",{"type":45,"tag":190,"props":463,"children":464},{},[465],{"type":50,"value":466},"Affects region selection and networking",{"type":45,"tag":163,"props":468,"children":469},{},[470,478,483],{"type":45,"tag":190,"props":471,"children":472},{},[473],{"type":45,"tag":94,"props":474,"children":475},{},[476],{"type":50,"value":477},"Node count and size?",{"type":45,"tag":190,"props":479,"children":480},{},[481],{"type":50,"value":482},"e.g., 3 nodes x 8 vCPUs",{"type":45,"tag":190,"props":484,"children":485},{},[486],{"type":50,"value":487},"Determines initial capacity",{"type":45,"tag":53,"props":489,"children":490},{},[491,496],{"type":45,"tag":94,"props":492,"children":493},{},[494],{"type":50,"value":495},"If Standard:",{"type":50,"value":497}," Gather expected workload size (vCPUs) and storage estimate.",{"type":45,"tag":53,"props":499,"children":500},{},[501,506],{"type":45,"tag":94,"props":502,"children":503},{},[504],{"type":50,"value":505},"If Basic:",{"type":50,"value":507}," Gather expected usage pattern and monthly budget.",{"type":45,"tag":148,"props":509,"children":511},{"id":510},"context-driven-routing",[512],{"type":50,"value":513},"Context-Driven Routing",{"type":45,"tag":155,"props":515,"children":516},{},[517,533],{"type":45,"tag":159,"props":518,"children":519},{},[520],{"type":45,"tag":163,"props":521,"children":522},{},[523,528],{"type":45,"tag":167,"props":524,"children":525},{},[526],{"type":50,"value":527},"Tier",{"type":45,"tag":167,"props":529,"children":530},{},[531],{"type":50,"value":532},"Go To",{"type":45,"tag":183,"props":534,"children":535},{},[536,553,570,587,604],{"type":45,"tag":163,"props":537,"children":538},{},[539,544],{"type":45,"tag":190,"props":540,"children":541},{},[542],{"type":50,"value":543},"Self-Hosted",{"type":45,"tag":190,"props":545,"children":546},{},[547],{"type":45,"tag":102,"props":548,"children":550},{"href":549},"#self-hosted-provisioning",[551],{"type":50,"value":552},"Self-Hosted Provisioning",{"type":45,"tag":163,"props":554,"children":555},{},[556,561],{"type":45,"tag":190,"props":557,"children":558},{},[559],{"type":50,"value":560},"Advanced",{"type":45,"tag":190,"props":562,"children":563},{},[564],{"type":45,"tag":102,"props":565,"children":567},{"href":566},"#advanced-provisioning",[568],{"type":50,"value":569},"Advanced Provisioning",{"type":45,"tag":163,"props":571,"children":572},{},[573,578],{"type":45,"tag":190,"props":574,"children":575},{},[576],{"type":50,"value":577},"BYOC",{"type":45,"tag":190,"props":579,"children":580},{},[581],{"type":45,"tag":102,"props":582,"children":584},{"href":583},"#byoc-provisioning",[585],{"type":50,"value":586},"BYOC Provisioning",{"type":45,"tag":163,"props":588,"children":589},{},[590,595],{"type":45,"tag":190,"props":591,"children":592},{},[593],{"type":50,"value":594},"Standard",{"type":45,"tag":190,"props":596,"children":597},{},[598],{"type":45,"tag":102,"props":599,"children":601},{"href":600},"#standard-provisioning",[602],{"type":50,"value":603},"Standard Provisioning",{"type":45,"tag":163,"props":605,"children":606},{},[607,612],{"type":45,"tag":190,"props":608,"children":609},{},[610],{"type":50,"value":611},"Basic",{"type":45,"tag":190,"props":613,"children":614},{},[615],{"type":45,"tag":102,"props":616,"children":618},{"href":617},"#basic-provisioning",[619],{"type":50,"value":620},"Basic Provisioning",{"type":45,"tag":138,"props":622,"children":623},{},[],{"type":45,"tag":59,"props":625,"children":627},{"id":626},"self-hosted-provisioning",[628],{"type":50,"value":552},{"type":45,"tag":53,"props":630,"children":631},{},[632,637],{"type":45,"tag":94,"props":633,"children":634},{},[635],{"type":50,"value":636},"Applies when:",{"type":50,"value":638}," Tier = Self-Hosted",{"type":45,"tag":148,"props":640,"children":642},{"id":641},"hardware-sizing",[643],{"type":50,"value":644},"Hardware Sizing",{"type":45,"tag":155,"props":646,"children":647},{},[648,669],{"type":45,"tag":159,"props":649,"children":650},{},[651],{"type":45,"tag":163,"props":652,"children":653},{},[654,659,664],{"type":45,"tag":167,"props":655,"children":656},{},[657],{"type":50,"value":658},"Component",{"type":45,"tag":167,"props":660,"children":661},{},[662],{"type":50,"value":663},"Minimum",{"type":45,"tag":167,"props":665,"children":666},{},[667],{"type":50,"value":668},"Production Recommended",{"type":45,"tag":183,"props":670,"children":671},{},[672,690,708,726,744],{"type":45,"tag":163,"props":673,"children":674},{},[675,680,685],{"type":45,"tag":190,"props":676,"children":677},{},[678],{"type":50,"value":679},"Nodes",{"type":45,"tag":190,"props":681,"children":682},{},[683],{"type":50,"value":684},"3",{"type":45,"tag":190,"props":686,"children":687},{},[688],{"type":50,"value":689},"3+ (odd number per failure domain)",{"type":45,"tag":163,"props":691,"children":692},{},[693,698,703],{"type":45,"tag":190,"props":694,"children":695},{},[696],{"type":50,"value":697},"CPU",{"type":45,"tag":190,"props":699,"children":700},{},[701],{"type":50,"value":702},"4 vCPUs (non-burstable)",{"type":45,"tag":190,"props":704,"children":705},{},[706],{"type":50,"value":707},"8+ vCPUs",{"type":45,"tag":163,"props":709,"children":710},{},[711,716,721],{"type":45,"tag":190,"props":712,"children":713},{},[714],{"type":50,"value":715},"RAM",{"type":45,"tag":190,"props":717,"children":718},{},[719],{"type":50,"value":720},"16 GB",{"type":45,"tag":190,"props":722,"children":723},{},[724],{"type":50,"value":725},"32+ GB",{"type":45,"tag":163,"props":727,"children":728},{},[729,734,739],{"type":45,"tag":190,"props":730,"children":731},{},[732],{"type":50,"value":733},"Storage",{"type":45,"tag":190,"props":735,"children":736},{},[737],{"type":50,"value":738},"150 GB SSD",{"type":45,"tag":190,"props":740,"children":741},{},[742],{"type":50,"value":743},"500+ GB NVMe SSD",{"type":45,"tag":163,"props":745,"children":746},{},[747,752,757],{"type":45,"tag":190,"props":748,"children":749},{},[750],{"type":50,"value":751},"Network",{"type":45,"tag":190,"props":753,"children":754},{},[755],{"type":50,"value":756},"1 Gbps",{"type":45,"tag":190,"props":758,"children":759},{},[760],{"type":50,"value":761},"10 Gbps",{"type":45,"tag":53,"props":763,"children":764},{},[765,770,772,779,781],{"type":45,"tag":94,"props":766,"children":767},{},[768],{"type":50,"value":769},"Memory formula:",{"type":50,"value":771}," ",{"type":45,"tag":773,"props":774,"children":776},"code",{"className":775},[],[777],{"type":50,"value":778},"--cache + --max-sql-memory \u003C= 75% of total RAM",{"type":50,"value":780},"\nRecommended: ",{"type":45,"tag":773,"props":782,"children":784},{"className":783},[],[785],{"type":50,"value":786},"--cache=.25 --max-sql-memory=.25",{"type":45,"tag":53,"props":788,"children":789},{},[790,795],{"type":45,"tag":94,"props":791,"children":792},{},[793],{"type":50,"value":794},"Never use:",{"type":50,"value":796}," burstable instances, HDDs, network-attached HDD, shared CPU.",{"type":45,"tag":53,"props":798,"children":799},{},[800,802,808],{"type":50,"value":801},"See ",{"type":45,"tag":102,"props":803,"children":805},{"href":804},"references\u002Fhardware-and-infrastructure.md",[806],{"type":50,"value":807},"hardware-and-infrastructure reference",{"type":50,"value":809}," for cloud instance recommendations.",{"type":45,"tag":148,"props":811,"children":813},{"id":812},"deploy-on-vms-bare-metal",[814],{"type":50,"value":815},"Deploy on VMs \u002F Bare Metal",{"type":45,"tag":53,"props":817,"children":818},{},[819],{"type":45,"tag":94,"props":820,"children":821},{},[822],{"type":50,"value":823},"Step 1: Install CockroachDB on each node",{"type":45,"tag":825,"props":826,"children":831},"pre",{"className":827,"code":828,"language":829,"meta":830,"style":830},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl https:\u002F\u002Fbinaries.cockroachdb.com\u002Fcockroach-v\u003Cversion>.linux-amd64.tgz | tar -xz\ncp cockroach-v\u003Cversion>.linux-amd64\u002Fcockroach \u002Fusr\u002Flocal\u002Fbin\u002F\n","bash","",[832],{"type":45,"tag":773,"props":833,"children":834},{"__ignoreMap":830},[835,895],{"type":45,"tag":836,"props":837,"children":840},"span",{"class":838,"line":839},"line",1,[841,847,853,859,864,870,875,880,885,890],{"type":45,"tag":836,"props":842,"children":844},{"style":843},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[845],{"type":50,"value":846},"curl",{"type":45,"tag":836,"props":848,"children":850},{"style":849},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[851],{"type":50,"value":852}," https:\u002F\u002Fbinaries.cockroachdb.com\u002Fcockroach-v",{"type":45,"tag":836,"props":854,"children":856},{"style":855},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[857],{"type":50,"value":858},"\u003C",{"type":45,"tag":836,"props":860,"children":861},{"style":849},[862],{"type":50,"value":863},"versio",{"type":45,"tag":836,"props":865,"children":867},{"style":866},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[868],{"type":50,"value":869},"n",{"type":45,"tag":836,"props":871,"children":872},{"style":855},[873],{"type":50,"value":874},">",{"type":45,"tag":836,"props":876,"children":877},{"style":849},[878],{"type":50,"value":879},".linux-amd64.tgz",{"type":45,"tag":836,"props":881,"children":882},{"style":855},[883],{"type":50,"value":884}," |",{"type":45,"tag":836,"props":886,"children":887},{"style":843},[888],{"type":50,"value":889}," tar",{"type":45,"tag":836,"props":891,"children":892},{"style":849},[893],{"type":50,"value":894}," -xz\n",{"type":45,"tag":836,"props":896,"children":897},{"class":838,"line":26},[898,903,908,912,916,920,924,929],{"type":45,"tag":836,"props":899,"children":900},{"style":843},[901],{"type":50,"value":902},"cp",{"type":45,"tag":836,"props":904,"children":905},{"style":849},[906],{"type":50,"value":907}," cockroach-v",{"type":45,"tag":836,"props":909,"children":910},{"style":855},[911],{"type":50,"value":858},{"type":45,"tag":836,"props":913,"children":914},{"style":849},[915],{"type":50,"value":863},{"type":45,"tag":836,"props":917,"children":918},{"style":866},[919],{"type":50,"value":869},{"type":45,"tag":836,"props":921,"children":922},{"style":855},[923],{"type":50,"value":874},{"type":45,"tag":836,"props":925,"children":926},{"style":849},[927],{"type":50,"value":928},".linux-amd64\u002Fcockroach",{"type":45,"tag":836,"props":930,"children":931},{"style":849},[932],{"type":50,"value":933}," \u002Fusr\u002Flocal\u002Fbin\u002F\n",{"type":45,"tag":53,"props":935,"children":936},{},[937],{"type":45,"tag":94,"props":938,"children":939},{},[940],{"type":50,"value":941},"Step 2: Generate certificates",{"type":45,"tag":825,"props":943,"children":945},{"className":827,"code":944,"language":829,"meta":830,"style":830},"cockroach cert create-ca --certs-dir=certs --ca-key=my-safe-directory\u002Fca.key\ncockroach cert create-node \u003Cnode-hostname> \u003Cnode-ip> localhost 127.0.0.1 \\\n  --certs-dir=certs --ca-key=my-safe-directory\u002Fca.key\ncockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory\u002Fca.key\n",[946],{"type":45,"tag":773,"props":947,"children":948},{"__ignoreMap":830},[949,977,1045,1057],{"type":45,"tag":836,"props":950,"children":951},{"class":838,"line":839},[952,957,962,967,972],{"type":45,"tag":836,"props":953,"children":954},{"style":843},[955],{"type":50,"value":956},"cockroach",{"type":45,"tag":836,"props":958,"children":959},{"style":849},[960],{"type":50,"value":961}," cert",{"type":45,"tag":836,"props":963,"children":964},{"style":849},[965],{"type":50,"value":966}," create-ca",{"type":45,"tag":836,"props":968,"children":969},{"style":849},[970],{"type":50,"value":971}," --certs-dir=certs",{"type":45,"tag":836,"props":973,"children":974},{"style":849},[975],{"type":50,"value":976}," --ca-key=my-safe-directory\u002Fca.key\n",{"type":45,"tag":836,"props":978,"children":979},{"class":838,"line":26},[980,984,988,993,998,1003,1008,1012,1016,1021,1025,1029,1034,1040],{"type":45,"tag":836,"props":981,"children":982},{"style":843},[983],{"type":50,"value":956},{"type":45,"tag":836,"props":985,"children":986},{"style":849},[987],{"type":50,"value":961},{"type":45,"tag":836,"props":989,"children":990},{"style":849},[991],{"type":50,"value":992}," create-node",{"type":45,"tag":836,"props":994,"children":995},{"style":855},[996],{"type":50,"value":997}," \u003C",{"type":45,"tag":836,"props":999,"children":1000},{"style":849},[1001],{"type":50,"value":1002},"node-hostnam",{"type":45,"tag":836,"props":1004,"children":1005},{"style":866},[1006],{"type":50,"value":1007},"e",{"type":45,"tag":836,"props":1009,"children":1010},{"style":855},[1011],{"type":50,"value":874},{"type":45,"tag":836,"props":1013,"children":1014},{"style":855},[1015],{"type":50,"value":997},{"type":45,"tag":836,"props":1017,"children":1018},{"style":849},[1019],{"type":50,"value":1020},"node-i",{"type":45,"tag":836,"props":1022,"children":1023},{"style":866},[1024],{"type":50,"value":53},{"type":45,"tag":836,"props":1026,"children":1027},{"style":855},[1028],{"type":50,"value":874},{"type":45,"tag":836,"props":1030,"children":1031},{"style":849},[1032],{"type":50,"value":1033}," localhost",{"type":45,"tag":836,"props":1035,"children":1037},{"style":1036},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1038],{"type":50,"value":1039}," 127.0.0.1",{"type":45,"tag":836,"props":1041,"children":1042},{"style":866},[1043],{"type":50,"value":1044}," \\\n",{"type":45,"tag":836,"props":1046,"children":1047},{"class":838,"line":22},[1048,1053],{"type":45,"tag":836,"props":1049,"children":1050},{"style":849},[1051],{"type":50,"value":1052},"  --certs-dir=certs",{"type":45,"tag":836,"props":1054,"children":1055},{"style":849},[1056],{"type":50,"value":976},{"type":45,"tag":836,"props":1058,"children":1060},{"class":838,"line":1059},4,[1061,1065,1069,1074,1079,1083],{"type":45,"tag":836,"props":1062,"children":1063},{"style":843},[1064],{"type":50,"value":956},{"type":45,"tag":836,"props":1066,"children":1067},{"style":849},[1068],{"type":50,"value":961},{"type":45,"tag":836,"props":1070,"children":1071},{"style":849},[1072],{"type":50,"value":1073}," create-client",{"type":45,"tag":836,"props":1075,"children":1076},{"style":849},[1077],{"type":50,"value":1078}," root",{"type":45,"tag":836,"props":1080,"children":1081},{"style":849},[1082],{"type":50,"value":971},{"type":45,"tag":836,"props":1084,"children":1085},{"style":849},[1086],{"type":50,"value":976},{"type":45,"tag":53,"props":1088,"children":1089},{},[1090],{"type":45,"tag":94,"props":1091,"children":1092},{},[1093],{"type":50,"value":1094},"Step 3: Start nodes (repeat on each node)",{"type":45,"tag":825,"props":1096,"children":1098},{"className":827,"code":1097,"language":829,"meta":830,"style":830},"cockroach start \\\n  --certs-dir=certs \\\n  --store=path=\u003Cstore-path> \\\n  --listen-addr=\u003Cnode-address>:26257 \\\n  --http-addr=\u003Cnode-address>:8080 \\\n  --join=\u003Cnode1-address>,\u003Cnode2-address>,\u003Cnode3-address> \\\n  --locality=region=\u003Cregion>,zone=\u003Czone> \\\n  --cache=.25 \\\n  --max-sql-memory=.25 \\\n  --background\n",[1099],{"type":45,"tag":773,"props":1100,"children":1101},{"__ignoreMap":830},[1102,1118,1129,1154,1184,1214,1275,1319,1332,1345],{"type":45,"tag":836,"props":1103,"children":1104},{"class":838,"line":839},[1105,1109,1114],{"type":45,"tag":836,"props":1106,"children":1107},{"style":843},[1108],{"type":50,"value":956},{"type":45,"tag":836,"props":1110,"children":1111},{"style":849},[1112],{"type":50,"value":1113}," start",{"type":45,"tag":836,"props":1115,"children":1116},{"style":866},[1117],{"type":50,"value":1044},{"type":45,"tag":836,"props":1119,"children":1120},{"class":838,"line":26},[1121,1125],{"type":45,"tag":836,"props":1122,"children":1123},{"style":849},[1124],{"type":50,"value":1052},{"type":45,"tag":836,"props":1126,"children":1127},{"style":866},[1128],{"type":50,"value":1044},{"type":45,"tag":836,"props":1130,"children":1131},{"class":838,"line":22},[1132,1137,1141,1146,1150],{"type":45,"tag":836,"props":1133,"children":1134},{"style":849},[1135],{"type":50,"value":1136},"  --store=path=",{"type":45,"tag":836,"props":1138,"children":1139},{"style":855},[1140],{"type":50,"value":858},{"type":45,"tag":836,"props":1142,"children":1143},{"style":849},[1144],{"type":50,"value":1145},"store-path",{"type":45,"tag":836,"props":1147,"children":1148},{"style":855},[1149],{"type":50,"value":874},{"type":45,"tag":836,"props":1151,"children":1152},{"style":866},[1153],{"type":50,"value":1044},{"type":45,"tag":836,"props":1155,"children":1156},{"class":838,"line":1059},[1157,1162,1166,1171,1175,1180],{"type":45,"tag":836,"props":1158,"children":1159},{"style":849},[1160],{"type":50,"value":1161},"  --listen-addr=",{"type":45,"tag":836,"props":1163,"children":1164},{"style":855},[1165],{"type":50,"value":858},{"type":45,"tag":836,"props":1167,"children":1168},{"style":849},[1169],{"type":50,"value":1170},"node-address",{"type":45,"tag":836,"props":1172,"children":1173},{"style":855},[1174],{"type":50,"value":874},{"type":45,"tag":836,"props":1176,"children":1177},{"style":849},[1178],{"type":50,"value":1179},":26257",{"type":45,"tag":836,"props":1181,"children":1182},{"style":866},[1183],{"type":50,"value":1044},{"type":45,"tag":836,"props":1185,"children":1187},{"class":838,"line":1186},5,[1188,1193,1197,1201,1205,1210],{"type":45,"tag":836,"props":1189,"children":1190},{"style":849},[1191],{"type":50,"value":1192},"  --http-addr=",{"type":45,"tag":836,"props":1194,"children":1195},{"style":855},[1196],{"type":50,"value":858},{"type":45,"tag":836,"props":1198,"children":1199},{"style":849},[1200],{"type":50,"value":1170},{"type":45,"tag":836,"props":1202,"children":1203},{"style":855},[1204],{"type":50,"value":874},{"type":45,"tag":836,"props":1206,"children":1207},{"style":849},[1208],{"type":50,"value":1209},":8080",{"type":45,"tag":836,"props":1211,"children":1212},{"style":866},[1213],{"type":50,"value":1044},{"type":45,"tag":836,"props":1215,"children":1217},{"class":838,"line":1216},6,[1218,1223,1227,1232,1236,1241,1245,1250,1254,1258,1262,1267,1271],{"type":45,"tag":836,"props":1219,"children":1220},{"style":849},[1221],{"type":50,"value":1222},"  --join=",{"type":45,"tag":836,"props":1224,"children":1225},{"style":855},[1226],{"type":50,"value":858},{"type":45,"tag":836,"props":1228,"children":1229},{"style":849},[1230],{"type":50,"value":1231},"node1-address",{"type":45,"tag":836,"props":1233,"children":1234},{"style":855},[1235],{"type":50,"value":874},{"type":45,"tag":836,"props":1237,"children":1238},{"style":849},[1239],{"type":50,"value":1240},",",{"type":45,"tag":836,"props":1242,"children":1243},{"style":855},[1244],{"type":50,"value":858},{"type":45,"tag":836,"props":1246,"children":1247},{"style":849},[1248],{"type":50,"value":1249},"node2-address",{"type":45,"tag":836,"props":1251,"children":1252},{"style":855},[1253],{"type":50,"value":874},{"type":45,"tag":836,"props":1255,"children":1256},{"style":849},[1257],{"type":50,"value":1240},{"type":45,"tag":836,"props":1259,"children":1260},{"style":855},[1261],{"type":50,"value":858},{"type":45,"tag":836,"props":1263,"children":1264},{"style":849},[1265],{"type":50,"value":1266},"node3-address",{"type":45,"tag":836,"props":1268,"children":1269},{"style":855},[1270],{"type":50,"value":874},{"type":45,"tag":836,"props":1272,"children":1273},{"style":866},[1274],{"type":50,"value":1044},{"type":45,"tag":836,"props":1276,"children":1278},{"class":838,"line":1277},7,[1279,1284,1288,1293,1297,1302,1306,1311,1315],{"type":45,"tag":836,"props":1280,"children":1281},{"style":849},[1282],{"type":50,"value":1283},"  --locality=region=",{"type":45,"tag":836,"props":1285,"children":1286},{"style":855},[1287],{"type":50,"value":858},{"type":45,"tag":836,"props":1289,"children":1290},{"style":849},[1291],{"type":50,"value":1292},"region",{"type":45,"tag":836,"props":1294,"children":1295},{"style":855},[1296],{"type":50,"value":874},{"type":45,"tag":836,"props":1298,"children":1299},{"style":849},[1300],{"type":50,"value":1301},",zone=",{"type":45,"tag":836,"props":1303,"children":1304},{"style":855},[1305],{"type":50,"value":858},{"type":45,"tag":836,"props":1307,"children":1308},{"style":849},[1309],{"type":50,"value":1310},"zone",{"type":45,"tag":836,"props":1312,"children":1313},{"style":855},[1314],{"type":50,"value":874},{"type":45,"tag":836,"props":1316,"children":1317},{"style":866},[1318],{"type":50,"value":1044},{"type":45,"tag":836,"props":1320,"children":1322},{"class":838,"line":1321},8,[1323,1328],{"type":45,"tag":836,"props":1324,"children":1325},{"style":849},[1326],{"type":50,"value":1327},"  --cache=.25",{"type":45,"tag":836,"props":1329,"children":1330},{"style":866},[1331],{"type":50,"value":1044},{"type":45,"tag":836,"props":1333,"children":1335},{"class":838,"line":1334},9,[1336,1341],{"type":45,"tag":836,"props":1337,"children":1338},{"style":849},[1339],{"type":50,"value":1340},"  --max-sql-memory=.25",{"type":45,"tag":836,"props":1342,"children":1343},{"style":866},[1344],{"type":50,"value":1044},{"type":45,"tag":836,"props":1346,"children":1348},{"class":838,"line":1347},10,[1349],{"type":45,"tag":836,"props":1350,"children":1351},{"style":849},[1352],{"type":50,"value":1353},"  --background\n",{"type":45,"tag":53,"props":1355,"children":1356},{},[1357],{"type":45,"tag":94,"props":1358,"children":1359},{},[1360],{"type":50,"value":1361},"Step 4: Initialize cluster (once, from any node)",{"type":45,"tag":825,"props":1363,"children":1365},{"className":827,"code":1364,"language":829,"meta":830,"style":830},"cockroach init --certs-dir=certs --host=\u003Cany-node-address>\n",[1366],{"type":45,"tag":773,"props":1367,"children":1368},{"__ignoreMap":830},[1369],{"type":45,"tag":836,"props":1370,"children":1371},{"class":838,"line":839},[1372,1376,1381,1385,1390,1394,1399],{"type":45,"tag":836,"props":1373,"children":1374},{"style":843},[1375],{"type":50,"value":956},{"type":45,"tag":836,"props":1377,"children":1378},{"style":849},[1379],{"type":50,"value":1380}," init",{"type":45,"tag":836,"props":1382,"children":1383},{"style":849},[1384],{"type":50,"value":971},{"type":45,"tag":836,"props":1386,"children":1387},{"style":849},[1388],{"type":50,"value":1389}," --host=",{"type":45,"tag":836,"props":1391,"children":1392},{"style":855},[1393],{"type":50,"value":858},{"type":45,"tag":836,"props":1395,"children":1396},{"style":849},[1397],{"type":50,"value":1398},"any-node-address",{"type":45,"tag":836,"props":1400,"children":1401},{"style":855},[1402],{"type":50,"value":1403},">\n",{"type":45,"tag":53,"props":1405,"children":1406},{},[1407],{"type":45,"tag":94,"props":1408,"children":1409},{},[1410],{"type":50,"value":1411},"Step 5: Verify",{"type":45,"tag":825,"props":1413,"children":1415},{"className":827,"code":1414,"language":829,"meta":830,"style":830},"cockroach node status --certs-dir=certs --host=\u003Cany-node-address>\n",[1416],{"type":45,"tag":773,"props":1417,"children":1418},{"__ignoreMap":830},[1419],{"type":45,"tag":836,"props":1420,"children":1421},{"class":838,"line":839},[1422,1426,1431,1436,1440,1444,1448,1452],{"type":45,"tag":836,"props":1423,"children":1424},{"style":843},[1425],{"type":50,"value":956},{"type":45,"tag":836,"props":1427,"children":1428},{"style":849},[1429],{"type":50,"value":1430}," node",{"type":45,"tag":836,"props":1432,"children":1433},{"style":849},[1434],{"type":50,"value":1435}," status",{"type":45,"tag":836,"props":1437,"children":1438},{"style":849},[1439],{"type":50,"value":971},{"type":45,"tag":836,"props":1441,"children":1442},{"style":849},[1443],{"type":50,"value":1389},{"type":45,"tag":836,"props":1445,"children":1446},{"style":855},[1447],{"type":50,"value":858},{"type":45,"tag":836,"props":1449,"children":1450},{"style":849},[1451],{"type":50,"value":1398},{"type":45,"tag":836,"props":1453,"children":1454},{"style":855},[1455],{"type":50,"value":1403},{"type":45,"tag":53,"props":1457,"children":1458},{},[1459,1461,1467,1469,1475],{"type":50,"value":1460},"Every node started in step 3 should appear with ",{"type":45,"tag":773,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":50,"value":1466},"is_live = true",{"type":50,"value":1468}," and the expected ",{"type":45,"tag":773,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":50,"value":1474},"locality",{"type":50,"value":136},{"type":45,"tag":148,"props":1477,"children":1479},{"id":1478},"deploy-on-kubernetes",[1480],{"type":50,"value":1481},"Deploy on Kubernetes",{"type":45,"tag":53,"props":1483,"children":1484},{},[1485],{"type":45,"tag":94,"props":1486,"children":1487},{},[1488],{"type":50,"value":1489},"Operator (recommended):",{"type":45,"tag":825,"props":1491,"children":1493},{"className":827,"code":1492,"language":829,"meta":830,"style":830},"kubectl apply -f https:\u002F\u002Fraw.githubusercontent.com\u002Fcockroachdb\u002Fcockroach-operator\u002Fmaster\u002Finstall\u002Fcrds.yaml\nkubectl apply -f https:\u002F\u002Fraw.githubusercontent.com\u002Fcockroachdb\u002Fcockroach-operator\u002Fmaster\u002Finstall\u002Foperator.yaml\n# Apply CrdbCluster manifest with node count, resources, and storage\n",[1494],{"type":45,"tag":773,"props":1495,"children":1496},{"__ignoreMap":830},[1497,1520,1540],{"type":45,"tag":836,"props":1498,"children":1499},{"class":838,"line":839},[1500,1505,1510,1515],{"type":45,"tag":836,"props":1501,"children":1502},{"style":843},[1503],{"type":50,"value":1504},"kubectl",{"type":45,"tag":836,"props":1506,"children":1507},{"style":849},[1508],{"type":50,"value":1509}," apply",{"type":45,"tag":836,"props":1511,"children":1512},{"style":849},[1513],{"type":50,"value":1514}," -f",{"type":45,"tag":836,"props":1516,"children":1517},{"style":849},[1518],{"type":50,"value":1519}," https:\u002F\u002Fraw.githubusercontent.com\u002Fcockroachdb\u002Fcockroach-operator\u002Fmaster\u002Finstall\u002Fcrds.yaml\n",{"type":45,"tag":836,"props":1521,"children":1522},{"class":838,"line":26},[1523,1527,1531,1535],{"type":45,"tag":836,"props":1524,"children":1525},{"style":843},[1526],{"type":50,"value":1504},{"type":45,"tag":836,"props":1528,"children":1529},{"style":849},[1530],{"type":50,"value":1509},{"type":45,"tag":836,"props":1532,"children":1533},{"style":849},[1534],{"type":50,"value":1514},{"type":45,"tag":836,"props":1536,"children":1537},{"style":849},[1538],{"type":50,"value":1539}," https:\u002F\u002Fraw.githubusercontent.com\u002Fcockroachdb\u002Fcockroach-operator\u002Fmaster\u002Finstall\u002Foperator.yaml\n",{"type":45,"tag":836,"props":1541,"children":1542},{"class":838,"line":22},[1543],{"type":45,"tag":836,"props":1544,"children":1546},{"style":1545},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1547],{"type":50,"value":1548},"# Apply CrdbCluster manifest with node count, resources, and storage\n",{"type":45,"tag":53,"props":1550,"children":1551},{},[1552],{"type":45,"tag":94,"props":1553,"children":1554},{},[1555],{"type":50,"value":1556},"Helm:",{"type":45,"tag":825,"props":1558,"children":1560},{"className":827,"code":1559,"language":829,"meta":830,"style":830},"helm repo add cockroachdb https:\u002F\u002Fcharts.cockroachdb.com\u002F\nhelm install cockroachdb cockroachdb\u002Fcockroachdb \\\n  --set statefulset.replicas=3 \\\n  --set storage.persistentVolume.size=100Gi\n",[1561],{"type":45,"tag":773,"props":1562,"children":1563},{"__ignoreMap":830},[1564,1592,1617,1638],{"type":45,"tag":836,"props":1565,"children":1566},{"class":838,"line":839},[1567,1572,1577,1582,1587],{"type":45,"tag":836,"props":1568,"children":1569},{"style":843},[1570],{"type":50,"value":1571},"helm",{"type":45,"tag":836,"props":1573,"children":1574},{"style":849},[1575],{"type":50,"value":1576}," repo",{"type":45,"tag":836,"props":1578,"children":1579},{"style":849},[1580],{"type":50,"value":1581}," add",{"type":45,"tag":836,"props":1583,"children":1584},{"style":849},[1585],{"type":50,"value":1586}," cockroachdb",{"type":45,"tag":836,"props":1588,"children":1589},{"style":849},[1590],{"type":50,"value":1591}," https:\u002F\u002Fcharts.cockroachdb.com\u002F\n",{"type":45,"tag":836,"props":1593,"children":1594},{"class":838,"line":26},[1595,1599,1604,1608,1613],{"type":45,"tag":836,"props":1596,"children":1597},{"style":843},[1598],{"type":50,"value":1571},{"type":45,"tag":836,"props":1600,"children":1601},{"style":849},[1602],{"type":50,"value":1603}," install",{"type":45,"tag":836,"props":1605,"children":1606},{"style":849},[1607],{"type":50,"value":1586},{"type":45,"tag":836,"props":1609,"children":1610},{"style":849},[1611],{"type":50,"value":1612}," cockroachdb\u002Fcockroachdb",{"type":45,"tag":836,"props":1614,"children":1615},{"style":866},[1616],{"type":50,"value":1044},{"type":45,"tag":836,"props":1618,"children":1619},{"class":838,"line":22},[1620,1625,1630,1634],{"type":45,"tag":836,"props":1621,"children":1622},{"style":849},[1623],{"type":50,"value":1624},"  --set",{"type":45,"tag":836,"props":1626,"children":1627},{"style":849},[1628],{"type":50,"value":1629}," statefulset.replicas=",{"type":45,"tag":836,"props":1631,"children":1632},{"style":1036},[1633],{"type":50,"value":684},{"type":45,"tag":836,"props":1635,"children":1636},{"style":866},[1637],{"type":50,"value":1044},{"type":45,"tag":836,"props":1639,"children":1640},{"class":838,"line":1059},[1641,1645],{"type":45,"tag":836,"props":1642,"children":1643},{"style":849},[1644],{"type":50,"value":1624},{"type":45,"tag":836,"props":1646,"children":1647},{"style":849},[1648],{"type":50,"value":1649}," storage.persistentVolume.size=100Gi\n",{"type":45,"tag":148,"props":1651,"children":1653},{"id":1652},"production-configuration-self-hosted",[1654],{"type":50,"value":1655},"Production Configuration (Self-Hosted)",{"type":45,"tag":53,"props":1657,"children":1658},{},[1659],{"type":50,"value":1660},"After cluster is running, apply production settings:",{"type":45,"tag":825,"props":1662,"children":1666},{"className":1663,"code":1664,"language":1665,"meta":830,"style":830},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- Enable critical features\nSET CLUSTER SETTING kv.rangefeed.enabled = true;\nSET CLUSTER SETTING sql.stats.automatic_collection.enabled = true;\nSET CLUSTER SETTING admission.kv.enabled = true;\n\n-- Set timeouts\nSET CLUSTER SETTING sql.defaults.idle_in_transaction_session_timeout = '300s';\nSET CLUSTER SETTING sql.defaults.statement_timeout = '30s';\n\n-- Install enterprise license (if applicable)\nSET CLUSTER SETTING cluster.organization = '\u003Corg-name>';\nSET CLUSTER SETTING enterprise.license = '\u003Clicense-key>';\n","sql",[1667],{"type":45,"tag":773,"props":1668,"children":1669},{"__ignoreMap":830},[1670,1678,1686,1694,1702,1711,1719,1727,1735,1742,1750,1759],{"type":45,"tag":836,"props":1671,"children":1672},{"class":838,"line":839},[1673],{"type":45,"tag":836,"props":1674,"children":1675},{},[1676],{"type":50,"value":1677},"-- Enable critical features\n",{"type":45,"tag":836,"props":1679,"children":1680},{"class":838,"line":26},[1681],{"type":45,"tag":836,"props":1682,"children":1683},{},[1684],{"type":50,"value":1685},"SET CLUSTER SETTING kv.rangefeed.enabled = true;\n",{"type":45,"tag":836,"props":1687,"children":1688},{"class":838,"line":22},[1689],{"type":45,"tag":836,"props":1690,"children":1691},{},[1692],{"type":50,"value":1693},"SET CLUSTER SETTING sql.stats.automatic_collection.enabled = true;\n",{"type":45,"tag":836,"props":1695,"children":1696},{"class":838,"line":1059},[1697],{"type":45,"tag":836,"props":1698,"children":1699},{},[1700],{"type":50,"value":1701},"SET CLUSTER SETTING admission.kv.enabled = true;\n",{"type":45,"tag":836,"props":1703,"children":1704},{"class":838,"line":1186},[1705],{"type":45,"tag":836,"props":1706,"children":1708},{"emptyLinePlaceholder":1707},true,[1709],{"type":50,"value":1710},"\n",{"type":45,"tag":836,"props":1712,"children":1713},{"class":838,"line":1216},[1714],{"type":45,"tag":836,"props":1715,"children":1716},{},[1717],{"type":50,"value":1718},"-- Set timeouts\n",{"type":45,"tag":836,"props":1720,"children":1721},{"class":838,"line":1277},[1722],{"type":45,"tag":836,"props":1723,"children":1724},{},[1725],{"type":50,"value":1726},"SET CLUSTER SETTING sql.defaults.idle_in_transaction_session_timeout = '300s';\n",{"type":45,"tag":836,"props":1728,"children":1729},{"class":838,"line":1321},[1730],{"type":45,"tag":836,"props":1731,"children":1732},{},[1733],{"type":50,"value":1734},"SET CLUSTER SETTING sql.defaults.statement_timeout = '30s';\n",{"type":45,"tag":836,"props":1736,"children":1737},{"class":838,"line":1334},[1738],{"type":45,"tag":836,"props":1739,"children":1740},{"emptyLinePlaceholder":1707},[1741],{"type":50,"value":1710},{"type":45,"tag":836,"props":1743,"children":1744},{"class":838,"line":1347},[1745],{"type":45,"tag":836,"props":1746,"children":1747},{},[1748],{"type":50,"value":1749},"-- Install enterprise license (if applicable)\n",{"type":45,"tag":836,"props":1751,"children":1753},{"class":838,"line":1752},11,[1754],{"type":45,"tag":836,"props":1755,"children":1756},{},[1757],{"type":50,"value":1758},"SET CLUSTER SETTING cluster.organization = '\u003Corg-name>';\n",{"type":45,"tag":836,"props":1760,"children":1762},{"class":838,"line":1761},12,[1763],{"type":45,"tag":836,"props":1764,"children":1765},{},[1766],{"type":50,"value":1767},"SET CLUSTER SETTING enterprise.license = '\u003Clicense-key>';\n",{"type":45,"tag":53,"props":1769,"children":1770},{},[1771],{"type":45,"tag":94,"props":1772,"children":1773},{},[1774],{"type":50,"value":1775},"Create ballast files on each node:",{"type":45,"tag":825,"props":1777,"children":1779},{"className":827,"code":1778,"language":829,"meta":830,"style":830},"cockroach debug ballast \u003Cstore-path>\u002Fauxiliary\u002FEMERGENCY_BALLAST --size=1GiB\n",[1780],{"type":45,"tag":773,"props":1781,"children":1782},{"__ignoreMap":830},[1783],{"type":45,"tag":836,"props":1784,"children":1785},{"class":838,"line":839},[1786,1790,1795,1800,1804,1809,1814,1818,1823],{"type":45,"tag":836,"props":1787,"children":1788},{"style":843},[1789],{"type":50,"value":956},{"type":45,"tag":836,"props":1791,"children":1792},{"style":849},[1793],{"type":50,"value":1794}," debug",{"type":45,"tag":836,"props":1796,"children":1797},{"style":849},[1798],{"type":50,"value":1799}," ballast",{"type":45,"tag":836,"props":1801,"children":1802},{"style":855},[1803],{"type":50,"value":997},{"type":45,"tag":836,"props":1805,"children":1806},{"style":849},[1807],{"type":50,"value":1808},"store-pat",{"type":45,"tag":836,"props":1810,"children":1811},{"style":866},[1812],{"type":50,"value":1813},"h",{"type":45,"tag":836,"props":1815,"children":1816},{"style":855},[1817],{"type":50,"value":874},{"type":45,"tag":836,"props":1819,"children":1820},{"style":849},[1821],{"type":50,"value":1822},"\u002Fauxiliary\u002FEMERGENCY_BALLAST",{"type":45,"tag":836,"props":1824,"children":1825},{"style":849},[1826],{"type":50,"value":1827}," --size=1GiB\n",{"type":45,"tag":53,"props":1829,"children":1830},{},[1831,1836,1838,1844],{"type":45,"tag":94,"props":1832,"children":1833},{},[1834],{"type":50,"value":1835},"Configure load balancer:",{"type":50,"value":1837}," Point to all nodes with health check on ",{"type":45,"tag":773,"props":1839,"children":1841},{"className":1840},[],[1842],{"type":50,"value":1843},"\u002Fhealth?ready=1",{"type":50,"value":136},{"type":45,"tag":53,"props":1846,"children":1847},{},[1848,1849,1855],{"type":50,"value":801},{"type":45,"tag":102,"props":1850,"children":1852},{"href":1851},"references\u002Fproduction-deployment-checklist.md",[1853],{"type":50,"value":1854},"production-deployment-checklist reference",{"type":50,"value":1856}," for the full go-live checklist.",{"type":45,"tag":138,"props":1858,"children":1859},{},[],{"type":45,"tag":59,"props":1861,"children":1863},{"id":1862},"advanced-provisioning",[1864],{"type":50,"value":569},{"type":45,"tag":53,"props":1866,"children":1867},{},[1868,1872],{"type":45,"tag":94,"props":1869,"children":1870},{},[1871],{"type":50,"value":636},{"type":50,"value":1873}," Tier = Advanced",{"type":45,"tag":148,"props":1875,"children":1877},{"id":1876},"via-cloud-console",[1878],{"type":50,"value":1879},"Via Cloud Console",{"type":45,"tag":1881,"props":1882,"children":1883},"ol",{},[1884,1892,1903,1908,1913,1918,1923],{"type":45,"tag":70,"props":1885,"children":1886},{},[1887],{"type":45,"tag":94,"props":1888,"children":1889},{},[1890],{"type":50,"value":1891},"cockroachlabs.cloud → Create Cluster",{"type":45,"tag":70,"props":1893,"children":1894},{},[1895,1897,1901],{"type":50,"value":1896},"Select ",{"type":45,"tag":94,"props":1898,"children":1899},{},[1900],{"type":50,"value":560},{"type":50,"value":1902}," plan",{"type":45,"tag":70,"props":1904,"children":1905},{},[1906],{"type":50,"value":1907},"Choose cloud provider (AWS, GCP, Azure)",{"type":45,"tag":70,"props":1909,"children":1910},{},[1911],{"type":50,"value":1912},"Select region(s)",{"type":45,"tag":70,"props":1914,"children":1915},{},[1916],{"type":50,"value":1917},"Configure node count (minimum 3) and machine size (vCPUs per node)",{"type":45,"tag":70,"props":1919,"children":1920},{},[1921],{"type":50,"value":1922},"Configure storage",{"type":45,"tag":70,"props":1924,"children":1925},{},[1926],{"type":50,"value":1927},"Review and create",{"type":45,"tag":148,"props":1929,"children":1931},{"id":1930},"via-cloud-api",[1932],{"type":50,"value":1933},"Via Cloud API",{"type":45,"tag":825,"props":1935,"children":1937},{"className":827,"code":1936,"language":829,"meta":830,"style":830},"curl -X POST -H \"Authorization: Bearer $COCKROACH_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"\u003Ccluster-name>\",\n    \"provider\": \"AWS\",\n    \"spec\": {\n      \"dedicated\": {\n        \"region_nodes\": {\"us-east-1\": 3},\n        \"machine_type\": \"m6i.xlarge\",\n        \"storage_gib\": 150\n      }\n    }\n  }' \\\n  \"https:\u002F\u002Fcockroachlabs.cloud\u002Fapi\u002Fv1\u002Fclusters\"\n",[1938],{"type":45,"tag":773,"props":1939,"children":1940},{"__ignoreMap":830},[1941,1987,2012,2030,2038,2046,2054,2062,2070,2078,2086,2094,2102,2120],{"type":45,"tag":836,"props":1942,"children":1943},{"class":838,"line":839},[1944,1948,1953,1958,1963,1968,1973,1978,1983],{"type":45,"tag":836,"props":1945,"children":1946},{"style":843},[1947],{"type":50,"value":846},{"type":45,"tag":836,"props":1949,"children":1950},{"style":849},[1951],{"type":50,"value":1952}," -X",{"type":45,"tag":836,"props":1954,"children":1955},{"style":849},[1956],{"type":50,"value":1957}," POST",{"type":45,"tag":836,"props":1959,"children":1960},{"style":849},[1961],{"type":50,"value":1962}," -H",{"type":45,"tag":836,"props":1964,"children":1965},{"style":855},[1966],{"type":50,"value":1967}," \"",{"type":45,"tag":836,"props":1969,"children":1970},{"style":849},[1971],{"type":50,"value":1972},"Authorization: Bearer ",{"type":45,"tag":836,"props":1974,"children":1975},{"style":866},[1976],{"type":50,"value":1977},"$COCKROACH_API_KEY",{"type":45,"tag":836,"props":1979,"children":1980},{"style":855},[1981],{"type":50,"value":1982},"\"",{"type":45,"tag":836,"props":1984,"children":1985},{"style":866},[1986],{"type":50,"value":1044},{"type":45,"tag":836,"props":1988,"children":1989},{"class":838,"line":26},[1990,1995,1999,2004,2008],{"type":45,"tag":836,"props":1991,"children":1992},{"style":849},[1993],{"type":50,"value":1994},"  -H",{"type":45,"tag":836,"props":1996,"children":1997},{"style":855},[1998],{"type":50,"value":1967},{"type":45,"tag":836,"props":2000,"children":2001},{"style":849},[2002],{"type":50,"value":2003},"Content-Type: application\u002Fjson",{"type":45,"tag":836,"props":2005,"children":2006},{"style":855},[2007],{"type":50,"value":1982},{"type":45,"tag":836,"props":2009,"children":2010},{"style":866},[2011],{"type":50,"value":1044},{"type":45,"tag":836,"props":2013,"children":2014},{"class":838,"line":22},[2015,2020,2025],{"type":45,"tag":836,"props":2016,"children":2017},{"style":849},[2018],{"type":50,"value":2019},"  -d",{"type":45,"tag":836,"props":2021,"children":2022},{"style":855},[2023],{"type":50,"value":2024}," '",{"type":45,"tag":836,"props":2026,"children":2027},{"style":849},[2028],{"type":50,"value":2029},"{\n",{"type":45,"tag":836,"props":2031,"children":2032},{"class":838,"line":1059},[2033],{"type":45,"tag":836,"props":2034,"children":2035},{"style":849},[2036],{"type":50,"value":2037},"    \"name\": \"\u003Ccluster-name>\",\n",{"type":45,"tag":836,"props":2039,"children":2040},{"class":838,"line":1186},[2041],{"type":45,"tag":836,"props":2042,"children":2043},{"style":849},[2044],{"type":50,"value":2045},"    \"provider\": \"AWS\",\n",{"type":45,"tag":836,"props":2047,"children":2048},{"class":838,"line":1216},[2049],{"type":45,"tag":836,"props":2050,"children":2051},{"style":849},[2052],{"type":50,"value":2053},"    \"spec\": {\n",{"type":45,"tag":836,"props":2055,"children":2056},{"class":838,"line":1277},[2057],{"type":45,"tag":836,"props":2058,"children":2059},{"style":849},[2060],{"type":50,"value":2061},"      \"dedicated\": {\n",{"type":45,"tag":836,"props":2063,"children":2064},{"class":838,"line":1321},[2065],{"type":45,"tag":836,"props":2066,"children":2067},{"style":849},[2068],{"type":50,"value":2069},"        \"region_nodes\": {\"us-east-1\": 3},\n",{"type":45,"tag":836,"props":2071,"children":2072},{"class":838,"line":1334},[2073],{"type":45,"tag":836,"props":2074,"children":2075},{"style":849},[2076],{"type":50,"value":2077},"        \"machine_type\": \"m6i.xlarge\",\n",{"type":45,"tag":836,"props":2079,"children":2080},{"class":838,"line":1347},[2081],{"type":45,"tag":836,"props":2082,"children":2083},{"style":849},[2084],{"type":50,"value":2085},"        \"storage_gib\": 150\n",{"type":45,"tag":836,"props":2087,"children":2088},{"class":838,"line":1752},[2089],{"type":45,"tag":836,"props":2090,"children":2091},{"style":849},[2092],{"type":50,"value":2093},"      }\n",{"type":45,"tag":836,"props":2095,"children":2096},{"class":838,"line":1761},[2097],{"type":45,"tag":836,"props":2098,"children":2099},{"style":849},[2100],{"type":50,"value":2101},"    }\n",{"type":45,"tag":836,"props":2103,"children":2105},{"class":838,"line":2104},13,[2106,2111,2116],{"type":45,"tag":836,"props":2107,"children":2108},{"style":849},[2109],{"type":50,"value":2110},"  }",{"type":45,"tag":836,"props":2112,"children":2113},{"style":855},[2114],{"type":50,"value":2115},"'",{"type":45,"tag":836,"props":2117,"children":2118},{"style":866},[2119],{"type":50,"value":1044},{"type":45,"tag":836,"props":2121,"children":2123},{"class":838,"line":2122},14,[2124,2129,2134],{"type":45,"tag":836,"props":2125,"children":2126},{"style":855},[2127],{"type":50,"value":2128},"  \"",{"type":45,"tag":836,"props":2130,"children":2131},{"style":849},[2132],{"type":50,"value":2133},"https:\u002F\u002Fcockroachlabs.cloud\u002Fapi\u002Fv1\u002Fclusters",{"type":45,"tag":836,"props":2135,"children":2136},{"style":855},[2137],{"type":50,"value":2138},"\"\n",{"type":45,"tag":148,"props":2140,"children":2142},{"id":2141},"via-terraform",[2143],{"type":50,"value":2144},"Via Terraform",{"type":45,"tag":825,"props":2146,"children":2150},{"className":2147,"code":2148,"language":2149,"meta":830,"style":830},"language-hcl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","resource \"cockroach_cluster\" \"production\" {\n  name           = \"production\"\n  cloud_provider = \"AWS\"\n\n  dedicated {\n    num_virtual_cpus = 8\n    storage_gib      = 150\n    num_nodes        = 3\n  }\n\n  regions = [{\n    name = \"us-east-1\"\n  }]\n}\n","hcl",[2151],{"type":45,"tag":773,"props":2152,"children":2153},{"__ignoreMap":830},[2154,2162,2170,2178,2185,2193,2201,2209,2217,2225,2232,2240,2248,2256],{"type":45,"tag":836,"props":2155,"children":2156},{"class":838,"line":839},[2157],{"type":45,"tag":836,"props":2158,"children":2159},{},[2160],{"type":50,"value":2161},"resource \"cockroach_cluster\" \"production\" {\n",{"type":45,"tag":836,"props":2163,"children":2164},{"class":838,"line":26},[2165],{"type":45,"tag":836,"props":2166,"children":2167},{},[2168],{"type":50,"value":2169},"  name           = \"production\"\n",{"type":45,"tag":836,"props":2171,"children":2172},{"class":838,"line":22},[2173],{"type":45,"tag":836,"props":2174,"children":2175},{},[2176],{"type":50,"value":2177},"  cloud_provider = \"AWS\"\n",{"type":45,"tag":836,"props":2179,"children":2180},{"class":838,"line":1059},[2181],{"type":45,"tag":836,"props":2182,"children":2183},{"emptyLinePlaceholder":1707},[2184],{"type":50,"value":1710},{"type":45,"tag":836,"props":2186,"children":2187},{"class":838,"line":1186},[2188],{"type":45,"tag":836,"props":2189,"children":2190},{},[2191],{"type":50,"value":2192},"  dedicated {\n",{"type":45,"tag":836,"props":2194,"children":2195},{"class":838,"line":1216},[2196],{"type":45,"tag":836,"props":2197,"children":2198},{},[2199],{"type":50,"value":2200},"    num_virtual_cpus = 8\n",{"type":45,"tag":836,"props":2202,"children":2203},{"class":838,"line":1277},[2204],{"type":45,"tag":836,"props":2205,"children":2206},{},[2207],{"type":50,"value":2208},"    storage_gib      = 150\n",{"type":45,"tag":836,"props":2210,"children":2211},{"class":838,"line":1321},[2212],{"type":45,"tag":836,"props":2213,"children":2214},{},[2215],{"type":50,"value":2216},"    num_nodes        = 3\n",{"type":45,"tag":836,"props":2218,"children":2219},{"class":838,"line":1334},[2220],{"type":45,"tag":836,"props":2221,"children":2222},{},[2223],{"type":50,"value":2224},"  }\n",{"type":45,"tag":836,"props":2226,"children":2227},{"class":838,"line":1347},[2228],{"type":45,"tag":836,"props":2229,"children":2230},{"emptyLinePlaceholder":1707},[2231],{"type":50,"value":1710},{"type":45,"tag":836,"props":2233,"children":2234},{"class":838,"line":1752},[2235],{"type":45,"tag":836,"props":2236,"children":2237},{},[2238],{"type":50,"value":2239},"  regions = [{\n",{"type":45,"tag":836,"props":2241,"children":2242},{"class":838,"line":1761},[2243],{"type":45,"tag":836,"props":2244,"children":2245},{},[2246],{"type":50,"value":2247},"    name = \"us-east-1\"\n",{"type":45,"tag":836,"props":2249,"children":2250},{"class":838,"line":2104},[2251],{"type":45,"tag":836,"props":2252,"children":2253},{},[2254],{"type":50,"value":2255},"  }]\n",{"type":45,"tag":836,"props":2257,"children":2258},{"class":838,"line":2122},[2259],{"type":45,"tag":836,"props":2260,"children":2261},{},[2262],{"type":50,"value":2263},"}\n",{"type":45,"tag":148,"props":2265,"children":2267},{"id":2266},"post-provisioning",[2268],{"type":50,"value":2269},"Post-Provisioning",{"type":45,"tag":66,"props":2271,"children":2272},{},[2273,2278,2283,2296],{"type":45,"tag":70,"props":2274,"children":2275},{},[2276],{"type":50,"value":2277},"Configure IP allowlists or VPC Peering\u002FPrivateLink",{"type":45,"tag":70,"props":2279,"children":2280},{},[2281],{"type":50,"value":2282},"Create SQL users and databases",{"type":45,"tag":70,"props":2284,"children":2285},{},[2286,2288,2294],{"type":50,"value":2287},"Set maintenance window (see ",{"type":45,"tag":102,"props":2289,"children":2291},{"href":2290},"..\u002Fperforming-cluster-maintenance\u002FSKILL.md",[2292],{"type":50,"value":2293},"performing-cluster-maintenance",{"type":50,"value":2295},")",{"type":45,"tag":70,"props":2297,"children":2298},{},[2299],{"type":50,"value":2300},"Configure metrics export to Datadog\u002FPrometheus if needed",{"type":45,"tag":138,"props":2302,"children":2303},{},[],{"type":45,"tag":59,"props":2305,"children":2307},{"id":2306},"byoc-provisioning",[2308],{"type":50,"value":586},{"type":45,"tag":53,"props":2310,"children":2311},{},[2312,2316],{"type":45,"tag":94,"props":2313,"children":2314},{},[2315],{"type":50,"value":636},{"type":50,"value":2317}," Tier = BYOC",{"type":45,"tag":53,"props":2319,"children":2320},{},[2321,2323,2327],{"type":50,"value":2322},"Follow ",{"type":45,"tag":102,"props":2324,"children":2325},{"href":566},[2326],{"type":50,"value":569},{"type":50,"value":2328}," steps — BYOC uses the same Cloud Console, API, and Terraform interfaces.",{"type":45,"tag":53,"props":2330,"children":2331},{},[2332],{"type":45,"tag":94,"props":2333,"children":2334},{},[2335],{"type":50,"value":2336},"Additional BYOC steps:",{"type":45,"tag":66,"props":2338,"children":2339},{},[2340,2345,2350],{"type":45,"tag":70,"props":2341,"children":2342},{},[2343],{"type":50,"value":2344},"Ensure your cloud account meets CRL prerequisites (service account, VPC, IAM roles)",{"type":45,"tag":70,"props":2346,"children":2347},{},[2348],{"type":50,"value":2349},"Configure PrivateLink\u002FPSC for private connectivity",{"type":45,"tag":70,"props":2351,"children":2352},{},[2353],{"type":50,"value":2354},"Verify CRL service account permissions",{"type":45,"tag":138,"props":2356,"children":2357},{},[],{"type":45,"tag":59,"props":2359,"children":2361},{"id":2360},"standard-provisioning",[2362],{"type":50,"value":603},{"type":45,"tag":53,"props":2364,"children":2365},{},[2366,2370],{"type":45,"tag":94,"props":2367,"children":2368},{},[2369],{"type":50,"value":636},{"type":50,"value":2371}," Tier = Standard",{"type":45,"tag":1881,"props":2373,"children":2374},{},[2375,2382,2391,2396,2401],{"type":45,"tag":70,"props":2376,"children":2377},{},[2378],{"type":45,"tag":94,"props":2379,"children":2380},{},[2381],{"type":50,"value":1891},{"type":45,"tag":70,"props":2383,"children":2384},{},[2385,2386,2390],{"type":50,"value":1896},{"type":45,"tag":94,"props":2387,"children":2388},{},[2389],{"type":50,"value":594},{"type":50,"value":1902},{"type":45,"tag":70,"props":2392,"children":2393},{},[2394],{"type":50,"value":2395},"Choose cloud provider and region",{"type":45,"tag":70,"props":2397,"children":2398},{},[2399],{"type":50,"value":2400},"Set provisioned compute (vCPUs) based on expected workload",{"type":45,"tag":70,"props":2402,"children":2403},{},[2404],{"type":50,"value":2405},"Create",{"type":45,"tag":53,"props":2407,"children":2408},{},[2409],{"type":45,"tag":94,"props":2410,"children":2411},{},[2412],{"type":50,"value":2413},"Post-provisioning:",{"type":45,"tag":66,"props":2415,"children":2416},{},[2417,2421,2426],{"type":45,"tag":70,"props":2418,"children":2419},{},[2420],{"type":50,"value":2282},{"type":45,"tag":70,"props":2422,"children":2423},{},[2424],{"type":50,"value":2425},"Configure IP allowlists",{"type":45,"tag":70,"props":2427,"children":2428},{},[2429,2431],{"type":50,"value":2430},"Set session-level defaults:\n",{"type":45,"tag":825,"props":2432,"children":2434},{"className":1663,"code":2433,"language":1665,"meta":830,"style":830},"ALTER ROLE ALL SET statement_timeout = '30s';\nALTER ROLE ALL SET idle_in_transaction_session_timeout = '300s';\n",[2435],{"type":45,"tag":773,"props":2436,"children":2437},{"__ignoreMap":830},[2438,2446],{"type":45,"tag":836,"props":2439,"children":2440},{"class":838,"line":839},[2441],{"type":45,"tag":836,"props":2442,"children":2443},{},[2444],{"type":50,"value":2445},"ALTER ROLE ALL SET statement_timeout = '30s';\n",{"type":45,"tag":836,"props":2447,"children":2448},{"class":838,"line":26},[2449],{"type":45,"tag":836,"props":2450,"children":2451},{},[2452],{"type":50,"value":2453},"ALTER ROLE ALL SET idle_in_transaction_session_timeout = '300s';\n",{"type":45,"tag":138,"props":2455,"children":2456},{},[],{"type":45,"tag":59,"props":2458,"children":2460},{"id":2459},"basic-provisioning",[2461],{"type":50,"value":620},{"type":45,"tag":53,"props":2463,"children":2464},{},[2465,2469],{"type":45,"tag":94,"props":2466,"children":2467},{},[2468],{"type":50,"value":636},{"type":50,"value":2470}," Tier = Basic",{"type":45,"tag":1881,"props":2472,"children":2473},{},[2474,2481,2490,2494],{"type":45,"tag":70,"props":2475,"children":2476},{},[2477],{"type":45,"tag":94,"props":2478,"children":2479},{},[2480],{"type":50,"value":1891},{"type":45,"tag":70,"props":2482,"children":2483},{},[2484,2485,2489],{"type":50,"value":1896},{"type":45,"tag":94,"props":2486,"children":2487},{},[2488],{"type":50,"value":611},{"type":50,"value":1902},{"type":45,"tag":70,"props":2491,"children":2492},{},[2493],{"type":50,"value":2395},{"type":45,"tag":70,"props":2495,"children":2496},{},[2497],{"type":50,"value":2498},"Create (auto-scales, no sizing needed)",{"type":45,"tag":53,"props":2500,"children":2501},{},[2502],{"type":45,"tag":94,"props":2503,"children":2504},{},[2505],{"type":50,"value":2413},{"type":45,"tag":66,"props":2507,"children":2508},{},[2509,2514,2518],{"type":45,"tag":70,"props":2510,"children":2511},{},[2512],{"type":50,"value":2513},"Set spending limits (Cloud Console → Cluster → Settings)",{"type":45,"tag":70,"props":2515,"children":2516},{},[2517],{"type":50,"value":2282},{"type":45,"tag":70,"props":2519,"children":2520},{},[2521],{"type":50,"value":2425},{"type":45,"tag":138,"props":2523,"children":2524},{},[],{"type":45,"tag":59,"props":2526,"children":2528},{"id":2527},"safety-considerations",[2529],{"type":50,"value":2530},"Safety Considerations",{"type":45,"tag":155,"props":2532,"children":2533},{},[2534,2554],{"type":45,"tag":159,"props":2535,"children":2536},{},[2537],{"type":45,"tag":163,"props":2538,"children":2539},{},[2540,2545,2549],{"type":45,"tag":167,"props":2541,"children":2542},{},[2543],{"type":50,"value":2544},"Operation",{"type":45,"tag":167,"props":2546,"children":2547},{},[2548],{"type":50,"value":527},{"type":45,"tag":167,"props":2550,"children":2551},{},[2552],{"type":50,"value":2553},"Risk",{"type":45,"tag":183,"props":2555,"children":2556},{},[2557,2579,2596,2614],{"type":45,"tag":163,"props":2558,"children":2559},{},[2560,2569,2574],{"type":45,"tag":190,"props":2561,"children":2562},{},[2563],{"type":45,"tag":773,"props":2564,"children":2566},{"className":2565},[],[2567],{"type":50,"value":2568},"cockroach init",{"type":45,"tag":190,"props":2570,"children":2571},{},[2572],{"type":50,"value":2573},"SH",{"type":45,"tag":190,"props":2575,"children":2576},{},[2577],{"type":50,"value":2578},"Safe — only runs once; subsequent calls are no-ops",{"type":45,"tag":163,"props":2580,"children":2581},{},[2582,2587,2591],{"type":45,"tag":190,"props":2583,"children":2584},{},[2585],{"type":50,"value":2586},"Certificate generation",{"type":45,"tag":190,"props":2588,"children":2589},{},[2590],{"type":50,"value":2573},{"type":45,"tag":190,"props":2592,"children":2593},{},[2594],{"type":50,"value":2595},"Store CA key securely — loss means no new certs",{"type":45,"tag":163,"props":2597,"children":2598},{},[2599,2604,2609],{"type":45,"tag":190,"props":2600,"children":2601},{},[2602],{"type":50,"value":2603},"Cloud cluster creation",{"type":45,"tag":190,"props":2605,"children":2606},{},[2607],{"type":50,"value":2608},"ADV\u002FBYOC\u002FSTD\u002FBAS",{"type":45,"tag":190,"props":2610,"children":2611},{},[2612],{"type":50,"value":2613},"Safe — can be deleted if misconfigured",{"type":45,"tag":163,"props":2615,"children":2616},{},[2617,2622,2626],{"type":45,"tag":190,"props":2618,"children":2619},{},[2620],{"type":50,"value":2621},"Production settings changes",{"type":45,"tag":190,"props":2623,"children":2624},{},[2625],{"type":50,"value":2573},{"type":45,"tag":190,"props":2627,"children":2628},{},[2629,2630],{"type":50,"value":801},{"type":45,"tag":102,"props":2631,"children":2632},{"href":118},[2633],{"type":50,"value":121},{"type":45,"tag":53,"props":2635,"children":2636},{},[2637],{"type":45,"tag":94,"props":2638,"children":2639},{},[2640],{"type":50,"value":2641},"Critical (Self-Hosted):",{"type":45,"tag":66,"props":2643,"children":2644},{},[2645,2658,2663,2676,2697],{"type":45,"tag":70,"props":2646,"children":2647},{},[2648,2650,2656],{"type":50,"value":2649},"Never use ",{"type":45,"tag":773,"props":2651,"children":2653},{"className":2652},[],[2654],{"type":50,"value":2655},"--insecure",{"type":50,"value":2657}," in production — always use TLS",{"type":45,"tag":70,"props":2659,"children":2660},{},[2661],{"type":50,"value":2662},"Never use burstable instances for production workloads",{"type":45,"tag":70,"props":2664,"children":2665},{},[2666,2668,2674],{"type":50,"value":2667},"Always set ",{"type":45,"tag":773,"props":2669,"children":2671},{"className":2670},[],[2672],{"type":50,"value":2673},"--locality",{"type":50,"value":2675}," flags for multi-node clusters",{"type":45,"tag":70,"props":2677,"children":2678},{},[2679,2681,2687,2689,2695],{"type":50,"value":2680},"Always configure ",{"type":45,"tag":773,"props":2682,"children":2684},{"className":2683},[],[2685],{"type":50,"value":2686},"--cache",{"type":50,"value":2688}," and ",{"type":45,"tag":773,"props":2690,"children":2692},{"className":2691},[],[2693],{"type":50,"value":2694},"--max-sql-memory",{"type":50,"value":2696}," (defaults are too low)",{"type":45,"tag":70,"props":2698,"children":2699},{},[2700],{"type":50,"value":2701},"Always create ballast files before going to production",{"type":45,"tag":59,"props":2703,"children":2705},{"id":2704},"troubleshooting",[2706],{"type":50,"value":2707},"Troubleshooting",{"type":45,"tag":155,"props":2709,"children":2710},{},[2711,2731],{"type":45,"tag":159,"props":2712,"children":2713},{},[2714],{"type":45,"tag":163,"props":2715,"children":2716},{},[2717,2722,2726],{"type":45,"tag":167,"props":2718,"children":2719},{},[2720],{"type":50,"value":2721},"Issue",{"type":45,"tag":167,"props":2723,"children":2724},{},[2725],{"type":50,"value":527},{"type":45,"tag":167,"props":2727,"children":2728},{},[2729],{"type":50,"value":2730},"Fix",{"type":45,"tag":183,"props":2732,"children":2733},{},[2734,2756,2781,2806,2823,2841],{"type":45,"tag":163,"props":2735,"children":2736},{},[2737,2747,2751],{"type":45,"tag":190,"props":2738,"children":2739},{},[2740,2745],{"type":45,"tag":773,"props":2741,"children":2743},{"className":2742},[],[2744],{"type":50,"value":2568},{"type":50,"value":2746}," fails",{"type":45,"tag":190,"props":2748,"children":2749},{},[2750],{"type":50,"value":2573},{"type":45,"tag":190,"props":2752,"children":2753},{},[2754],{"type":50,"value":2755},"Check all nodes are started and reachable on port 26257",{"type":45,"tag":163,"props":2757,"children":2758},{},[2759,2764,2768],{"type":45,"tag":190,"props":2760,"children":2761},{},[2762],{"type":50,"value":2763},"Node won't join cluster",{"type":45,"tag":190,"props":2765,"children":2766},{},[2767],{"type":50,"value":2573},{"type":45,"tag":190,"props":2769,"children":2770},{},[2771,2773,2779],{"type":50,"value":2772},"Verify ",{"type":45,"tag":773,"props":2774,"children":2776},{"className":2775},[],[2777],{"type":50,"value":2778},"--join",{"type":50,"value":2780}," addresses; check firewall rules for ports 26257, 8080",{"type":45,"tag":163,"props":2782,"children":2783},{},[2784,2789,2793],{"type":45,"tag":190,"props":2785,"children":2786},{},[2787],{"type":50,"value":2788},"\"clock offset\" error",{"type":45,"tag":190,"props":2790,"children":2791},{},[2792],{"type":50,"value":2573},{"type":45,"tag":190,"props":2794,"children":2795},{},[2796,2798,2804],{"type":50,"value":2797},"Sync clocks with NTP; check ",{"type":45,"tag":773,"props":2799,"children":2801},{"className":2800},[],[2802],{"type":50,"value":2803},"--max-offset",{"type":50,"value":2805}," setting",{"type":45,"tag":163,"props":2807,"children":2808},{},[2809,2814,2818],{"type":45,"tag":190,"props":2810,"children":2811},{},[2812],{"type":50,"value":2813},"TLS handshake failure",{"type":45,"tag":190,"props":2815,"children":2816},{},[2817],{"type":50,"value":2573},{"type":45,"tag":190,"props":2819,"children":2820},{},[2821],{"type":50,"value":2822},"Verify certs match; check CA is the same across all nodes",{"type":45,"tag":163,"props":2824,"children":2825},{},[2826,2831,2836],{"type":45,"tag":190,"props":2827,"children":2828},{},[2829],{"type":50,"value":2830},"Cloud cluster stuck in \"Creating\"",{"type":45,"tag":190,"props":2832,"children":2833},{},[2834],{"type":50,"value":2835},"ADV\u002FBYOC",{"type":45,"tag":190,"props":2837,"children":2838},{},[2839],{"type":50,"value":2840},"Wait 15 min; contact support if no progress",{"type":45,"tag":163,"props":2842,"children":2843},{},[2844,2849,2854],{"type":45,"tag":190,"props":2845,"children":2846},{},[2847],{"type":50,"value":2848},"Cannot connect after creation",{"type":45,"tag":190,"props":2850,"children":2851},{},[2852],{"type":50,"value":2853},"ALL",{"type":45,"tag":190,"props":2855,"children":2856},{},[2857],{"type":50,"value":2858},"Check IP allowlist; verify connection string; try with root user",{"type":45,"tag":59,"props":2860,"children":2862},{"id":2861},"references",[2863],{"type":50,"value":2864},"References",{"type":45,"tag":53,"props":2866,"children":2867},{},[2868],{"type":45,"tag":94,"props":2869,"children":2870},{},[2871],{"type":50,"value":2872},"Skill references:",{"type":45,"tag":66,"props":2874,"children":2875},{},[2876,2884],{"type":45,"tag":70,"props":2877,"children":2878},{},[2879],{"type":45,"tag":102,"props":2880,"children":2881},{"href":804},[2882],{"type":50,"value":2883},"Hardware and infrastructure",{"type":45,"tag":70,"props":2885,"children":2886},{},[2887],{"type":45,"tag":102,"props":2888,"children":2889},{"href":1851},[2890],{"type":50,"value":2891},"Production deployment checklist",{"type":45,"tag":53,"props":2893,"children":2894},{},[2895],{"type":45,"tag":94,"props":2896,"children":2897},{},[2898],{"type":50,"value":2899},"Related skills:",{"type":45,"tag":66,"props":2901,"children":2902},{},[2903,2912,2921,2932],{"type":45,"tag":70,"props":2904,"children":2905},{},[2906,2910],{"type":45,"tag":102,"props":2907,"children":2908},{"href":104},[2909],{"type":50,"value":107},{"type":50,"value":2911}," — Post-deployment health check",{"type":45,"tag":70,"props":2913,"children":2914},{},[2915,2919],{"type":45,"tag":102,"props":2916,"children":2917},{"href":118},[2918],{"type":50,"value":121},{"type":50,"value":2920}," — Production settings",{"type":45,"tag":70,"props":2922,"children":2923},{},[2924,2930],{"type":45,"tag":102,"props":2925,"children":2927},{"href":2926},"..\u002Fmanaging-certificates-and-encryption\u002FSKILL.md",[2928],{"type":50,"value":2929},"managing-certificates-and-encryption",{"type":50,"value":2931}," — TLS setup",{"type":45,"tag":70,"props":2933,"children":2934},{},[2935,2939],{"type":45,"tag":102,"props":2936,"children":2937},{"href":131},[2938],{"type":50,"value":134},{"type":50,"value":2940}," — Scaling after deployment",{"type":45,"tag":53,"props":2942,"children":2943},{},[2944],{"type":45,"tag":94,"props":2945,"children":2946},{},[2947],{"type":50,"value":2948},"Official CockroachDB Documentation:",{"type":45,"tag":66,"props":2950,"children":2951},{},[2952,2963,2973,2982,2992,3002],{"type":45,"tag":70,"props":2953,"children":2954},{},[2955],{"type":45,"tag":102,"props":2956,"children":2960},{"href":2957,"rel":2958},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Finstall-cockroachdb",[2959],"nofollow",[2961],{"type":50,"value":2962},"Install CockroachDB",{"type":45,"tag":70,"props":2964,"children":2965},{},[2966],{"type":45,"tag":102,"props":2967,"children":2970},{"href":2968,"rel":2969},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Fstart-a-local-cluster",[2959],[2971],{"type":50,"value":2972},"Start a Cluster",{"type":45,"tag":70,"props":2974,"children":2975},{},[2976],{"type":45,"tag":102,"props":2977,"children":2980},{"href":2978,"rel":2979},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Fdeploy-cockroachdb-with-kubernetes",[2959],[2981],{"type":50,"value":1481},{"type":45,"tag":70,"props":2983,"children":2984},{},[2985],{"type":45,"tag":102,"props":2986,"children":2989},{"href":2987,"rel":2988},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Frecommended-production-settings",[2959],[2990],{"type":50,"value":2991},"Production Checklist",{"type":45,"tag":70,"props":2993,"children":2994},{},[2995],{"type":45,"tag":102,"props":2996,"children":2999},{"href":2997,"rel":2998},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fcreate-an-advanced-cluster",[2959],[3000],{"type":50,"value":3001},"Create an Advanced Cluster",{"type":45,"tag":70,"props":3003,"children":3004},{},[3005],{"type":45,"tag":102,"props":3006,"children":3009},{"href":3007,"rel":3008},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fcockroachcloud\u002Fcloud-api",[2959],[3010],{"type":50,"value":3011},"Cloud API",{"type":45,"tag":3013,"props":3014,"children":3015},"style",{},[3016],{"type":50,"value":3017},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3019,"total":3178},[3020,3039,3053,3068,3079,3089,3100,3112,3126,3141,3152,3165],{"slug":3021,"name":3021,"fn":3022,"description":3023,"org":3024,"tags":3025,"stars":3036,"repoUrl":3037,"updatedAt":3038},"collecting-cockroachdb-operator-escalation-packet","collect CockroachDB operator escalation packets","Collects a complete CockroachDB Operator escalation packet for TSC\u002FTSE or operator-team handoff, including Helm state, Kubernetes resources, logs, operation-specific evidence, pprof goroutine dumps, metrics, and a customer action timeline. Use when general diagnosis cannot resolve an operator-managed CockroachDB Helm issue or before restarting a stuck operator.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3026,3027,3030,3033],{"name":17,"slug":18,"type":15},{"name":3028,"slug":3029,"type":15},"Incident Response","incident-response",{"name":3031,"slug":3032,"type":15},"Kubernetes","kubernetes",{"name":3034,"slug":3035,"type":15},"Monitoring","monitoring",105,"https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fhelm-charts","2026-07-12T07:57:25.288146",{"slug":3040,"name":3040,"fn":3041,"description":3042,"org":3043,"tags":3044,"stars":3036,"repoUrl":3037,"updatedAt":3052},"configuring-cockroachdb-helm-tls","configure TLS for CockroachDB Helm charts","Selects and validates TLS settings for CockroachDB Helm chart deployments, including self-signer, cert-manager, and external certificate modes. Use when a customer needs secure CockroachDB Helm values, certificate secret mapping, cert-manager integration, or TLS install troubleshooting before deploying the chart.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3045,3046,3049],{"name":20,"slug":21,"type":15},{"name":3047,"slug":3048,"type":15},"Encryption","encryption",{"name":3050,"slug":3051,"type":15},"Security","security","2026-07-12T07:56:37.675396",{"slug":3054,"name":3054,"fn":3055,"description":3056,"org":3057,"tags":3058,"stars":3036,"repoUrl":3037,"updatedAt":3067},"debugging-cockroachdb-operator-migrations","debug CockroachDB Operator migration scenarios","Debugs CockroachDB Operator migration scenarios, including Helm StatefulSet to v1beta1 CrdbNode migration and public operator v1alpha1 to v1beta1 migration. Use when migration labels, migration phases, source StatefulSet ownership, converted CRDs, PVC ownership, or post-migration reconciliation are unclear or stuck.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3059,3060,3063,3064],{"name":17,"slug":18,"type":15},{"name":3061,"slug":3062,"type":15},"Debugging","debugging",{"name":3031,"slug":3032,"type":15},{"name":3065,"slug":3066,"type":15},"Migration","migration","2026-07-12T07:56:48.360871",{"slug":3069,"name":3069,"fn":3070,"description":3071,"org":3072,"tags":3073,"stars":3036,"repoUrl":3037,"updatedAt":3078},"diagnosing-cockroachdb-helm-deployments","diagnose CockroachDB Helm chart deployments","Diagnoses failed or unhealthy CockroachDB Helm chart deployments by checking Helm release state, operator health, CrdbCluster and CrdbNode status, pod readiness, RBAC, webhooks, TLS, upgrades, scaling, PVCs, DNS, and multi-region assumptions. Use when Helm install or upgrade fails, pods are not Ready, or the operator is not reconciling.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3074,3075,3076,3077],{"name":17,"slug":18,"type":15},{"name":3061,"slug":3062,"type":15},{"name":20,"slug":21,"type":15},{"name":3031,"slug":3032,"type":15},"2026-07-12T07:57:24.018818",{"slug":3080,"name":3080,"fn":3081,"description":3082,"org":3083,"tags":3084,"stars":3036,"repoUrl":3037,"updatedAt":3088},"installing-cockroachdb-with-helm","install CockroachDB using Helm","Guides customer-facing installation of CockroachDB on Kubernetes using the CockroachDB split Helm charts and operator-managed v1beta1 resources. Use when installing CockroachDB with Helm, choosing between published and local split charts, verifying a new install, or helping an agent complete first-time Kubernetes onboarding.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3085,3086,3087],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":3031,"slug":3032,"type":15},"2026-07-12T07:56:45.777567",{"slug":3090,"name":3090,"fn":3091,"description":3092,"org":3093,"tags":3094,"stars":3036,"repoUrl":3037,"updatedAt":3099},"validating-cockroachdb-helm-multiregion","validate CockroachDB multi-region Helm deployments","Validates CockroachDB Helm chart values and Kubernetes prerequisites for operator-managed multi-region deployments. Use before adding a region, deploying CockroachDB across multiple Kubernetes clusters, checking region DNS domains, or confirming that all regions share certificate and networking assumptions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3095,3096,3097,3098],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":3031,"slug":3032,"type":15},{"name":13,"slug":14,"type":15},"2026-07-12T07:56:47.082609",{"slug":3101,"name":3101,"fn":3102,"description":3103,"org":3104,"tags":3105,"stars":22,"repoUrl":23,"updatedAt":3111},"analyzing-range-distribution","analyze CockroachDB range distribution and health","Analyzes CockroachDB range distribution across tables and indexes using SHOW RANGES to identify range count, size patterns, leaseholder placement, and replication health. Use when investigating hotspots, uneven data distribution, range fragmentation, or validating zone configuration effects without DB Console access.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3106,3107,3108],{"name":17,"slug":18,"type":15},{"name":3034,"slug":3035,"type":15},{"name":3109,"slug":3110,"type":15},"Performance","performance","2026-07-12T07:57:18.753533",{"slug":3113,"name":3113,"fn":3114,"description":3115,"org":3116,"tags":3117,"stars":22,"repoUrl":23,"updatedAt":3125},"analyzing-schema-change-storage-risk","analyze schema change storage requirements","Estimates storage requirements for CockroachDB online schema change backfills using SHOW RANGES WITH DETAILS, KEYS, INDEXES. Use before CREATE INDEX, ADD COLUMN with INDEX\u002FUNIQUE, ALTER PRIMARY KEY, CREATE MATERIALIZED VIEW, CREATE TABLE AS, REFRESH, or SET LOCALITY on tables with large per-index footprints, to avoid mid-backfill disk exhaustion.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3118,3121,3122,3123],{"name":3119,"slug":3120,"type":15},"Data Modeling","data-modeling",{"name":17,"slug":18,"type":15},{"name":3109,"slug":3110,"type":15},{"name":3124,"slug":1665,"type":15},"SQL","2026-07-12T07:57:22.763788",{"slug":3127,"name":3127,"fn":3128,"description":3129,"org":3130,"tags":3131,"stars":22,"repoUrl":23,"updatedAt":3140},"auditing-cis-benchmark","audit CockroachDB clusters against CIS benchmarks","Audits a self-hosted CockroachDB cluster against the CIS CockroachDB Benchmark v1.0.0 Level 1 controls. Supports two audit depths — quick automated scans and full CIS audit procedures. Produces a structured PASS\u002FFAIL\u002FMANUAL report covering installation, system hardening, logging, user access, data protection, and CockroachDB settings. Use when preparing for CIS compliance assessments, hardening self-hosted deployments, or validating security posture against industry benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3132,3135,3138,3139],{"name":3133,"slug":3134,"type":15},"Audit","audit",{"name":3136,"slug":3137,"type":15},"Compliance","compliance",{"name":17,"slug":18,"type":15},{"name":3050,"slug":3051,"type":15},"2026-07-18T05:48:00.862384",{"slug":3142,"name":3142,"fn":3143,"description":3144,"org":3145,"tags":3146,"stars":22,"repoUrl":23,"updatedAt":3151},"auditing-cloud-cluster-security","audit CockroachDB cluster security posture","Audits the security posture of a CockroachDB cluster (Cloud or self-hosted) across network, authentication, authorization, encryption, audit logging, and backup dimensions. Use when assessing cluster security readiness, preparing for compliance reviews, or investigating security configuration gaps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3147,3148,3149,3150],{"name":3133,"slug":3134,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":3050,"slug":3051,"type":15},"2026-07-12T07:57:01.506735",{"slug":3153,"name":3153,"fn":3154,"description":3155,"org":3156,"tags":3157,"stars":22,"repoUrl":23,"updatedAt":3164},"auditing-table-statistics","audit optimizer table statistics","Audits optimizer table statistics for staleness, missing coverage, and data quality issues using SHOW STATISTICS. Use when diagnosing poor query performance, unexpected plan changes, or after bulk data changes to identify stale statistics requiring refresh via CREATE STATISTICS.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3158,3159,3162,3163],{"name":3133,"slug":3134,"type":15},{"name":3160,"slug":3161,"type":15},"Data Analysis","data-analysis",{"name":17,"slug":18,"type":15},{"name":3109,"slug":3110,"type":15},"2026-07-12T07:57:16.190081",{"slug":3166,"name":3166,"fn":3167,"description":3168,"org":3169,"tags":3170,"stars":22,"repoUrl":23,"updatedAt":3177},"benchmarking-transaction-patterns","benchmark CockroachDB transaction patterns","Guides benchmarking and comparing explicit multi-statement transactions versus single-statement CTE transactions in CockroachDB, with fair test methodology, contention analysis, and performance interpretation. Use when comparing transaction formulations, benchmarking CockroachDB workloads under contention, investigating retry pressure, or deciding whether to rewrite multi-step application flows into single SQL statements.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3171,3172,3175,3176],{"name":17,"slug":18,"type":15},{"name":3173,"slug":3174,"type":15},"Engineering","engineering",{"name":3109,"slug":3110,"type":15},{"name":3124,"slug":1665,"type":15},"2026-07-12T07:57:26.543278",40,{"items":3180,"total":3232},[3181,3187,3194,3201,3208,3215,3222],{"slug":3101,"name":3101,"fn":3102,"description":3103,"org":3182,"tags":3183,"stars":22,"repoUrl":23,"updatedAt":3111},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3184,3185,3186],{"name":17,"slug":18,"type":15},{"name":3034,"slug":3035,"type":15},{"name":3109,"slug":3110,"type":15},{"slug":3113,"name":3113,"fn":3114,"description":3115,"org":3188,"tags":3189,"stars":22,"repoUrl":23,"updatedAt":3125},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3190,3191,3192,3193],{"name":3119,"slug":3120,"type":15},{"name":17,"slug":18,"type":15},{"name":3109,"slug":3110,"type":15},{"name":3124,"slug":1665,"type":15},{"slug":3127,"name":3127,"fn":3128,"description":3129,"org":3195,"tags":3196,"stars":22,"repoUrl":23,"updatedAt":3140},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3197,3198,3199,3200],{"name":3133,"slug":3134,"type":15},{"name":3136,"slug":3137,"type":15},{"name":17,"slug":18,"type":15},{"name":3050,"slug":3051,"type":15},{"slug":3142,"name":3142,"fn":3143,"description":3144,"org":3202,"tags":3203,"stars":22,"repoUrl":23,"updatedAt":3151},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3204,3205,3206,3207],{"name":3133,"slug":3134,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":3050,"slug":3051,"type":15},{"slug":3153,"name":3153,"fn":3154,"description":3155,"org":3209,"tags":3210,"stars":22,"repoUrl":23,"updatedAt":3164},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3211,3212,3213,3214],{"name":3133,"slug":3134,"type":15},{"name":3160,"slug":3161,"type":15},{"name":17,"slug":18,"type":15},{"name":3109,"slug":3110,"type":15},{"slug":3166,"name":3166,"fn":3167,"description":3168,"org":3216,"tags":3217,"stars":22,"repoUrl":23,"updatedAt":3177},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3218,3219,3220,3221],{"name":17,"slug":18,"type":15},{"name":3173,"slug":3174,"type":15},{"name":3109,"slug":3110,"type":15},{"name":3124,"slug":1665,"type":15},{"slug":3223,"name":3223,"fn":3224,"description":3225,"org":3226,"tags":3227,"stars":22,"repoUrl":23,"updatedAt":3231},"cockroachdb-sql","write and optimize CockroachDB SQL","Use when writing, generating, or optimizing SQL for CockroachDB, designing CockroachDB schemas, or when the user asks about CockroachDB-specific SQL patterns, type mappings, and distributed database best practices. Also use when encountering CockroachDB anti-patterns like missing primary keys, sequential ID hotspots, or incorrect type usage.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3228,3229,3230],{"name":17,"slug":18,"type":15},{"name":3109,"slug":3110,"type":15},{"name":3124,"slug":1665,"type":15},"2026-07-25T05:31:22.562808",34]