[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-cockroachdb-validating-cockroachdb-helm-multiregion":3,"mdc--ikgluo-key":36,"related-repo-cockroachdb-validating-cockroachdb-helm-multiregion":1826,"related-org-cockroachdb-validating-cockroachdb-helm-multiregion":1899},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"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},"cockroachdb","CockroachDB","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fcockroachdb.png",[12,16,19,22],{"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",{"name":23,"slug":24,"type":15},"Kubernetes","kubernetes",105,"https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fhelm-charts","2026-07-12T07:56:47.082609",null,153,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Helm charts for cockroachdb","https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fhelm-charts\u002Ftree\u002FHEAD\u002Fskills\u002Fcockroachdb-onboarding-and-migrations\u002Fvalidating-cockroachdb-helm-multiregion","---\nname: validating-cockroachdb-helm-multiregion\ndescription: 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.\ncompatibility: CockroachDB Helm v2 charts with crdb.cockroachlabs.com\u002Fv1beta1 CrdbCluster resources. Requires access to each Kubernetes context participating in the multi-region deployment.\nmetadata:\n  author: cockroachdb\n  version: \"1.1\"\n---\n\n# Validating CockroachDB Helm Multi-Region\n\nValidates the high-risk prerequisites for multi-region CockroachDB deployments managed by the Helm v2 charts and operator. Run this before the first region install and before adding every additional region.\n\n## When to Use This Skill\n\n- A customer is deploying CockroachDB across multiple Kubernetes clusters or regions\n- A new region is being added to an existing Helm-managed CockroachDB cluster\n- An agent needs to validate `cockroachdb.crdbCluster.regions` before `helm install` or `helm upgrade`\n- Cross-region DNS, namespace, or certificate assumptions are unclear\n\n## Required Inputs\n\n| Input | Example | Why It Matters |\n|---|---|---|\n| Region list in deployment order | `us-central1`, `us-east1` | Each region values file must include current and previously deployed regions |\n| Kubernetes context per region | `gke-prod-us-central1` | Commands must run against the correct cluster |\n| Namespace per region | `cockroachdb` | Used in generated join addresses |\n| Cluster domain per region | `cluster.gke.gcp-us-east1` | Other regions connect through this domain |\n| CA\u002Fcertificate mode | self-signer with shared CA, cert-manager, external | Multi-region requires compatible trust across regions |\n\n## Safety Considerations\n\n- Do not deploy a new region until cross-region service discovery and network paths are proven.\n- Do not use different CA trust roots across regions.\n- Do not omit previously deployed regions from a new region's values file. The operator uses the full list to compute join addresses.\n- Confirm `operator.cloudRegion` matches the region reconciled by that operator instance.\n- If an existing multi-region cluster cannot join or reconcile, use the deployment diagnostic skill first and collect the operator escalation packet before restarting the operator.\n\n## Execution Discipline\n\n- Execute one step at a time and inspect the output before moving on. Region inventory, DNS results, network results, and certificate state determine which later checks are relevant.\n- Do not create debug pods, run interactive shells, use external diagnostic images, or perform Helm upgrades unless the user explicitly approves them for each participating cluster.\n- In air-gapped or private-registry environments, use customer-approved diagnostic images mirrored into the customer's registry.\n- In production or when cross-region networking, certificate trust, or locality is unclear, involve TSE or the operator team before adding regions or changing chart values.\n\n## Step 1: Validate Node Locality Labels\n\nFor each Kubernetes context:\n\n```bash\nkubectl --context \u003Ccontext> get nodes \\\n  -L topology.kubernetes.io\u002Fregion,topology.kubernetes.io\u002Fzone\n```\n\nExpected:\n\n- Every schedulable node has the correct `topology.kubernetes.io\u002Fregion`.\n- Nodes are spread across expected zones where zone failure survival is expected.\n- `cockroachdb.crdbCluster.regions[].code` matches the node region label for that cluster.\n\n## Step 2: Validate Values File Completeness\n\nEach region's values file must include all already deployed regions plus the current region.\n\nExample for deploying `us-east1` after `us-central1`:\n\n```yaml\ncockroachdb:\n  clusterDomain: cluster.gke.gcp-us-east1\n  crdbCluster:\n    regions:\n      - code: us-central1\n        nodes: 3\n        cloudProvider: gcp\n        domain: cluster.gke.gcp-us-central1\n        namespace: cockroachdb\n      - code: us-east1\n        nodes: 3\n        cloudProvider: gcp\n        domain: cluster.gke.gcp-us-east1\n        namespace: cockroachdb\n```\n\nChecklist:\n\n- `cockroachdb.clusterDomain` equals the current region's domain.\n- Every previous region appears under `cockroachdb.crdbCluster.regions`.\n- Every non-local region has `domain` and `namespace` set.\n- `nodes` matches the intended node count in each region.\n- `cloudProvider` is one of `gcp`, `aws`, `azure`, `k3d`, or empty for other environments.\n\n## Step 3: Validate Cross-Region DNS and Network Paths\n\nFrom a temporary debugging pod in each region, verify that peer region service names resolve and connect. Replace names with the actual release and namespace.\n\n```bash\nkubectl --context \u003Ccontext> -n \u003Cnamespace> run crdb-dns-check \\\n  --rm -it --restart=Never --image=busybox:1.36 -- sh\n```\n\nInside the pod:\n\n```sh\nnslookup \u003Crelease-name>.\u003Cpeer-namespace>.svc.\u003Cpeer-domain>\nnc -vz \u003Crelease-name>.\u003Cpeer-namespace>.svc.\u003Cpeer-domain> 26258\n```\n\nIf `nc` is unavailable, use an approved network diagnostic image or cloud-native connectivity test. Do not proceed until DNS and TCP connectivity are proven in both directions.\n\n## Step 4: Validate Certificate Trust Across Regions\n\nUse [configuring-cockroachdb-helm-tls](..\u002F..\u002Fcockroachdb-operations-and-lifecycle\u002Fconfiguring-cockroachdb-helm-tls\u002FSKILL.md) for the selected TLS mode, then apply these multi-region checks:\n\n- Self-signer with generated CA is appropriate only if the same CA trust material is shared across regions.\n- Self-signer with customer-provided CA requires the same CA Secret in every region namespace.\n- Cert-manager requires issuer configuration that produces certificates trusted by the same CA ConfigMap in every region.\n- External certificate mode requires all node, HTTP, and root client certificates to chain to the same CA trust root.\n\nCheck CA presence without printing contents:\n\n```bash\nkubectl --context \u003Ccontext> -n \u003Cnamespace> get configmap \u003Cca-configmap> -o jsonpath='{.data.ca\\.crt}' >\u002Fdev\u002Fnull\nkubectl --context \u003Ccontext> -n \u003Cnamespace> get secret \u003Cca-secret> >\u002Fdev\u002Fnull\n```\n\n## Step 5: Render Before Applying\n\nUse `helm template` before installing or upgrading each region:\n\n```bash\nhelm template \u003Crelease-name> cockroachdb-v2\u002Fcockroachdb-chart \\\n  --version \u003Ccockroachdb-chart-version> \\\n  --namespace \u003Cnamespace> \\\n  -f values-\u003Cregion>.yaml > rendered-\u003Cregion>.yaml\n\ngrep -n \"regions:\" -A30 rendered-\u003Cregion>.yaml\ngrep -n \"clusterDomain:\" -A3 values-\u003Cregion>.yaml\n```\n\nConfirm the rendered `CrdbCluster` contains the expected region list and certificate references.\n\n## Outputs\n\nReturn a preflight report:\n\n- Region inventory and deployment order\n- Per-context node labels and zone spread\n- Per-region `clusterDomain`, `namespace`, and `regions` completeness\n- Cross-region DNS\u002FTCP results\n- Certificate trust validation result\n- A clear go\u002Fno-go recommendation before Helm install or upgrade\n\n## References\n\n- [CockroachDB Helm Chart README: Multi Region Deployments](..\u002F..\u002F..\u002Fcockroachdb-parent\u002Fcharts\u002Fcockroachdb\u002FREADME.md)\n- [Multi-region values example](..\u002F..\u002F..\u002Fexamples\u002Fcockroachdb-operator\u002Fmulti-region-values.yaml)\n- [Diagnosing CockroachDB Helm deployments](..\u002F..\u002Fcockroachdb-observability-and-diagnostics\u002Fdiagnosing-cockroachdb-helm-deployments\u002FSKILL.md)\n- [Operator escalation packet collection](..\u002F..\u002Fcockroachdb-observability-and-diagnostics\u002Fcollecting-cockroachdb-operator-escalation-packet\u002FSKILL.md)\n- [CockroachDB Docs: Multi-Region Capabilities](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Fmultiregion-overview.html)\n- [CockroachDB Docs: cockroach start locality](https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Fcockroach-start.html#locality)\n",{"data":37,"body":41},{"name":4,"description":6,"compatibility":38,"metadata":39},"CockroachDB Helm v2 charts with crdb.cockroachlabs.com\u002Fv1beta1 CrdbCluster resources. Requires access to each Kubernetes context participating in the multi-region deployment.",{"author":8,"version":40},"1.1",{"type":42,"children":43},"root",[44,53,59,66,114,120,266,272,308,314,337,343,348,428,433,465,471,476,495,741,746,843,849,854,958,963,1117,1129,1135,1149,1172,1177,1372,1378,1390,1675,1688,1694,1699,1754,1760,1820],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"validating-cockroachdb-helm-multi-region",[50],{"type":51,"value":52},"text","Validating CockroachDB Helm Multi-Region",{"type":45,"tag":54,"props":55,"children":56},"p",{},[57],{"type":51,"value":58},"Validates the high-risk prerequisites for multi-region CockroachDB deployments managed by the Helm v2 charts and operator. Run this before the first region install and before adding every additional region.",{"type":45,"tag":60,"props":61,"children":63},"h2",{"id":62},"when-to-use-this-skill",[64],{"type":51,"value":65},"When to Use This Skill",{"type":45,"tag":67,"props":68,"children":69},"ul",{},[70,76,81,109],{"type":45,"tag":71,"props":72,"children":73},"li",{},[74],{"type":51,"value":75},"A customer is deploying CockroachDB across multiple Kubernetes clusters or regions",{"type":45,"tag":71,"props":77,"children":78},{},[79],{"type":51,"value":80},"A new region is being added to an existing Helm-managed CockroachDB cluster",{"type":45,"tag":71,"props":82,"children":83},{},[84,86,93,95,101,103],{"type":51,"value":85},"An agent needs to validate ",{"type":45,"tag":87,"props":88,"children":90},"code",{"className":89},[],[91],{"type":51,"value":92},"cockroachdb.crdbCluster.regions",{"type":51,"value":94}," before ",{"type":45,"tag":87,"props":96,"children":98},{"className":97},[],[99],{"type":51,"value":100},"helm install",{"type":51,"value":102}," or ",{"type":45,"tag":87,"props":104,"children":106},{"className":105},[],[107],{"type":51,"value":108},"helm upgrade",{"type":45,"tag":71,"props":110,"children":111},{},[112],{"type":51,"value":113},"Cross-region DNS, namespace, or certificate assumptions are unclear",{"type":45,"tag":60,"props":115,"children":117},{"id":116},"required-inputs",[118],{"type":51,"value":119},"Required Inputs",{"type":45,"tag":121,"props":122,"children":123},"table",{},[124,148],{"type":45,"tag":125,"props":126,"children":127},"thead",{},[128],{"type":45,"tag":129,"props":130,"children":131},"tr",{},[132,138,143],{"type":45,"tag":133,"props":134,"children":135},"th",{},[136],{"type":51,"value":137},"Input",{"type":45,"tag":133,"props":139,"children":140},{},[141],{"type":51,"value":142},"Example",{"type":45,"tag":133,"props":144,"children":145},{},[146],{"type":51,"value":147},"Why It Matters",{"type":45,"tag":149,"props":150,"children":151},"tbody",{},[152,183,205,226,248],{"type":45,"tag":129,"props":153,"children":154},{},[155,161,178],{"type":45,"tag":156,"props":157,"children":158},"td",{},[159],{"type":51,"value":160},"Region list in deployment order",{"type":45,"tag":156,"props":162,"children":163},{},[164,170,172],{"type":45,"tag":87,"props":165,"children":167},{"className":166},[],[168],{"type":51,"value":169},"us-central1",{"type":51,"value":171},", ",{"type":45,"tag":87,"props":173,"children":175},{"className":174},[],[176],{"type":51,"value":177},"us-east1",{"type":45,"tag":156,"props":179,"children":180},{},[181],{"type":51,"value":182},"Each region values file must include current and previously deployed regions",{"type":45,"tag":129,"props":184,"children":185},{},[186,191,200],{"type":45,"tag":156,"props":187,"children":188},{},[189],{"type":51,"value":190},"Kubernetes context per region",{"type":45,"tag":156,"props":192,"children":193},{},[194],{"type":45,"tag":87,"props":195,"children":197},{"className":196},[],[198],{"type":51,"value":199},"gke-prod-us-central1",{"type":45,"tag":156,"props":201,"children":202},{},[203],{"type":51,"value":204},"Commands must run against the correct cluster",{"type":45,"tag":129,"props":206,"children":207},{},[208,213,221],{"type":45,"tag":156,"props":209,"children":210},{},[211],{"type":51,"value":212},"Namespace per region",{"type":45,"tag":156,"props":214,"children":215},{},[216],{"type":45,"tag":87,"props":217,"children":219},{"className":218},[],[220],{"type":51,"value":8},{"type":45,"tag":156,"props":222,"children":223},{},[224],{"type":51,"value":225},"Used in generated join addresses",{"type":45,"tag":129,"props":227,"children":228},{},[229,234,243],{"type":45,"tag":156,"props":230,"children":231},{},[232],{"type":51,"value":233},"Cluster domain per region",{"type":45,"tag":156,"props":235,"children":236},{},[237],{"type":45,"tag":87,"props":238,"children":240},{"className":239},[],[241],{"type":51,"value":242},"cluster.gke.gcp-us-east1",{"type":45,"tag":156,"props":244,"children":245},{},[246],{"type":51,"value":247},"Other regions connect through this domain",{"type":45,"tag":129,"props":249,"children":250},{},[251,256,261],{"type":45,"tag":156,"props":252,"children":253},{},[254],{"type":51,"value":255},"CA\u002Fcertificate mode",{"type":45,"tag":156,"props":257,"children":258},{},[259],{"type":51,"value":260},"self-signer with shared CA, cert-manager, external",{"type":45,"tag":156,"props":262,"children":263},{},[264],{"type":51,"value":265},"Multi-region requires compatible trust across regions",{"type":45,"tag":60,"props":267,"children":269},{"id":268},"safety-considerations",[270],{"type":51,"value":271},"Safety Considerations",{"type":45,"tag":67,"props":273,"children":274},{},[275,280,285,290,303],{"type":45,"tag":71,"props":276,"children":277},{},[278],{"type":51,"value":279},"Do not deploy a new region until cross-region service discovery and network paths are proven.",{"type":45,"tag":71,"props":281,"children":282},{},[283],{"type":51,"value":284},"Do not use different CA trust roots across regions.",{"type":45,"tag":71,"props":286,"children":287},{},[288],{"type":51,"value":289},"Do not omit previously deployed regions from a new region's values file. The operator uses the full list to compute join addresses.",{"type":45,"tag":71,"props":291,"children":292},{},[293,295,301],{"type":51,"value":294},"Confirm ",{"type":45,"tag":87,"props":296,"children":298},{"className":297},[],[299],{"type":51,"value":300},"operator.cloudRegion",{"type":51,"value":302}," matches the region reconciled by that operator instance.",{"type":45,"tag":71,"props":304,"children":305},{},[306],{"type":51,"value":307},"If an existing multi-region cluster cannot join or reconcile, use the deployment diagnostic skill first and collect the operator escalation packet before restarting the operator.",{"type":45,"tag":60,"props":309,"children":311},{"id":310},"execution-discipline",[312],{"type":51,"value":313},"Execution Discipline",{"type":45,"tag":67,"props":315,"children":316},{},[317,322,327,332],{"type":45,"tag":71,"props":318,"children":319},{},[320],{"type":51,"value":321},"Execute one step at a time and inspect the output before moving on. Region inventory, DNS results, network results, and certificate state determine which later checks are relevant.",{"type":45,"tag":71,"props":323,"children":324},{},[325],{"type":51,"value":326},"Do not create debug pods, run interactive shells, use external diagnostic images, or perform Helm upgrades unless the user explicitly approves them for each participating cluster.",{"type":45,"tag":71,"props":328,"children":329},{},[330],{"type":51,"value":331},"In air-gapped or private-registry environments, use customer-approved diagnostic images mirrored into the customer's registry.",{"type":45,"tag":71,"props":333,"children":334},{},[335],{"type":51,"value":336},"In production or when cross-region networking, certificate trust, or locality is unclear, involve TSE or the operator team before adding regions or changing chart values.",{"type":45,"tag":60,"props":338,"children":340},{"id":339},"step-1-validate-node-locality-labels",[341],{"type":51,"value":342},"Step 1: Validate Node Locality Labels",{"type":45,"tag":54,"props":344,"children":345},{},[346],{"type":51,"value":347},"For each Kubernetes context:",{"type":45,"tag":349,"props":350,"children":355},"pre",{"className":351,"code":352,"language":353,"meta":354,"style":354},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","kubectl --context \u003Ccontext> get nodes \\\n  -L topology.kubernetes.io\u002Fregion,topology.kubernetes.io\u002Fzone\n","bash","",[356],{"type":45,"tag":87,"props":357,"children":358},{"__ignoreMap":354},[359,414],{"type":45,"tag":360,"props":361,"children":364},"span",{"class":362,"line":363},"line",1,[365,371,377,383,388,394,399,404,409],{"type":45,"tag":360,"props":366,"children":368},{"style":367},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[369],{"type":51,"value":370},"kubectl",{"type":45,"tag":360,"props":372,"children":374},{"style":373},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[375],{"type":51,"value":376}," --context",{"type":45,"tag":360,"props":378,"children":380},{"style":379},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[381],{"type":51,"value":382}," \u003C",{"type":45,"tag":360,"props":384,"children":385},{"style":373},[386],{"type":51,"value":387},"contex",{"type":45,"tag":360,"props":389,"children":391},{"style":390},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[392],{"type":51,"value":393},"t",{"type":45,"tag":360,"props":395,"children":396},{"style":379},[397],{"type":51,"value":398},">",{"type":45,"tag":360,"props":400,"children":401},{"style":373},[402],{"type":51,"value":403}," get",{"type":45,"tag":360,"props":405,"children":406},{"style":373},[407],{"type":51,"value":408}," nodes",{"type":45,"tag":360,"props":410,"children":411},{"style":390},[412],{"type":51,"value":413}," \\\n",{"type":45,"tag":360,"props":415,"children":417},{"class":362,"line":416},2,[418,423],{"type":45,"tag":360,"props":419,"children":420},{"style":373},[421],{"type":51,"value":422},"  -L",{"type":45,"tag":360,"props":424,"children":425},{"style":373},[426],{"type":51,"value":427}," topology.kubernetes.io\u002Fregion,topology.kubernetes.io\u002Fzone\n",{"type":45,"tag":54,"props":429,"children":430},{},[431],{"type":51,"value":432},"Expected:",{"type":45,"tag":67,"props":434,"children":435},{},[436,449,454],{"type":45,"tag":71,"props":437,"children":438},{},[439,441,447],{"type":51,"value":440},"Every schedulable node has the correct ",{"type":45,"tag":87,"props":442,"children":444},{"className":443},[],[445],{"type":51,"value":446},"topology.kubernetes.io\u002Fregion",{"type":51,"value":448},".",{"type":45,"tag":71,"props":450,"children":451},{},[452],{"type":51,"value":453},"Nodes are spread across expected zones where zone failure survival is expected.",{"type":45,"tag":71,"props":455,"children":456},{},[457,463],{"type":45,"tag":87,"props":458,"children":460},{"className":459},[],[461],{"type":51,"value":462},"cockroachdb.crdbCluster.regions[].code",{"type":51,"value":464}," matches the node region label for that cluster.",{"type":45,"tag":60,"props":466,"children":468},{"id":467},"step-2-validate-values-file-completeness",[469],{"type":51,"value":470},"Step 2: Validate Values File Completeness",{"type":45,"tag":54,"props":472,"children":473},{},[474],{"type":51,"value":475},"Each region's values file must include all already deployed regions plus the current region.",{"type":45,"tag":54,"props":477,"children":478},{},[479,481,486,488,493],{"type":51,"value":480},"Example for deploying ",{"type":45,"tag":87,"props":482,"children":484},{"className":483},[],[485],{"type":51,"value":177},{"type":51,"value":487}," after ",{"type":45,"tag":87,"props":489,"children":491},{"className":490},[],[492],{"type":51,"value":169},{"type":51,"value":494},":",{"type":45,"tag":349,"props":496,"children":500},{"className":497,"code":498,"language":499,"meta":354,"style":354},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cockroachdb:\n  clusterDomain: cluster.gke.gcp-us-east1\n  crdbCluster:\n    regions:\n      - code: us-central1\n        nodes: 3\n        cloudProvider: gcp\n        domain: cluster.gke.gcp-us-central1\n        namespace: cockroachdb\n      - code: us-east1\n        nodes: 3\n        cloudProvider: gcp\n        domain: cluster.gke.gcp-us-east1\n        namespace: cockroachdb\n","yaml",[501],{"type":45,"tag":87,"props":502,"children":503},{"__ignoreMap":354},[504,517,534,547,560,583,602,620,638,656,677,693,709,725],{"type":45,"tag":360,"props":505,"children":506},{"class":362,"line":363},[507,512],{"type":45,"tag":360,"props":508,"children":510},{"style":509},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[511],{"type":51,"value":8},{"type":45,"tag":360,"props":513,"children":514},{"style":379},[515],{"type":51,"value":516},":\n",{"type":45,"tag":360,"props":518,"children":519},{"class":362,"line":416},[520,525,529],{"type":45,"tag":360,"props":521,"children":522},{"style":509},[523],{"type":51,"value":524},"  clusterDomain",{"type":45,"tag":360,"props":526,"children":527},{"style":379},[528],{"type":51,"value":494},{"type":45,"tag":360,"props":530,"children":531},{"style":373},[532],{"type":51,"value":533}," cluster.gke.gcp-us-east1\n",{"type":45,"tag":360,"props":535,"children":537},{"class":362,"line":536},3,[538,543],{"type":45,"tag":360,"props":539,"children":540},{"style":509},[541],{"type":51,"value":542},"  crdbCluster",{"type":45,"tag":360,"props":544,"children":545},{"style":379},[546],{"type":51,"value":516},{"type":45,"tag":360,"props":548,"children":550},{"class":362,"line":549},4,[551,556],{"type":45,"tag":360,"props":552,"children":553},{"style":509},[554],{"type":51,"value":555},"    regions",{"type":45,"tag":360,"props":557,"children":558},{"style":379},[559],{"type":51,"value":516},{"type":45,"tag":360,"props":561,"children":563},{"class":362,"line":562},5,[564,569,574,578],{"type":45,"tag":360,"props":565,"children":566},{"style":379},[567],{"type":51,"value":568},"      -",{"type":45,"tag":360,"props":570,"children":571},{"style":509},[572],{"type":51,"value":573}," code",{"type":45,"tag":360,"props":575,"children":576},{"style":379},[577],{"type":51,"value":494},{"type":45,"tag":360,"props":579,"children":580},{"style":373},[581],{"type":51,"value":582}," us-central1\n",{"type":45,"tag":360,"props":584,"children":586},{"class":362,"line":585},6,[587,592,596],{"type":45,"tag":360,"props":588,"children":589},{"style":509},[590],{"type":51,"value":591},"        nodes",{"type":45,"tag":360,"props":593,"children":594},{"style":379},[595],{"type":51,"value":494},{"type":45,"tag":360,"props":597,"children":599},{"style":598},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[600],{"type":51,"value":601}," 3\n",{"type":45,"tag":360,"props":603,"children":605},{"class":362,"line":604},7,[606,611,615],{"type":45,"tag":360,"props":607,"children":608},{"style":509},[609],{"type":51,"value":610},"        cloudProvider",{"type":45,"tag":360,"props":612,"children":613},{"style":379},[614],{"type":51,"value":494},{"type":45,"tag":360,"props":616,"children":617},{"style":373},[618],{"type":51,"value":619}," gcp\n",{"type":45,"tag":360,"props":621,"children":623},{"class":362,"line":622},8,[624,629,633],{"type":45,"tag":360,"props":625,"children":626},{"style":509},[627],{"type":51,"value":628},"        domain",{"type":45,"tag":360,"props":630,"children":631},{"style":379},[632],{"type":51,"value":494},{"type":45,"tag":360,"props":634,"children":635},{"style":373},[636],{"type":51,"value":637}," cluster.gke.gcp-us-central1\n",{"type":45,"tag":360,"props":639,"children":641},{"class":362,"line":640},9,[642,647,651],{"type":45,"tag":360,"props":643,"children":644},{"style":509},[645],{"type":51,"value":646},"        namespace",{"type":45,"tag":360,"props":648,"children":649},{"style":379},[650],{"type":51,"value":494},{"type":45,"tag":360,"props":652,"children":653},{"style":373},[654],{"type":51,"value":655}," cockroachdb\n",{"type":45,"tag":360,"props":657,"children":659},{"class":362,"line":658},10,[660,664,668,672],{"type":45,"tag":360,"props":661,"children":662},{"style":379},[663],{"type":51,"value":568},{"type":45,"tag":360,"props":665,"children":666},{"style":509},[667],{"type":51,"value":573},{"type":45,"tag":360,"props":669,"children":670},{"style":379},[671],{"type":51,"value":494},{"type":45,"tag":360,"props":673,"children":674},{"style":373},[675],{"type":51,"value":676}," us-east1\n",{"type":45,"tag":360,"props":678,"children":680},{"class":362,"line":679},11,[681,685,689],{"type":45,"tag":360,"props":682,"children":683},{"style":509},[684],{"type":51,"value":591},{"type":45,"tag":360,"props":686,"children":687},{"style":379},[688],{"type":51,"value":494},{"type":45,"tag":360,"props":690,"children":691},{"style":598},[692],{"type":51,"value":601},{"type":45,"tag":360,"props":694,"children":696},{"class":362,"line":695},12,[697,701,705],{"type":45,"tag":360,"props":698,"children":699},{"style":509},[700],{"type":51,"value":610},{"type":45,"tag":360,"props":702,"children":703},{"style":379},[704],{"type":51,"value":494},{"type":45,"tag":360,"props":706,"children":707},{"style":373},[708],{"type":51,"value":619},{"type":45,"tag":360,"props":710,"children":712},{"class":362,"line":711},13,[713,717,721],{"type":45,"tag":360,"props":714,"children":715},{"style":509},[716],{"type":51,"value":628},{"type":45,"tag":360,"props":718,"children":719},{"style":379},[720],{"type":51,"value":494},{"type":45,"tag":360,"props":722,"children":723},{"style":373},[724],{"type":51,"value":533},{"type":45,"tag":360,"props":726,"children":728},{"class":362,"line":727},14,[729,733,737],{"type":45,"tag":360,"props":730,"children":731},{"style":509},[732],{"type":51,"value":646},{"type":45,"tag":360,"props":734,"children":735},{"style":379},[736],{"type":51,"value":494},{"type":45,"tag":360,"props":738,"children":739},{"style":373},[740],{"type":51,"value":655},{"type":45,"tag":54,"props":742,"children":743},{},[744],{"type":51,"value":745},"Checklist:",{"type":45,"tag":67,"props":747,"children":748},{},[749,760,771,792,803],{"type":45,"tag":71,"props":750,"children":751},{},[752,758],{"type":45,"tag":87,"props":753,"children":755},{"className":754},[],[756],{"type":51,"value":757},"cockroachdb.clusterDomain",{"type":51,"value":759}," equals the current region's domain.",{"type":45,"tag":71,"props":761,"children":762},{},[763,765,770],{"type":51,"value":764},"Every previous region appears under ",{"type":45,"tag":87,"props":766,"children":768},{"className":767},[],[769],{"type":51,"value":92},{"type":51,"value":448},{"type":45,"tag":71,"props":772,"children":773},{},[774,776,782,784,790],{"type":51,"value":775},"Every non-local region has ",{"type":45,"tag":87,"props":777,"children":779},{"className":778},[],[780],{"type":51,"value":781},"domain",{"type":51,"value":783}," and ",{"type":45,"tag":87,"props":785,"children":787},{"className":786},[],[788],{"type":51,"value":789},"namespace",{"type":51,"value":791}," set.",{"type":45,"tag":71,"props":793,"children":794},{},[795,801],{"type":45,"tag":87,"props":796,"children":798},{"className":797},[],[799],{"type":51,"value":800},"nodes",{"type":51,"value":802}," matches the intended node count in each region.",{"type":45,"tag":71,"props":804,"children":805},{},[806,812,814,820,821,827,828,834,835,841],{"type":45,"tag":87,"props":807,"children":809},{"className":808},[],[810],{"type":51,"value":811},"cloudProvider",{"type":51,"value":813}," is one of ",{"type":45,"tag":87,"props":815,"children":817},{"className":816},[],[818],{"type":51,"value":819},"gcp",{"type":51,"value":171},{"type":45,"tag":87,"props":822,"children":824},{"className":823},[],[825],{"type":51,"value":826},"aws",{"type":51,"value":171},{"type":45,"tag":87,"props":829,"children":831},{"className":830},[],[832],{"type":51,"value":833},"azure",{"type":51,"value":171},{"type":45,"tag":87,"props":836,"children":838},{"className":837},[],[839],{"type":51,"value":840},"k3d",{"type":51,"value":842},", or empty for other environments.",{"type":45,"tag":60,"props":844,"children":846},{"id":845},"step-3-validate-cross-region-dns-and-network-paths",[847],{"type":51,"value":848},"Step 3: Validate Cross-Region DNS and Network Paths",{"type":45,"tag":54,"props":850,"children":851},{},[852],{"type":51,"value":853},"From a temporary debugging pod in each region, verify that peer region service names resolve and connect. Replace names with the actual release and namespace.",{"type":45,"tag":349,"props":855,"children":857},{"className":351,"code":856,"language":353,"meta":354,"style":354},"kubectl --context \u003Ccontext> -n \u003Cnamespace> run crdb-dns-check \\\n  --rm -it --restart=Never --image=busybox:1.36 -- sh\n",[858],{"type":45,"tag":87,"props":859,"children":860},{"__ignoreMap":354},[861,925],{"type":45,"tag":360,"props":862,"children":863},{"class":362,"line":363},[864,868,872,876,880,884,888,893,897,902,907,911,916,921],{"type":45,"tag":360,"props":865,"children":866},{"style":367},[867],{"type":51,"value":370},{"type":45,"tag":360,"props":869,"children":870},{"style":373},[871],{"type":51,"value":376},{"type":45,"tag":360,"props":873,"children":874},{"style":379},[875],{"type":51,"value":382},{"type":45,"tag":360,"props":877,"children":878},{"style":373},[879],{"type":51,"value":387},{"type":45,"tag":360,"props":881,"children":882},{"style":390},[883],{"type":51,"value":393},{"type":45,"tag":360,"props":885,"children":886},{"style":379},[887],{"type":51,"value":398},{"type":45,"tag":360,"props":889,"children":890},{"style":373},[891],{"type":51,"value":892}," -n",{"type":45,"tag":360,"props":894,"children":895},{"style":379},[896],{"type":51,"value":382},{"type":45,"tag":360,"props":898,"children":899},{"style":373},[900],{"type":51,"value":901},"namespac",{"type":45,"tag":360,"props":903,"children":904},{"style":390},[905],{"type":51,"value":906},"e",{"type":45,"tag":360,"props":908,"children":909},{"style":379},[910],{"type":51,"value":398},{"type":45,"tag":360,"props":912,"children":913},{"style":373},[914],{"type":51,"value":915}," run",{"type":45,"tag":360,"props":917,"children":918},{"style":373},[919],{"type":51,"value":920}," crdb-dns-check",{"type":45,"tag":360,"props":922,"children":923},{"style":390},[924],{"type":51,"value":413},{"type":45,"tag":360,"props":926,"children":927},{"class":362,"line":416},[928,933,938,943,948,953],{"type":45,"tag":360,"props":929,"children":930},{"style":373},[931],{"type":51,"value":932},"  --rm",{"type":45,"tag":360,"props":934,"children":935},{"style":373},[936],{"type":51,"value":937}," -it",{"type":45,"tag":360,"props":939,"children":940},{"style":373},[941],{"type":51,"value":942}," --restart=Never",{"type":45,"tag":360,"props":944,"children":945},{"style":373},[946],{"type":51,"value":947}," --image=busybox:1.36",{"type":45,"tag":360,"props":949,"children":950},{"style":373},[951],{"type":51,"value":952}," --",{"type":45,"tag":360,"props":954,"children":955},{"style":373},[956],{"type":51,"value":957}," sh\n",{"type":45,"tag":54,"props":959,"children":960},{},[961],{"type":51,"value":962},"Inside the pod:",{"type":45,"tag":349,"props":964,"children":968},{"className":965,"code":966,"language":967,"meta":354,"style":354},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","nslookup \u003Crelease-name>.\u003Cpeer-namespace>.svc.\u003Cpeer-domain>\nnc -vz \u003Crelease-name>.\u003Cpeer-namespace>.svc.\u003Cpeer-domain> 26258\n","sh",[969],{"type":45,"tag":87,"props":970,"children":971},{"__ignoreMap":354},[972,1043],{"type":45,"tag":360,"props":973,"children":974},{"class":362,"line":363},[975,980,984,989,993,997,1001,1006,1011,1015,1019,1024,1028,1033,1038],{"type":45,"tag":360,"props":976,"children":977},{"style":367},[978],{"type":51,"value":979},"nslookup",{"type":45,"tag":360,"props":981,"children":982},{"style":379},[983],{"type":51,"value":382},{"type":45,"tag":360,"props":985,"children":986},{"style":373},[987],{"type":51,"value":988},"release-nam",{"type":45,"tag":360,"props":990,"children":991},{"style":390},[992],{"type":51,"value":906},{"type":45,"tag":360,"props":994,"children":995},{"style":379},[996],{"type":51,"value":398},{"type":45,"tag":360,"props":998,"children":999},{"style":373},[1000],{"type":51,"value":448},{"type":45,"tag":360,"props":1002,"children":1003},{"style":379},[1004],{"type":51,"value":1005},"\u003C",{"type":45,"tag":360,"props":1007,"children":1008},{"style":373},[1009],{"type":51,"value":1010},"peer-namespac",{"type":45,"tag":360,"props":1012,"children":1013},{"style":390},[1014],{"type":51,"value":906},{"type":45,"tag":360,"props":1016,"children":1017},{"style":379},[1018],{"type":51,"value":398},{"type":45,"tag":360,"props":1020,"children":1021},{"style":373},[1022],{"type":51,"value":1023},".svc.",{"type":45,"tag":360,"props":1025,"children":1026},{"style":379},[1027],{"type":51,"value":1005},{"type":45,"tag":360,"props":1029,"children":1030},{"style":373},[1031],{"type":51,"value":1032},"peer-domai",{"type":45,"tag":360,"props":1034,"children":1035},{"style":390},[1036],{"type":51,"value":1037},"n",{"type":45,"tag":360,"props":1039,"children":1040},{"style":379},[1041],{"type":51,"value":1042},">\n",{"type":45,"tag":360,"props":1044,"children":1045},{"class":362,"line":416},[1046,1051,1056,1060,1064,1068,1072,1076,1080,1084,1088,1092,1096,1100,1104,1108,1112],{"type":45,"tag":360,"props":1047,"children":1048},{"style":367},[1049],{"type":51,"value":1050},"nc",{"type":45,"tag":360,"props":1052,"children":1053},{"style":373},[1054],{"type":51,"value":1055}," -vz",{"type":45,"tag":360,"props":1057,"children":1058},{"style":379},[1059],{"type":51,"value":382},{"type":45,"tag":360,"props":1061,"children":1062},{"style":373},[1063],{"type":51,"value":988},{"type":45,"tag":360,"props":1065,"children":1066},{"style":390},[1067],{"type":51,"value":906},{"type":45,"tag":360,"props":1069,"children":1070},{"style":379},[1071],{"type":51,"value":398},{"type":45,"tag":360,"props":1073,"children":1074},{"style":373},[1075],{"type":51,"value":448},{"type":45,"tag":360,"props":1077,"children":1078},{"style":379},[1079],{"type":51,"value":1005},{"type":45,"tag":360,"props":1081,"children":1082},{"style":373},[1083],{"type":51,"value":1010},{"type":45,"tag":360,"props":1085,"children":1086},{"style":390},[1087],{"type":51,"value":906},{"type":45,"tag":360,"props":1089,"children":1090},{"style":379},[1091],{"type":51,"value":398},{"type":45,"tag":360,"props":1093,"children":1094},{"style":373},[1095],{"type":51,"value":1023},{"type":45,"tag":360,"props":1097,"children":1098},{"style":379},[1099],{"type":51,"value":1005},{"type":45,"tag":360,"props":1101,"children":1102},{"style":373},[1103],{"type":51,"value":1032},{"type":45,"tag":360,"props":1105,"children":1106},{"style":390},[1107],{"type":51,"value":1037},{"type":45,"tag":360,"props":1109,"children":1110},{"style":379},[1111],{"type":51,"value":398},{"type":45,"tag":360,"props":1113,"children":1114},{"style":598},[1115],{"type":51,"value":1116}," 26258\n",{"type":45,"tag":54,"props":1118,"children":1119},{},[1120,1122,1127],{"type":51,"value":1121},"If ",{"type":45,"tag":87,"props":1123,"children":1125},{"className":1124},[],[1126],{"type":51,"value":1050},{"type":51,"value":1128}," is unavailable, use an approved network diagnostic image or cloud-native connectivity test. Do not proceed until DNS and TCP connectivity are proven in both directions.",{"type":45,"tag":60,"props":1130,"children":1132},{"id":1131},"step-4-validate-certificate-trust-across-regions",[1133],{"type":51,"value":1134},"Step 4: Validate Certificate Trust Across Regions",{"type":45,"tag":54,"props":1136,"children":1137},{},[1138,1140,1147],{"type":51,"value":1139},"Use ",{"type":45,"tag":1141,"props":1142,"children":1144},"a",{"href":1143},"..\u002F..\u002Fcockroachdb-operations-and-lifecycle\u002Fconfiguring-cockroachdb-helm-tls\u002FSKILL.md",[1145],{"type":51,"value":1146},"configuring-cockroachdb-helm-tls",{"type":51,"value":1148}," for the selected TLS mode, then apply these multi-region checks:",{"type":45,"tag":67,"props":1150,"children":1151},{},[1152,1157,1162,1167],{"type":45,"tag":71,"props":1153,"children":1154},{},[1155],{"type":51,"value":1156},"Self-signer with generated CA is appropriate only if the same CA trust material is shared across regions.",{"type":45,"tag":71,"props":1158,"children":1159},{},[1160],{"type":51,"value":1161},"Self-signer with customer-provided CA requires the same CA Secret in every region namespace.",{"type":45,"tag":71,"props":1163,"children":1164},{},[1165],{"type":51,"value":1166},"Cert-manager requires issuer configuration that produces certificates trusted by the same CA ConfigMap in every region.",{"type":45,"tag":71,"props":1168,"children":1169},{},[1170],{"type":51,"value":1171},"External certificate mode requires all node, HTTP, and root client certificates to chain to the same CA trust root.",{"type":45,"tag":54,"props":1173,"children":1174},{},[1175],{"type":51,"value":1176},"Check CA presence without printing contents:",{"type":45,"tag":349,"props":1178,"children":1180},{"className":351,"code":1179,"language":353,"meta":354,"style":354},"kubectl --context \u003Ccontext> -n \u003Cnamespace> get configmap \u003Cca-configmap> -o jsonpath='{.data.ca\\.crt}' >\u002Fdev\u002Fnull\nkubectl --context \u003Ccontext> -n \u003Cnamespace> get secret \u003Cca-secret> >\u002Fdev\u002Fnull\n",[1181],{"type":45,"tag":87,"props":1182,"children":1183},{"__ignoreMap":354},[1184,1291],{"type":45,"tag":360,"props":1185,"children":1186},{"class":362,"line":363},[1187,1191,1195,1199,1203,1207,1211,1215,1219,1223,1227,1231,1235,1240,1244,1249,1253,1257,1262,1267,1272,1277,1281,1286],{"type":45,"tag":360,"props":1188,"children":1189},{"style":367},[1190],{"type":51,"value":370},{"type":45,"tag":360,"props":1192,"children":1193},{"style":373},[1194],{"type":51,"value":376},{"type":45,"tag":360,"props":1196,"children":1197},{"style":379},[1198],{"type":51,"value":382},{"type":45,"tag":360,"props":1200,"children":1201},{"style":373},[1202],{"type":51,"value":387},{"type":45,"tag":360,"props":1204,"children":1205},{"style":390},[1206],{"type":51,"value":393},{"type":45,"tag":360,"props":1208,"children":1209},{"style":379},[1210],{"type":51,"value":398},{"type":45,"tag":360,"props":1212,"children":1213},{"style":373},[1214],{"type":51,"value":892},{"type":45,"tag":360,"props":1216,"children":1217},{"style":379},[1218],{"type":51,"value":382},{"type":45,"tag":360,"props":1220,"children":1221},{"style":373},[1222],{"type":51,"value":901},{"type":45,"tag":360,"props":1224,"children":1225},{"style":390},[1226],{"type":51,"value":906},{"type":45,"tag":360,"props":1228,"children":1229},{"style":379},[1230],{"type":51,"value":398},{"type":45,"tag":360,"props":1232,"children":1233},{"style":373},[1234],{"type":51,"value":403},{"type":45,"tag":360,"props":1236,"children":1237},{"style":373},[1238],{"type":51,"value":1239}," configmap",{"type":45,"tag":360,"props":1241,"children":1242},{"style":379},[1243],{"type":51,"value":382},{"type":45,"tag":360,"props":1245,"children":1246},{"style":373},[1247],{"type":51,"value":1248},"ca-configma",{"type":45,"tag":360,"props":1250,"children":1251},{"style":390},[1252],{"type":51,"value":54},{"type":45,"tag":360,"props":1254,"children":1255},{"style":379},[1256],{"type":51,"value":398},{"type":45,"tag":360,"props":1258,"children":1259},{"style":373},[1260],{"type":51,"value":1261}," -o",{"type":45,"tag":360,"props":1263,"children":1264},{"style":373},[1265],{"type":51,"value":1266}," jsonpath=",{"type":45,"tag":360,"props":1268,"children":1269},{"style":379},[1270],{"type":51,"value":1271},"'",{"type":45,"tag":360,"props":1273,"children":1274},{"style":373},[1275],{"type":51,"value":1276},"{.data.ca\\.crt}",{"type":45,"tag":360,"props":1278,"children":1279},{"style":379},[1280],{"type":51,"value":1271},{"type":45,"tag":360,"props":1282,"children":1283},{"style":379},[1284],{"type":51,"value":1285}," >",{"type":45,"tag":360,"props":1287,"children":1288},{"style":373},[1289],{"type":51,"value":1290},"\u002Fdev\u002Fnull\n",{"type":45,"tag":360,"props":1292,"children":1293},{"class":362,"line":416},[1294,1298,1302,1306,1310,1314,1318,1322,1326,1330,1334,1338,1342,1347,1351,1356,1360,1364,1368],{"type":45,"tag":360,"props":1295,"children":1296},{"style":367},[1297],{"type":51,"value":370},{"type":45,"tag":360,"props":1299,"children":1300},{"style":373},[1301],{"type":51,"value":376},{"type":45,"tag":360,"props":1303,"children":1304},{"style":379},[1305],{"type":51,"value":382},{"type":45,"tag":360,"props":1307,"children":1308},{"style":373},[1309],{"type":51,"value":387},{"type":45,"tag":360,"props":1311,"children":1312},{"style":390},[1313],{"type":51,"value":393},{"type":45,"tag":360,"props":1315,"children":1316},{"style":379},[1317],{"type":51,"value":398},{"type":45,"tag":360,"props":1319,"children":1320},{"style":373},[1321],{"type":51,"value":892},{"type":45,"tag":360,"props":1323,"children":1324},{"style":379},[1325],{"type":51,"value":382},{"type":45,"tag":360,"props":1327,"children":1328},{"style":373},[1329],{"type":51,"value":901},{"type":45,"tag":360,"props":1331,"children":1332},{"style":390},[1333],{"type":51,"value":906},{"type":45,"tag":360,"props":1335,"children":1336},{"style":379},[1337],{"type":51,"value":398},{"type":45,"tag":360,"props":1339,"children":1340},{"style":373},[1341],{"type":51,"value":403},{"type":45,"tag":360,"props":1343,"children":1344},{"style":373},[1345],{"type":51,"value":1346}," secret",{"type":45,"tag":360,"props":1348,"children":1349},{"style":379},[1350],{"type":51,"value":382},{"type":45,"tag":360,"props":1352,"children":1353},{"style":373},[1354],{"type":51,"value":1355},"ca-secre",{"type":45,"tag":360,"props":1357,"children":1358},{"style":390},[1359],{"type":51,"value":393},{"type":45,"tag":360,"props":1361,"children":1362},{"style":379},[1363],{"type":51,"value":398},{"type":45,"tag":360,"props":1365,"children":1366},{"style":379},[1367],{"type":51,"value":1285},{"type":45,"tag":360,"props":1369,"children":1370},{"style":373},[1371],{"type":51,"value":1290},{"type":45,"tag":60,"props":1373,"children":1375},{"id":1374},"step-5-render-before-applying",[1376],{"type":51,"value":1377},"Step 5: Render Before Applying",{"type":45,"tag":54,"props":1379,"children":1380},{},[1381,1382,1388],{"type":51,"value":1139},{"type":45,"tag":87,"props":1383,"children":1385},{"className":1384},[],[1386],{"type":51,"value":1387},"helm template",{"type":51,"value":1389}," before installing or upgrading each region:",{"type":45,"tag":349,"props":1391,"children":1393},{"className":351,"code":1392,"language":353,"meta":354,"style":354},"helm template \u003Crelease-name> cockroachdb-v2\u002Fcockroachdb-chart \\\n  --version \u003Ccockroachdb-chart-version> \\\n  --namespace \u003Cnamespace> \\\n  -f values-\u003Cregion>.yaml > rendered-\u003Cregion>.yaml\n\ngrep -n \"regions:\" -A30 rendered-\u003Cregion>.yaml\ngrep -n \"clusterDomain:\" -A3 values-\u003Cregion>.yaml\n",[1394],{"type":45,"tag":87,"props":1395,"children":1396},{"__ignoreMap":354},[1397,1435,1464,1492,1557,1566,1622],{"type":45,"tag":360,"props":1398,"children":1399},{"class":362,"line":363},[1400,1405,1410,1414,1418,1422,1426,1431],{"type":45,"tag":360,"props":1401,"children":1402},{"style":367},[1403],{"type":51,"value":1404},"helm",{"type":45,"tag":360,"props":1406,"children":1407},{"style":373},[1408],{"type":51,"value":1409}," template",{"type":45,"tag":360,"props":1411,"children":1412},{"style":379},[1413],{"type":51,"value":382},{"type":45,"tag":360,"props":1415,"children":1416},{"style":373},[1417],{"type":51,"value":988},{"type":45,"tag":360,"props":1419,"children":1420},{"style":390},[1421],{"type":51,"value":906},{"type":45,"tag":360,"props":1423,"children":1424},{"style":379},[1425],{"type":51,"value":398},{"type":45,"tag":360,"props":1427,"children":1428},{"style":373},[1429],{"type":51,"value":1430}," cockroachdb-v2\u002Fcockroachdb-chart",{"type":45,"tag":360,"props":1432,"children":1433},{"style":390},[1434],{"type":51,"value":413},{"type":45,"tag":360,"props":1436,"children":1437},{"class":362,"line":416},[1438,1443,1447,1452,1456,1460],{"type":45,"tag":360,"props":1439,"children":1440},{"style":373},[1441],{"type":51,"value":1442},"  --version",{"type":45,"tag":360,"props":1444,"children":1445},{"style":379},[1446],{"type":51,"value":382},{"type":45,"tag":360,"props":1448,"children":1449},{"style":373},[1450],{"type":51,"value":1451},"cockroachdb-chart-versio",{"type":45,"tag":360,"props":1453,"children":1454},{"style":390},[1455],{"type":51,"value":1037},{"type":45,"tag":360,"props":1457,"children":1458},{"style":379},[1459],{"type":51,"value":398},{"type":45,"tag":360,"props":1461,"children":1462},{"style":390},[1463],{"type":51,"value":413},{"type":45,"tag":360,"props":1465,"children":1466},{"class":362,"line":536},[1467,1472,1476,1480,1484,1488],{"type":45,"tag":360,"props":1468,"children":1469},{"style":373},[1470],{"type":51,"value":1471},"  --namespace",{"type":45,"tag":360,"props":1473,"children":1474},{"style":379},[1475],{"type":51,"value":382},{"type":45,"tag":360,"props":1477,"children":1478},{"style":373},[1479],{"type":51,"value":901},{"type":45,"tag":360,"props":1481,"children":1482},{"style":390},[1483],{"type":51,"value":906},{"type":45,"tag":360,"props":1485,"children":1486},{"style":379},[1487],{"type":51,"value":398},{"type":45,"tag":360,"props":1489,"children":1490},{"style":390},[1491],{"type":51,"value":413},{"type":45,"tag":360,"props":1493,"children":1494},{"class":362,"line":549},[1495,1500,1505,1509,1514,1518,1522,1527,1531,1536,1540,1544,1548,1552],{"type":45,"tag":360,"props":1496,"children":1497},{"style":373},[1498],{"type":51,"value":1499},"  -f",{"type":45,"tag":360,"props":1501,"children":1502},{"style":373},[1503],{"type":51,"value":1504}," values-",{"type":45,"tag":360,"props":1506,"children":1507},{"style":379},[1508],{"type":51,"value":1005},{"type":45,"tag":360,"props":1510,"children":1511},{"style":373},[1512],{"type":51,"value":1513},"regio",{"type":45,"tag":360,"props":1515,"children":1516},{"style":390},[1517],{"type":51,"value":1037},{"type":45,"tag":360,"props":1519,"children":1520},{"style":379},[1521],{"type":51,"value":398},{"type":45,"tag":360,"props":1523,"children":1524},{"style":373},[1525],{"type":51,"value":1526},".yaml",{"type":45,"tag":360,"props":1528,"children":1529},{"style":379},[1530],{"type":51,"value":1285},{"type":45,"tag":360,"props":1532,"children":1533},{"style":373},[1534],{"type":51,"value":1535}," rendered-",{"type":45,"tag":360,"props":1537,"children":1538},{"style":379},[1539],{"type":51,"value":1005},{"type":45,"tag":360,"props":1541,"children":1542},{"style":373},[1543],{"type":51,"value":1513},{"type":45,"tag":360,"props":1545,"children":1546},{"style":390},[1547],{"type":51,"value":1037},{"type":45,"tag":360,"props":1549,"children":1550},{"style":379},[1551],{"type":51,"value":398},{"type":45,"tag":360,"props":1553,"children":1554},{"style":373},[1555],{"type":51,"value":1556},".yaml\n",{"type":45,"tag":360,"props":1558,"children":1559},{"class":362,"line":562},[1560],{"type":45,"tag":360,"props":1561,"children":1563},{"emptyLinePlaceholder":1562},true,[1564],{"type":51,"value":1565},"\n",{"type":45,"tag":360,"props":1567,"children":1568},{"class":362,"line":585},[1569,1574,1578,1583,1588,1593,1598,1602,1606,1610,1614,1618],{"type":45,"tag":360,"props":1570,"children":1571},{"style":367},[1572],{"type":51,"value":1573},"grep",{"type":45,"tag":360,"props":1575,"children":1576},{"style":373},[1577],{"type":51,"value":892},{"type":45,"tag":360,"props":1579,"children":1580},{"style":379},[1581],{"type":51,"value":1582}," \"",{"type":45,"tag":360,"props":1584,"children":1585},{"style":373},[1586],{"type":51,"value":1587},"regions:",{"type":45,"tag":360,"props":1589,"children":1590},{"style":379},[1591],{"type":51,"value":1592},"\"",{"type":45,"tag":360,"props":1594,"children":1595},{"style":373},[1596],{"type":51,"value":1597}," -A30",{"type":45,"tag":360,"props":1599,"children":1600},{"style":373},[1601],{"type":51,"value":1535},{"type":45,"tag":360,"props":1603,"children":1604},{"style":379},[1605],{"type":51,"value":1005},{"type":45,"tag":360,"props":1607,"children":1608},{"style":373},[1609],{"type":51,"value":1513},{"type":45,"tag":360,"props":1611,"children":1612},{"style":390},[1613],{"type":51,"value":1037},{"type":45,"tag":360,"props":1615,"children":1616},{"style":379},[1617],{"type":51,"value":398},{"type":45,"tag":360,"props":1619,"children":1620},{"style":373},[1621],{"type":51,"value":1556},{"type":45,"tag":360,"props":1623,"children":1624},{"class":362,"line":604},[1625,1629,1633,1637,1642,1646,1651,1655,1659,1663,1667,1671],{"type":45,"tag":360,"props":1626,"children":1627},{"style":367},[1628],{"type":51,"value":1573},{"type":45,"tag":360,"props":1630,"children":1631},{"style":373},[1632],{"type":51,"value":892},{"type":45,"tag":360,"props":1634,"children":1635},{"style":379},[1636],{"type":51,"value":1582},{"type":45,"tag":360,"props":1638,"children":1639},{"style":373},[1640],{"type":51,"value":1641},"clusterDomain:",{"type":45,"tag":360,"props":1643,"children":1644},{"style":379},[1645],{"type":51,"value":1592},{"type":45,"tag":360,"props":1647,"children":1648},{"style":373},[1649],{"type":51,"value":1650}," -A3",{"type":45,"tag":360,"props":1652,"children":1653},{"style":373},[1654],{"type":51,"value":1504},{"type":45,"tag":360,"props":1656,"children":1657},{"style":379},[1658],{"type":51,"value":1005},{"type":45,"tag":360,"props":1660,"children":1661},{"style":373},[1662],{"type":51,"value":1513},{"type":45,"tag":360,"props":1664,"children":1665},{"style":390},[1666],{"type":51,"value":1037},{"type":45,"tag":360,"props":1668,"children":1669},{"style":379},[1670],{"type":51,"value":398},{"type":45,"tag":360,"props":1672,"children":1673},{"style":373},[1674],{"type":51,"value":1556},{"type":45,"tag":54,"props":1676,"children":1677},{},[1678,1680,1686],{"type":51,"value":1679},"Confirm the rendered ",{"type":45,"tag":87,"props":1681,"children":1683},{"className":1682},[],[1684],{"type":51,"value":1685},"CrdbCluster",{"type":51,"value":1687}," contains the expected region list and certificate references.",{"type":45,"tag":60,"props":1689,"children":1691},{"id":1690},"outputs",[1692],{"type":51,"value":1693},"Outputs",{"type":45,"tag":54,"props":1695,"children":1696},{},[1697],{"type":51,"value":1698},"Return a preflight report:",{"type":45,"tag":67,"props":1700,"children":1701},{},[1702,1707,1712,1739,1744,1749],{"type":45,"tag":71,"props":1703,"children":1704},{},[1705],{"type":51,"value":1706},"Region inventory and deployment order",{"type":45,"tag":71,"props":1708,"children":1709},{},[1710],{"type":51,"value":1711},"Per-context node labels and zone spread",{"type":45,"tag":71,"props":1713,"children":1714},{},[1715,1717,1723,1724,1729,1731,1737],{"type":51,"value":1716},"Per-region ",{"type":45,"tag":87,"props":1718,"children":1720},{"className":1719},[],[1721],{"type":51,"value":1722},"clusterDomain",{"type":51,"value":171},{"type":45,"tag":87,"props":1725,"children":1727},{"className":1726},[],[1728],{"type":51,"value":789},{"type":51,"value":1730},", and ",{"type":45,"tag":87,"props":1732,"children":1734},{"className":1733},[],[1735],{"type":51,"value":1736},"regions",{"type":51,"value":1738}," completeness",{"type":45,"tag":71,"props":1740,"children":1741},{},[1742],{"type":51,"value":1743},"Cross-region DNS\u002FTCP results",{"type":45,"tag":71,"props":1745,"children":1746},{},[1747],{"type":51,"value":1748},"Certificate trust validation result",{"type":45,"tag":71,"props":1750,"children":1751},{},[1752],{"type":51,"value":1753},"A clear go\u002Fno-go recommendation before Helm install or upgrade",{"type":45,"tag":60,"props":1755,"children":1757},{"id":1756},"references",[1758],{"type":51,"value":1759},"References",{"type":45,"tag":67,"props":1761,"children":1762},{},[1763,1772,1781,1790,1799,1810],{"type":45,"tag":71,"props":1764,"children":1765},{},[1766],{"type":45,"tag":1141,"props":1767,"children":1769},{"href":1768},"..\u002F..\u002F..\u002Fcockroachdb-parent\u002Fcharts\u002Fcockroachdb\u002FREADME.md",[1770],{"type":51,"value":1771},"CockroachDB Helm Chart README: Multi Region Deployments",{"type":45,"tag":71,"props":1773,"children":1774},{},[1775],{"type":45,"tag":1141,"props":1776,"children":1778},{"href":1777},"..\u002F..\u002F..\u002Fexamples\u002Fcockroachdb-operator\u002Fmulti-region-values.yaml",[1779],{"type":51,"value":1780},"Multi-region values example",{"type":45,"tag":71,"props":1782,"children":1783},{},[1784],{"type":45,"tag":1141,"props":1785,"children":1787},{"href":1786},"..\u002F..\u002Fcockroachdb-observability-and-diagnostics\u002Fdiagnosing-cockroachdb-helm-deployments\u002FSKILL.md",[1788],{"type":51,"value":1789},"Diagnosing CockroachDB Helm deployments",{"type":45,"tag":71,"props":1791,"children":1792},{},[1793],{"type":45,"tag":1141,"props":1794,"children":1796},{"href":1795},"..\u002F..\u002Fcockroachdb-observability-and-diagnostics\u002Fcollecting-cockroachdb-operator-escalation-packet\u002FSKILL.md",[1797],{"type":51,"value":1798},"Operator escalation packet collection",{"type":45,"tag":71,"props":1800,"children":1801},{},[1802],{"type":45,"tag":1141,"props":1803,"children":1807},{"href":1804,"rel":1805},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Fmultiregion-overview.html",[1806],"nofollow",[1808],{"type":51,"value":1809},"CockroachDB Docs: Multi-Region Capabilities",{"type":45,"tag":71,"props":1811,"children":1812},{},[1813],{"type":45,"tag":1141,"props":1814,"children":1817},{"href":1815,"rel":1816},"https:\u002F\u002Fwww.cockroachlabs.com\u002Fdocs\u002Fstable\u002Fcockroach-start.html#locality",[1806],[1818],{"type":51,"value":1819},"CockroachDB Docs: cockroach start locality",{"type":45,"tag":1821,"props":1822,"children":1823},"style",{},[1824],{"type":51,"value":1825},"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":1827,"total":585},[1828,1843,1856,1871,1882,1892],{"slug":1829,"name":1829,"fn":1830,"description":1831,"org":1832,"tags":1833,"stars":25,"repoUrl":26,"updatedAt":1842},"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},[1834,1835,1838,1839],{"name":17,"slug":18,"type":15},{"name":1836,"slug":1837,"type":15},"Incident Response","incident-response",{"name":23,"slug":24,"type":15},{"name":1840,"slug":1841,"type":15},"Monitoring","monitoring","2026-07-12T07:57:25.288146",{"slug":1146,"name":1146,"fn":1844,"description":1845,"org":1846,"tags":1847,"stars":25,"repoUrl":26,"updatedAt":1855},"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},[1848,1849,1852],{"name":20,"slug":21,"type":15},{"name":1850,"slug":1851,"type":15},"Encryption","encryption",{"name":1853,"slug":1854,"type":15},"Security","security","2026-07-12T07:56:37.675396",{"slug":1857,"name":1857,"fn":1858,"description":1859,"org":1860,"tags":1861,"stars":25,"repoUrl":26,"updatedAt":1870},"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},[1862,1863,1866,1867],{"name":17,"slug":18,"type":15},{"name":1864,"slug":1865,"type":15},"Debugging","debugging",{"name":23,"slug":24,"type":15},{"name":1868,"slug":1869,"type":15},"Migration","migration","2026-07-12T07:56:48.360871",{"slug":1872,"name":1872,"fn":1873,"description":1874,"org":1875,"tags":1876,"stars":25,"repoUrl":26,"updatedAt":1881},"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},[1877,1878,1879,1880],{"name":17,"slug":18,"type":15},{"name":1864,"slug":1865,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},"2026-07-12T07:57:24.018818",{"slug":1883,"name":1883,"fn":1884,"description":1885,"org":1886,"tags":1887,"stars":25,"repoUrl":26,"updatedAt":1891},"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},[1888,1889,1890],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},"2026-07-12T07:56:45.777567",{"slug":4,"name":4,"fn":5,"description":6,"org":1893,"tags":1894,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1895,1896,1897,1898],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"items":1900,"total":2021},[1901,1908,1914,1921,1928,1934,1941,1954,1969,1984,1995,2008],{"slug":1829,"name":1829,"fn":1830,"description":1831,"org":1902,"tags":1903,"stars":25,"repoUrl":26,"updatedAt":1842},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1904,1905,1906,1907],{"name":17,"slug":18,"type":15},{"name":1836,"slug":1837,"type":15},{"name":23,"slug":24,"type":15},{"name":1840,"slug":1841,"type":15},{"slug":1146,"name":1146,"fn":1844,"description":1845,"org":1909,"tags":1910,"stars":25,"repoUrl":26,"updatedAt":1855},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1911,1912,1913],{"name":20,"slug":21,"type":15},{"name":1850,"slug":1851,"type":15},{"name":1853,"slug":1854,"type":15},{"slug":1857,"name":1857,"fn":1858,"description":1859,"org":1915,"tags":1916,"stars":25,"repoUrl":26,"updatedAt":1870},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1917,1918,1919,1920],{"name":17,"slug":18,"type":15},{"name":1864,"slug":1865,"type":15},{"name":23,"slug":24,"type":15},{"name":1868,"slug":1869,"type":15},{"slug":1872,"name":1872,"fn":1873,"description":1874,"org":1922,"tags":1923,"stars":25,"repoUrl":26,"updatedAt":1881},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1924,1925,1926,1927],{"name":17,"slug":18,"type":15},{"name":1864,"slug":1865,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"slug":1883,"name":1883,"fn":1884,"description":1885,"org":1929,"tags":1930,"stars":25,"repoUrl":26,"updatedAt":1891},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1931,1932,1933],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1935,"tags":1936,"stars":25,"repoUrl":26,"updatedAt":27},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1937,1938,1939,1940],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":23,"slug":24,"type":15},{"name":13,"slug":14,"type":15},{"slug":1942,"name":1942,"fn":1943,"description":1944,"org":1945,"tags":1946,"stars":536,"repoUrl":1952,"updatedAt":1953},"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},[1947,1948,1949],{"name":17,"slug":18,"type":15},{"name":1840,"slug":1841,"type":15},{"name":1950,"slug":1951,"type":15},"Performance","performance","https:\u002F\u002Fgithub.com\u002Fcockroachdb\u002Fclaude-plugin","2026-07-12T07:57:18.753533",{"slug":1955,"name":1955,"fn":1956,"description":1957,"org":1958,"tags":1959,"stars":536,"repoUrl":1952,"updatedAt":1968},"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},[1960,1963,1964,1965],{"name":1961,"slug":1962,"type":15},"Data Modeling","data-modeling",{"name":17,"slug":18,"type":15},{"name":1950,"slug":1951,"type":15},{"name":1966,"slug":1967,"type":15},"SQL","sql","2026-07-12T07:57:22.763788",{"slug":1970,"name":1970,"fn":1971,"description":1972,"org":1973,"tags":1974,"stars":536,"repoUrl":1952,"updatedAt":1983},"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},[1975,1978,1981,1982],{"name":1976,"slug":1977,"type":15},"Audit","audit",{"name":1979,"slug":1980,"type":15},"Compliance","compliance",{"name":17,"slug":18,"type":15},{"name":1853,"slug":1854,"type":15},"2026-07-18T05:48:00.862384",{"slug":1985,"name":1985,"fn":1986,"description":1987,"org":1988,"tags":1989,"stars":536,"repoUrl":1952,"updatedAt":1994},"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},[1990,1991,1992,1993],{"name":1976,"slug":1977,"type":15},{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":1853,"slug":1854,"type":15},"2026-07-12T07:57:01.506735",{"slug":1996,"name":1996,"fn":1997,"description":1998,"org":1999,"tags":2000,"stars":536,"repoUrl":1952,"updatedAt":2007},"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},[2001,2002,2005,2006],{"name":1976,"slug":1977,"type":15},{"name":2003,"slug":2004,"type":15},"Data Analysis","data-analysis",{"name":17,"slug":18,"type":15},{"name":1950,"slug":1951,"type":15},"2026-07-12T07:57:16.190081",{"slug":2009,"name":2009,"fn":2010,"description":2011,"org":2012,"tags":2013,"stars":536,"repoUrl":1952,"updatedAt":2020},"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},[2014,2015,2018,2019],{"name":17,"slug":18,"type":15},{"name":2016,"slug":2017,"type":15},"Engineering","engineering",{"name":1950,"slug":1951,"type":15},{"name":1966,"slug":1967,"type":15},"2026-07-12T07:57:26.543278",40]