diff --git a/src/current/_includes/v20.2/misc/tooling.md b/src/current/_includes/v20.2/misc/tooling.md index a6d0a64b30b..bbb046b52cf 100644 --- a/src/current/_includes/v20.2/misc/tooling.md +++ b/src/current/_includes/v20.2/misc/tooling.md @@ -9,7 +9,7 @@ Cockroach Labs has partnered with open-source projects, vendors, and individuals Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling](transactions.html#client-side-intervention). For client-side transaction retry handling samples, see [Example Apps](example-apps.html). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community](community-tooling.html). @@ -19,21 +19,21 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Beta | N/A | N/A | | C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 4.1.3.1 | Beta | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) || -|| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) || +|| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | | Python | [psycopg2](https://www.psycopg.org/docs/install.html) | 2.8.6 | Full | N/A | [Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) || -|| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be 5.4.19)


3.13.2 (must be 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)](build-a-spring-app-with-cockroachdb-mybatis.html) || -|| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) || -|| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) || -|| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) || +|| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be 5.4.19)


3.13.2 (must be 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)](build-a-spring-app-with-cockroachdb-mybatis.html) || +|| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
0.3.17 | Full


Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) || +|| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) || +|| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v20.2/orchestration/kubernetes-prometheus-alertmanager.md b/src/current/_includes/v20.2/orchestration/kubernetes-prometheus-alertmanager.md index a0974949fd9..c535197898a 100644 --- a/src/current/_includes/v20.2/orchestration/kubernetes-prometheus-alertmanager.md +++ b/src/current/_includes/v20.2/orchestration/kubernetes-prometheus-alertmanager.md @@ -90,7 +90,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated prometheus-operator 1/1 1 1 27s ~~~ -4. Use our [`prometheus.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/prometheus.yaml) file to create the various objects necessary to run a Prometheus instance: +4. Use our [`prometheus.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %}) file to create the various objects necessary to run a Prometheus instance: {{site.data.alerts.callout_info}} By default, this manifest uses the secret name generated by the CockroachDB Kubernetes Operator. If you generated your own certificates and keys when starting CockroachDB, be sure that `ca.secret.name` matches the name of the node secret you created. @@ -99,7 +99,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ ~~~ @@ -137,14 +137,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ### Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 2. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -174,12 +174,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -4. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +4. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -204,12 +204,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -7. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +7. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v20.2/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v20.2/orchestration/start-cockroachdb-insecure.md index 695d0832fce..ccb7223b693 100644 --- a/src/current/_includes/v20.2/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v20.2/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_danger}} @@ -40,11 +40,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 2. Modify the file wherever there is a `TODO` comment. @@ -85,12 +85,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -4. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +4. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v20.2/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v20.2/orchestration/start-cockroachdb-local-insecure.md index bebb6eb3062..4e4dd9af4c2 100644 --- a/src/current/_includes/v20.2/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v20.2/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -4. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +4. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v20.2/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v20.2/orchestration/start-cockroachdb-secure.md index 415e16323fc..5c9b9af5e6a 100644 --- a/src/current/_includes/v20.2/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v20.2/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ #### Set up configuration file -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Allocate CPU and memory resources to CockroachDB on each pod. These settings should be appropriate for your workload. For more context on provisioning CPU and memory, see the [Production Checklist](recommended-production-settings.html#hardware). diff --git a/src/current/_includes/v20.2/orchestration/test-cluster-secure.md b/src/current/_includes/v20.2/orchestration/test-cluster-secure.md index b162949a7b5..ac93a872c27 100644 --- a/src/current/_includes/v20.2/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v20.2/orchestration/test-cluster-secure.md @@ -30,7 +30,7 @@ To use the built-in SQL client, you need to launch a pod that runs indefinitely {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ @@ -72,14 +72,14 @@ To use the built-in SQL client, you need to launch a pod that runs indefinitely
To use the built-in SQL client, you need to launch a pod that runs indefinitely with the `cockroach` binary inside it, get a shell into the pod, and then start the built-in SQL client. -1. From your local workstation, use our [`client-secure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/client-secure.yaml) file to launch a pod and keep it running indefinitely. +1. From your local workstation, use our [`client-secure.yaml`]({% link files/cockroach/cloud/kubernetes/client-secure.yaml %}) file to launch a pod and keep it running indefinitely. 1. Download the file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/client-secure.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/client-secure.yaml %} ~~~ 1. In the file, change `serviceAccountName: cockroachdb` to `serviceAccountName: my-release-cockroachdb`. diff --git a/src/current/_includes/v23.1/misc/tooling.md b/src/current/_includes/v23.1/misc/tooling.md index 4ade5aaeb60..07346010c71 100644 --- a/src/current/_includes/v23.1/misc/tooling.md +++ b/src/current/_includes/v23.1/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/release-23.1/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.3.1 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v23.1/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v23.1/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v23.1/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v23.1/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v23.1/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v23.1/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v23.1/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v23.1/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v23.1/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v23.1/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v23.1/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v23.1/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v23.1/orchestration/test-cluster-secure.md b/src/current/_includes/v23.1/orchestration/test-cluster-secure.md index 56128c3dd4b..8c77d3e6f2f 100644 --- a/src/current/_includes/v23.1/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v23.1/orchestration/test-cluster-secure.md @@ -44,7 +44,7 @@ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v23.2/misc/tooling.md b/src/current/_includes/v23.2/misc/tooling.md index dcd24363435..c79bb03eb29 100644 --- a/src/current/_includes/v23.2/misc/tooling.md +++ b/src/current/_includes/v23.2/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v23.2/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v23.2/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v23.2/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v23.2/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v23.2/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v23.2/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v23.2/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v23.2/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v23.2/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v23.2/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v23.2/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v23.2/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v23.2/orchestration/test-cluster-secure.md b/src/current/_includes/v23.2/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v23.2/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v23.2/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.1/misc/tooling.md b/src/current/_includes/v24.1/misc/tooling.md index dcd24363435..c79bb03eb29 100644 --- a/src/current/_includes/v24.1/misc/tooling.md +++ b/src/current/_includes/v24.1/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v24.1/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v24.1/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v24.1/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v24.1/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.1/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v24.1/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v24.1/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v24.1/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.1/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v24.1/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v24.1/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v24.1/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v24.1/orchestration/test-cluster-secure.md b/src/current/_includes/v24.1/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v24.1/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v24.1/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.2/misc/tooling.md b/src/current/_includes/v24.2/misc/tooling.md index dcd24363435..c79bb03eb29 100644 --- a/src/current/_includes/v24.2/misc/tooling.md +++ b/src/current/_includes/v24.2/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v24.2/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v24.2/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v24.2/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v24.2/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.2/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v24.2/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v24.2/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v24.2/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.2/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v24.2/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v24.2/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v24.2/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v24.2/orchestration/test-cluster-secure.md b/src/current/_includes/v24.2/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v24.2/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v24.2/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.3/misc/tooling.md b/src/current/_includes/v24.3/misc/tooling.md index dcd24363435..c79bb03eb29 100644 --- a/src/current/_includes/v24.3/misc/tooling.md +++ b/src/current/_includes/v24.3/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v24.3/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v24.3/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v24.3/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v24.3/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.3/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v24.3/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v24.3/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v24.3/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v24.3/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v24.3/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v24.3/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v24.3/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v24.3/orchestration/test-cluster-secure.md b/src/current/_includes/v24.3/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v24.3/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v24.3/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.1/misc/tooling.md b/src/current/_includes/v25.1/misc/tooling.md index dcd24363435..c79bb03eb29 100644 --- a/src/current/_includes/v25.1/misc/tooling.md +++ b/src/current/_includes/v25.1/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v25.1/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v25.1/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v25.1/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v25.1/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.1/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v25.1/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v25.1/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v25.1/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.1/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v25.1/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v25.1/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v25.1/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v25.1/orchestration/test-cluster-secure.md b/src/current/_includes/v25.1/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v25.1/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v25.1/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.2/misc/tooling.md b/src/current/_includes/v25.2/misc/tooling.md index dcd24363435..c79bb03eb29 100644 --- a/src/current/_includes/v25.2/misc/tooling.md +++ b/src/current/_includes/v25.2/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v25.2/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v25.2/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v25.2/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v25.2/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.2/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v25.2/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v25.2/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v25.2/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.2/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v25.2/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v25.2/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v25.2/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v25.2/orchestration/test-cluster-secure.md b/src/current/_includes/v25.2/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v25.2/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v25.2/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.3/misc/tooling.md b/src/current/_includes/v25.3/misc/tooling.md index dcd24363435..c79bb03eb29 100644 --- a/src/current/_includes/v25.3/misc/tooling.md +++ b/src/current/_includes/v25.3/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v25.3/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v25.3/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v25.3/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v25.3/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.3/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v25.3/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v25.3/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v25.3/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.3/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v25.3/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v25.3/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v25.3/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v25.3/orchestration/test-cluster-secure.md b/src/current/_includes/v25.3/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v25.3/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v25.3/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.4/misc/tooling.md b/src/current/_includes/v25.4/misc/tooling.md index dcd24363435..c79bb03eb29 100644 --- a/src/current/_includes/v25.4/misc/tooling.md +++ b/src/current/_includes/v25.4/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Application frameworks diff --git a/src/current/_includes/v25.4/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v25.4/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v25.4/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v25.4/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.4/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v25.4/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v25.4/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v25.4/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v25.4/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v25.4/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v25.4/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v25.4/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v25.4/orchestration/test-cluster-secure.md b/src/current/_includes/v25.4/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v25.4/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v25.4/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.1/misc/tooling.md b/src/current/_includes/v26.1/misc/tooling.md index d5f69bf12a9..c108af9077d 100644 --- a/src/current/_includes/v26.1/misc/tooling.md +++ b/src/current/_includes/v26.1/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Develop with CockroachDB]({% link {{ page.version.version }}/developer-guide-overview.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres) | 0.19.2 | Partial | N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %}) | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Graphical user interfaces (GUIs) diff --git a/src/current/_includes/v26.1/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v26.1/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v26.1/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v26.1/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.1/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v26.1/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v26.1/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v26.1/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.1/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v26.1/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v26.1/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v26.1/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v26.1/orchestration/test-cluster-secure.md b/src/current/_includes/v26.1/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v26.1/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v26.1/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.2/misc/tooling.md b/src/current/_includes/v26.2/misc/tooling.md index 254a6425840..47f10c6e8c2 100644 --- a/src/current/_includes/v26.2/misc/tooling.md +++ b/src/current/_includes/v26.2/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Develop with CockroachDB]({% link {{ page.version.version }}/developer-guide-overview.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). @@ -32,23 +32,23 @@ For a list of tools supported by the CockroachDB community, see [Third-Party Too | Language | Driver | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+--------+-----------------------+---------------------+---------------------+----------| | C | [libpq](http://www.postgresql.org/docs/13/static/libpq.html)| PostgreSQL 13 | Partial | N/A | N/A | -| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/npgsql.go ||var npgsqlSupportedTag = "v||"\n\n %} | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | -| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgx.go ||var supportedPGXTag = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/libpq.go ||var libPQSupportedTag = "||"\n\n %} | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | -| Java | [JDBC](https://jdbc.postgresql.org/download/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/pgjdbc.go ||var supportedPGJDBCTag = "||"\n\n %} | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | +| C# (.NET) | [Npgsql](https://www.nuget.org/packages/Npgsql/) | 7.0.2 | Full | N/A | [Build a C# App with CockroachDB (Npgsql)](build-a-csharp-app-with-cockroachdb.html) | +| Go | [pgx](https://github.com/jackc/pgx/releases)


[pq](https://github.com/lib/pq) | v5.3.1
(use latest version of CockroachDB adapter)
v1.10.5 | Full


Full | [`crdbpgx`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbpgx)
(includes client-side transaction retry handling)
N/A | [Build a Go App with CockroachDB (pgx)](build-a-go-app-with-cockroachdb.html)


[Build a Go App with CockroachDB (pq)](build-a-go-app-with-cockroachdb-pq.html) | +| Java | [JDBC](https://jdbc.postgresql.org/download/) | REL42.7.3 | Full | N/A | [Build a Java App with CockroachDB (JDBC)](build-a-java-app-with-cockroachdb.html) | | JavaScript | [pg](https://www.npmjs.com/package/pg) | 8.2.1 | Full | N/A | [Build a Node.js App with CockroachDB (pg)](build-a-nodejs-app-with-cockroachdb.html) | -| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/asyncpg.go || var asyncpgSupportedTag = "||"\n\n %} | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | -| Ruby | [pg](https://rubygems.org/gems/pg) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/ruby_pg.go ||var rubyPGVersion = "||"\n\n %} | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | +| Python | [psycopg3](https://www.psycopg.org/psycopg3/docs/)


[psycopg2](https://www.psycopg.org/docs/install.html)


[asyncpg](https://magicstack.github.io/asyncpg/current/index.html) | 3.0.16


2.8.6


v0.24.0 | Full


Full


Partial | N/A


N/A


N/A | [Build a Python App with CockroachDB (psycopg3)](build-a-python-app-with-cockroachdb-psycopg3.html)


[Build a Python App with CockroachDB (psycopg2)](build-a-python-app-with-cockroachdb.html)


[Build a Python App with CockroachDB (asyncpg)](build-a-python-app-with-cockroachdb-asyncpg.html) | +| Ruby | [pg](https://rubygems.org/gems/pg) | v1.4.6 | Full | N/A | [Build a Ruby App with CockroachDB (pg)](build-a-ruby-app-with-cockroachdb.html) | | Rust | [rust-postgres](https://github.com/sfackler/rust-postgres)


[sqlx](https://github.com/launchbadge/sqlx) | 0.19.2


0.8.6 | Partial


Partial | N/A


N/A | [Build a Rust App with CockroachDB]({% link {{ page.version.version }}/build-a-rust-app-with-cockroachdb.md %})


N/A | ## Data access frameworks (e.g., ORMs) | Language | Framework | Latest tested version | Support level | CockroachDB adapter | Tutorial | |----------+-----------+-----------------------+---------------+---------------------+----------| -| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gorm.go ||var gormSupportedTag = "||"\n\n %}


{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/gopg.go ||var gopgSupportedTag = "||"\n\n %}
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | -| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/hibernate.go ||var supportedHibernateTag = "||"\n\n %} (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | -| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/sequelize.go ||var supportedSequelizeCockroachDBRelease = "||"\n\n %}
(use latest version of CockroachDB adapter)
{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/knex.go ||const supportedKnexTag = "||"\n\n %}
3.14.0
0.3.17 {% comment %}{% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/typeorm.go ||const supportedTypeORMRelease = "||"\n %}{% endcomment %} | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | -| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/activerecord.go ||var supportedRailsVersion = "||"\nvar %}
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | -| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | {% remote_include https://raw.githubusercontent.com/cockroachdb/cockroach/master/pkg/cmd/roachtest/tests/django.go ||var djangoSupportedTag = "cockroach-||"\nvar %}
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | +| Go | [GORM](https://github.com/jinzhu/gorm/releases)


[go-pg](https://github.com/go-pg/pg)
[upper/db](https://github.com/upper/db) | v1.24.1


v10.9.0
v4 | Full


Full
Full | [`crdbgorm`](https://pkg.go.dev/github.com/cockroachdb/cockroach-go/crdb/crdbgorm)
(includes client-side transaction retry handling)
N/A
N/A | [Build a Go App with CockroachDB (GORM)](build-a-go-app-with-cockroachdb-gorm.html)


N/A
[Build a Go App with CockroachDB (upper/db)](build-a-go-app-with-cockroachdb-upperdb.html) | +| Java | [Hibernate](https://hibernate.org/orm/)
(including [Hibernate Spatial](https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#spatial))
[jOOQ](https://www.jooq.org/)
[MyBatis](https://mybatis.org/mybatis-3/) | 6.6.20 (must be at least 5.4.19)


3.13.2 (must be at least 3.13.0)
3.5.5| Full


Full
Full | N/A


N/A
N/A | [Build a Java App with CockroachDB (Hibernate)](build-a-java-app-with-cockroachdb-hibernate.html)


[Build a Java App with CockroachDB (jOOQ)](build-a-java-app-with-cockroachdb-jooq.html)
[Build a Spring App with CockroachDB (MyBatis)]({% link {{ page.version.version }}/build-a-spring-app-with-cockroachdb-mybatis.md %}) | +| JavaScript/TypeScript | [Sequelize](https://www.npmjs.com/package/sequelize)


[Knex.js](https://knexjs.org/)
[Prisma](https://prisma.io)
[TypeORM](https://www.npmjs.com/package/typeorm) | v6.0.5
(use latest version of CockroachDB adapter)
2.5.1
3.14.0
0.3.17 | Full


Full
Full
Full | [`sequelize-cockroachdb`](https://www.npmjs.com/package/sequelize-cockroachdb)


N/A
N/A
N/A | [Build a Node.js App with CockroachDB (Sequelize)](build-a-nodejs-app-with-cockroachdb-sequelize.html)


[Build a Node.js App with CockroachDB (Knex.js)](build-a-nodejs-app-with-cockroachdb-knexjs.html)
[Build a Node.js App with CockroachDB (Prisma)](build-a-nodejs-app-with-cockroachdb-prisma.html)
[Build a TypeScript App with CockroachDB (TypeORM)](build-a-typescript-app-with-cockroachdb.html) | +| Ruby | [ActiveRecord](https://rubygems.org/gems/activerecord)
[RGeo/RGeo-ActiveRecord](https://github.com/cockroachdb/activerecord-cockroachdb-adapter#working-with-spatial-data) | 8.1.0
(use latest version of CockroachDB adapter) | Full | [`activerecord-cockroachdb-adapter`](https://rubygems.org/gems/activerecord-cockroachdb-adapter)
(includes client-side transaction retry handling) | [Build a Ruby App with CockroachDB (ActiveRecord)](build-a-ruby-app-with-cockroachdb-activerecord.html) | +| Python | [Django](https://pypi.org/project/Django/)
(including [GeoDjango](https://docs.djangoproject.com/en/3.1/ref/contrib/gis/))
[peewee](https://github.com/coleifer/peewee/)
[SQLAlchemy](https://www.sqlalchemy.org/) | 4.1.x
(use latest version of CockroachDB adapter)

3.13.3
0.7.13
1.4.17
(use latest version of CockroachDB adapter) | Full


Full
Full
Full | [`django-cockroachdb`](https://pypi.org/project/django-cockroachdb/)


N/A
N/A
[`sqlalchemy-cockroachdb`](https://pypi.org/project/sqlalchemy-cockroachdb)
(includes client-side transaction retry handling) | [Build a Python App with CockroachDB (Django)](build-a-python-app-with-cockroachdb-django.html)


N/A (See [peewee docs](http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#cockroach-database).)
[Build a Python App with CockroachDB (SQLAlchemy)](build-a-python-app-with-cockroachdb-sqlalchemy.html) | ## Graphical user interfaces (GUIs) diff --git a/src/current/_includes/v26.2/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v26.2/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..33aecc75ae6 100644 --- a/src/current/_includes/v26.2/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v26.2/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.2/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v26.2/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..f18b5bf6132 100644 --- a/src/current/_includes/v26.2/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v26.2/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`]({% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.2/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v26.2/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v26.2/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v26.2/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v26.2/orchestration/test-cluster-secure.md b/src/current/_includes/v26.2/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v26.2/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v26.2/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.3/misc/tooling.md b/src/current/_includes/v26.3/misc/tooling.md index 254a6425840..ca5184530f7 100644 --- a/src/current/_includes/v26.3/misc/tooling.md +++ b/src/current/_includes/v26.3/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Develop with CockroachDB]({% link {{ page.version.version }}/developer-guide-overview.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please [contact Support](https://support.cockroachlabs.com) with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v26.3/orchestration/start-cockroachdb-insecure.md b/src/current/_includes/v26.3/orchestration/start-cockroachdb-insecure.md index 3406d48edbb..79eb5a4bebc 100644 --- a/src/current/_includes/v26.3/orchestration/start-cockroachdb-insecure.md +++ b/src/current/_includes/v26.3/orchestration/start-cockroachdb-insecure.md @@ -1,10 +1,10 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it. - Download [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml): + Download [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -27,11 +27,11 @@ Alternatively, if you'd rather start with a configuration file that has been customized for performance: - 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml): + 1. Download our [performance version of `cockroachdb-statefulset-insecure.yaml`]({% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/performance/cockroachdb-statefulset-insecure.yaml %} ~~~ 1. Modify the file wherever there is a `TODO` comment. @@ -72,12 +72,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`](https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.3/orchestration/start-cockroachdb-local-insecure.md b/src/current/_includes/v26.3/orchestration/start-cockroachdb-local-insecure.md index 552cb3cd25f..9cc8f4309d8 100644 --- a/src/current/_includes/v26.3/orchestration/start-cockroachdb-local-insecure.md +++ b/src/current/_includes/v26.3/orchestration/start-cockroachdb-local-insecure.md @@ -1,8 +1,8 @@ -1. From your local workstation, use our [`cockroachdb-statefulset.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/cockroachdb-statefulset.yaml) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: +1. From your local workstation, use our [`cockroachdb-statefulset.yaml`]({% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %}) file to create the StatefulSet that automatically creates 3 pods, each with a CockroachDB node running inside it: {% include_cached copy-clipboard.html %} ~~~ shell - $ kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml + $ kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cockroachdb-statefulset.yaml %} ~~~ ~~~ @@ -41,12 +41,12 @@ pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s ~~~ -1. Use our [`cluster-init.yaml`](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: +1. Use our [`cluster-init.yaml`](https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %}) file to perform a one-time initialization that joins the CockroachDB nodes into a single cluster: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/cluster-init.yaml %} ~~~ ~~~ diff --git a/src/current/_includes/v26.3/orchestration/start-cockroachdb-secure.md b/src/current/_includes/v26.3/orchestration/start-cockroachdb-secure.md index 972cabc2d8e..a88f4b6a251 100644 --- a/src/current/_includes/v26.3/orchestration/start-cockroachdb-secure.md +++ b/src/current/_includes/v26.3/orchestration/start-cockroachdb-secure.md @@ -1,10 +1,10 @@ ### Configure the cluster -1. Download and modify our [StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml): +1. Download and modify our [StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml %} ~~~ 1. Update `secretName` with the name of the corresponding node secret. diff --git a/src/current/_includes/v26.3/orchestration/test-cluster-secure.md b/src/current/_includes/v26.3/orchestration/test-cluster-secure.md index 8b9963a54eb..6606e7d5295 100644 --- a/src/current/_includes/v26.3/orchestration/test-cluster-secure.md +++ b/src/current/_includes/v26.3/orchestration/test-cluster-secure.md @@ -42,7 +42,7 @@ $ kubectl create \ {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl create \ --f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/bring-your-own-certs/client.yaml +-f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml %} ~~~ ~~~ diff --git a/src/current/files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml b/src/current/files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml new file mode 100644 index 00000000000..ade0eb4af06 --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/bring-your-own-certs/client.yaml @@ -0,0 +1,35 @@ +# This config file demonstrates how to connect to the CockroachDB StatefulSet +# defined in bring-your-own-certs-statefulset.yaml that uses certificates +# created outside of Kubernetes. See that file for why you may want to use it. +# You should be able to adapt the core ideas to deploy your own custom +# applications and connect them to the database similarly. +# +# The pod that this file defines will sleep in the cluster not using any +# resources. After creating the pod, you can use it to open up a SQL shell to +# the database by running: +# +# kubectl exec -it cockroachdb-client-secure -- ./cockroach sql --url="postgres://root@cockroachdb-public:26257/?sslmode=verify-full&sslcert=/cockroach-certs/client.root.crt&sslkey=/cockroach-certs/client.root.key&sslrootcert=/cockroach-certs/ca.crt" +apiVersion: v1 +kind: Pod +metadata: + name: cockroachdb-client-secure + labels: + app: cockroachdb-client +spec: + serviceAccountName: cockroachdb + containers: + - name: cockroachdb-client + image: cockroachdb/cockroach:latest + # Keep a pod open indefinitely so kubectl exec can be used to get a shell to it + # and run cockroach client commands, such as cockroach sql, cockroach node status, etc. + command: + - sleep + - "2147483648" # 2^31 + volumeMounts: + - name: client-certs + mountPath: /cockroach-certs + volumes: + - name: client-certs + secret: + secretName: cockroachdb.client.root + defaultMode: 256 diff --git a/src/current/files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml b/src/current/files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml new file mode 100644 index 00000000000..96fe724d25c --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/bring-your-own-certs/cockroachdb-statefulset.yaml @@ -0,0 +1,244 @@ +# This config file defines a CockroachDB StatefulSet that uses certificates +# created outside of Kubernetes. You may want to use it if you want to use a +# different certificate authority from the one being used by Kubernetes or if +# your Kubernetes cluster doesn't fully support certificate-signing requests +# (e.g. as of July 2018, EKS doesn't work properly). +# +# To use this config file, first set up your certificates and load them into +# your Kubernetes cluster as Secrets using the commands below: +# +# mkdir certs +# mkdir my-safe-directory +# cockroach cert create-ca --certs-dir=certs --ca-key=my-safe-directory/ca.key +# cockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.key +# kubectl create secret generic cockroachdb.client.root --from-file=certs +# cockroach cert create-node --certs-dir=certs --ca-key=my-safe-directory/ca.key localhost 127.0.0.1 cockroachdb-public cockroachdb-public.default cockroachdb-public.default.svc.cluster.local *.cockroachdb *.cockroachdb.default *.cockroachdb.default.svc.cluster.local +# kubectl create secret generic cockroachdb.node --from-file=certs +# kubectl create -f bring-your-own-certs-statefulset.yaml +# kubectl exec -it cockroachdb-0 -- /cockroach/cockroach init --certs-dir=/cockroach/cockroach-certs +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cockroachdb + labels: + app: cockroachdb +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cockroachdb + labels: + app: cockroachdb +rules: +- apiGroups: + - "" + resources: + - secrets + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cockroachdb + labels: + app: cockroachdb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cockroachdb +subjects: +- kind: ServiceAccount + name: cockroachdb + namespace: default +--- +apiVersion: v1 +kind: Service +metadata: + # This service is meant to be used by clients of the database. It exposes a ClusterIP that will + # automatically load balance connections to the different database pods. + name: cockroachdb-public + labels: + app: cockroachdb +spec: + ports: + # The main port, served by gRPC, serves Postgres-flavor SQL, internode + # traffic and the cli. + - port: 26257 + targetPort: 26257 + name: grpc + # The secondary port serves the UI as well as health and debug endpoints. + - port: 8080 + targetPort: 8080 + name: http + selector: + app: cockroachdb +--- +apiVersion: v1 +kind: Service +metadata: + # This service only exists to create DNS entries for each pod in the stateful + # set such that they can resolve each other's IP addresses. It does not + # create a load-balanced ClusterIP and should not be used directly by clients + # in most circumstances. + name: cockroachdb + labels: + app: cockroachdb + annotations: + # Use this annotation in addition to the actual publishNotReadyAddresses + # field below because the annotation will stop being respected soon but the + # field is broken in some versions of Kubernetes: + # https://github.com/kubernetes/kubernetes/issues/58662 + service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" + # Enable automatic monitoring of all instances when Prometheus is running in the cluster. + prometheus.io/scrape: "true" + prometheus.io/path: "_status/vars" + prometheus.io/port: "8080" +spec: + ports: + - port: 26257 + targetPort: 26257 + name: grpc + - port: 8080 + targetPort: 8080 + name: http + # We want all pods in the StatefulSet to have their addresses published for + # the sake of the other CockroachDB pods even before they're ready, since they + # have to be able to talk to each other in order to become ready. + publishNotReadyAddresses: true + clusterIP: None + selector: + app: cockroachdb +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: cockroachdb-budget + labels: + app: cockroachdb +spec: + selector: + matchLabels: + app: cockroachdb + maxUnavailable: 1 +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: cockroachdb +spec: + serviceName: "cockroachdb" + replicas: 3 + selector: + matchLabels: + app: cockroachdb + template: + metadata: + labels: + app: cockroachdb + spec: + serviceAccountName: cockroachdb + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cockroachdb + topologyKey: kubernetes.io/hostname + containers: + - name: cockroachdb + image: cockroachdb/cockroach:latest + imagePullPolicy: IfNotPresent + # TODO: Change these to appropriate values for the hardware that you're running. You can see + # the resources that can be allocated on each of your Kubernetes nodes by running: + # kubectl describe nodes + # Note that requests and limits should have identical values. + resources: + requests: + cpu: "2" + memory: "8Gi" + limits: + cpu: "2" + memory: "8Gi" + ports: + - containerPort: 26257 + name: grpc + - containerPort: 8080 + name: http +# We recommend that you do not configure a liveness probe on a production environment, as this can impact the availability of production databases. +# livenessProbe: +# httpGet: +# path: "/health" +# port: http +# scheme: HTTPS +# initialDelaySeconds: 30 +# periodSeconds: 5 + readinessProbe: + httpGet: + path: "/health?ready=1" + port: http + scheme: HTTPS + initialDelaySeconds: 10 + periodSeconds: 5 + failureThreshold: 2 + volumeMounts: + - name: datadir + mountPath: /cockroach/cockroach-data + - name: certs + mountPath: /cockroach/cockroach-certs + env: + - name: COCKROACH_CHANNEL + value: kubernetes-secure + - name: GOMAXPROCS + valueFrom: + resourceFieldRef: + resource: limits.cpu + divisor: "1" + - name: MEMORY_LIMIT_MIB + valueFrom: + resourceFieldRef: + resource: limits.memory + divisor: "1Mi" + command: + - "/bin/bash" + - "-ecx" + # The use of qualified `hostname -f` is crucial: + # Other nodes aren't able to look up the unqualified hostname. + - exec + /cockroach/cockroach + start + --logtostderr + --certs-dir /cockroach/cockroach-certs + --advertise-host $(hostname -f) + --http-addr 0.0.0.0 + --join cockroachdb-0.cockroachdb,cockroachdb-1.cockroachdb,cockroachdb-2.cockroachdb + --cache $(expr $MEMORY_LIMIT_MIB / 4)MiB + --max-sql-memory $(expr $MEMORY_LIMIT_MIB / 4)MiB + # No pre-stop hook is required, a SIGTERM plus some time is all that's + # needed for graceful shutdown of a node. + terminationGracePeriodSeconds: 60 + volumes: + - name: datadir + persistentVolumeClaim: + claimName: datadir + - name: certs + secret: + secretName: cockroachdb.node + defaultMode: 256 + podManagementPolicy: Parallel + updateStrategy: + type: RollingUpdate + volumeClaimTemplates: + - metadata: + name: datadir + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: 100Gi diff --git a/src/current/files/cockroach/cloud/kubernetes/client-secure.yaml b/src/current/files/cockroach/cloud/kubernetes/client-secure.yaml new file mode 100644 index 00000000000..87e51bca336 --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/client-secure.yaml @@ -0,0 +1,48 @@ +apiVersion: v1 +kind: Pod +metadata: + name: cockroachdb-client-secure + labels: + app: cockroachdb-client +spec: + serviceAccountName: cockroachdb + initContainers: + # The init-certs container sends a certificate signing request to the + # kubernetes cluster. + # You can see pending requests using: kubectl get csr + # CSRs can be approved using: kubectl certificate approve + # + # In addition to the client certificate and key, the init-certs entrypoint will symlink + # the cluster CA to the certs directory. + - name: init-certs + image: cockroachdb/cockroach-k8s-request-cert:0.4 + imagePullPolicy: IfNotPresent + command: + - "/bin/ash" + - "-ecx" + - "/request-cert -namespace=${POD_NAMESPACE} -certs-dir=/cockroach-certs -type=client -user=root -symlink-ca-from=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeMounts: + - name: client-certs + mountPath: /cockroach-certs + containers: + - name: cockroachdb-client + image: cockroachdb/cockroach:latest + imagePullPolicy: IfNotPresent + volumeMounts: + - name: client-certs + mountPath: /cockroach-certs + # Keep a pod open indefinitely so kubectl exec can be used to get a shell to it + # and run cockroach client commands, such as cockroach sql, cockroach node status, etc. + command: + - sleep + - "2147483648" # 2^31 + # This pod isn't doing anything important, so don't bother waiting to terminate it. + terminationGracePeriodSeconds: 0 + volumes: + - name: client-certs + emptyDir: {} diff --git a/src/current/files/cockroach/cloud/kubernetes/cluster-init.yaml b/src/current/files/cockroach/cloud/kubernetes/cluster-init.yaml new file mode 100644 index 00000000000..779fd77b899 --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/cluster-init.yaml @@ -0,0 +1,19 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: cluster-init + labels: + app: cockroachdb +spec: + template: + spec: + containers: + - name: cluster-init + image: cockroachdb/cockroach:latest + imagePullPolicy: IfNotPresent + command: + - "/cockroach/cockroach" + - "init" + - "--insecure" + - "--host=cockroachdb-0.cockroachdb" + restartPolicy: OnFailure diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/README.md b/src/current/files/cockroach/cloud/kubernetes/multiregion/README.md new file mode 100644 index 00000000000..57b1fd0b9b9 --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/README.md @@ -0,0 +1,86 @@ +# Running CockroachDB across multiple Kubernetes clusters (GKE) + +The script and configuration files in this directory enable deploying +CockroachDB across multiple Kubernetes clusters that are spread across different +geographic regions and hosted on [GKE](https://cloud.google.com/kubernetes-engine). It deploys a CockroachDB +[StatefulSet](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) +into each separate cluster, and links them together using DNS. + +To use the configuration provided here, check out this repository (or otherwise +download a copy of this directory), fill in the constants at the top of +[setup.py](setup.py) with the relevant information about your Kubernetes +clusters, optionally make any desired modifications to +[cockroachdb-statefulset-secure.yaml](cockroachdb-statefulset-secure.yaml) as +explained in [our Kubernetes performance tuning +guide](https://www.cockroachlabs.com/docs/stable/kubernetes-performance.html), +then finally run [setup.py](setup.py). + +You should see a lot of output as it does its thing, hopefully ending after +printing out `job "cluster-init-secure" created`. This implies that everything +was created successfully, and you should soon see the CockroachDB cluster +initialized with 3 pods in the "READY" state in each Kubernetes cluster. At this +point you can manage the StatefulSet in each cluster independently if you so +desire, scaling up the number of replicas, changing their resource requests, or +making other modifications as you please. + +If anything goes wrong along the way, please let us know via any of the [normal +troubleshooting +channels](https://www.cockroachlabs.com/docs/stable/support-resources.html). +While we believe this creates a highly available, maintainable multi-region +deployment, it is still pushing the boundaries of how Kubernetes is typically +used, so feedback and issue reports are very appreciated. + +## Limitations + +### Pod-to-pod connectivity + +The deployment outlined in this directory relies on pod IP addresses being +routable even across Kubernetes clusters and regions. This achieves optimal +performance, particularly when compared to alternative solutions that route all packets between clusters through load balancers, but means that it won't work in certain environments. + +This requirement is satisfied by clusters deployed in cloud environments such as Google Kubernetes Engine, and +can also be satisfied by on-prem environments depending on the [Kubernetes networking setup](https://kubernetes.io/docs/concepts/cluster-administration/networking/) used. If you want to test whether your cluster will work, you can run this basic network test: + +```shell +$ kubectl run network-test --image=alpine --restart=Never -- sleep 999999 +pod "network-test" created +$ kubectl describe pod network-test | grep IP +IP: THAT-PODS-IP-ADDRESS +$ kubectl config use-context YOUR-OTHER-CLUSTERS-CONTEXT-HERE +$ kubectl run -it network-test --image=alpine --restart=Never -- ping THAT-PODS-IP-ADDRESS +If you don't see a command prompt, try pressing enter. +64 bytes from 10.12.14.10: seq=1 ttl=62 time=0.570 ms +64 bytes from 10.12.14.10: seq=2 ttl=62 time=0.449 ms +64 bytes from 10.12.14.10: seq=3 ttl=62 time=0.635 ms +64 bytes from 10.12.14.10: seq=4 ttl=62 time=0.722 ms +64 bytes from 10.12.14.10: seq=5 ttl=62 time=0.504 ms +... +``` + +If the pods can directly connect, you should see successful ping output like the +above. If they can't, you won't see any successful ping responses. Make sure to +delete the `network-test` pod in each cluster when you're done! + +### Exposing DNS servers to the Internet + +As currently configured, the way that the DNS servers from each Kubernetes +cluster are hooked together is by exposing them via a load balanced IP address +that's visible to the public Internet. This is because [Google Cloud Platform's Internal Load Balancers do not currently support clients in one region using a load balancer in another region](https://cloud.google.com/compute/docs/load-balancing/internal/#deploying_internal_load_balancing_with_clients_across_vpn_or_interconnect). + +None of the services in your Kubernetes cluster will be made accessible, but +their names could leak out to a motivated attacker. If this is unacceptable, +please let us know and we can demonstrate other options. [Your voice could also +help convince Google to allow clients from one region to use an Internal Load +Balancer in another](https://issuetracker.google.com/issues/111021512), +eliminating the problem. + +## Cleaning up + +To remove all the resources created in your clusters by [setup.py](setup.py), +copy the parameters you provided at the top of [setup.py](setup.py) to the top +of [teardown.py](teardown.py) and run [teardown.py](teardown.py). + +## More information + +For more information on running CockroachDB in Kubernetes, please see the [README +in the parent directory](../README.md). diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml new file mode 100644 index 00000000000..965b5dfcc4e --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Pod +metadata: + name: cockroachdb-client-secure + labels: + app: cockroachdb-client +spec: + serviceAccountName: cockroachdb + containers: + - name: cockroachdb-client + image: cockroachdb/cockroach:latest + imagePullPolicy: IfNotPresent + volumeMounts: + - name: client-certs + mountPath: /cockroach-certs + # Keep a pod open indefinitely so kubectl exec can be used to get a shell to it + # and run cockroach client commands, such as cockroach sql, cockroach node status, etc. + command: + - sleep + - "2147483648" # 2^31 + # This pod isn't doing anything important, so don't bother waiting to terminate it. + terminationGracePeriodSeconds: 0 + volumes: + - name: client-certs + secret: + secretName: cockroachdb.client.root + defaultMode: 256 diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml new file mode 100644 index 00000000000..a915f2028ec --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml @@ -0,0 +1,28 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: cluster-init-secure + labels: + app: cockroachdb +spec: + template: + spec: + serviceAccountName: cockroachdb + containers: + - name: cluster-init + image: cockroachdb/cockroach:latest + imagePullPolicy: IfNotPresent + volumeMounts: + - name: client-certs + mountPath: /cockroach-certs + command: + - "/cockroach/cockroach" + - "init" + - "--certs-dir=/cockroach-certs" + - "--host=cockroachdb-0.cockroachdb" + restartPolicy: OnFailure + volumes: + - name: client-certs + secret: + secretName: cockroachdb.client.root + defaultMode: 256 diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml new file mode 100644 index 00000000000..c7bde61ef84 --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml @@ -0,0 +1,248 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cockroachdb + labels: + app: cockroachdb +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cockroachdb + labels: + app: cockroachdb +rules: +- apiGroups: + - "" + resources: + - secrets + verbs: + - create + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cockroachdb + labels: + app: cockroachdb +rules: +- apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + verbs: + - create + - get + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cockroachdb + labels: + app: cockroachdb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cockroachdb +subjects: +- kind: ServiceAccount + name: cockroachdb + namespace: default +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cockroachdb + labels: + app: cockroachdb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cockroachdb +subjects: +- kind: ServiceAccount + name: cockroachdb + namespace: default +--- +apiVersion: v1 +kind: Service +metadata: + # This service is meant to be used by clients of the database. It exposes a ClusterIP that will + # automatically load balance connections to the different database pods. + name: cockroachdb-public + labels: + app: cockroachdb +spec: + ports: + # The main port, served by gRPC, serves Postgres-flavor SQL, internode + # traffic and the cli. + - port: 26257 + targetPort: 26257 + name: grpc + # The secondary port serves the UI as well as health and debug endpoints. + - port: 8080 + targetPort: 8080 + name: http + selector: + app: cockroachdb +--- +apiVersion: v1 +kind: Service +metadata: + # This service only exists to create DNS entries for each pod in the stateful + # set such that they can resolve each other's IP addresses. It does not + # create a load-balanced ClusterIP and should not be used directly by clients + # in most circumstances. + name: cockroachdb + labels: + app: cockroachdb + annotations: + # Use this annotation in addition to the actual publishNotReadyAddresses + # field below because the annotation will stop being respected soon but the + # field is broken in some versions of Kubernetes: + # https://github.com/kubernetes/kubernetes/issues/58662 + service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" + # Enable automatic monitoring of all instances when Prometheus is running in the cluster. + prometheus.io/scrape: "true" + prometheus.io/path: "_status/vars" + prometheus.io/port: "8080" +spec: + ports: + - port: 26257 + targetPort: 26257 + name: grpc + - port: 8080 + targetPort: 8080 + name: http + # We want all pods in the StatefulSet to have their addresses published for + # the sake of the other CockroachDB pods even before they're ready, since they + # have to be able to talk to each other in order to become ready. + publishNotReadyAddresses: true + clusterIP: None + selector: + app: cockroachdb +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: cockroachdb-budget + labels: + app: cockroachdb +spec: + selector: + matchLabels: + app: cockroachdb + maxUnavailable: 1 +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: cockroachdb +spec: + serviceName: "cockroachdb" + replicas: 3 + selector: + matchLabels: + app: cockroachdb + template: + metadata: + labels: + app: cockroachdb + spec: + serviceAccountName: cockroachdb + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cockroachdb + topologyKey: kubernetes.io/hostname + containers: + - name: cockroachdb + image: cockroachdb/cockroach:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 26257 + name: grpc + - containerPort: 8080 + name: http +# We recommend that you do not configure a liveness probe on a production environment, as this can impact the availability of production databases. +# livenessProbe: +# httpGet: +# path: "/health" +# port: http +# scheme: HTTPS +# initialDelaySeconds: 30 +# periodSeconds: 5 + readinessProbe: + httpGet: + path: "/health?ready=1" + port: http + scheme: HTTPS + initialDelaySeconds: 10 + periodSeconds: 5 + failureThreshold: 2 + volumeMounts: + - name: datadir + mountPath: /cockroach/cockroach-data + - name: certs + mountPath: /cockroach/cockroach-certs + env: + - name: COCKROACH_CHANNEL + value: kubernetes-multiregion + - name: GOMAXPROCS + valueFrom: + resourceFieldRef: + resource: limits.cpu + divisor: "1" + - name: MEMORY_LIMIT_MIB + valueFrom: + resourceFieldRef: + resource: limits.memory + divisor: "1Mi" + command: + - "/bin/bash" + - "-ecx" + # The use of qualified `hostname -f` is crucial: + # Other nodes aren't able to look up the unqualified hostname. + - exec + /cockroach/cockroach + start + --logtostderr + --certs-dir /cockroach/cockroach-certs + --advertise-host $(hostname -f) + --http-addr 0.0.0.0 + --join JOINLIST + --locality LOCALITYLIST + --cache $(expr $MEMORY_LIMIT_MIB / 4)MiB + --max-sql-memory $(expr $MEMORY_LIMIT_MIB / 4)MiB + # No pre-stop hook is required, a SIGTERM plus some time is all that's + # needed for graceful shutdown of a node. + terminationGracePeriodSeconds: 60 + volumes: + - name: datadir + persistentVolumeClaim: + claimName: datadir + - name: certs + secret: + secretName: cockroachdb.node + defaultMode: 256 + podManagementPolicy: Parallel + updateStrategy: + type: RollingUpdate + volumeClaimTemplates: + - metadata: + name: datadir + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: 100Gi diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml new file mode 100644 index 00000000000..b70474cbd8f --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + # TODO: Check whether AWS/Azure can use internal load balancers. Google + # can't, unfortunately. + # service.beta.kubernetes.io/aws-load-balancer-internal: "true" + # service.beta.kubernetes.io/azure-load-balancer-internal: "true" + # cloud.google.com/load-balancer-type: "Internal" + labels: + k8s-app: kube-dns + name: kube-dns-lb + namespace: kube-system +spec: + ports: + - name: dns + port: 53 + protocol: UDP + targetPort: 53 + selector: + k8s-app: kube-dns + sessionAffinity: None + type: LoadBalancer diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml new file mode 100644 index 00000000000..2806594ba3a --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml @@ -0,0 +1,286 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cockroachdb + labels: + app: cockroachdb +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cockroachdb + labels: + app: cockroachdb +rules: +- apiGroups: + - "" + resources: + - secrets + verbs: + - create + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cockroachdb + labels: + app: cockroachdb +rules: +- apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + verbs: + - create + - get + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cockroachdb + labels: + app: cockroachdb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cockroachdb +subjects: +- kind: ServiceAccount + name: cockroachdb + namespace: default +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cockroachdb + labels: + app: cockroachdb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cockroachdb +subjects: +- kind: ServiceAccount + name: cockroachdb + namespace: default +--- +apiVersion: v1 +kind: Service +metadata: + # This service is meant to be used by clients of the database. It exposes a ClusterIP that will + # automatically load balance connections to the different database pods. + name: cockroachdb-public + labels: + app: cockroachdb +spec: + ports: + # The main port, served by gRPC, serves Postgres-flavor SQL, internode + # traffic and the cli. + - port: 26257 + targetPort: 26257 + name: grpc + # The secondary port serves the UI as well as health and debug endpoints. + - port: 8080 + targetPort: 8080 + name: http + selector: + app: cockroachdb +--- +apiVersion: v1 +kind: Service +metadata: + # This service only exists to create DNS entries for each pod in the stateful + # set such that they can resolve each other's IP addresses. It does not + # create a load-balanced ClusterIP and should not be used directly by clients + # in most circumstances. + name: cockroachdb + labels: + app: cockroachdb + annotations: + # Use this annotation in addition to the actual publishNotReadyAddresses + # field below because the annotation will stop being respected soon but the + # field is broken in some versions of Kubernetes: + # https://github.com/kubernetes/kubernetes/issues/58662 + service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" + # Enable automatic monitoring of all instances when Prometheus is running in the cluster. + prometheus.io/scrape: "true" + prometheus.io/path: "_status/vars" + prometheus.io/port: "8080" +spec: + ports: + - port: 26257 + targetPort: 26257 + name: grpc + - port: 8080 + targetPort: 8080 + name: http + # We want all pods in the StatefulSet to have their addresses published for + # the sake of the other CockroachDB pods even before they're ready, since they + # have to be able to talk to each other in order to become ready. + publishNotReadyAddresses: true + clusterIP: None + selector: + app: cockroachdb +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: cockroachdb-budget + labels: + app: cockroachdb +spec: + selector: + matchLabels: + app: cockroachdb + maxUnavailable: 1 +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: cockroachdb + # TODO: Use this field to specify a namespace other than "default" in which to deploy CockroachDB (e.g., us-east-1). + # namespace: +spec: + serviceName: "cockroachdb" + replicas: 3 + selector: + matchLabels: + app: cockroachdb + template: + metadata: + labels: + app: cockroachdb + spec: + serviceAccountName: cockroachdb + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cockroachdb + topologyKey: kubernetes.io/hostname + # This init container is used to determine the availability zones of the Cockroach pods. The AZs are used to define --locality when starting Cockroach nodes. + initContainers: + - command: + - sh + - -ecx + - | + TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \ + -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") + echo "aws-$(curl -H "X-aws-ec2-metadata-token: $TOKEN" \ + http://169.254.169.254/latest/meta-data/placement/availability-zone/)" \ + > /etc/cockroach-env/zone + image: byrnedo/alpine-curl:3.20 + imagePullPolicy: IfNotPresent + name: locality-container + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /etc/cockroach-env + name: cockroach-env + containers: + - name: cockroachdb + image: cockroachdb/cockroach:latest + imagePullPolicy: IfNotPresent + # TODO: Change these to appropriate values for the hardware that you're running. You can see + # the resources that can be allocated on each of your Kubernetes nodes by running: + # kubectl describe nodes + # Note that requests and limits should have identical values. + resources: + requests: + cpu: "2" + memory: "8Gi" + limits: + cpu: "2" + memory: "8Gi" + ports: + - containerPort: 26257 + name: grpc + - containerPort: 8080 + name: http +# We recommend that you do not configure a liveness probe on a production environment, as this can impact the availability of production databases. +# livenessProbe: +# httpGet: +# path: "/health" +# port: http +# scheme: HTTPS +# initialDelaySeconds: 30 +# periodSeconds: 5 + readinessProbe: + httpGet: + path: "/health?ready=1" + port: http + scheme: HTTPS + initialDelaySeconds: 10 + periodSeconds: 5 + failureThreshold: 2 + volumeMounts: + - name: datadir + mountPath: /cockroach/cockroach-data + - name: certs + mountPath: /cockroach/cockroach-certs + - name: cockroach-env + mountPath: /etc/cockroach-env + env: + - name: COCKROACH_CHANNEL + value: kubernetes-multiregion + - name: GOMAXPROCS + valueFrom: + resourceFieldRef: + resource: limits.cpu + divisor: "1" + - name: MEMORY_LIMIT_MIB + valueFrom: + resourceFieldRef: + resource: limits.memory + divisor: "1Mi" + command: + - "/bin/bash" + - "-ecx" + # The use of qualified `hostname -f` is crucial: + # Other nodes aren't able to look up the unqualified hostname. + - exec + /cockroach/cockroach + start + --logtostderr + --certs-dir /cockroach/cockroach-certs + --advertise-host $(hostname -f) + --http-addr 0.0.0.0 + # TODO: Replace the placeholder values in --join and --locality with the namespace of the CockroachDB cluster in each region (e.g., us-east-1). + # --join cockroachdb-0.cockroachdb.,cockroachdb-1.cockroachdb.,cockroachdb-2.cockroachdb.,cockroachdb-0.cockroachdb.,cockroachdb-1.cockroachdb.,cockroachdb-2.cockroachdb.,cockroachdb-0.cockroachdb.,cockroachdb-1.cockroachdb.,cockroachdb-2.cockroachdb. + # --locality=region=,az=$(cat /etc/cockroach-env/zone),dns=$(hostname -f) + --cache $(expr $MEMORY_LIMIT_MIB / 4)MiB + --max-sql-memory $(expr $MEMORY_LIMIT_MIB / 4)MiB + # No pre-stop hook is required, a SIGTERM plus some time is all that's + # needed for graceful shutdown of a node. + terminationGracePeriodSeconds: 60 + volumes: + - name: datadir + persistentVolumeClaim: + claimName: datadir + - name: certs + secret: + secretName: cockroachdb.node + defaultMode: 256 + - name: cockroach-env + emptyDir: {} + podManagementPolicy: Parallel + updateStrategy: + type: RollingUpdate + volumeClaimTemplates: + - metadata: + name: datadir + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: 100Gi diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml new file mode 100644 index 00000000000..cb276be2efa --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml @@ -0,0 +1,41 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: coredns + namespace: kube-system +data: + Corefile: | + .:53 { + errors + ready + health + kubernetes cluster.local in-addr.arpa ip6.arpa { + pods insecure + upstream + fallthrough in-addr.arpa ip6.arpa + } + prometheus :9153 + forward . /etc/resolv.conf + cache 10 + loop + reload + loadbalance + } + .svc.cluster.local:53 { # <---- Modify + log + errors + ready + cache 10 + forward . { # <---- Modify + force_tcp # <---- Modify + } + } + .svc.cluster.local:53 { # <---- Modify + log + errors + ready + cache 10 + forward . { # <---- Modify + force_tcp # <---- Modify + } + } diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml new file mode 100644 index 00000000000..e80c63f29d3 --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + k8s-app: kube-dns + name: cockroachdb-dns-external + namespace: kube-system + annotations: + service.beta.kubernetes.io/aws-load-balancer-type: "nlb" +spec: + ports: + - name: dns + port: 53 + protocol: TCP + targetPort: 53 + selector: + k8s-app: kube-dns + type: LoadBalancer + loadBalancerSourceRanges: ["0.0.0.0/0"] diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml new file mode 100644 index 00000000000..0925dc1b800 --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml @@ -0,0 +1,30 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: example-secure +spec: + replicas: 1 + selector: + matchLabels: + app: loadgen + template: + metadata: + labels: + app: loadgen + spec: + serviceAccountName: cockroachdb + volumes: + - name: client-certs + secret: + secretName: cockroachdb.client.root + defaultMode: 256 + containers: + - name: loadgen + image: cockroachdb/loadgen-kv:0.1 + imagePullPolicy: IfNotPresent + volumeMounts: + - name: client-certs + mountPath: /cockroach-certs + command: + - "/kv" + - "postgres://root@cockroachdb-public:26257/kv?sslmode=verify-full&sslcert=/cockroach-certs/client.root.crt&sslkey=/cockroach-certs/client.root.key&sslrootcert=/cockroach-certs/ca.crt" diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml b/src/current/files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml new file mode 100644 index 00000000000..d45b53b8acc --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml @@ -0,0 +1,64 @@ +# This file contains the definitions needed to expose cockroachdb in a namespace +# other than the one it's running in. +# To use this file: +# 1. Replace "YOUR_ZONE_HERE" in this file with the name of the namespace that +# cockroachdb is running in in the given cluster. +# 2. Create a secret containing the certificates in the namespace that you want +# to expose the service in (the "default" namespace is assumed by the +# certificate creation commands in setup.py): +# kubectl create secret generic cockroachdb.client.root --namespace=YOUR_ZONE_HERE --from-file=certs +# 3. Create the resources in this cluster: +# kubectl apply -f external-name-svc.yaml +# +# After completing these steps, you should be able to access the cockroachdb +# cluster at the name `cockroachdb-public` in the default Kubernetes namespace +# (or at the name `cockroachdb-public.default` from any namespace). +# +# Note that the ServiceAccount and roles defined below are only needed for +# accessing the Secret containing the root client certificate. If you are +# managing client certificates (or passwords) some other way, you can do away +# with everything in this file other than the Service. +kind: Service +apiVersion: v1 +metadata: + name: cockroachdb-public +spec: + type: ExternalName + externalName: cockroachdb-public.YOUR_ZONE_HERE.svc.cluster.local +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cockroachdb + labels: + app: cockroachdb +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cockroachdb + labels: + app: cockroachdb +rules: +- apiGroups: + - "" + resources: + - secrets + verbs: + - create + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cockroachdb + labels: + app: cockroachdb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cockroachdb +subjects: +- kind: ServiceAccount + name: cockroachdb + namespace: default diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/setup.py b/src/current/files/cockroach/cloud/kubernetes/multiregion/setup.py new file mode 100644 index 00000000000..0531d47736b --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/setup.py @@ -0,0 +1,183 @@ +#!/usr/bin/env python + +# Copyright 2018 The Cockroach Authors. +# +# Use of this software is governed by the CockroachDB Software License +# included in the /LICENSE file. + + +import json +import os +from subprocess import check_call,check_output +from sys import exit +from time import sleep + +# Before running the script, fill in appropriate values for all the parameters +# above the dashed line. + +# Fill in the `contexts` map with the zones of your clusters and their +# corresponding kubectl context names. +# +# To get the names of your kubectl "contexts" for each of your clusters, run: +# kubectl config get-contexts +# +# example: +# contexts = { +# 'us-central1-a': 'gke_cockroach-alex_us-central1-a_my-cluster', +# 'us-central1-b': 'gke_cockroach-alex_us-central1-b_my-cluster', +# 'us-west1-b': 'gke_cockroach-alex_us-west1-b_my-cluster', +# } +contexts = { +} + +# Fill in the `regions` map with the zones and corresponding regions of your +# clusters. +# +# Setting regions is optional, but recommended, because it improves cockroach's +# ability to diversify data placement if you use more than one zone in the same +# region. If you aren't specifying regions, just leave the map empty. +# +# example: +# regions = { +# 'us-central1-a': 'us-central1', +# 'us-central1-b': 'us-central1', +# 'us-west1-b': 'us-west1', +# } +regions = { +} + +# Paths to directories in which to store certificates and generated YAML files. +certs_dir = './certs' +ca_key_dir = './my-safe-directory' +generated_files_dir = './generated' + +# Path to the cockroach binary on your local machine that you want to use +# generate certificates. Defaults to trying to find cockroach in your PATH. +cockroach_path = 'cockroach' + +# ------------------------------------------------------------------------------ + +# First, do some basic input validation. +if len(contexts) == 0: + exit("must provide at least one Kubernetes cluster in the `contexts` map at the top of the script") + +if len(regions) != 0 and len(regions) != len(contexts): + exit("regions not specified for all kubectl contexts (%d regions, %d contexts)" % (len(regions), len(contexts))) + +try: + check_call(["which", cockroach_path]) +except: + exit("no binary found at provided path '" + cockroach_path + "'; please put a cockroach binary in your path or change the cockroach_path variable") + +for zone, context in contexts.items(): + try: + check_call(['kubectl', 'get', 'pods', '--context', context]) + except: + exit("unable to make basic API call using kubectl context '%s' for cluster in zone '%s'; please check if the context is correct and your Kubernetes cluster is working" % (context, zone)) + +# Set up the necessary directories and certificates. Ignore errors because they may already exist. +try: + os.mkdir(certs_dir) +except OSError: + pass +try: + os.mkdir(ca_key_dir) +except OSError: + pass +try: + os.mkdir(generated_files_dir) +except OSError: + pass + +check_call([cockroach_path, 'cert', 'create-ca', '--certs-dir', certs_dir, '--ca-key', ca_key_dir+'/ca.key']) +check_call([cockroach_path, 'cert', 'create-client', 'root', '--certs-dir', certs_dir, '--ca-key', ca_key_dir+'/ca.key']) + +# For each cluster, create secrets containing the node and client certificates. +# Note that we create the root client certificate in both the zone namespace +# and the default namespace so that it's easier for clients in the default +# namespace to use without additional steps. +# +# Also create a load balancer to each cluster's DNS pods. +for zone, context in contexts.items(): + check_call(['kubectl', 'create', 'namespace', zone, '--context', context]) + check_call(['kubectl', 'create', 'secret', 'generic', 'cockroachdb.client.root', '--from-file', certs_dir, '--context', context]) + check_call(['kubectl', 'create', 'secret', 'generic', 'cockroachdb.client.root', '--namespace', zone, '--from-file', certs_dir, '--context', context]) + check_call([cockroach_path, 'cert', 'create-node', '--certs-dir', certs_dir, '--ca-key', ca_key_dir+'/ca.key', 'localhost', '127.0.0.1', 'cockroachdb-public', 'cockroachdb-public.default', 'cockroachdb-public.'+zone, 'cockroachdb-public.%s.svc.cluster.local' % (zone), '*.cockroachdb', '*.cockroachdb.'+zone, '*.cockroachdb.%s.svc.cluster.local' % (zone)]) + check_call(['kubectl', 'create', 'secret', 'generic', 'cockroachdb.node', '--namespace', zone, '--from-file', certs_dir, '--context', context]) + check_call('rm %s/node.*' % (certs_dir), shell=True) + + check_call(['kubectl', 'apply', '-f', 'dns-lb.yaml', '--context', context]) + +# Set up each cluster to forward DNS requests for zone-scoped namespaces to the +# relevant cluster's DNS server, using load balancers in order to create a +# static IP for each cluster's DNS endpoint. +dns_ips = dict() +for zone, context in contexts.items(): + external_ip = '' + while True: + external_ip = check_output(['kubectl', 'get', 'svc', 'kube-dns-lb', '--namespace', 'kube-system', '--context', context, '--template', '{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}']).decode('utf-8') + if external_ip: + break + print('Waiting for DNS load balancer IP in %s...' % (zone)) + sleep(10) + print('DNS endpoint for zone %s: %s' % (zone, external_ip)) + dns_ips[zone] = external_ip + +# Update each cluster's DNS configuration with an appropriate configmap. Note +# that we have to leave the local cluster out of its own configmap to avoid +# infinite recursion through the load balancer IP. We then have to delete the +# existing DNS pods in order for the new configuration to take effect. +for zone, context in contexts.items(): + remote_dns_ips = dict() + for z, ip in dns_ips.items(): + if z == zone: + continue + remote_dns_ips[z+'.svc.cluster.local'] = [ip] + config_filename = '%s/dns-configmap-%s.yaml' % (generated_files_dir, zone) + with open(config_filename, 'w') as f: + f.write("""\ +apiVersion: v1 +kind: ConfigMap +metadata: + name: kube-dns + namespace: kube-system +data: + stubDomains: | + %s +""" % (json.dumps(remote_dns_ips))) + check_call(['kubectl', 'apply', '-f', config_filename, '--namespace', 'kube-system', '--context', context]) + check_call(['kubectl', 'delete', 'pods', '-l', 'k8s-app=kube-dns', '--namespace', 'kube-system', '--context', context]) + +# Create a cockroachdb-public service in the default namespace in each cluster. +for zone, context in contexts.items(): + yaml_file = '%s/external-name-svc-%s.yaml' % (generated_files_dir, zone) + with open(yaml_file, 'w') as f: + check_call(['sed', 's/YOUR_ZONE_HERE/%s/g' % (zone), 'external-name-svc.yaml'], stdout=f) + check_call(['kubectl', 'apply', '-f', yaml_file, '--context', context]) + +# Generate the join string to be used. +join_addrs = [] +for zone in contexts: + for i in range(3): + join_addrs.append('cockroachdb-%d.cockroachdb.%s' % (i, zone)) +join_str = ','.join(join_addrs) + +# Create the cockroach resources in each cluster. +for zone, context in contexts.items(): + if zone in regions: + locality = 'region=%s,zone=%s' % (regions[zone], zone) + else: + locality = 'zone=%s' % (zone) + yaml_file = '%s/cockroachdb-statefulset-%s.yaml' % (generated_files_dir, zone) + with open(yaml_file, 'w') as f: + check_call(['sed', 's/JOINLIST/%s/g;s/LOCALITYLIST/%s/g' % (join_str, locality), 'cockroachdb-statefulset-secure.yaml'], stdout=f) + check_call(['kubectl', 'apply', '-f', yaml_file, '--namespace', zone, '--context', context]) + +# Finally, initialize the cluster. +print('Sleeping 30 seconds before attempting to initialize cluster to give time for volumes to be created and pods started.') +sleep(30) +for zone, context in contexts.items(): + check_call(['kubectl', 'create', '-f', 'cluster-init-secure.yaml', '--namespace', zone, '--context', context]) + # We only need run the init command in one zone given that all the zones are + # joined together as one cluster. + break diff --git a/src/current/files/cockroach/cloud/kubernetes/multiregion/teardown.py b/src/current/files/cockroach/cloud/kubernetes/multiregion/teardown.py new file mode 100644 index 00000000000..765ca3e9bbb --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/multiregion/teardown.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +# Copyright 2018 The Cockroach Authors. +# +# Use of this software is governed by the CockroachDB Software License +# included in the /LICENSE file. + + +from shutil import rmtree +from subprocess import call + +# Before running the script, fill in appropriate values for all the parameters +# above the dashed line. You should use the same values when tearing down a +# cluster that you used when setting it up. + +# To get the names of your kubectl "contexts" for each of your clusters, run: +# kubectl config get-contexts +contexts = { + 'us-central1-a': 'gke_cockroach-alex_us-central1-a_dns', + 'us-central1-b': 'gke_cockroach-alex_us-central1-b_dns', + 'us-west1-b': 'gke_cockroach-alex_us-west1-b_dns', +} + +certs_dir = './certs' +ca_key_dir = './my-safe-directory' +generated_files_dir = './generated' + +# ------------------------------------------------------------------------------ + +# Delete each cluster's special zone-scoped namespace, which transitively +# deletes all resources that were created in the namespace, along with the few +# other resources we created that weren't in that namespace +for zone, context in contexts.items(): + call(['kubectl', 'delete', 'namespace', zone, '--context', context]) + call(['kubectl', 'delete', 'secret', 'cockroachdb.client.root', '--context', context]) + call(['kubectl', 'delete', '-f', 'external-name-svc.yaml', '--context', context]) + call(['kubectl', 'delete', '-f', 'dns-lb.yaml', '--context', context]) + call(['kubectl', 'delete', 'configmap', 'kube-dns', '--namespace', 'kube-system', '--context', context]) + # Restart the DNS pods to clear out our stub-domains configuration. + call(['kubectl', 'delete', 'pods', '-l', 'k8s-app=kube-dns', '--namespace', 'kube-system', '--context', context]) + +try: + rmtree(certs_dir) +except OSError: + pass +try: + rmtree(ca_key_dir) +except OSError: + pass +try: + rmtree(generated_files_dir) +except OSError: + pass diff --git a/src/current/files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml b/src/current/files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml new file mode 100644 index 00000000000..275dbe1b81b --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml @@ -0,0 +1,205 @@ +# GENERATED FILE - DO NOT EDIT +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + labels: + app: cockroachdb + prometheus: cockroachdb + role: alert-rules + name: prometheus-cockroachdb-rules +spec: + groups: + - name: rules/dummy.rules + rules: + - alert: TestAlertManager + expr: vector(1) + - name: rules/aggregation.rules + rules: + - expr: sum without(store) (capacity{job="cockroachdb"}) + record: node:capacity + - expr: sum without(instance) (node:capacity{job="cockroachdb"}) + record: cluster:capacity + - expr: sum without(store) (capacity_available{job="cockroachdb"}) + record: node:capacity_available + - expr: sum without(instance) (node:capacity_available{job="cockroachdb"}) + record: cluster:capacity_available + - expr: capacity_available{job="cockroachdb"} / capacity{job="cockroachdb"} + record: capacity_available:ratio + - expr: node:capacity_available{job="cockroachdb"} / node:capacity{job="cockroachdb"} + record: node:capacity_available:ratio + - expr: cluster:capacity_available{job="cockroachdb"} / cluster:capacity{job="cockroachdb"} + record: cluster:capacity_available:ratio + - expr: rate(txn_durations_bucket{job="cockroachdb"}[1m]) + record: txn_durations_bucket:rate1m + - expr: histogram_quantile(0.5, txn_durations_bucket:rate1m) + record: txn_durations:rate1m:quantile_50 + - expr: histogram_quantile(0.75, txn_durations_bucket:rate1m) + record: txn_durations:rate1m:quantile_75 + - expr: histogram_quantile(0.9, txn_durations_bucket:rate1m) + record: txn_durations:rate1m:quantile_90 + - expr: histogram_quantile(0.95, txn_durations_bucket:rate1m) + record: txn_durations:rate1m:quantile_95 + - expr: histogram_quantile(0.99, txn_durations_bucket:rate1m) + record: txn_durations:rate1m:quantile_99 + - expr: rate(exec_latency_bucket{job="cockroachdb"}[1m]) + record: exec_latency_bucket:rate1m + - expr: histogram_quantile(0.5, exec_latency_bucket:rate1m) + record: exec_latency:rate1m:quantile_50 + - expr: histogram_quantile(0.75, exec_latency_bucket:rate1m) + record: exec_latency:rate1m:quantile_75 + - expr: histogram_quantile(0.9, exec_latency_bucket:rate1m) + record: exec_latency:rate1m:quantile_90 + - expr: histogram_quantile(0.95, exec_latency_bucket:rate1m) + record: exec_latency:rate1m:quantile_95 + - expr: histogram_quantile(0.99, exec_latency_bucket:rate1m) + record: exec_latency:rate1m:quantile_99 + - expr: rate(round_trip_latency_bucket{job="cockroachdb"}[1m]) + record: round_trip_latency_bucket:rate1m + - expr: histogram_quantile(0.5, round_trip_latency_bucket:rate1m) + record: round_trip_latency:rate1m:quantile_50 + - expr: histogram_quantile(0.75, round_trip_latency_bucket:rate1m) + record: round_trip_latency:rate1m:quantile_75 + - expr: histogram_quantile(0.9, round_trip_latency_bucket:rate1m) + record: round_trip_latency:rate1m:quantile_90 + - expr: histogram_quantile(0.95, round_trip_latency_bucket:rate1m) + record: round_trip_latency:rate1m:quantile_95 + - expr: histogram_quantile(0.99, round_trip_latency_bucket:rate1m) + record: round_trip_latency:rate1m:quantile_99 + - expr: rate(sql_exec_latency_bucket{job="cockroachdb"}[1m]) + record: sql_exec_latency_bucket:rate1m + - expr: histogram_quantile(0.5, sql_exec_latency_bucket:rate1m) + record: sql_exec_latency:rate1m:quantile_50 + - expr: histogram_quantile(0.75, sql_exec_latency_bucket:rate1m) + record: sql_exec_latency:rate1m:quantile_75 + - expr: histogram_quantile(0.9, sql_exec_latency_bucket:rate1m) + record: sql_exec_latency:rate1m:quantile_90 + - expr: histogram_quantile(0.95, sql_exec_latency_bucket:rate1m) + record: sql_exec_latency:rate1m:quantile_95 + - expr: histogram_quantile(0.99, sql_exec_latency_bucket:rate1m) + record: sql_exec_latency:rate1m:quantile_99 + - expr: rate(raft_process_logcommit_latency_bucket{job="cockroachdb"}[1m]) + record: raft_process_logcommit_latency_bucket:rate1m + - expr: histogram_quantile(0.5, raft_process_logcommit_latency_bucket:rate1m) + record: raft_process_logcommit_latency:rate1m:quantile_50 + - expr: histogram_quantile(0.75, raft_process_logcommit_latency_bucket:rate1m) + record: raft_process_logcommit_latency:rate1m:quantile_75 + - expr: histogram_quantile(0.9, raft_process_logcommit_latency_bucket:rate1m) + record: raft_process_logcommit_latency:rate1m:quantile_90 + - expr: histogram_quantile(0.95, raft_process_logcommit_latency_bucket:rate1m) + record: raft_process_logcommit_latency:rate1m:quantile_95 + - expr: histogram_quantile(0.99, raft_process_logcommit_latency_bucket:rate1m) + record: raft_process_logcommit_latency:rate1m:quantile_99 + - expr: rate(raft_process_commandcommit_latency_bucket{job="cockroachdb"}[1m]) + record: raft_process_commandcommit_latency_bucket:rate1m + - expr: histogram_quantile(0.5, raft_process_commandcommit_latency_bucket:rate1m) + record: raft_process_commandcommit_latency:rate1m:quantile_50 + - expr: histogram_quantile(0.75, raft_process_commandcommit_latency_bucket:rate1m) + record: raft_process_commandcommit_latency:rate1m:quantile_75 + - expr: histogram_quantile(0.9, raft_process_commandcommit_latency_bucket:rate1m) + record: raft_process_commandcommit_latency:rate1m:quantile_90 + - expr: histogram_quantile(0.95, raft_process_commandcommit_latency_bucket:rate1m) + record: raft_process_commandcommit_latency:rate1m:quantile_95 + - expr: histogram_quantile(0.99, raft_process_commandcommit_latency_bucket:rate1m) + record: raft_process_commandcommit_latency:rate1m:quantile_99 + - name: rules/alerts.rules + rules: + - alert: InstanceDown + annotations: + description: '{{ $labels.instance }} for cluster {{ $labels.cluster }} has + been down for more than 5 minutes.' + summary: Instance {{ $labels.instance }} down + expr: up{job="cockroachdb"} == 0 + for: 5m + - alert: InstanceDead + annotations: + description: '{{ $labels.instance }} for cluster {{ $labels.cluster }} has + been down for more than 15 minutes.' + summary: Instance {{ $labels.instance }} dead + expr: up{job="cockroachdb"} == 0 + for: 15m + - alert: InstanceRestart + annotations: + description: '{{ $labels.instance }} for cluster {{ $labels.cluster }} restarted + {{ $value }} time(s) in 10m' + summary: Instance {{ $labels.instance }} restarted + expr: resets(sys_uptime{job="cockroachdb"}[10m]) > 0 and resets(sys_uptime{job="cockroachdb"}[10m]) + < 5 + - alert: InstanceFlapping + annotations: + description: '{{ $labels.instance }} for cluster {{ $labels.cluster }} restarted + {{ $value }} time(s) in 10m' + summary: Instance {{ $labels.instance }} flapping + expr: resets(sys_uptime{job="cockroachdb"}[10m]) > 5 + - alert: LivenessMismatch + annotations: + description: Prometheus and {{ $labels.instance }} disagree on liveness + summary: Liveness mismatch for {{ $labels.instance }} + expr: (liveness_livenodes{job="cockroachdb"}) != ignoring(instance) group_left() + (count by(cluster, job) (up{job="cockroachdb"} == 1)) + for: 5m + labels: + severity: testing + - alert: VersionMismatch + annotations: + description: Cluster {{ $labels.cluster }} running {{ $value }} different + versions + summary: Binary version mismatch on {{ $labels.cluster }} + expr: count by(cluster) (count_values by(tag, cluster) ("version", build_timestamp{job="cockroachdb"})) + > 1 + for: 30m + - alert: StoreDiskLow + annotations: + summary: Store {{ $labels.store }} on node {{ $labels.instance }} at {{ $value + }} available disk fraction + expr: capacity_available:ratio{job="cockroachdb"} < 0.15 + - alert: ClusterDiskLow + annotations: + summary: Cluster {{ $labels.cluster }} at {{ $value }} available disk fraction + expr: cluster:capacity_available:ratio{job="cockroachdb"} < 0.2 + - alert: ZeroSQLQps + annotations: + summary: Instance {{ $labels.instance }} has SQL connections but no queries + expr: sql_conns{job="cockroachdb"} > 0 and rate(sql_query_count{job="cockroachdb"}[5m]) + == 0 + for: 10m + - alert: UnavailableRanges + annotations: + summary: Instance {{ $labels.instance }} has {{ $value }} unavailable ranges + expr: (sum by(instance, cluster) (ranges_unavailable{job="cockroachdb"})) > + 0 + for: 10m + labels: + severity: testing + - alert: NoLeaseRanges + annotations: + summary: Instance {{ $labels.instance }} has {{ $value }} ranges without leases + expr: (sum by(instance, cluster) (replicas_leaders_not_leaseholders{job="cockroachdb"})) + > 0 + for: 10m + labels: + severity: testing + - alert: CACertificateExpiresSoon + annotations: + summary: CA certificate for {{ $labels.instance }} expires in less than a + year + expr: (security_certificate_expiration_ca{job="cockroachdb"} > 0) and (security_certificate_expiration_ca{job="cockroachdb"} + - time()) < 86400 * 366 + labels: + frequency: daily + - alert: NodeCertificateExpiresSoon + annotations: + summary: Node certificate for {{ $labels.instance }} expires in less than + six months + expr: (security_certificate_expiration_node{job="cockroachdb"} > 0) and (security_certificate_expiration_node{job="cockroachdb"} + - time()) < 86400 * 183 + labels: + frequency: daily + - alert: HighOpenFDCount + annotations: + summary: 'Too many open file descriptors on {{ $labels.instance }}: {{ $value + }} fraction used' + expr: sys_fd_open{job="cockroachdb"} / sys_fd_softlimit{job="cockroachdb"} > + 0.8 + for: 10m + labels: + severity: testing diff --git a/src/current/files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml b/src/current/files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml new file mode 100644 index 00000000000..b558d5f6f6d --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml @@ -0,0 +1,14 @@ +global: + resolve_timeout: 5m +route: + group_by: ['job'] + group_wait: 30s + group_interval: 5m + repeat_interval: 12h + receiver: 'webhook' +receivers: +# Note that this is a dummy configuration just to allow AlertManager to start +- name: 'webhook' + webhook_configs: + - url: 'http://alertmanagerwh:30500/' + diff --git a/src/current/files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml b/src/current/files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml new file mode 100644 index 00000000000..5c451a8557f --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml @@ -0,0 +1,27 @@ +# Have prometheus-operator run an AlertManager cluster +apiVersion: monitoring.coreos.com/v1 +kind: Alertmanager +metadata: + name: cockroachdb + labels: + app: cockroachdb +spec: + replicas: 3 +--- +# Create a Service to allow Prometheus to talk to AlertManager +apiVersion: v1 +kind: Service +metadata: + name: alertmanager-cockroachdb + labels: + app: cockroachdb +spec: + type: ClusterIP + ports: + - name: web + port: 9093 + protocol: TCP + targetPort: web + selector: + alertmanager: cockroachdb + diff --git a/src/current/files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml b/src/current/files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml new file mode 100644 index 00000000000..c2073a9cbce --- /dev/null +++ b/src/current/files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml @@ -0,0 +1,94 @@ +# Create a service account for prometheus to run under +apiVersion: v1 +kind: ServiceAccount +metadata: + name: prometheus + labels: + app: cockroachdb +--- +# Define the access permissions that prometheus will run with +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: prometheus + labels: + app: cockroachdb +rules: +- apiGroups: [""] + resources: + - nodes + - services + - endpoints + - pods + verbs: ["get", "list", "watch"] +- apiGroups: [""] + resources: + - configmaps + verbs: ["get"] +- nonResourceURLs: ["/metrics"] + verbs: ["get"] +--- +# Associate the service account with the role +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: prometheus + labels: + app: cockroachdb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: prometheus +subjects: +- kind: ServiceAccount + name: prometheus + namespace: default +--- +# Select any services with the prometheus:cockroachdb label +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: cockroachdb + labels: + app: cockroachdb + prometheus: cockroachdb +spec: + selector: + matchLabels: + prometheus: cockroachdb + endpoints: + - port: http + path: /_status/vars + tlsConfig: + ca: + secret: + key: ca.crt + # This is the secret name used by the CockroachDB Kubernetes Operator. + # When using a custom CA, replace this with your secret name + name: cockroachdb-node + serverName: "127.0.0.1" +--- +# Have prometheus-operator run a replicated Prometheus cluster +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + name: cockroachdb + labels: + app: cockroachdb +spec: + serviceAccountName: prometheus + alerting: + alertmanagers: + - namespace: default + name: alertmanager-cockroachdb + port: web + serviceMonitorSelector: + matchLabels: + prometheus: cockroachdb + resources: + requests: + memory: 400Mi + ruleSelector: + matchLabels: + role: alert-rules + prometheus: cockroachdb diff --git a/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json b/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json new file mode 100644 index 00000000000..862b0efa73f --- /dev/null +++ b/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json @@ -0,0 +1,1308 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 10, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sum(ranges{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"})) by (instance)", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Ranges", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(replicas_leaders{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Leaders", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(replicas_leaseholders{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance))", + "interval": "", + "legendFormat": "Lease Holders", + "refId": "G" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sum(replicas_leaders_not_leaseholders{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Leaders w/o Lease", + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(ranges_unavailable{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Unavailable", + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sum(ranges_underreplicated{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Under-replicated", + "refId": "E" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(ranges_overreplicated{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Over-replicated", + "refId": "F" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Ranges", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:133", + "format": "short", + "label": "ranges", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:134", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of replicas on each store.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(replicas{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance)", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Replicas per Store", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:431", + "format": "short", + "label": "replicas", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:432", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of leaseholder replicas on each store. A leaseholder replica is the one that receives and coordinates all read and write requests for its range.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 16 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(replicas_leaseholders{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance)", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Leaseholders per Store", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:581", + "format": "short", + "label": "leaseholders", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:582", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Exponentially weighted moving average of the number of KV batch requests processed by leaseholder replicas on each store per second. Tracks roughly the last 30 minutes of requests. Used for load-based rebalancing decisions.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "rebalancing_queriespersecond{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Average Queries per Store", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:731", + "format": "short", + "label": "queries", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:732", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Number of logical bytes stored in [key-value pairs](https://www.cockroachlabs.com/docs/v21.1/architecture/distribution-layer.html#table-data) on each node.\n\nThis includes historical and deleted data.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "totalbytes{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Logical Bytes per Store", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:807", + "format": "bytes", + "label": "logical store size", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:808", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(replicas{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance)) ", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Replicas", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(replicas_quiescent{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Quiescent", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Replica Quiescence", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:883", + "format": "short", + "label": "replicas", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:884", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(rate(range_splits{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Splits", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(rate(range_merges{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Merges", + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(rate(range_adds{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Adds", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(rate(range_removes{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Removes", + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sum(rate(leases_transfers_success{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Lease Transfers", + "refId": "E" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sum(rate(rebalancing_lease_transfers{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Load-based Lease Transfers", + "refId": "F" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sum(rate(rebalancing_range_rebalances{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Load-based Range Rebalances", + "refId": "G" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Range Operations", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:959", + "format": "short", + "label": "ranges", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:960", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(rate(range_snapshots_generated{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Generated", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(range_snapshots_applied_voter{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Applied (Voters)", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(range_snapshots_applied_initial{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Applied (Initial Upreplication)", + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(range_snapshots_applied_initial{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval]))", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Applied (Non-Voters)", + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(rate(replicas_reserved{cluster=~\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Reserved Replicas", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Snapshots", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1109", + "format": "short", + "label": "snapshots", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1110", + "format": "short", + "label": "", + "logBase": 1, + "min": "0", + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 64 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "rate(raft_rcvd_app{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Msg App", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:959", + "format": "short", + "label": "ranges", + "logBase": 2, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:960", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 72 + }, + "hiddenSeries": false, + "id": 19, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "rate(raft_rcvd_queued_bytes{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval])", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "", + "hide": false, + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Msg Queued Bytes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:959", + "format": "short", + "label": "ranges", + "logBase": 2, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:960", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "", + "revision": 1, + "schemaVersion": 38, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "queryValue": "", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "drew-demo", + "value": "drew-demo" + }, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "sys_uptime{job=\"cockroachdb\"}", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "sys_uptime{job=\"cockroachdb\"}", + "refId": "Prometheus-cluster-Variable-Query" + }, + "refresh": 1, + "regex": "/cluster=\"([^\"]+)\"/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "label_values(sys_uptime{job=\"cockroachdb\",cluster=\"$cluster\"},instance)", + "hide": 0, + "includeAll": true, + "label": "Node", + "multi": false, + "name": "node", + "options": [], + "query": { + "query": "label_values(sys_uptime{job=\"cockroachdb\",cluster=\"$cluster\"},instance)", + "refId": "Prometheus-node-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "auto": false, + "auto_count": 30, + "auto_min": "10s", + "current": { + "selected": false, + "text": "30s", + "value": "30s" + }, + "hide": 0, + "label": "Rate Interval", + "name": "rate_interval", + "options": [ + { + "selected": true, + "text": "30s", + "value": "30s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "15m", + "value": "15m" + }, + { + "selected": false, + "text": "30m", + "value": "30m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "2h", + "value": "2h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "30s,1m,5m,15m,30m,1h,2h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "America/New_York", + "title": "CRDB Console: Replication ", + "uid": "crdb-console-replications", + "version": 4, + "weekStart": "" +} diff --git a/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json b/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json new file mode 100644 index 00000000000..1bb09fba55f --- /dev/null +++ b/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json @@ -0,0 +1,987 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 8, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of live nodes in the cluster.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "min(liveness_livenodes{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"})", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Live Nodes", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Live Node Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:637", + "format": "short", + "label": "nodes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:638", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Memory in use across all nodes:\nRSS \nTotal memory in use by CockroachDB\n\nGo Allocated \nMemory allocated by the Go layer\n\nGo Total \nTotal memory managed by the Go layer\n\nC Allocated \nMemory allocated by the C layer\n\nC Total \nTotal memory managed by the C layer", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sys_rss{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"})", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Total memory (RSS)", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sys_cgo_allocbytes{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"})", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Go Allocated", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sys_go_totalbytes{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"})", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Go Total", + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sys_go_allocbytes{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"})", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CGo Allocated", + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sys_cgo_totalbytes{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"})", + "interval": "", + "intervalFactor": 2, + "legendFormat": "CGo Total", + "refId": "E" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Memory Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:863", + "format": "bytes", + "label": "memory usage", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:864", + "format": "bytes", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of Goroutines across all nodes. This count should rise and fall based on load.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 16 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sys_goroutines{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"})", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Goroutine Count", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Goroutine Count", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1235", + "format": "short", + "label": "goroutines", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1236", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of Goroutines waiting for CPU. This count should rise and fall based on load.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.0.2", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sys_runnable_goroutines_per_cpu{job=\"cockroachdb\",cluster=~\"$cluster\",instance=~\"$node\"}", + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Runnable Goroutines per CPU", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:391", + "format": "short", + "label": "goroutines", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:392", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of times that Go’s garbage collector was invoked per second across all nodes.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(rate(sys_gc_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "GC Runs", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "GC Runs", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1311", + "format": "short", + "label": "runs", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1312", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The amount of processor time used by Go’s garbage collector per second across all nodes. During garbage collection, application code execution is paused.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sys_gc_pause_ns{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "GC Pause Time", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "GC Pause Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1387", + "format": "ns", + "label": "pause time", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1388", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sys_cpu_user_ns{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "User CPU Time", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sys_cpu_sys_ns{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Sys CPU Time", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "CPU Time", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1833", + "format": "ns", + "label": "cpu time", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1834", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Mean clock offset of each node against the rest of the cluster.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "clock_offset_meannanos{job=\"cockroachdb\",instance=~\"$node\",cluster=~\"$cluster\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Clock Offset", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:787", + "format": "ns", + "label": "offset", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:788", + "format": "short", + "label": "", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "30s", + "revision": 1, + "schemaVersion": 38, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "drew-demo", + "value": "drew-demo" + }, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "sys_uptime{job=\"cockroachdb\"}", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "sys_uptime{job=\"cockroachdb\"}", + "refId": "Prometheus-cluster-Variable-Query" + }, + "refresh": 1, + "regex": "/cluster=\"([^\"]+)\"/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "label_values(sys_uptime{job=\"cockroachdb\",cluster=\"$cluster\"},instance)", + "hide": 0, + "includeAll": true, + "label": "Node", + "multi": false, + "name": "node", + "options": [], + "query": { + "query": "label_values(sys_uptime{job=\"cockroachdb\",cluster=\"$cluster\"},instance)", + "refId": "Prometheus-node-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "auto": false, + "auto_count": 30, + "auto_min": "10s", + "current": { + "selected": false, + "text": "30s", + "value": "30s" + }, + "hide": 0, + "label": "Rate Interval", + "name": "rate_interval", + "options": [ + { + "selected": true, + "text": "30s", + "value": "30s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "10m", + "value": "10m" + }, + { + "selected": false, + "text": "30m", + "value": "30m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "12h", + "value": "12h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "30s,1m,5m,10m,30m,1h,6h,12h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "America/New_York", + "title": "CRDB Console: Runtime ", + "uid": "crdb-console-runtime", + "version": 4, + "weekStart": "" +} diff --git a/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json b/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json new file mode 100644 index 00000000000..b90cbbe26dc --- /dev/null +++ b/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json @@ -0,0 +1,1922 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 7, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The total number of open SQL Sessions.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sql_conns{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Open SQL Sessions", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:108", + "format": "short", + "label": "connections", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:109", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The total number of SQL transactions currently open.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 30, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sql_txns_open{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Open SQL Transactions", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:279", + "format": "short", + "label": "transactions", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:280", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The total number of SQL statements currently running.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 16 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sql_distsql_queries_active{job=\"cockroachdb\",cluster=~\"$cluster\",instance=~\"$node\"})", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Active Statements", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Active SQL Statements", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:184", + "format": "short", + "label": "queries", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:185", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The total amount of SQL client network traffic in bytes per second.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.0.2", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_bytesin{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "Bytes In", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_bytesout{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Bytes Out", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "SQL Byte Traffic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:260", + "format": "bytes", + "label": "byte traffic", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:261", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "A moving average of the # of SELECT, INSERT, UPDATE, and DELETE statements successfully executed per second.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 32 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.0.2", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_select_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Selects", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_update_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Updates", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_insert_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Inserts", + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_delete_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Deletes", + "refId": "D" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "SQL Statements", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:336", + "format": "short", + "label": "queries", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:337", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of statements which returned a planning or runtime error.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 40 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_failure_count{job=\"cockroachdb\",cluster=~\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Errors", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "SQL Statement Errors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:412", + "format": "short", + "label": "errors", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "$$hashKey": "object:413", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The total number of SQL statements that experienced contention.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 48 + }, + "hiddenSeries": false, + "id": 32, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_distsql_contended_queries_count{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "Contention", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "SQL Statement Contention", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:489", + "format": "short", + "label": "queries", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:490", + "format": "short", + "label": "", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of flows on each node contributing to currently running distributed SQL statements.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 56 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "rate(sql_distsql_flows_active{job=\"cockroachdb\",cluster=~\"$cluster\",instance=~\"$node\"}[$__rate_interval])", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Active Flows for Distributed SQL Statements", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:107", + "format": "short", + "label": "flows", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:108", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Over the last minute, this node executed 99% of queries within this time. This time does not include network latency between the node and client.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 64 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "histogram_quantile(0.99, rate(sql_service_latency_bucket{job=\"cockroachdb\",instance=~\"$node\",cluster=\"$cluster\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Service Latency: SQL, 99th percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:710", + "format": "ns", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:711", + "format": "short", + "label": "", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Over the last minute, this node executed 90% of queries within this time. This time does not include network latency between the node and client.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 72 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.90, rate(sql_service_latency_bucket{job=\"cockroachdb\",instance=~\"$node\",cluster=\"$cluster\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Service Latency: SQL, 90th percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:934", + "format": "ns", + "label": "latency", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:935", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The 99th percentile of latency between query requests and responses over a 1 minute period. Values are displayed individually for each node.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 80 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.99,rate(exec_latency_bucket{job=\"cockroachdb\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "KV Execution Latency: 99th percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1084", + "format": "µs", + "label": "latency", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:1085", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The 90th percentile of latency between query requests and responses over a 1 minute period. Values are displayed individually for each node.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 88 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.90, rate(exec_latency_bucket{job=\"cockroachdb\",instance=~\"$node\",cluster=\"$cluster\"}[$rate_interval]))", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "KV Execution Latency: 90th percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1160", + "format": "ns", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1161", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The total number of transactions initiated, committed, rolled back, or aborted per second.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 96 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(rate(sql_txn_begin_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Begin", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_txn_commit_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Commits", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate( sql_txn_rollback_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Rollbacks", + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_txn_abort_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Aborts", + "refId": "C" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transactions", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1458", + "format": "short", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1459", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The 99th percentile of total transaction time over a 1 minute period. Values are displayed individually for each node.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 104 + }, + "hiddenSeries": false, + "id": 26, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.99,rate(sql_txn_latency_bucket{job=\"cockroachdb\",cluster=\"$cluster\"}[5m]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transaction Latency: 99th percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1756", + "format": "µs", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1757", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The 90th percentile of total transaction time over a 1 minute period. Values are displayed individually for each node.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 112 + }, + "hiddenSeries": false, + "id": 28, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "histogram_quantile(0.90,rate(sql_txn_latency_bucket{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Transaction Latency: 90th percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1832", + "format": "ns", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1833", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The current amount of allocated SQL memory. This amount is what is compared against the node's --max-sql-memory flag.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 120 + }, + "hiddenSeries": false, + "id": 34, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sql_mem_root_current{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "SQL Memory", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:157", + "format": "bytes", + "label": "allocation bytes", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:158", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The total number of DDL statements per second", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 128 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(sql_ddl_count{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$rate_interval])) ", + "interval": "", + "intervalFactor": 2, + "legendFormat": "DDL Statements", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Schema Changes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1908", + "format": "short", + "label": "statements", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1909", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The total number of statements denied per second due to a [cluster setting](https://www.cockroachlabs.com/docs/v21.1/cluster-settings.html) in the format feature.statement_type.enabled = FALSE.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 136 + }, + "hiddenSeries": false, + "id": 36, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "rate(sql_feature_flag_denial{cluster=\"$cluster\",job=\"cockroachdb\",instance=~\"$node\"}[$__rate_interval])", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Statement Denials: Cluster Settings", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:214", + "format": "short", + "label": "statements", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:215", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "30s", + "revision": 1, + "schemaVersion": 38, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "drew-demo", + "value": "drew-demo" + }, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "sys_uptime{job=\"cockroachdb\"}", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "sys_uptime{job=\"cockroachdb\"}", + "refId": "Prometheus-cluster-Variable-Query" + }, + "refresh": 1, + "regex": "/cluster=\"([^\"]+)\"/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "label_values(sys_uptime{job=\"cockroachdb\",cluster=\"$cluster\"},instance)", + "hide": 0, + "includeAll": true, + "label": "Node", + "multi": false, + "name": "node", + "options": [], + "query": { + "query": "label_values(sys_uptime{job=\"cockroachdb\",cluster=\"$cluster\"},instance)", + "refId": "Prometheus-node-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 3, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "auto": false, + "auto_count": 30, + "auto_min": "10s", + "current": { + "selected": false, + "text": "1m", + "value": "1m" + }, + "hide": 0, + "label": "Rate Interval", + "name": "rate_interval", + "options": [ + { + "selected": false, + "text": "30s", + "value": "30s" + }, + { + "selected": true, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "10m", + "value": "10m" + }, + { + "selected": false, + "text": "30m", + "value": "30m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "12h", + "value": "12h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "30s,1m,5m,10m,30m,1h,6h,12h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "America/New_York", + "title": "CRDB Console: SQL ", + "uid": "crdb-console-sql", + "version": 3, + "weekStart": "" +} diff --git a/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json b/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json new file mode 100644 index 00000000000..d08cd5e5918 --- /dev/null +++ b/src/current/files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json @@ -0,0 +1,1347 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 6, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Usage of disk space across all nodes\n\n**Capacity**: Maximum store size across all nodes. This value may be explicitly set per node using [--store](https://www.cockroachlabs.com/docs/v21.1/cockroach-start.html#store). If a store size has not been set, this metric displays the actual disk capacity.\n\n**Available**: Free disk space available to CockroachDB data across all nodes.\n\n**Used**: Disk space in use by CockroachDB data across all nodes. This excludes the Cockroach binary, operating system, and other system files.\n\n[How are these metrics calculated?](https://www.cockroachlabs.com/docs/v21.1/ui-storage-dashboard.html#capacity-metrics)", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(sum(capacity{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Max", + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": " sum(sum(capacity_available{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance))", + "interval": "", + "legendFormat": "Available", + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(capacity{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance)) - sum(sum(capacity_available{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Used", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Capacity", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:99", + "format": "bytes", + "label": "capacity", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:100", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "Amount of data that can be read by applications and CockroachDB.\n\n**Live**: Number of logical bytes stored in live [key-value pairs](https://www.cockroachlabs.com/docs/v21.1/architecture/distribution-layer.html#table-data) across all nodes. Live data excludes historical and deleted data.\n\n**System**: Number of physical bytes stored in [system key-value pairs](https://www.cockroachlabs.com/docs/v21.1/architecture/distribution-layer.html#table-data).", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 8 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(livebytes{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Live", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(sysbytes{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "System", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Live Bytes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:323", + "format": "bytes", + "label": "live bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:324", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The 99th %ile latency for commits to the Raft Log. This measures essentially an fdatasync to the storage engine's write-ahead log.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 16 + }, + "hiddenSeries": false, + "id": 6, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "9.4.7", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.99,rate(raft_process_logcommit_latency_bucket{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Log Commit Latency: 99th Percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:474", + "format": "ns", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:475", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The 50th %ile latency for commits to the Raft Log. This measures essentially an fdatasync to the storage engine's write-ahead log.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 24 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.50,rate(raft_process_logcommit_latency_bucket{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Log Commit Latency: 50th Percentile", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:550", + "format": "ns", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:551", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The 99th %ile latency for commits of Raft commands. This measures applying a batch to the storage engine (including writes to the write-ahead log), but no fsync.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 30 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null as zero", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.99,rate(raft_process_commandcommit_latency_bucket{job=\"cockroachdb\", instance=~\"$node\", cluster=~\"$cluster\"}[$__rate_interval]))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Command Commit Latency: 99th Percentile ", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:774", + "format": "ns", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:775", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The 50th %ile latency for commits of Raft commands. This measures applying a batch to the storage engine (including writes to the write-ahead log), but no fsync.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 38 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "histogram_quantile(0.50,rate(raft_process_commandcommit_latency_bucket{job=\"cockroachdb\", instance=~\"$node\", cluster=~\"$cluster\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "{{instance}}", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Command Commit Latency: 50th percentile ", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:850", + "format": "ns", + "label": "latency", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:851", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The average number of real read operations executed per logical read operation.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 46 + }, + "hiddenSeries": false, + "id": 20, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "avg(avg(rocksdb_read_amplification{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance))", + "interval": "", + "legendFormat": "Read Amplification", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Read Amplification", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:926", + "format": "short", + "label": "factor", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:927", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of SSTables in use.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 54 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rocksdb_num_sstables{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"})", + "interval": "", + "legendFormat": "SSTables", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "SSTables", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1002", + "format": "short", + "label": "sstables", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1003", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of open file descriptors, compared with the file descriptor limit.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 62 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(sys_fd_open{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Open", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(sum(sys_fd_softlimit{job=\"cockroachdb\",cluster=\"$cluster\",instance=~\"$node\"}) by (instance))", + "interval": "", + "intervalFactor": 2, + "legendFormat": "Limit", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "File Descriptors", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1226", + "format": "short", + "label": "descriptors", + "logBase": 1, + "show": true + }, + { + "$$hashKey": "object:1227", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of compactions and memtable flushes per second.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 70 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(rate(rocksdb_compactions{job=\"cockroachdb\",cluster=\"$cluster\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "Compactions", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "expr": "sum(rate(rocksdb_flushes{job=\"cockroachdb\",cluster=\"$cluster\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "Flushes", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Compactions/Flushes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1376", + "format": "short", + "label": "count", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1377", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of successfully written time series samples, and number of errors attempting to write time series, per second.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 78 + }, + "hiddenSeries": false, + "id": 24, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(timeseries_write_samples{job=\"cockroachdb\",cluster=~\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "Samples Written", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(timeseries_write_errors{job=\"cockroachdb\",cluster=~\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "Errors", + "refId": "B" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Time Series Writes", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1452", + "format": "short", + "label": "count", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1453", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "description": "The number of bytes written by the time series system per second. \nNote that this does not reflect the rate at which disk space is consumed by time series; the data is highly compressed on disk. This rate is instead intended to indicate the amount of network traffic and disk activity generated by time series writes.\nSee the \"databases\" tab to find the current disk usage for time series data.", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 86 + }, + "hiddenSeries": false, + "id": 22, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": true, + "expr": "sum(rate(timeseries_write_bytes{job=\"cockroachdb\",cluster=~\"$cluster\",instance=~\"$node\"}[$__rate_interval]))", + "interval": "", + "legendFormat": "Bytes Written", + "refId": "A" + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Time Series Bytes Written", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:1528", + "format": "bytes", + "label": "bytes", + "logBase": 1, + "min": "0", + "show": true + }, + { + "$$hashKey": "object:1529", + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "30s", + "revision": 1, + "schemaVersion": 38, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "Prometheus", + "value": "Prometheus" + }, + "hide": 0, + "includeAll": false, + "label": "datasource", + "multi": false, + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "type": "datasource" + }, + { + "current": { + "selected": false, + "text": "drew-demo", + "value": "drew-demo" + }, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "sys_uptime{job=\"cockroachdb\"}", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "sys_uptime{job=\"cockroachdb\"}", + "refId": "Prometheus-cluster-Variable-Query" + }, + "refresh": 1, + "regex": "/cluster=\"([^\"]+)\"/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { + "selected": false, + "text": "All", + "value": "$__all" + }, + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "definition": "label_values(sys_uptime{job=\"cockroachdb\",cluster=\"$cluster\"},instance)", + "hide": 0, + "includeAll": true, + "label": "Node", + "multi": false, + "name": "node", + "options": [], + "query": { + "query": "label_values(sys_uptime{job=\"cockroachdb\",cluster=\"$cluster\"},instance)", + "refId": "Prometheus-node-Variable-Query" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "auto": false, + "auto_count": 30, + "auto_min": "10s", + "current": { + "selected": false, + "text": "30s", + "value": "30s" + }, + "hide": 0, + "label": "Rate Interval", + "name": "rate_interval", + "options": [ + { + "selected": true, + "text": "30s", + "value": "30s" + }, + { + "selected": false, + "text": "1m", + "value": "1m" + }, + { + "selected": false, + "text": "5m", + "value": "5m" + }, + { + "selected": false, + "text": "10m", + "value": "10m" + }, + { + "selected": false, + "text": "30m", + "value": "30m" + }, + { + "selected": false, + "text": "1h", + "value": "1h" + }, + { + "selected": false, + "text": "6h", + "value": "6h" + }, + { + "selected": false, + "text": "12h", + "value": "12h" + }, + { + "selected": false, + "text": "1d", + "value": "1d" + } + ], + "query": "30s,1m,5m,10m,30m,1h,6h,12h,1d", + "queryValue": "", + "refresh": 2, + "skipUrlSync": false, + "type": "interval" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "America/New_York", + "title": "CRDB Console: Storage ", + "uid": "crdb-console-storage", + "version": 3, + "weekStart": "" +} diff --git a/src/current/files/cockroach/monitoring/prometheus.yml b/src/current/files/cockroach/monitoring/prometheus.yml new file mode 100644 index 00000000000..8e84600d4f2 --- /dev/null +++ b/src/current/files/cockroach/monitoring/prometheus.yml @@ -0,0 +1,35 @@ +# Prometheus configuration for cockroach clusters. +# Requires prometheus 2.X +# +# Run with: +# $ prometheus -config.file=prometheus.yml +global: + scrape_interval: 10s + evaluation_interval: 10s + +rule_files: +- "rules/alerts.rules.yml" +- "rules/aggregation.rules.yml" + +# Alert manager running on the same host: +alerting: + alertmanagers: + - path_prefix: "/alertmanager/" + static_configs: + - targets: + - localhost:9093 + +scrape_configs: + - job_name: 'cockroachdb' + metrics_path: '/_status/vars' + # Insecure mode: + scheme: 'http' + # Secure mode: + # scheme: 'https' + tls_config: + insecure_skip_verify: true + + static_configs: + - targets: ['localhost:8080'] + labels: + cluster: 'my-cockroachdb-cluster' diff --git a/src/current/files/cockroach/monitoring/rules/aggregation.rules.yml b/src/current/files/cockroach/monitoring/rules/aggregation.rules.yml new file mode 100644 index 00000000000..56e0bc8e604 --- /dev/null +++ b/src/current/files/cockroach/monitoring/rules/aggregation.rules.yml @@ -0,0 +1,109 @@ +# This file contains aggregation rules, specifically: +# "node:X" node-level aggregation of a per-store metric X +# "cluster:X" cluster-level aggregation of a per-store or per-node metric X +# +# Most aggregation rules should use the "without (label1, label2, ...)" keyword +# to keep all labels but the ones specified. + +groups: +- name: rules/aggregation.rules + rules: + - record: node:capacity + expr: sum without(store) (capacity{job="cockroachdb"}) + - record: cluster:capacity + expr: sum without(instance) (node:capacity{job="cockroachdb"}) + - record: node:capacity_available + expr: sum without(store) (capacity_available{job="cockroachdb"}) + - record: cluster:capacity_available + expr: sum without(instance) (node:capacity_available{job="cockroachdb"}) + - record: capacity_available:ratio + expr: capacity_available{job="cockroachdb"} / capacity{job="cockroachdb"} + - record: node:capacity_available:ratio + expr: node:capacity_available{job="cockroachdb"} / node:capacity{job="cockroachdb"} + - record: cluster:capacity_available:ratio + expr: cluster:capacity_available{job="cockroachdb"} / cluster:capacity{job="cockroachdb"} + # Histogram rules: these are fairly expensive to compute live, so we precompute a few percetiles. + - record: txn_durations_bucket:rate1m + expr: rate(txn_durations_bucket{job="cockroachdb"}[1m]) + - record: txn_durations:rate1m:quantile_50 + expr: histogram_quantile(0.5, txn_durations_bucket:rate1m) + - record: txn_durations:rate1m:quantile_75 + expr: histogram_quantile(0.75, txn_durations_bucket:rate1m) + - record: txn_durations:rate1m:quantile_90 + expr: histogram_quantile(0.9, txn_durations_bucket:rate1m) + - record: txn_durations:rate1m:quantile_95 + expr: histogram_quantile(0.95, txn_durations_bucket:rate1m) + - record: txn_durations:rate1m:quantile_99 + expr: histogram_quantile(0.99, txn_durations_bucket:rate1m) + - record: exec_latency_bucket:rate1m + expr: rate(exec_latency_bucket{job="cockroachdb"}[1m]) + - record: exec_latency:rate1m:quantile_50 + expr: histogram_quantile(0.5, exec_latency_bucket:rate1m) + - record: exec_latency:rate1m:quantile_75 + expr: histogram_quantile(0.75, exec_latency_bucket:rate1m) + - record: exec_latency:rate1m:quantile_90 + expr: histogram_quantile(0.9, exec_latency_bucket:rate1m) + - record: exec_latency:rate1m:quantile_95 + expr: histogram_quantile(0.95, exec_latency_bucket:rate1m) + - record: exec_latency:rate1m:quantile_99 + expr: histogram_quantile(0.99, exec_latency_bucket:rate1m) + - record: round_trip_latency_bucket:rate1m + expr: rate(round_trip_latency_bucket{job="cockroachdb"}[1m]) + - record: round_trip_latency:rate1m:quantile_50 + expr: histogram_quantile(0.5, round_trip_latency_bucket:rate1m) + - record: round_trip_latency:rate1m:quantile_75 + expr: histogram_quantile(0.75, round_trip_latency_bucket:rate1m) + - record: round_trip_latency:rate1m:quantile_90 + expr: histogram_quantile(0.9, round_trip_latency_bucket:rate1m) + - record: round_trip_latency:rate1m:quantile_95 + expr: histogram_quantile(0.95, round_trip_latency_bucket:rate1m) + - record: round_trip_latency:rate1m:quantile_99 + expr: histogram_quantile(0.99, round_trip_latency_bucket:rate1m) + - record: sql_exec_latency_bucket:rate1m + expr: rate(sql_exec_latency_bucket{job="cockroachdb"}[1m]) + - record: sql_exec_latency:rate1m:quantile_50 + expr: histogram_quantile(0.5, sql_exec_latency_bucket:rate1m) + - record: sql_exec_latency:rate1m:quantile_75 + expr: histogram_quantile(0.75, sql_exec_latency_bucket:rate1m) + - record: sql_exec_latency:rate1m:quantile_90 + expr: histogram_quantile(0.9, sql_exec_latency_bucket:rate1m) + - record: sql_exec_latency:rate1m:quantile_95 + expr: histogram_quantile(0.95, sql_exec_latency_bucket:rate1m) + - record: sql_exec_latency:rate1m:quantile_99 + expr: histogram_quantile(0.99, sql_exec_latency_bucket:rate1m) + - record: raft_process_logcommit_latency_bucket:rate1m + expr: rate(raft_process_logcommit_latency_bucket{job="cockroachdb"}[1m]) + - record: raft_process_logcommit_latency:rate1m:quantile_50 + expr: histogram_quantile(0.5, raft_process_logcommit_latency_bucket:rate1m) + - record: raft_process_logcommit_latency:rate1m:quantile_75 + expr: histogram_quantile(0.75, raft_process_logcommit_latency_bucket:rate1m) + - record: raft_process_logcommit_latency:rate1m:quantile_90 + expr: histogram_quantile(0.9, raft_process_logcommit_latency_bucket:rate1m) + - record: raft_process_logcommit_latency:rate1m:quantile_95 + expr: histogram_quantile(0.95, raft_process_logcommit_latency_bucket:rate1m) + - record: raft_process_logcommit_latency:rate1m:quantile_99 + expr: histogram_quantile(0.99, raft_process_logcommit_latency_bucket:rate1m) + - record: raft_process_commandcommit_latency_bucket:rate1m + expr: rate(raft_process_commandcommit_latency_bucket{job="cockroachdb"}[1m]) + - record: raft_process_commandcommit_latency:rate1m:quantile_50 + expr: histogram_quantile(0.5, raft_process_commandcommit_latency_bucket:rate1m) + - record: raft_process_commandcommit_latency:rate1m:quantile_75 + expr: histogram_quantile(0.75, raft_process_commandcommit_latency_bucket:rate1m) + - record: raft_process_commandcommit_latency:rate1m:quantile_90 + expr: histogram_quantile(0.9, raft_process_commandcommit_latency_bucket:rate1m) + - record: raft_process_commandcommit_latency:rate1m:quantile_95 + expr: histogram_quantile(0.95, raft_process_commandcommit_latency_bucket:rate1m) + - record: raft_process_commandcommit_latency:rate1m:quantile_99 + expr: histogram_quantile(0.99, raft_process_commandcommit_latency_bucket:rate1m) + - record: storage_wal_fsync_latency_bucket:rate1m + expr: rate(storage_wal_fsync_latency_bucket{job="cockroachdb"}[1m]) + - record: storage_wal_fsync_latency:rate1m:quantile_50 + expr: histogram_quantile(0.5, storage_wal_fsync_latency_bucket:rate1m) + - record: storage_wal_fsync_latency:rate1m:quantile_75 + expr: histogram_quantile(0.75, storage_wal_fsync_latency_bucket:rate1m) + - record: storage_wal_fsync_latency:rate1m:quantile_90 + expr: histogram_quantile(0.9, storage_wal_fsync_latency_bucket:rate1m) + - record: storage_wal_fsync_latency:rate1m:quantile_95 + expr: histogram_quantile(0.95, storage_wal_fsync_latency_bucket:rate1m) + - record: storage_wal_fsync_latency:rate1m:quantile_99 + expr: histogram_quantile(0.99, storage_wal_fsync_latency_bucket:rate1m) diff --git a/src/current/v23.1/monitor-cockroachdb-kubernetes.md b/src/current/v23.1/monitor-cockroachdb-kubernetes.md index c36cdcabae0..c31cd4144bc 100644 --- a/src/current/v23.1/monitor-cockroachdb-kubernetes.md +++ b/src/current/v23.1/monitor-cockroachdb-kubernetes.md @@ -128,7 +128,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -177,14 +177,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -214,12 +214,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -244,12 +244,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/v23.1/monitor-cockroachdb-with-prometheus.md b/src/current/v23.1/monitor-cockroachdb-with-prometheus.md index 493b6cce1c0..978becce3f8 100644 --- a/src/current/v23.1/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v23.1/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - $ wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml \ + $ wget https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} \ -O prometheus.yml ~~~ @@ -61,7 +60,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -75,12 +74,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - $ wget -P rules https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + $ wget -P rules https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - $ wget -P rules https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + $ wget -P rules https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -109,7 +108,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -174,29 +173,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - $ wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + $ wget https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - $ wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + $ wget https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - $ wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + $ wget https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - $ wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + $ wget https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v23.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v23.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index 272d50f856a..d911382aebb 100644 --- a/src/current/v23.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v23.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v23.2/admission-control.md b/src/current/v23.2/admission-control.md index 2624b3e0e47..20b35da6ab5 100644 --- a/src/current/v23.2/admission-control.md +++ b/src/current/v23.2/admission-control.md @@ -148,5 +148,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v23.2/monitor-cockroachdb-kubernetes.md b/src/current/v23.2/monitor-cockroachdb-kubernetes.md index d2ca66e397f..56a0e5bb4e1 100644 --- a/src/current/v23.2/monitor-cockroachdb-kubernetes.md +++ b/src/current/v23.2/monitor-cockroachdb-kubernetes.md @@ -128,7 +128,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -177,14 +177,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -214,12 +214,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -244,12 +244,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/v23.2/monitor-cockroachdb-with-prometheus.md b/src/current/v23.2/monitor-cockroachdb-with-prometheus.md index 7f4d671aa52..1954858e67e 100644 --- a/src/current/v23.2/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v23.2/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts-rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts-rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v23.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v23.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index 2ebfe678a0a..b5389d57120 100644 --- a/src/current/v23.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v23.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v24.1/admission-control.md b/src/current/v24.1/admission-control.md index 0403d5fbc23..2108ed3de65 100644 --- a/src/current/v24.1/admission-control.md +++ b/src/current/v24.1/admission-control.md @@ -147,5 +147,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v24.1/monitor-cockroachdb-kubernetes.md b/src/current/v24.1/monitor-cockroachdb-kubernetes.md index b6af4eab828..c4f4f1292dc 100644 --- a/src/current/v24.1/monitor-cockroachdb-kubernetes.md +++ b/src/current/v24.1/monitor-cockroachdb-kubernetes.md @@ -128,7 +128,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -177,14 +177,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -214,12 +214,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -244,12 +244,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/v24.1/monitor-cockroachdb-with-prometheus.md b/src/current/v24.1/monitor-cockroachdb-with-prometheus.md index ad08d818b4e..d2774c457ad 100644 --- a/src/current/v24.1/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v24.1/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v24.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v24.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index b47593bda96..6acf6544d0a 100644 --- a/src/current/v24.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v24.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v24.2/admission-control.md b/src/current/v24.2/admission-control.md index d956c26c6cf..52c4f829287 100644 --- a/src/current/v24.2/admission-control.md +++ b/src/current/v24.2/admission-control.md @@ -144,5 +144,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v24.2/monitor-cockroachdb-kubernetes.md b/src/current/v24.2/monitor-cockroachdb-kubernetes.md index b800eb696dd..35c8433ecd4 100644 --- a/src/current/v24.2/monitor-cockroachdb-kubernetes.md +++ b/src/current/v24.2/monitor-cockroachdb-kubernetes.md @@ -128,7 +128,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -177,14 +177,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -214,12 +214,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -244,12 +244,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/v24.2/monitor-cockroachdb-with-prometheus.md b/src/current/v24.2/monitor-cockroachdb-with-prometheus.md index 4d391044080..0a7bb891c95 100644 --- a/src/current/v24.2/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v24.2/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v24.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v24.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index b47593bda96..6acf6544d0a 100644 --- a/src/current/v24.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v24.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v24.3/admission-control.md b/src/current/v24.3/admission-control.md index 924f96ab7e1..3248e2688bf 100644 --- a/src/current/v24.3/admission-control.md +++ b/src/current/v24.3/admission-control.md @@ -149,5 +149,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v24.3/monitor-cockroachdb-kubernetes.md b/src/current/v24.3/monitor-cockroachdb-kubernetes.md index 44a686fce22..a561f714fd3 100644 --- a/src/current/v24.3/monitor-cockroachdb-kubernetes.md +++ b/src/current/v24.3/monitor-cockroachdb-kubernetes.md @@ -128,7 +128,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -163,11 +163,11 @@ If you're on Hosted GKE, before starting, make sure the email address associated 1. To verify that each CockroachDB node is connected to Prometheus, go to **Status > Targets**. The screen should look like this: - Prometheus targets + Prometheus targets 1. To verify that data is being collected, go to **Graph**, enter the `sys_uptime` variable in the field, click **Execute**, and then click the **Graph** tab. The screen should like this: - Prometheus graph + Prometheus graph {{site.data.alerts.callout_success}} Prometheus auto-completes CockroachDB time series metrics for you, but if you want to see a full listing, with descriptions, port-forward as described in {% if page.secure == true %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% else %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% endif %} and then point your browser to http://localhost:8080/_status/vars. @@ -177,14 +177,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -214,12 +214,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -238,18 +238,18 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Go to http://localhost:9093 in your browser. The screen should look like this: - Alertmanager + Alertmanager 1. Ensure that the Alertmanagers are visible to Prometheus by opening http://localhost:9090/status. The screen should look like this: - Alertmanager + Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ @@ -258,11 +258,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Ensure that the rules are visible to Prometheus by opening http://localhost:9090/rules. The screen should look like this: - Alertmanager + Alertmanager 1. Verify that the `TestAlertManager` example alert is firing by opening http://localhost:9090/alerts. The screen should look like this: - Alertmanager + Alertmanager 1. To remove the example alert: diff --git a/src/current/v24.3/monitor-cockroachdb-with-prometheus.md b/src/current/v24.3/monitor-cockroachdb-with-prometheus.md index ad08d818b4e..d2774c457ad 100644 --- a/src/current/v24.3/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v24.3/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v24.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v24.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index b47593bda96..6acf6544d0a 100644 --- a/src/current/v24.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v24.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v25.1/admission-control.md b/src/current/v25.1/admission-control.md index 49f49274f4a..1c8f09d4a4a 100644 --- a/src/current/v25.1/admission-control.md +++ b/src/current/v25.1/admission-control.md @@ -166,5 +166,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v25.1/monitor-cockroachdb-kubernetes.md b/src/current/v25.1/monitor-cockroachdb-kubernetes.md index cf1ba80217b..627ad155d40 100644 --- a/src/current/v25.1/monitor-cockroachdb-kubernetes.md +++ b/src/current/v25.1/monitor-cockroachdb-kubernetes.md @@ -128,7 +128,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -163,11 +163,11 @@ If you're on Hosted GKE, before starting, make sure the email address associated 1. To verify that each CockroachDB node is connected to Prometheus, go to **Status > Targets**. The screen should look like this: - Prometheus targets + Prometheus targets 1. To verify that data is being collected, go to **Graph**, enter the `sys_uptime` variable in the field, click **Execute**, and then click the **Graph** tab. The screen should like this: - Prometheus graph + Prometheus graph {{site.data.alerts.callout_success}} Prometheus auto-completes CockroachDB time series metrics for you, but if you want to see a full listing, with descriptions, port-forward as described in {% if page.secure == true %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% else %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% endif %} and then point your browser to http://localhost:8080/_status/vars. @@ -177,14 +177,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -214,12 +214,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -238,18 +238,18 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Go to http://localhost:9093 in your browser. The screen should look like this: - Alertmanager + Alertmanager 1. Ensure that the Alertmanagers are visible to Prometheus by opening http://localhost:9090/status. The screen should look like this: - Alertmanager + Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ @@ -258,11 +258,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Ensure that the rules are visible to Prometheus by opening http://localhost:9090/rules. The screen should look like this: - Alertmanager + Alertmanager 1. Verify that the `TestAlertManager` example alert is firing by opening http://localhost:9090/alerts. The screen should look like this: - Alertmanager + Alertmanager 1. To remove the example alert: diff --git a/src/current/v25.1/monitor-cockroachdb-with-prometheus.md b/src/current/v25.1/monitor-cockroachdb-with-prometheus.md index eceee578492..899692fbfa8 100644 --- a/src/current/v25.1/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v25.1/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v25.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v25.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index b47593bda96..6acf6544d0a 100644 --- a/src/current/v25.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v25.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v25.2/admission-control.md b/src/current/v25.2/admission-control.md index 7ecadf69675..7fc27e231a6 100644 --- a/src/current/v25.2/admission-control.md +++ b/src/current/v25.2/admission-control.md @@ -167,5 +167,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v25.2/monitor-cockroachdb-kubernetes.md b/src/current/v25.2/monitor-cockroachdb-kubernetes.md index da454617282..b9ee2fb26e2 100644 --- a/src/current/v25.2/monitor-cockroachdb-kubernetes.md +++ b/src/current/v25.2/monitor-cockroachdb-kubernetes.md @@ -132,7 +132,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -167,11 +167,11 @@ If you're on Hosted GKE, before starting, make sure the email address associated 1. To verify that each CockroachDB node is connected to Prometheus, go to **Status > Targets**. The screen should look like this: - Prometheus targets + Prometheus targets 1. To verify that data is being collected, go to **Graph**, enter the `sys_uptime` variable in the field, click **Execute**, and then click the **Graph** tab. The screen should like this: - Prometheus graph + Prometheus graph {{site.data.alerts.callout_success}} Prometheus auto-completes CockroachDB time series metrics for you, but if you want to see a full listing, with descriptions, port-forward as described in {% if page.secure == true %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% else %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% endif %} and then point your browser to http://localhost:8080/_status/vars. @@ -181,14 +181,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -218,12 +218,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -242,18 +242,18 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Go to http://localhost:9093 in your browser. The screen should look like this: - Alertmanager + Alertmanager 1. Ensure that the Alertmanagers are visible to Prometheus by opening http://localhost:9090/status. The screen should look like this: - Alertmanager + Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ @@ -262,11 +262,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Ensure that the rules are visible to Prometheus by opening http://localhost:9090/rules. The screen should look like this: - Alertmanager + Alertmanager 1. Verify that the `TestAlertManager` example alert is firing by opening http://localhost:9090/alerts. The screen should look like this: - Alertmanager + Alertmanager 1. To remove the example alert: diff --git a/src/current/v25.2/monitor-cockroachdb-operator.md b/src/current/v25.2/monitor-cockroachdb-operator.md index 86cd625d29f..feeea349568 100644 --- a/src/current/v25.2/monitor-cockroachdb-operator.md +++ b/src/current/v25.2/monitor-cockroachdb-operator.md @@ -76,7 +76,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ 1. Apply the Prometheus manifest. This creates the various objects necessary to run a Prometheus instance: @@ -119,13 +119,13 @@ For more details on using the Prometheus UI, see their [official documentation]( ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our [alertmanager-config.yaml](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml) configuration file: +1. Download our [alertmanager-config.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %}) configuration file: {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -152,12 +152,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [alertmanager.yaml](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [alertmanager.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ shell alertmanager.monitoring.coreos.com/cockroachdb created @@ -180,12 +180,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ shell prometheusrule.monitoring.coreos.com/prometheus-cockroachdb-rules created diff --git a/src/current/v25.2/monitor-cockroachdb-with-prometheus.md b/src/current/v25.2/monitor-cockroachdb-with-prometheus.md index 573576f0097..07e0cf3056a 100644 --- a/src/current/v25.2/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v25.2/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v25.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v25.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index 55f144f4d74..25324c54dfd 100644 --- a/src/current/v25.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v25.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v25.3/admission-control.md b/src/current/v25.3/admission-control.md index 7b248c94300..517842d1e63 100644 --- a/src/current/v25.3/admission-control.md +++ b/src/current/v25.3/admission-control.md @@ -165,5 +165,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v25.3/monitor-cockroachdb-kubernetes.md b/src/current/v25.3/monitor-cockroachdb-kubernetes.md index e53bde93041..93117b8e10b 100644 --- a/src/current/v25.3/monitor-cockroachdb-kubernetes.md +++ b/src/current/v25.3/monitor-cockroachdb-kubernetes.md @@ -132,7 +132,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -167,11 +167,11 @@ If you're on Hosted GKE, before starting, make sure the email address associated 1. To verify that each CockroachDB node is connected to Prometheus, go to **Status > Targets**. The screen should look like this: - Prometheus targets + Prometheus targets 1. To verify that data is being collected, go to **Graph**, enter the `sys_uptime` variable in the field, click **Execute**, and then click the **Graph** tab. The screen should like this: - Prometheus graph + Prometheus graph {{site.data.alerts.callout_success}} Prometheus auto-completes CockroachDB time series metrics for you, but if you want to see a full listing, with descriptions, port-forward as described in {% if page.secure == true %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% else %}[Access the DB Console]({% link {{ page.version.version }}/deploy-cockroachdb-with-kubernetes.md %}#step-4-access-the-db-console){% endif %} and then point your browser to the [Prometheus endpoint]({% link {{ page.version.version }}/prometheus-endpoint.md %}). @@ -181,14 +181,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -218,12 +218,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -242,18 +242,18 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Go to http://localhost:9093 in your browser. The screen should look like this: - Alertmanager + Alertmanager 1. Ensure that the Alertmanagers are visible to Prometheus by opening http://localhost:9090/status. The screen should look like this: - Alertmanager + Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ @@ -262,11 +262,11 @@ Active monitoring helps you spot problems early, but it is also essential to sen 1. Ensure that the rules are visible to Prometheus by opening http://localhost:9090/rules. The screen should look like this: - Alertmanager + Alertmanager 1. Verify that the `TestAlertManager` example alert is firing by opening http://localhost:9090/alerts. The screen should look like this: - Alertmanager + Alertmanager 1. To remove the example alert: diff --git a/src/current/v25.3/monitor-cockroachdb-operator.md b/src/current/v25.3/monitor-cockroachdb-operator.md index e44c73c252d..edc5d0b43fe 100644 --- a/src/current/v25.3/monitor-cockroachdb-operator.md +++ b/src/current/v25.3/monitor-cockroachdb-operator.md @@ -76,7 +76,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ 1. Apply the Prometheus manifest. This creates the various objects necessary to run a Prometheus instance: @@ -119,13 +119,13 @@ For more details on using the Prometheus UI, see their [official documentation]( ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our [alertmanager-config.yaml](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml) configuration file: +1. Download our [alertmanager-config.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %}) configuration file: {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -152,12 +152,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [alertmanager.yaml](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [alertmanager.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ shell alertmanager.monitoring.coreos.com/cockroachdb created @@ -180,12 +180,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ shell prometheusrule.monitoring.coreos.com/prometheus-cockroachdb-rules created diff --git a/src/current/v25.3/monitor-cockroachdb-with-prometheus.md b/src/current/v25.3/monitor-cockroachdb-with-prometheus.md index 2a9ff6f04ae..d9086ce6fbf 100644 --- a/src/current/v25.3/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v25.3/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v25.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v25.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index 55f144f4d74..25324c54dfd 100644 --- a/src/current/v25.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v25.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v25.4/admission-control.md b/src/current/v25.4/admission-control.md index 7b248c94300..517842d1e63 100644 --- a/src/current/v25.4/admission-control.md +++ b/src/current/v25.4/admission-control.md @@ -165,5 +165,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v25.4/monitor-cockroachdb-kubernetes.md b/src/current/v25.4/monitor-cockroachdb-kubernetes.md index b8ab1dafdac..4587d1c1439 100644 --- a/src/current/v25.4/monitor-cockroachdb-kubernetes.md +++ b/src/current/v25.4/monitor-cockroachdb-kubernetes.md @@ -132,7 +132,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -181,14 +181,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -218,12 +218,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -248,12 +248,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/v25.4/monitor-cockroachdb-operator.md b/src/current/v25.4/monitor-cockroachdb-operator.md index 5bf93ce305d..b09b075104f 100644 --- a/src/current/v25.4/monitor-cockroachdb-operator.md +++ b/src/current/v25.4/monitor-cockroachdb-operator.md @@ -76,7 +76,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ 1. Apply the Prometheus manifest. This creates the various objects necessary to run a Prometheus instance: @@ -119,13 +119,13 @@ For more details on using the Prometheus UI, see their [official documentation]( ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our [alertmanager-config.yaml](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml) configuration file: +1. Download our [alertmanager-config.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %}) configuration file: {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -152,12 +152,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [alertmanager.yaml](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [alertmanager.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ shell alertmanager.monitoring.coreos.com/cockroachdb created @@ -180,12 +180,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ shell prometheusrule.monitoring.coreos.com/prometheus-cockroachdb-rules created diff --git a/src/current/v25.4/monitor-cockroachdb-with-prometheus.md b/src/current/v25.4/monitor-cockroachdb-with-prometheus.md index 2a9ff6f04ae..d9086ce6fbf 100644 --- a/src/current/v25.4/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v25.4/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v25.4/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v25.4/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index 55f144f4d74..25324c54dfd 100644 --- a/src/current/v25.4/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v25.4/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v26.1/admission-control.md b/src/current/v26.1/admission-control.md index 0c1eee3c34a..a7764adb494 100644 --- a/src/current/v26.1/admission-control.md +++ b/src/current/v26.1/admission-control.md @@ -165,5 +165,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v26.1/monitor-cockroachdb-kubernetes.md b/src/current/v26.1/monitor-cockroachdb-kubernetes.md index 581d156b4fd..b0c363379a6 100644 --- a/src/current/v26.1/monitor-cockroachdb-kubernetes.md +++ b/src/current/v26.1/monitor-cockroachdb-kubernetes.md @@ -132,7 +132,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -181,14 +181,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -218,12 +218,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -248,12 +248,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/v26.1/monitor-cockroachdb-operator.md b/src/current/v26.1/monitor-cockroachdb-operator.md index daf5e678e7b..c76be24bf01 100644 --- a/src/current/v26.1/monitor-cockroachdb-operator.md +++ b/src/current/v26.1/monitor-cockroachdb-operator.md @@ -76,7 +76,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ 1. Apply the Prometheus manifest. This creates the various objects necessary to run a Prometheus instance: @@ -119,13 +119,13 @@ For more details on using the Prometheus UI, see their [official documentation]( ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our [alertmanager-config.yaml](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml) configuration file: +1. Download our [alertmanager-config.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %}) configuration file: {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -152,12 +152,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [alertmanager.yaml](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [alertmanager.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ shell alertmanager.monitoring.coreos.com/cockroachdb created @@ -180,12 +180,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ shell prometheusrule.monitoring.coreos.com/prometheus-cockroachdb-rules created diff --git a/src/current/v26.1/monitor-cockroachdb-with-prometheus.md b/src/current/v26.1/monitor-cockroachdb-with-prometheus.md index 2a9ff6f04ae..d9086ce6fbf 100644 --- a/src/current/v26.1/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v26.1/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Download the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB: +1. Download the starter Grafana dashboards for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v26.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v26.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index 55f144f4d74..25324c54dfd 100644 --- a/src/current/v26.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v26.1/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v26.2/admission-control.md b/src/current/v26.2/admission-control.md index 8ac5fe173a3..6820ea8165c 100644 --- a/src/current/v26.2/admission-control.md +++ b/src/current/v26.2/admission-control.md @@ -166,5 +166,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). +- The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v26.2/monitor-cockroachdb-kubernetes.md b/src/current/v26.2/monitor-cockroachdb-kubernetes.md index 0d4fe02ebc5..186a2e47491 100644 --- a/src/current/v26.2/monitor-cockroachdb-kubernetes.md +++ b/src/current/v26.2/monitor-cockroachdb-kubernetes.md @@ -132,7 +132,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -181,14 +181,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -218,12 +218,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -248,12 +248,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/v26.2/monitor-cockroachdb-operator.md b/src/current/v26.2/monitor-cockroachdb-operator.md index c47ec443b79..bee05d6a964 100644 --- a/src/current/v26.2/monitor-cockroachdb-operator.md +++ b/src/current/v26.2/monitor-cockroachdb-operator.md @@ -76,7 +76,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ 1. Apply the Prometheus manifest. This creates the various objects necessary to run a Prometheus instance: @@ -119,13 +119,13 @@ For more details on using the Prometheus UI, see their [official documentation]( ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our [alertmanager-config.yaml](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml) configuration file: +1. Download our [alertmanager-config.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %}) configuration file: {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -152,12 +152,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [alertmanager.yaml](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [alertmanager.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ shell alertmanager.monitoring.coreos.com/cockroachdb created @@ -180,12 +180,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ shell prometheusrule.monitoring.coreos.com/prometheus-cockroachdb-rules created diff --git a/src/current/v26.2/monitor-cockroachdb-with-prometheus.md b/src/current/v26.2/monitor-cockroachdb-with-prometheus.md index 3d03a38c9d3..4a6c562c9a1 100644 --- a/src/current/v26.2/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v26.2/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -173,29 +172,29 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a Url | `http://:9090` Access | Direct -1. Generate a standardized Grafana dashboard using [`cockroach gen dashboard --tool=grafana`]({% link {{ page.version.version }}/cockroach-gen.md %}#generate-a-dashboard). Alternatively, download one or more of the starter [Grafana dashboards](https://github.com/cockroachdb/cockroach/tree/master/monitoring/grafana-dashboards/by-cluster) for CockroachDB to focus on specific metrics: +1. Generate a standardized Grafana dashboard using [`cockroach gen dashboard --tool=grafana`]({% link {{ page.version.version }}/cockroach-gen.md %}#generate-a-dashboard). Alternatively, download one or more of the starter Grafana dashboards for CockroachDB to focus on specific metrics: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v26.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v26.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index 55f144f4d74..25324c54dfd 100644 --- a/src/current/v26.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v26.2/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~ diff --git a/src/current/v26.3/admission-control.md b/src/current/v26.3/admission-control.md index fbd56d5c9ed..3e6e13a100b 100644 --- a/src/current/v26.3/admission-control.md +++ b/src/current/v26.3/admission-control.md @@ -166,6 +166,5 @@ The [DB Console Overload dashboard]({% link {{ page.version.version }}/ui-overlo ## See also - The [Overload Dashboard]({% link {{ page.version.version }}/ui-overload-dashboard.md %}) in the [DB Console]({% link {{ page.version.version }}/ui-overview.md %}). -- - The blog post [Here's how CockroachDB keeps your database from collapsing under load](https://www.cockroachlabs.com/blog/admission-control-in-cockroachdb/). - The blog post [Rubbing Control Theory on the Go scheduler](https://www.cockroachlabs.com/blog/rubbing-control-theory/). diff --git a/src/current/v26.3/monitor-cockroachdb-kubernetes.md b/src/current/v26.3/monitor-cockroachdb-kubernetes.md index ebbf489a9c4..90130b8d6f8 100644 --- a/src/current/v26.3/monitor-cockroachdb-kubernetes.md +++ b/src/current/v26.3/monitor-cockroachdb-kubernetes.md @@ -132,7 +132,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ {{site.data.alerts.callout_info}} @@ -181,14 +181,14 @@ If you're on Hosted GKE, before starting, make sure the email address associated ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our alertmanager-config.yaml configuration file: +1. Download our alertmanager-config.yaml configuration file: {% include_cached copy-clipboard.html %} ~~~ shell $ curl -O \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -218,12 +218,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [`alertmanager.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [`alertmanager.yaml`]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ @@ -248,12 +248,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell $ kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ diff --git a/src/current/v26.3/monitor-cockroachdb-operator.md b/src/current/v26.3/monitor-cockroachdb-operator.md index 7dd81856b2e..92e9f0a3c62 100644 --- a/src/current/v26.3/monitor-cockroachdb-operator.md +++ b/src/current/v26.3/monitor-cockroachdb-operator.md @@ -76,7 +76,7 @@ If you're on Hosted GKE, before starting, make sure the email address associated {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/prometheus.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/prometheus.yaml %} ~~~ 1. Apply the Prometheus manifest. This creates the various objects necessary to run a Prometheus instance: @@ -119,13 +119,13 @@ For more details on using the Prometheus UI, see their [official documentation]( ## Configure Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml) to do this. +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. This section shows you how to use [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) and CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}) to do this. -1. Download our [alertmanager-config.yaml](https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml) configuration file: +1. Download our [alertmanager-config.yaml](https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %}) configuration file: {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager-config.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager-config.yaml %} ~~~ 1. Edit the `alertmanager-config.yaml` file to [specify the desired receivers for notifications](https://prometheus.io/docs/alerting/configuration/#receiver). Initially, the file contains a placeholder web hook. @@ -152,12 +152,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen The name of the secret, `alertmanager-cockroachdb`, must match the name used in the `alertmanager.yaml` file. If they differ, the Alertmanager instance will start without configuration, and nothing will happen. {{site.data.alerts.end}} -1. Use our [alertmanager.yaml](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alertmanager.yaml) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: +1. Use our [alertmanager.yaml]({% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %}) file to create the various objects necessary to run an Alertmanager instance, including a ClusterIP service so that Prometheus can forward alerts: {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alertmanager.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alertmanager.yaml %} ~~~ ~~~ shell alertmanager.monitoring.coreos.com/cockroachdb created @@ -180,12 +180,12 @@ Active monitoring helps you spot problems early, but it is also essential to sen Alertmanager -1. Add CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/prometheus/alert-rules.yaml): +1. Add CockroachDB's starter [alerting rules]({% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell kubectl apply \ - -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/prometheus/alert-rules.yaml + -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/prometheus/alert-rules.yaml %} ~~~ ~~~ shell prometheusrule.monitoring.coreos.com/prometheus-cockroachdb-rules created diff --git a/src/current/v26.3/monitor-cockroachdb-with-prometheus.md b/src/current/v26.3/monitor-cockroachdb-with-prometheus.md index 3d03a38c9d3..20a75ed402c 100644 --- a/src/current/v26.3/monitor-cockroachdb-with-prometheus.md +++ b/src/current/v26.3/monitor-cockroachdb-with-prometheus.md @@ -15,7 +15,6 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration - Make sure you have already started a CockroachDB cluster, either [locally]({% link {{ page.version.version }}/start-a-local-cluster.md %}) or in a [production environment]({% link {{ page.version.version }}/manual-deployment.md %}). -- Note that all files used in this tutorial can be found in the [`monitoring`](https://github.com/cockroachdb/cockroach/tree/master/monitoring) directory of the CockroachDB repository. ## Step 1. Install Prometheus @@ -39,11 +38,11 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 2. Configure Prometheus -1. Download the starter [Prometheus configuration file](https://github.com/cockroachdb/cockroach/blob/master/monitoring/prometheus.yml) for CockroachDB: +1. Download the starter [Prometheus configuration file]({% link files/cockroach/monitoring/prometheus.yml %}) for CockroachDB: {% include_cached copy-clipboard.html %} ~~~ shell - curl -o prometheus.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/prometheus.yml + curl -o prometheus.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/prometheus.yml %} ~~~ When you examine the configuration file, you'll see that it is set up to scrape the time series metrics of a single, insecure local node every 10 seconds: @@ -60,7 +59,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration Production cluster | Change the `targets` field to include `':'` for each node in the cluster. Also, be sure your network configuration allows TCP communication on the specified ports. Secure cluster | Uncomment `scheme: 'https'` and comment out `scheme: 'http'`. -1. Create a `rules` directory and download the [aggregation rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/aggregation.rules.yml) and [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml) for CockroachDB into it: +1. Create a `rules` directory and download the [aggregation rules]({% link files/cockroach/monitoring/rules/aggregation.rules.yml %}) and [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}) for CockroachDB into it: {% include_cached copy-clipboard.html %} ~~~ shell @@ -74,12 +73,12 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/aggregation.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/aggregation.rules.yml + curl -o rules/aggregation.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/aggregation.rules.yml %} ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o rules/alerts.rules.yml https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/rules/alerts.rules.yml + curl -o rules/alerts.rules.yml https://www.cockroachlabs.com/{% link files/cockroach/monitoring/rules/alerts.rules.yml %} ~~~ ## Step 3. Start Prometheus @@ -108,7 +107,7 @@ This tutorial explores the CockroachDB {{ site.data.products.core }} integration ## Step 4. Send notifications with Alertmanager -Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules](https://github.com/cockroachdb/cockroach/blob/master/monitoring/rules/alerts.rules.yml). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). +Active monitoring helps you spot problems early, but it is also essential to send notifications when there are events that require investigation or intervention. In step 2, you already downloaded CockroachDB's starter [alerting rules]({% link files/cockroach/monitoring/rules/alerts.rules.yml %}). Now, download, configure, and start [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). 1. Download the [latest Alertmanager tarball](https://prometheus.io/download/#alertmanager) for your OS. @@ -177,25 +176,25 @@ Although Prometheus lets you graph metrics, [Grafana](https://grafana.com/) is a {% include_cached copy-clipboard.html %} ~~~ shell - curl -o runtime.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/runtime.json + curl -o runtime.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/runtime.json %} # runtime dashboard: node status, including uptime, memory, and cpu. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o storage.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/storage.json + curl -o storage.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/storage.json %} # storage dashboard: storage availability. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o sql.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/sql.json + curl -o sql.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/sql.json %} # sql dashboard: sql queries/transactions. ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - curl -o replication.json https://raw.githubusercontent.com/cockroachdb/cockroach/master/monitoring/grafana-dashboards/by-cluster/replication.json + curl -o replication.json https://www.cockroachlabs.com/{% link files/cockroach/monitoring/grafana-dashboards/by-cluster/replication.json %} # replicas dashboard: replica information and operations. ~~~ diff --git a/src/current/v26.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md b/src/current/v26.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md index 55f144f4d74..25324c54dfd 100644 --- a/src/current/v26.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md +++ b/src/current/v26.3/orchestrate-cockroachdb-with-kubernetes-multi-cluster.md @@ -71,7 +71,6 @@ Instead of using this approach, you can now [enable global access](https://cloud Our multi-region deployment approach relies on pod IP addresses being routable across three distinct Kubernetes clusters and regions. Both the hosted Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS) satisfy this requirement. -If you want to run on another cloud or on-premises, use this [basic network test](https://github.com/cockroachdb/cockroach/tree/master/cloud/kubernetes/multiregion#pod-to-pod-connectivity) to see if it will work.
1. Complete the **Before You Begin** steps described in the [Google Kubernetes Engine Quickstart](https://cloud.google.com/kubernetes-engine/docs/quickstart) documentation. @@ -322,21 +321,21 @@ This important rule enables node communication between Kubernetes clusters in di The Kubernetes cluster in each region needs to have a [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) pointed at its CoreDNS service, which you will configure in the next step. -1. Upload our load balancer manifest [`dns-lb-eks.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml) to the Kubernetes clusters in all 3 regions: +1. Upload our load balancer manifest [`dns-lb-eks.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %}) to the Kubernetes clusters in all 3 regions: {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ {% include_cached copy-clipboard.html %} ~~~ shell - kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml --context + kubectl apply -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/dns-lb-eks.yaml %} --context ~~~ You should see the load balancer appear in the Load Balancers section of the EC2 console in each region. This load balancer will route traffic to CoreDNS in the region. @@ -369,11 +368,11 @@ Each Kubernetes cluster has a [CoreDNS](https://coredns.io/) service that respon To enable traffic forwarding to CockroachDB pods in all 3 regions, you need to [modify the ConfigMap](https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns-configmap-options) for the CoreDNS Corefile in each region. -1. Download and open our ConfigMap template [`configmap.yaml`](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/configmap.yaml): +1. Download and open our ConfigMap template [`configmap.yaml`]({% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %}): {% include_cached copy-clipboard.html %} ~~~ shell - curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/configmap.yaml + curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/configmap.yaml %} ~~~ 1. After [obtaining the IP addresses of the Network Load Balancers](#set-up-load-balancing) in all 3 regions, you can use this information to define a **separate ConfigMap for each region**. Each unique ConfigMap lists the forwarding addresses for the pods in the 2 other regions. @@ -467,7 +466,7 @@ If you plan to run your instances exclusively on private subnets, set the follow {% include_cached copy-clipboard.html %} ~~~ shell $ curl -OOOOOOOOO \ - https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/{README.md,client-secure.yaml,cluster-init-secure.yaml,cockroachdb-statefulset-secure.yaml,dns-lb.yaml,example-app-secure.yaml,external-name-svc.yaml,setup.py,teardown.py} + https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/README.md %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cluster-init-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/cockroachdb-statefulset-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/dns-lb.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/example-app-secure.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/external-name-svc.yaml %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/setup.py %} https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/teardown.py %} ~~~ 1. Retrieve the `kubectl` "contexts" for your clusters: @@ -685,11 +684,11 @@ The below steps use [`cockroach cert` commands]({% link {{ page.version.version ### Create StatefulSets -1. Download and open our [multi-region StatefulSet configuration](https://github.com/cockroachdb/cockroach/blob/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. +1. Download and open our [multi-region StatefulSet configuration]({% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %}). You'll save three versions of this file locally, one for each set of 3 CockroachDB nodes per region. {% include_cached copy-clipboard.html %} ~~~ shell - $ curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml + $ curl -O https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/eks/cockroachdb-statefulset-secure-eks.yaml %} ~~~ Look for **TODO** comments in the file. These highlight fields you need to define before deploying your StatefulSet. @@ -814,7 +813,7 @@ The pod uses the `root` client certificate created earlier by the `setup.py` scr {% include_cached copy-clipboard.html %} ~~~ shell - kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/multiregion/client-secure.yaml --context --namespace + kubectl create -f https://www.cockroachlabs.com/{% link files/cockroach/cloud/kubernetes/multiregion/client-secure.yaml %} --context --namespace ~~~ ~~~