From e149b7acf5103edb5f753444dce8a69e20a7270f Mon Sep 17 00:00:00 2001 From: Tapajit Chandra Paul Date: Tue, 29 Oct 2024 13:35:28 +0600 Subject: [PATCH] Add druid monitoring docs Signed-off-by: Tapajit Chandra Paul --- docs/guides/druid/README.md | 2 +- .../druid/autoscaler/compute/overview.md | 2 +- .../druid/autoscaler/storage/overview.md | 2 +- docs/guides/druid/backup/overview/index.md | 2 +- .../topology-cluster-guide/index.md | 2 +- .../topology-cluster-overview/index.md | 2 +- docs/guides/druid/configuration/guide.md | 2 +- docs/guides/druid/monitoring/_index.md | 10 + .../monitoring/images/druid-monitoring.png | Bin 0 -> 68080 bytes docs/guides/druid/monitoring/overview.md | 139 +++++++ .../monitoring/using-builtin-prometheus.md | 372 ++++++++++++++++++ .../monitoring/using-prometheus-operator.md | 344 ++++++++++++++++ .../monitoring/yamls/deep-storage-config.yaml | 16 + .../yamls/druid-monitoring-builtin.yaml | 24 ++ .../yamls/druid-with-monitoring.yaml | 23 ++ .../quickstart/{overview => guide}/index.md | 8 +- docs/guides/druid/reconfigure-tls/overview.md | 2 +- .../scaling/horizontal-scaling/overview.md | 2 +- .../scaling/vertical-scaling/overview.md | 2 +- docs/guides/druid/tls/overview.md | 2 +- docs/guides/druid/update-version/overview.md | 2 +- .../guides/druid/volume-expansion/overview.md | 2 +- .../autoscaler/compute/overview/index.md | 2 +- .../autoscaler/storage/overview/index.md | 2 +- .../backup/kubestash/overview/index.md | 2 +- .../backup/stash/overview/index.md | 2 +- .../configuration/overview/index.md | 2 +- .../elasticsearch/monitoring/overview.md | 2 +- .../plugins-backup/overview/index.md | 2 +- .../quickstart/overview/_index.md | 2 +- .../overview/elasticsearch/index.md | 8 +- .../quickstart/overview/opensearch/index.md | 6 +- .../kafka/autoscaler/compute/overview.md | 2 +- .../kafka/autoscaler/storage/overview.md | 2 +- docs/guides/kafka/migration/overview.md | 2 +- docs/guides/kafka/monitoring/overview.md | 2 +- docs/guides/kafka/reconfigure-tls/overview.md | 2 +- docs/guides/kafka/reconfigure/overview.md | 2 +- docs/guides/kafka/restproxy/overview.md | 2 +- .../scaling/horizontal-scaling/overview.md | 2 +- .../scaling/vertical-scaling/overview.md | 2 +- docs/guides/kafka/schemaregistry/overview.md | 2 +- docs/guides/kafka/tls/overview.md | 2 +- docs/guides/kafka/update-version/overview.md | 2 +- .../guides/kafka/volume-expansion/overview.md | 2 +- docs/guides/mariadb/README.md | 2 +- .../autoscaler/compute/overview/index.md | 2 +- .../autoscaler/storage/overview/index.md | 2 +- .../backup/kubestash/overview/index.md | 2 +- .../mariadb/backup/stash/overview/index.md | 2 +- .../mariadb/clustering/overview/index.md | 2 +- .../mariadb/monitoring/overview/index.md | 2 +- docs/guides/mariadb/pitr/overview/index.md | 6 +- .../mariadb/quickstart/overview/index.md | 6 +- .../mariadb/reconfigure-tls/overview/index.md | 2 +- .../mariadb/reconfigure/overview/index.md | 2 +- .../horizontal-scaling/overview/index.md | 2 +- .../vertical-scaling/overview/index.md | 2 +- docs/guides/mariadb/tls/overview/index.md | 2 +- .../mariadb/update-version/overview/index.md | 2 +- .../volume-expansion/overview/index.md | 2 +- .../memcached/autoscaler/compute/overview.md | 2 +- docs/guides/memcached/monitoring/overview.md | 2 +- docs/guides/memcached/reconfigure/overview.md | 2 +- .../scaling/horizontal-scaling/overview.md | 2 +- .../scaling/vertical-scaling/overview.md | 2 +- .../memcached/update-version/overview.md | 2 +- .../mongodb/autoscaler/compute/overview.md | 2 +- .../mongodb/autoscaler/storage/overview.md | 2 +- .../backup/kubestash/overview/index.md | 2 +- .../mongodb/backup/stash/overview/index.md | 2 +- docs/guides/mongodb/monitoring/overview.md | 2 +- .../mongodb/reconfigure-tls/overview.md | 2 +- docs/guides/mongodb/reconfigure/overview.md | 2 +- .../scaling/horizontal-scaling/overview.md | 2 +- .../scaling/vertical-scaling/overview.md | 2 +- .../mongodb/schema-manager/overview/index.md | 2 +- docs/guides/mongodb/tls/overview.md | 2 +- .../guides/mongodb/update-version/overview.md | 2 +- .../mongodb/volume-expansion/overview.md | 2 +- .../mssqlserver/backup/overview/index.md | 2 +- .../autoscaler/compute/overview/index.md | 2 +- .../autoscaler/storage/overview/index.md | 2 +- .../mysql/backup/kubestash/overview/index.md | 2 +- .../mysql/backup/stash/overview/index.md | 2 +- .../guides/mysql/clustering/overview/index.md | 2 +- .../guides/mysql/monitoring/overview/index.md | 2 +- .../mysql/reconfigure-tls/overview/index.md | 2 +- .../mysql/reconfigure/overview/index.md | 2 +- .../horizontal-scaling/overview/index.md | 2 +- .../vertical-scaling/overview/index.md | 2 +- .../mysql/schema-manager/overview/index.md | 2 +- docs/guides/mysql/tls/overview/index.md | 2 +- .../mysql/update-version/overview/index.md | 2 +- .../mysql/volume-expansion/overview/index.md | 2 +- docs/guides/percona-xtradb/README.md | 2 +- .../autoscaler/compute/overview/index.md | 2 +- .../autoscaler/storage/overview/index.md | 2 +- .../clustering/overview/index.md | 2 +- .../monitoring/overview/index.md | 2 +- .../quickstart/overview/index.md | 6 +- .../reconfigure-tls/overview/index.md | 2 +- .../reconfigure/overview/index.md | 2 +- .../horizontal-scaling/overview/index.md | 2 +- .../vertical-scaling/overview/index.md | 2 +- .../percona-xtradb/tls/overview/index.md | 2 +- .../update-version/overview/index.md | 2 +- .../volume-expansion/overview/index.md | 2 +- docs/guides/pgbouncer/monitoring/overview.md | 2 +- .../pgpool/autoscaler/compute/overview.md | 2 +- docs/guides/pgpool/monitoring/overview.md | 2 +- .../guides/pgpool/reconfigure-tls/overview.md | 2 +- docs/guides/pgpool/reconfigure/overview.md | 2 +- .../scaling/horizontal-scaling/overview.md | 2 +- .../scaling/vertical-scaling/overview.md | 2 +- docs/guides/pgpool/tls/overview.md | 2 +- docs/guides/pgpool/update-version/overview.md | 2 +- .../postgres/autoscaler/compute/overview.md | 2 +- .../postgres/autoscaler/storage/overview.md | 2 +- .../backup/kubestash/overview/index.md | 2 +- .../postgres/backup/stash/overview/index.md | 2 +- docs/guides/postgres/monitoring/overview.md | 2 +- .../postgres/reconfigure-tls/overview.md | 2 +- docs/guides/postgres/reconfigure/overview.md | 2 +- .../horizontal-scaling/overview/index.md | 2 +- .../vertical-scaling/overview/index.md | 2 +- docs/guides/postgres/tls/overview/index.md | 2 +- .../postgres/update-version/overview/index.md | 2 +- .../volume-expansion/Overview/overview.md | 2 +- .../autoscaler/compute/overview/index.md | 2 +- .../proxysql/clustering/overview/index.md | 2 +- .../proxysql/monitoring/overview/index.md | 2 +- .../proxysql/quickstart/mysqlgrp/index.md | 2 +- .../reconfigure-tls/overview/index.md | 2 +- .../proxysql/reconfigure/overview/index.md | 2 +- .../horizontal-scaling/overview/index.md | 2 +- .../vertical-scaling/overview/index.md | 2 +- docs/guides/proxysql/tls/overview/index.md | 2 +- .../proxysql/update-version/overview/index.md | 2 +- .../rabbitmq/autoscaler/compute/overview.md | 2 +- .../rabbitmq/autoscaler/storage/overview.md | 2 +- docs/guides/rabbitmq/monitoring/overview.md | 2 +- .../rabbitmq/reconfigure-tls/overview.md | 2 +- docs/guides/rabbitmq/reconfigure/overview.md | 2 +- .../scaling/horizontal-scaling/overview.md | 2 +- .../scaling/vertical-scaling/overview.md | 2 +- docs/guides/rabbitmq/tls/overview.md | 2 +- .../rabbitmq/update-version/overview.md | 2 +- .../rabbitmq/volume-expansion/overview.md | 2 +- .../redis/autoscaler/compute/overview.md | 2 +- .../redis/autoscaler/storage/overview.md | 2 +- .../redis/backup/kubestash/overview/index.md | 2 +- .../redis/backup/stash/overview/index.md | 2 +- docs/guides/redis/clustering/overview.md | 2 +- docs/guides/redis/monitoring/overview.md | 2 +- docs/guides/redis/reconfigure-tls/overview.md | 2 +- docs/guides/redis/reconfigure/overview.md | 2 +- .../scaling/horizontal-scaling/overview.md | 2 +- .../scaling/vertical-scaling/overview.md | 2 +- docs/guides/redis/sentinel/overview.md | 2 +- .../sentinel/replacesentinel/overview.md | 2 +- docs/guides/redis/tls/overview.md | 2 +- docs/guides/redis/update-version/overview.md | 2 +- .../guides/redis/volume-expansion/overview.md | 2 +- .../backup/kubestash/overview/index.md | 2 +- docs/guides/solr/quickstart/overview/index.md | 8 +- .../backup/kubestash/overview/index.md | 2 +- docs/overview/README.md | 10 +- docs/overview/_index.md | 2 +- docs/setup/monitoring/overview.md | 2 +- 170 files changed, 1111 insertions(+), 183 deletions(-) create mode 100755 docs/guides/druid/monitoring/_index.md create mode 100644 docs/guides/druid/monitoring/images/druid-monitoring.png create mode 100644 docs/guides/druid/monitoring/overview.md create mode 100644 docs/guides/druid/monitoring/using-builtin-prometheus.md create mode 100644 docs/guides/druid/monitoring/using-prometheus-operator.md create mode 100644 docs/guides/druid/monitoring/yamls/deep-storage-config.yaml create mode 100644 docs/guides/druid/monitoring/yamls/druid-monitoring-builtin.yaml create mode 100644 docs/guides/druid/monitoring/yamls/druid-with-monitoring.yaml rename docs/guides/druid/quickstart/{overview => guide}/index.md (99%) diff --git a/docs/guides/druid/README.md b/docs/guides/druid/README.md index c55d970dfc..a666bb3cf9 100644 --- a/docs/guides/druid/README.md +++ b/docs/guides/druid/README.md @@ -52,7 +52,7 @@ ref : https://cacoo.com/diagrams/bbB63L6KRIbPLl95/9A5B0

## User Guide -- [Quickstart Druid](/docs/guides/druid/quickstart/overview/index.md) with KubeDB Operator. +- [Quickstart Druid](/docs/guides/druid/quickstart/guide/index.md) with KubeDB Operator. [//]: # (- Druid Clustering supported by KubeDB) diff --git a/docs/guides/druid/autoscaler/compute/overview.md b/docs/guides/druid/autoscaler/compute/overview.md index 457bbfe62c..6a5f2e9baf 100644 --- a/docs/guides/druid/autoscaler/compute/overview.md +++ b/docs/guides/druid/autoscaler/compute/overview.md @@ -2,7 +2,7 @@ title: Druid Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: guides-druid-autoscaler-compute-overview + identifier: guides-druid-autoscaler-compute-guide name: Overview parent: guides-druid-autoscaler-compute weight: 10 diff --git a/docs/guides/druid/autoscaler/storage/overview.md b/docs/guides/druid/autoscaler/storage/overview.md index 607e246032..cab982b0f1 100644 --- a/docs/guides/druid/autoscaler/storage/overview.md +++ b/docs/guides/druid/autoscaler/storage/overview.md @@ -2,7 +2,7 @@ title: Druid Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: guides-druid-autoscaler-storage-overview + identifier: guides-druid-autoscaler-storage-guide name: Overview parent: guides-druid-autoscaler-storage weight: 10 diff --git a/docs/guides/druid/backup/overview/index.md b/docs/guides/druid/backup/overview/index.md index c8adef63e6..723754834f 100644 --- a/docs/guides/druid/backup/overview/index.md +++ b/docs/guides/druid/backup/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore Druid Overview menu: docs_{{ .version }}: - identifier: guides-druid-backup-overview + identifier: guides-druid-backup-guide name: Overview parent: guides-druid-backup weight: 10 diff --git a/docs/guides/druid/clustering/topology-cluster-guide/index.md b/docs/guides/druid/clustering/topology-cluster-guide/index.md index 40b9b20b79..cfa56152bd 100644 --- a/docs/guides/druid/clustering/topology-cluster-guide/index.md +++ b/docs/guides/druid/clustering/topology-cluster-guide/index.md @@ -107,7 +107,7 @@ spec: ``` ```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/clustering/topology-cluster-guide/yamls/druid-with-config.yaml +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/clustering/topology-cluster-guide/yamls/druid-with-monitoring.yaml druid.kubedb.com/druid-cluster created ``` diff --git a/docs/guides/druid/clustering/topology-cluster-overview/index.md b/docs/guides/druid/clustering/topology-cluster-overview/index.md index e051fd7298..6a22a4ed06 100644 --- a/docs/guides/druid/clustering/topology-cluster-overview/index.md +++ b/docs/guides/druid/clustering/topology-cluster-overview/index.md @@ -2,7 +2,7 @@ title: Druid Topology Cluster Overview menu: docs_{{ .version }}: - identifier: guides-druid-clustering-topology-cluster-overview + identifier: guides-druid-clustering-topology-cluster-guide name: Druid Topology Cluster Overview parent: guides-druid-clustering weight: 15 diff --git a/docs/guides/druid/configuration/guide.md b/docs/guides/druid/configuration/guide.md index 1bae590a79..fd2762ee33 100644 --- a/docs/guides/druid/configuration/guide.md +++ b/docs/guides/druid/configuration/guide.md @@ -170,7 +170,7 @@ spec: Now, create the Druid object by the following command: ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/configuration/yamls/druid-with-config.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/configuration/yamls/druid-with-monitoring.yaml druid.kubedb.com/druid-with-config created ``` diff --git a/docs/guides/druid/monitoring/_index.md b/docs/guides/druid/monitoring/_index.md new file mode 100755 index 0000000000..9013d00acc --- /dev/null +++ b/docs/guides/druid/monitoring/_index.md @@ -0,0 +1,10 @@ +--- +title: Monitor Druid with Prometheus & Grafana +menu: + docs_{{ .version }}: + identifier: guides-druid-monitoring + name: Monitoring + parent: guides-druid + weight: 50 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/druid/monitoring/images/druid-monitoring.png b/docs/guides/druid/monitoring/images/druid-monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..2c609a2b98bb32a5086422495c2c363743710580 GIT binary patch literal 68080 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 z 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 HF9ZJ New to KubeDB? Please start [here](/docs/README.md). + +# Monitoring Apache Druid with KubeDB + +KubeDB has native support for monitoring via [Prometheus](https://prometheus.io/). You can use builtin [Prometheus](https://github.com/prometheus/prometheus) scraper or [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) to monitor KubeDB managed databases. This tutorial will show you how database monitoring works with KubeDB and how to configure Database crd to enable monitoring. + +## Overview + +KubeDB uses Prometheus [exporter](https://prometheus.io/docs/instrumenting/exporters/#databases) images to export Prometheus metrics for respective databases. As KubeDB supports Druid versions in KRaft mode, and the officially recognized exporter image doesn't expose metrics for them yet - KubeDB managed Druid instances use [JMX Exporter](https://github.com/prometheus/jmx_exporter) instead. This exporter is intended to be run as a Java Agent inside Druid container, exposing a HTTP server and serving metrics of the local JVM. To Following diagram shows the logical flow of database monitoring with KubeDB. + +

+  Database Monitoring Flow +

+ +When a user creates a Druid crd with `spec.monitor` section configured, KubeDB operator provisions the respective Druid cluster while running the exporter as a Java agent inside the druid containers. It also creates a dedicated stats service with name `{database-crd-name}-stats` for monitoring. Prometheus server can scrape metrics using this stats service. + +## Configure Monitoring + +In order to enable monitoring for a database, you have to configure `spec.monitor` section. KubeDB provides following options to configure `spec.monitor` section: + +| Field | Type | Uses | +|----------------------------------------------------|------------|-----------------------------------------------------------------------------------------------------------------------------------------| +| `spec.monitor.agent` | `Required` | Type of the monitoring agent that will be used to monitor this database. It can be `prometheus.io/builtin` or `prometheus.io/operator`. | +| `spec.monitor.prometheus.exporter.port` | `Optional` | Port number where the exporter side car will serve metrics. | +| `spec.monitor.prometheus.exporter.args` | `Optional` | Arguments to pass to the exporter sidecar. | +| `spec.monitor.prometheus.exporter.env` | `Optional` | List of environment variables to set in the exporter sidecar container. | +| `spec.monitor.prometheus.exporter.resources` | `Optional` | Resources required by exporter sidecar container. | +| `spec.monitor.prometheus.exporter.securityContext` | `Optional` | Security options the exporter should run with. | +| `spec.monitor.prometheus.serviceMonitor.labels` | `Optional` | Labels for `ServiceMonitor` crd. | +| `spec.monitor.prometheus.serviceMonitor.interval` | `Optional` | Interval at which metrics should be scraped. | + +## Sample Configuration + +A sample YAML for TLS secured Druid crd with `spec.monitor` section configured to enable monitoring with [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) is shown below. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Druid +metadata: + name: druid-with-monitoring + namespace: demo +spec: + version: 28.0.1 + deepStorage: + type: s3 + configSecret: + name: deep-storage-config + topology: + routers: + replicas: 1 + monitor: + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + interval: 10s + deletionPolicy: WipeOut +``` + +### Create External Dependency (Deep Storage) + +Before proceeding further, we need to prepare deep storage, which is one of the external dependency of Druid and used for storing the segments. It is a storage mechanism that Apache Druid does not provide. **Amazon S3**, **Google Cloud Storage**, or **Azure Blob Storage**, **S3-compatible storage** (like **Minio**), or **HDFS** are generally convenient options for deep storage. + +In this tutorial, we will run a `minio-server` as deep storage in our local `kind` cluster using `minio-operator` and create a bucket named `druid` in it, which the deployed druid database will use. + +```bash + +$ helm repo add minio https://operator.min.io/ +$ helm repo update minio +$ helm upgrade --install --namespace "minio-operator" --create-namespace "minio-operator" minio/operator --set operator.replicaCount=1 + +$ helm upgrade --install --namespace "demo" --create-namespace druid-minio minio/tenant \ +--set tenant.pools[0].servers=1 \ +--set tenant.pools[0].volumesPerServer=1 \ +--set tenant.pools[0].size=1Gi \ +--set tenant.certificate.requestAutoCert=false \ +--set tenant.buckets[0].name="druid" \ +--set tenant.pools[0].name="default" + +``` + +Now we need to create a `Secret` named `deep-storage-config`. It contains the necessary connection information using which the druid database will connect to the deep storage. + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: deep-storage-config + namespace: demo +stringData: + druid.storage.type: "s3" + druid.storage.bucket: "druid" + druid.storage.baseKey: "druid/segments" + druid.s3.accessKey: "minio" + druid.s3.secretKey: "minio123" + druid.s3.protocol: "http" + druid.s3.enablePathStyleAccess: "true" + druid.s3.endpoint.signingRegion: "us-east-1" + druid.s3.endpoint.url: "http://myminio-hl.demo.svc.cluster.local:9000/" +``` + +Let’s create the `deep-storage-config` Secret shown above: + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/monitoring/yamls/deep-storage-config.yaml +secret/deep-storage-config created +``` + +Let's deploy the above druid example by the following command: + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/monitoring/yamls/druid-with-monitoring.yaml +druid.kubedb.com/druid created +``` + +Here, we have specified that we are going to monitor this server using Prometheus operator through `spec.monitor.agent: prometheus.io/operator`. KubeDB will create a `ServiceMonitor` crd in databases namespace and this `ServiceMonitor` will have `release: prometheus` label. + +## Next Steps + +- Learn how to use KubeDB to run a Apache Druid cluster [here](/docs/guides/druid/README.md). +- Deploy [dedicated topology cluster](/docs/guides/druid/clustering/topology-cluster/index.md) for Apache Druid +- Deploy [combined cluster](/docs/guides/druid/clustering/combined-cluster/index.md) for Apache Druid +- Detail concepts of [DruidVersion object](/docs/guides/druid/concepts/druidversion.md). +- Learn to use KubeDB managed Druid objects using [CLIs](/docs/guides/druid/cli/cli.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). \ No newline at end of file diff --git a/docs/guides/druid/monitoring/using-builtin-prometheus.md b/docs/guides/druid/monitoring/using-builtin-prometheus.md new file mode 100644 index 0000000000..a59d475fa2 --- /dev/null +++ b/docs/guides/druid/monitoring/using-builtin-prometheus.md @@ -0,0 +1,372 @@ +--- +title: Monitor Druid using Builtin Prometheus Discovery +menu: + docs_{{ .version }}: + identifier: guides-druid-monitoring-builtin-monitoring + name: Builtin Prometheus + parent: guides-druid-monitoring + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Monitoring Druid with builtin Prometheus + +This tutorial will show you how to monitor Druid cluster using builtin [Prometheus](https://github.com/prometheus/prometheus) scraper. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). + +- If you are not familiar with how to configure Prometheus to scrape metrics from various Kubernetes resources, please read the tutorial from [here](https://github.com/appscode/third-party-tools/tree/master/monitoring/prometheus/builtin). + +- To learn how Prometheus monitoring works with KubeDB in general, please visit [here](/docs/guides/druid/monitoring/overview.md). + +- To keep Prometheus resources isolated, we are going to use a separate namespace called `monitoring` to deploy respective monitoring resources. We are going to deploy database in `demo` namespace. + + ```bash + $ kubectl create ns monitoring + namespace/monitoring created + + $ kubectl create ns demo + namespace/demo created + ``` + +> Note: YAML files used in this tutorial are stored in [docs/examples/druid](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/druid) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Deploy Druid with Monitoring Enabled + +At first, let's deploy a Druid cluster with monitoring enabled. Below is the Druid object that we are going to create. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Druid +metadata: + name: druid-with-monitoring + namespace: demo +spec: + version: 28.0.1 + deepStorage: + type: s3 + configSecret: + name: deep-storage-config + topology: + routers: + replicas: 1 + monitor: + agent: prometheus.io/builtin + prometheus: + exporter: + port: 56790 + serviceMonitor: + labels: + release: prometheus + interval: 10s + deletionPolicy: WipeOut +``` + +Here, + +- `spec.monitor.agent: prometheus.io/builtin` specifies that we are going to monitor this server using builtin Prometheus scraper. +- `spec.monitor.prometheus.exporter.port: 56790` specifies the port where the exporter is running. + +Let's create the Druid crd we have shown above. + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/monitoring/yamls/druid-builtin-monitoring.yaml +druid.kubedb.com/druid-with-monitoring created +``` + +Now, wait for the cluster to go into `Ready` state. + +```bash +NAME TYPE VERSION STATUS AGE +druid-with-monitoring kubedb.com/v1alpha2 28.0.1 Ready 31s +``` + +KubeDB will create a separate stats service with name `{Druid crd name}-stats` for monitoring purpose. + +```bash +$ kubectl get svc -n demo --selector="app.kubernetes.io/instance=druid-with-monitoring" +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +druid-with-monitoring-brokers ClusterIP 10.96.28.252 8082/TCP 2m13s +druid-with-monitoring-coordinators ClusterIP 10.96.52.186 8081/TCP 2m13s +druid-with-monitoring-pods ClusterIP None 8081/TCP,8090/TCP,8083/TCP,8091/TCP,8082/TCP,8888/TCP 2m13s +druid-with-monitoring-routers ClusterIP 10.96.134.202 8888/TCP 2m13s +druid-with-monitoring-stats ClusterIP 10.96.222.96 56790/TCP 2m13s +``` + +Here, `druid-with-monitoring-stats` service has been created for monitoring purpose. Let's describe the service. + +```bash +$ kubectl describe svc -n druid-demo builtin-prom-stats +Name: druid-with-monitoring-stats +Namespace: demo +Labels: app.kubernetes.io/component=database + app.kubernetes.io/instance=druid-with-monitoring + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=druids.kubedb.com + kubedb.com/role=stats +Annotations: monitoring.appscode.com/agent: prometheus.io/builtin + prometheus.io/path: /metrics + prometheus.io/port: 56790 + prometheus.io/scrape: true +Selector: app.kubernetes.io/instance=druid-with-monitoring,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=druids.kubedb.com +Type: ClusterIP +IP Family Policy: SingleStack +IP Families: IPv4 +IP: 10.96.222.96 +IPs: 10.96.222.96 +Port: metrics 56790/TCP +TargetPort: metrics/TCP +Endpoints: 10.244.0.31:56790,10.244.0.33:56790 +Session Affinity: None +Events: +``` + +You can see that the service contains following annotations. + +```bash +prometheus.io/path: /metrics +prometheus.io/port: 56790 +prometheus.io/scrape: true +``` + +The Prometheus server will discover the service endpoint using these specifications and will scrape metrics from the exporter. + +## Configure Prometheus Server + +Now, we have to configure a Prometheus scraping job to scrape the metrics using this service. We are going to configure scraping job similar to this [kubernetes-service-endpoints](https://github.com/appscode/third-party-tools/tree/master/monitoring/prometheus/builtin#kubernetes-service-endpoints) job that scrapes metrics from endpoints of a service. + +Let's configure a Prometheus scraping job to collect metrics from this service. + +```yaml +- job_name: 'kubedb-databases' + honor_labels: true + scheme: http + kubernetes_sd_configs: + - role: endpoints + # by default Prometheus server select all Kubernetes services as possible target. + # relabel_config is used to filter only desired endpoints + relabel_configs: + # keep only those services that has "prometheus.io/scrape","prometheus.io/path" and "prometheus.io/port" anootations + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape, __meta_kubernetes_service_annotation_prometheus_io_port] + separator: ; + regex: true;(.*) + action: keep + # currently KubeDB supported databases uses only "http" scheme to export metrics. so, drop any service that uses "https" scheme. + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: drop + regex: https + # only keep the stats services created by KubeDB for monitoring purpose which has "-stats" suffix + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*-stats) + action: keep + # service created by KubeDB will have "app.kubernetes.io/name" and "app.kubernetes.io/instance" annotations. keep only those services that have these annotations. + - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name] + separator: ; + regex: (.*) + action: keep + # read the metric path from "prometheus.io/path: " annotation + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + # read the port from "prometheus.io/port: " annotation and update scraping address accordingly + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + # add service namespace as label to the scraped metrics + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + # add service name as a label to the scraped metrics + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace + # add stats service's labels to the scraped metrics + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) +``` + +### Configure Existing Prometheus Server + +If you already have a Prometheus server running, you have to add above scraping job in the `ConfigMap` used to configure the Prometheus server. Then, you have to restart it for the updated configuration to take effect. + +>If you don't use a persistent volume for Prometheus storage, you will lose your previously scraped data on restart. + +### Deploy New Prometheus Server + +If you don't have any existing Prometheus server running, you have to deploy one. In this section, we are going to deploy a Prometheus server in `monitoring` namespace to collect metrics using this stats service. + +**Create ConfigMap:** + +At first, create a ConfigMap with the scraping configuration. Bellow, the YAML of ConfigMap that we are going to create in this tutorial. + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: prometheus-config + labels: + app: prometheus-demo + namespace: monitoring +data: + prometheus.yml: |- + global: + scrape_interval: 5s + evaluation_interval: 5s + scrape_configs: + - job_name: 'kubedb-databases' + honor_labels: true + scheme: http + kubernetes_sd_configs: + - role: endpoints + # by default Prometheus server select all Kubernetes services as possible target. + # relabel_config is used to filter only desired endpoints + relabel_configs: + # keep only those services that has "prometheus.io/scrape","prometheus.io/path" and "prometheus.io/port" anootations + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape, __meta_kubernetes_service_annotation_prometheus_io_port] + separator: ; + regex: true;(.*) + action: keep + # currently KubeDB supported databases uses only "http" scheme to export metrics. so, drop any service that uses "https" scheme. + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: drop + regex: https + # only keep the stats services created by KubeDB for monitoring purpose which has "-stats" suffix + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*-stats) + action: keep + # service created by KubeDB will have "app.kubernetes.io/name" and "app.kubernetes.io/instance" annotations. keep only those services that have these annotations. + - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name] + separator: ; + regex: (.*) + action: keep + # read the metric path from "prometheus.io/path: " annotation + - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + # read the port from "prometheus.io/port: " annotation and update scraping address accordingly + - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + # add service namespace as label to the scraped metrics + - source_labels: [__meta_kubernetes_namespace] + separator: ; + regex: (.*) + target_label: namespace + replacement: $1 + action: replace + # add service name as a label to the scraped metrics + - source_labels: [__meta_kubernetes_service_name] + separator: ; + regex: (.*) + target_label: service + replacement: $1 + action: replace + # add stats service's labels to the scraped metrics + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) +``` + +Let's create above `ConfigMap`, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/monitoring/builtin-prometheus/prom-config.yaml +configmap/prometheus-config created +``` + +**Create RBAC:** + +If you are using an RBAC enabled cluster, you have to give necessary RBAC permissions for Prometheus. Let's create necessary RBAC stuffs for Prometheus, + +```bash +$ kubectl apply -f https://github.com/appscode/third-party-tools/raw/master/monitoring/prometheus/builtin/artifacts/rbac.yaml +clusterrole.rbac.authorization.k8s.io/prometheus created +serviceaccount/prometheus created +clusterrolebinding.rbac.authorization.k8s.io/prometheus created +``` + +>YAML for the RBAC resources created above can be found [here](https://github.com/appscode/third-party-tools/blob/master/monitoring/prometheus/builtin/artifacts/rbac.yaml). + +**Deploy Prometheus:** + +Now, we are ready to deploy Prometheus server. We are going to use following [deployment](https://github.com/appscode/third-party-tools/blob/master/monitoring/prometheus/builtin/artifacts/deployment.yaml) to deploy Prometheus server. + +Let's deploy the Prometheus server. + +```bash +$ kubectl apply -f https://github.com/appscode/third-party-tools/raw/master/monitoring/prometheus/builtin/artifacts/deployment.yaml +deployment.apps/prometheus created +``` + +### Verify Monitoring Metrics + +Prometheus server is listening to port `9090`. We are going to use [port forwarding](https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/) to access Prometheus dashboard. + +At first, let's check if the Prometheus pod is in `Running` state. + +```bash +$ kubectl get pod -n monitoring -l=app=prometheus +NAME READY STATUS RESTARTS AGE +prometheus-7bd56c6865-8dlpv 1/1 Running 0 28s +``` + +Now, run following command on a separate terminal to forward 9090 port of `prometheus-7bd56c6865-8dlpv` pod, + +```bash +$ kubectl port-forward -n monitoring prometheus-7bd56c6865-8dlpv 9090 +Forwarding from 127.0.0.1:9090 -> 9090 +Forwarding from [::1]:9090 -> 9090 +``` + +Now, we can access the dashboard at `localhost:9090`. Open [http://localhost:9090](http://localhost:9090) in your browser. You should see the endpoint of `druid-with-monitoring-stats` service as one of the targets. + +

+  Prometheus Target +

+ +Check the labels marked with red rectangle. These labels confirm that the metrics are coming from `Druid` cluster `druid-with-monitoring` through stats service `druid-with-monitoring-stats`. + +Now, you can view the collected metrics and create a graph from homepage of this Prometheus dashboard. You can also use this Prometheus server as data source for [Grafana](https://grafana.com/) and create beautiful dashboard with collected metrics. + +## Cleaning up + +To cleanup the Kubernetes resources created by this tutorial, run following commands + +```bash +kubectl delete -n demo druid/druid-with-monitoring + +kubectl delete -n monitoring deployment.apps/prometheus + +kubectl delete -n monitoring clusterrole.rbac.authorization.k8s.io/prometheus +kubectl delete -n monitoring serviceaccount/prometheus +kubectl delete -n monitoring clusterrolebinding.rbac.authorization.k8s.io/prometheus + +kubectl delete ns demo +kubectl delete ns monitoring +``` + +## Next Steps + +- Learn how to configure [Druid Topology](/docs/guides/druid/clustering/topology-cluster/index.md). +- Monitor your Druid database with KubeDB using [`out-of-the-box` Prometheus operator](/docs/guides/druid/monitoring/using-prometheus-operator.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/druid/monitoring/using-prometheus-operator.md b/docs/guides/druid/monitoring/using-prometheus-operator.md new file mode 100644 index 0000000000..d569b0230d --- /dev/null +++ b/docs/guides/druid/monitoring/using-prometheus-operator.md @@ -0,0 +1,344 @@ +--- +title: Monitor Druid using Prometheus Operator +menu: + docs_{{ .version }}: + identifier: guides-druid-monitoring-operator-monitoring + name: Prometheus Operator + parent: guides-druid-monitoring + weight: 15 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Monitoring Druid Using Prometheus operator + +[Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) provides simple and Kubernetes native way to deploy and configure Prometheus server. This tutorial will show you how to use Prometheus operator to monitor Druid database deployed with KubeDB. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one locally by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- To learn how Prometheus monitoring works with KubeDB in general, please visit [here](/docs/guides/druid/monitoring/overview.md). + +- We need a [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) instance running. If you don't already have a running instance, you can deploy one using this helm chart [here](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack). + +- To keep Prometheus resources isolated, we are going to use a separate namespace called `monitoring` to deploy the prometheus operator helm chart. Alternatively, you can use `--create-namespace` flag while deploying prometheus. We are going to deploy database in `demo` namespace. + + ```bash + $ kubectl create ns monitoring + namespace/monitoring created + + $ kubectl create ns demo + namespace/demo created + ``` + + + +> Note: YAML files used in this tutorial are stored in [docs/examples/druid](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/druid) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). + +## Find out required labels for ServiceMonitor + +We need to know the labels used to select `ServiceMonitor` by a `Prometheus` crd. We are going to provide these labels in `spec.monitor.prometheus.serviceMonitor.labels` field of Druid crd so that KubeDB creates `ServiceMonitor` object accordingly. + +At first, let's find out the available Prometheus server in our cluster. + +```bash +$ kubectl get prometheus --all-namespaces +NAMESPACE NAME VERSION DESIRED READY RECONCILED AVAILABLE AGE +monitoring prometheus-kube-prometheus-prometheus v2.42.0 1 1 True True 2d23h +``` + +> If you don't have any Prometheus server running in your cluster, deploy one following the guide specified in **Before You Begin** section. + +Now, let's view the YAML of the available Prometheus server `prometheus` in `monitoring` namespace. + +```bash +$ kubectl get prometheus -n monitoring prometheus-kube-prometheus-prometheus -o yaml +apiVersion: monitoring.coreos.com/v1 +kind: Prometheus +metadata: + annotations: + meta.helm.sh/release-name: prometheus + meta.helm.sh/release-namespace: monitoring + creationTimestamp: "2023-03-27T07:56:04Z" + generation: 1 + labels: + app: kube-prometheus-stack-prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: kube-prometheus-stack + app.kubernetes.io/version: 45.7.1 + chart: kube-prometheus-stack-45.7.1 + heritage: Helm + release: prometheus + name: prometheus-kube-prometheus-prometheus + namespace: monitoring + resourceVersion: "638797" + uid: 0d1e7b8a-44ae-4794-ab45-95a5d7ae7f91 +spec: + alerting: + alertmanagers: + - apiVersion: v2 + name: prometheus-kube-prometheus-alertmanager + namespace: monitoring + pathPrefix: / + port: http-web + enableAdminAPI: false + evaluationInterval: 30s + externalUrl: http://prometheus-kube-prometheus-prometheus.monitoring:9090 + hostNetwork: false + image: quay.io/prometheus/prometheus:v2.42.0 + listenLocal: false + logFormat: logfmt + logLevel: info + paused: false + podMonitorNamespaceSelector: {} + podMonitorSelector: + matchLabels: + release: prometheus + portName: http-web + probeNamespaceSelector: {} + probeSelector: + matchLabels: + release: prometheus + replicas: 1 + retention: 10d + routePrefix: / + ruleNamespaceSelector: {} + ruleSelector: + matchLabels: + release: prometheus + scrapeInterval: 30s + securityContext: + fsGroup: 2000 + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + serviceAccountName: prometheus-kube-prometheus-prometheus + serviceMonitorNamespaceSelector: {} + serviceMonitorSelector: + matchLabels: + release: prometheus + shards: 1 + version: v2.42.0 + walCompression: true +status: + availableReplicas: 1 + conditions: + - lastTransitionTime: "2023-03-27T07:56:23Z" + observedGeneration: 1 + status: "True" + type: Available + - lastTransitionTime: "2023-03-30T03:39:18Z" + observedGeneration: 1 + status: "True" + type: Reconciled + paused: false + replicas: 1 + shardStatuses: + - availableReplicas: 1 + replicas: 1 + shardID: "0" + unavailableReplicas: 0 + updatedReplicas: 1 + unavailableReplicas: 0 + updatedReplicas: 1 +``` + +Notice the `spec.serviceMonitorSelector` section. Here, `release: prometheus` label is used to select `ServiceMonitor` crd. So, we are going to use this label in `spec.monitor.prometheus.serviceMonitor.labels` field of Druid crd. + +## Deploy Druid with Monitoring Enabled + +At first, let's deploy a Druid database with monitoring enabled. Below is the Druid object that we are going to create. + +```yaml +apiVersion: kubedb.com/v1alpha2 +kind: Druid +metadata: + name: druid-with-monitoring + namespace: demo +spec: + version: 28.0.1 + deepStorage: + type: s3 + configSecret: + name: deep-storage-config + topology: + routers: + replicas: 1 + monitor: + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + interval: 10s + deletionPolicy: WipeOut +``` + +Here, + +- `monitor.agent: prometheus.io/operator` indicates that we are going to monitor this server using Prometheus operator. +- `monitor.prometheus.serviceMonitor.labels` specifies that KubeDB should create `ServiceMonitor` with these labels. +- `monitor.prometheus.interval` indicates that the Prometheus server should scrape metrics from this database with 10 seconds interval. + +Let's create the druid object that we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/druid/monitoring/druid-with-monirtoring.yaml +druids.kubedb.com/druid-with-monitoring created +``` + +Now, wait for the database to go into `Running` state. + +```bash +$ kubectl get dr -n demo druid +NAME TYPE VERSION STATUS AGE +druid-with-monitoring kubedb.com/v1alpha2 3.6.1 Ready 2m24s +``` + +KubeDB will create a separate stats service with name `{Druid crd name}-stats` for monitoring purpose. + +```bash +$ kubectl get svc -n demo --selector="app.kubernetes.io/instance=druid-with-monitoring" +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +druid-with-monitoring-brokers ClusterIP 10.96.28.252 8082/TCP 2m13s +druid-with-monitoring-coordinators ClusterIP 10.96.52.186 8081/TCP 2m13s +druid-with-monitoring-pods ClusterIP None 8081/TCP,8090/TCP,8083/TCP,8091/TCP,8082/TCP,8888/TCP 2m13s +druid-with-monitoring-routers ClusterIP 10.96.134.202 8888/TCP 2m13s +druid-with-monitoring-stats ClusterIP 10.96.222.96 56790/TCP 2m13s +``` + +Here, `druid-with-monitoring-stats` service has been created for monitoring purpose. + +Let's describe this stats service. + +```bash +$ kubectl describe svc -n demo druid-with-monitoring-stats +Name: druid-with-monitoring-stats +Namespace: demo +Labels: app.kubernetes.io/component=database + app.kubernetes.io/instance=druid-with-monitoring + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=druids.kubedb.com + kubedb.com/role=stats +Annotations: monitoring.appscode.com/agent: prometheus.io/operator +Selector: app.kubernetes.io/instance=druid-with-monitoring,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=druids.kubedb.com +Type: ClusterIP +IP Family Policy: SingleStack +IP Families: IPv4 +IP: 10.96.235.251 +IPs: 10.96.235.251 +Port: metrics 9091/TCP +TargetPort: metrics/TCP +Endpoints: 10.244.0.117:56790,10.244.0.119:56790,10.244.0.121:56790 +Session Affinity: None +Events: +``` + +Notice the `Labels` and `Port` fields. `ServiceMonitor` will use this information to target its endpoints. + +KubeDB will also create a `ServiceMonitor` crd in `demo` namespace that select the endpoints of `druid-with-monitoring-stats` service. Verify that the `ServiceMonitor` crd has been created. + +```bash +$ kubectl get servicemonitor -n demo +NAME AGE +druid-with-monitoring-stats 4m49s +``` + +Let's verify that the `ServiceMonitor` has the label that we had specified in `spec.monitor` section of Druid crd. + +```bash$ kubectl get servicemonitor -n demo druid-with-monitoring-stats -o yaml +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + creationTimestamp: "2023-03-30T07:59:49Z" + generation: 1 + labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: druid-with-monitoring + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: druids.kubedb.com + release: prometheus + name: druid-with-monitoring-stats + namespace: demo + ownerReferences: + - apiVersion: v1 + blockOwnerDeletion: true + controller: true + kind: Service + name: druid-with-monitoring-stats + uid: 4a95fc65-fe2c-4d9c-afdd-aa748642d6bc + resourceVersion: "668351" + uid: de76712d-4f51-4bab-a625-73966f4bd9f7 +spec: + endpoints: + - bearerTokenSecret: + key: "" + honorLabels: true + interval: 10s + path: /metrics + port: metrics + namespaceSelector: + matchNames: + - demo + selector: + matchLabels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: druid-with-monitoring + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: druids.kubedb.com + kubedb.com/role: stats +``` + +Notice that the `ServiceMonitor` has label `release: prometheus` that we had specified in Druid crd. + +Also notice that the `ServiceMonitor` has selector which match the labels we have seen in the `druid-with-monitoring-stats` service. It also, target the `metrics` port that we have seen in the stats service. + +## Verify Monitoring Metrics + +At first, let's find out the respective Prometheus pod for `prometheus` Prometheus server. + +```bash +$ kubectl get pod -n monitoring -l=app.kubernetes.io/name=prometheus +NAME READY STATUS RESTARTS AGE +prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 8 (4h27m ago) 3d +``` + +Prometheus server is listening to port `9090` of `prometheus-prometheus-kube-prometheus-prometheus-0` pod. We are going to use [port forwarding](https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/) to access Prometheus dashboard. + +Run following command on a separate terminal to forward the port 9090 of `prometheus-kube-prometheus-prometheus` service which is pointing to the prometheus pod, + +```bash +$ kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090 +Forwarding from 127.0.0.1:9090 -> 9090 +Forwarding from [::1]:9090 -> 9090 +``` + +Now, we can access the dashboard at `localhost:9090`. Open [http://localhost:9090](http://localhost:9090) in your browser. You should see `metrics` endpoint of `druid-with-monitoring-stats` service as one of the targets. + +

+  Prometheus Target +

+ +Check the `endpoint` and `service` labels. It verifies that the target is our expected database. Now, you can view the collected metrics and create a graph from homepage of this Prometheus dashboard. You can also use this Prometheus server as data source for [Grafana](https://grafana.com/) and create a beautiful dashboard with collected metrics. + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run following commands + +```bash +kubectl delete -n demo dr/druid-with-monitoring +kubectl delete ns demo +``` + +## Next Steps + +- Learn how to use KubeDB to run a Apache Druid cluster [here](/docs/guides/druid/README.md). +- Deploy [dedicated topology cluster](/docs/guides/druid/clustering/topology-cluster/index.md) for Apache Druid +- Deploy [combined cluster](/docs/guides/druid/clustering/combined-cluster/index.md) for Apache Druid +- Detail concepts of [DruidVersion object](/docs/guides/druid/concepts/druidversion.md). +- Learn to use KubeDB managed Druid objects using [CLIs](/docs/guides/druid/cli/cli.md). +- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). \ No newline at end of file diff --git a/docs/guides/druid/monitoring/yamls/deep-storage-config.yaml b/docs/guides/druid/monitoring/yamls/deep-storage-config.yaml new file mode 100644 index 0000000000..3612595828 --- /dev/null +++ b/docs/guides/druid/monitoring/yamls/deep-storage-config.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Secret +metadata: + name: deep-storage-config + namespace: demo +stringData: + druid.storage.type: "s3" + druid.storage.bucket: "druid" + druid.storage.baseKey: "druid/segments" + druid.s3.accessKey: "minio" + druid.s3.secretKey: "minio123" + druid.s3.protocol: "http" + druid.s3.enablePathStyleAccess: "true" + druid.s3.endpoint.signingRegion: "us-east-1" + druid.s3.endpoint.url: "http://myminio-hl.demo.svc.cluster.local:9000/" + diff --git a/docs/guides/druid/monitoring/yamls/druid-monitoring-builtin.yaml b/docs/guides/druid/monitoring/yamls/druid-monitoring-builtin.yaml new file mode 100644 index 0000000000..4962c3c536 --- /dev/null +++ b/docs/guides/druid/monitoring/yamls/druid-monitoring-builtin.yaml @@ -0,0 +1,24 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Druid +metadata: + name: druid-with-monitoring + namespace: demo +spec: + version: 28.0.1 + deepStorage: + type: s3 + configSecret: + name: deep-storage-config + topology: + routers: + replicas: 1 + monitor: + agent: prometheus.io/builtin + prometheus: + exporter: + port: 56790 + serviceMonitor: + labels: + release: prometheus + interval: 10s + deletionPolicy: WipeOut diff --git a/docs/guides/druid/monitoring/yamls/druid-with-monitoring.yaml b/docs/guides/druid/monitoring/yamls/druid-with-monitoring.yaml new file mode 100644 index 0000000000..aa91054f8f --- /dev/null +++ b/docs/guides/druid/monitoring/yamls/druid-with-monitoring.yaml @@ -0,0 +1,23 @@ +apiVersion: kubedb.com/v1alpha2 +kind: Druid +metadata: + name: druid-with-monitoring + namespace: demo +spec: + version: 28.0.1 + deepStorage: + type: s3 + configSecret: + name: deep-storage-config + topology: + routers: + replicas: 1 + monitor: + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + interval: 10s + deletionPolicy: WipeOut + diff --git a/docs/guides/druid/quickstart/overview/index.md b/docs/guides/druid/quickstart/guide/index.md similarity index 99% rename from docs/guides/druid/quickstart/overview/index.md rename to docs/guides/druid/quickstart/guide/index.md index a1b8fe7ff5..12dc684fe7 100644 --- a/docs/guides/druid/quickstart/overview/index.md +++ b/docs/guides/druid/quickstart/guide/index.md @@ -2,8 +2,8 @@ title: Druid Quickstart menu: docs_{{ .version }}: - identifier: guides-druid-quickstart-overview - name: Overview + identifier: guides-druid-quickstart-guide + name: Guide parent: guides-druid-quickstart weight: 10 menu_name: docs_{{ .version }} @@ -39,7 +39,7 @@ demo Active 9s > Note: YAML files used in this tutorial are stored in [guides/druid/quickstart/overview/yamls](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/guides/druid/quickstart/overview/yamls) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). -> We have designed this tutorial to demonstrate a production setup of KubeDB managed Apache Druid. If you just want to try out KubeDB, you can bypass some safety features following the tips [here](/docs/guides/druid/quickstart/overview/index.md#tips-for-testing). +> We have designed this tutorial to demonstrate a production setup of KubeDB managed Apache Druid. If you just want to try out KubeDB, you can bypass some safety features following the tips [here](/docs/guides/druid/quickstart/guide/index.md#tips-for-testing). ## Find Available StorageClass @@ -194,7 +194,7 @@ Here, Let's create the Druid CR that is shown above: ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/druid/quickstart/druid-with-config.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/druid/quickstart/druid-with-monitoring.yaml druid.kubedb.com/druid-quickstart created ``` diff --git a/docs/guides/druid/reconfigure-tls/overview.md b/docs/guides/druid/reconfigure-tls/overview.md index 5b55da583f..5f487d2707 100644 --- a/docs/guides/druid/reconfigure-tls/overview.md +++ b/docs/guides/druid/reconfigure-tls/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS/SSL menu: docs_{{ .version }}: - identifier: guides-druid-reconfigure-tls-overview + identifier: guides-druid-reconfigure-tls-guide name: Overview parent: guides-druid-reconfigure-tls weight: 10 diff --git a/docs/guides/druid/scaling/horizontal-scaling/overview.md b/docs/guides/druid/scaling/horizontal-scaling/overview.md index 7158e2432a..9903383068 100644 --- a/docs/guides/druid/scaling/horizontal-scaling/overview.md +++ b/docs/guides/druid/scaling/horizontal-scaling/overview.md @@ -2,7 +2,7 @@ title: Druid Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: guides-druid-scaling-horizontal-scaling-overview + identifier: guides-druid-scaling-horizontal-scaling-guide name: Overview parent: guides-druid-scaling-horizontal-scaling weight: 10 diff --git a/docs/guides/druid/scaling/vertical-scaling/overview.md b/docs/guides/druid/scaling/vertical-scaling/overview.md index 2ddd690601..47a74c06cd 100644 --- a/docs/guides/druid/scaling/vertical-scaling/overview.md +++ b/docs/guides/druid/scaling/vertical-scaling/overview.md @@ -2,7 +2,7 @@ title: Druid Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: guides-druid-scaling-vertical-scaling-overview + identifier: guides-druid-scaling-vertical-scaling-guide name: Overview parent: guides-druid-scaling-vertical-scaling weight: 10 diff --git a/docs/guides/druid/tls/overview.md b/docs/guides/druid/tls/overview.md index 2022e51955..5feee4e378 100644 --- a/docs/guides/druid/tls/overview.md +++ b/docs/guides/druid/tls/overview.md @@ -2,7 +2,7 @@ title: Druid TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: guides-druid-tls-overview + identifier: guides-druid-tls-guide name: Overview parent: guides-druid-tls weight: 10 diff --git a/docs/guides/druid/update-version/overview.md b/docs/guides/druid/update-version/overview.md index b1c2f21ef5..24d85be6b8 100644 --- a/docs/guides/druid/update-version/overview.md +++ b/docs/guides/druid/update-version/overview.md @@ -2,7 +2,7 @@ title: Update Version Overview menu: docs_{{ .version }}: - identifier: guides-druid-update-version-overview + identifier: guides-druid-update-version-guide name: Overview parent: guides-druid-update-version weight: 10 diff --git a/docs/guides/druid/volume-expansion/overview.md b/docs/guides/druid/volume-expansion/overview.md index a9290612ff..6411df0e33 100644 --- a/docs/guides/druid/volume-expansion/overview.md +++ b/docs/guides/druid/volume-expansion/overview.md @@ -2,7 +2,7 @@ title: Druid Volume Expansion Overview menu: docs_{{ .version }}: - identifier: guides-druid-volume-expansion-overview + identifier: guides-druid-volume-expansion-guide name: Overview parent: guides-druid-volume-expansion weight: 10 diff --git a/docs/guides/elasticsearch/autoscaler/compute/overview/index.md b/docs/guides/elasticsearch/autoscaler/compute/overview/index.md index 15f68b677d..8e74d0b05d 100644 --- a/docs/guides/elasticsearch/autoscaler/compute/overview/index.md +++ b/docs/guides/elasticsearch/autoscaler/compute/overview/index.md @@ -2,7 +2,7 @@ title: Elasticsearch Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: es-auto-scaling-overview + identifier: es-auto-scaling-guide name: Overview parent: es-compute-auto-scaling weight: 5 diff --git a/docs/guides/elasticsearch/autoscaler/storage/overview/index.md b/docs/guides/elasticsearch/autoscaler/storage/overview/index.md index 8127fcea67..03ae453a5b 100644 --- a/docs/guides/elasticsearch/autoscaler/storage/overview/index.md +++ b/docs/guides/elasticsearch/autoscaler/storage/overview/index.md @@ -2,7 +2,7 @@ title: Elasticsearch Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: es-storage-auto-scaling-overview + identifier: es-storage-auto-scaling-guide name: Overview parent: es-storage-auto-scaling weight: 5 diff --git a/docs/guides/elasticsearch/backup/kubestash/overview/index.md b/docs/guides/elasticsearch/backup/kubestash/overview/index.md index 3a0a0d1c8d..f00206d078 100644 --- a/docs/guides/elasticsearch/backup/kubestash/overview/index.md +++ b/docs/guides/elasticsearch/backup/kubestash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore Elasticsearch Using KubeStash menu: docs_{{ .version }}: - identifier: guides-es-backup-overview-stashv2 + identifier: guides-es-backup-guide-stashv2 name: Overview parent: guides-es-backup-stashv2 weight: 10 diff --git a/docs/guides/elasticsearch/backup/stash/overview/index.md b/docs/guides/elasticsearch/backup/stash/overview/index.md index 7e7740c81d..244f431c78 100644 --- a/docs/guides/elasticsearch/backup/stash/overview/index.md +++ b/docs/guides/elasticsearch/backup/stash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore Elasticsearch Using Stash menu: docs_{{ .version }}: - identifier: guides-es-backup-overview + identifier: guides-es-backup-guide name: Overview parent: guides-es-backup-stashv1 weight: 10 diff --git a/docs/guides/elasticsearch/configuration/overview/index.md b/docs/guides/elasticsearch/configuration/overview/index.md index 39edc93ff1..55211a6365 100644 --- a/docs/guides/elasticsearch/configuration/overview/index.md +++ b/docs/guides/elasticsearch/configuration/overview/index.md @@ -2,7 +2,7 @@ title: Run Elasticsearch with Custom Configuration menu: docs_{{ .version }}: - identifier: es-overview-configuration + identifier: es-guide-configuration name: Overview parent: es-configuration weight: 10 diff --git a/docs/guides/elasticsearch/monitoring/overview.md b/docs/guides/elasticsearch/monitoring/overview.md index c304dffec8..ffb3513b55 100644 --- a/docs/guides/elasticsearch/monitoring/overview.md +++ b/docs/guides/elasticsearch/monitoring/overview.md @@ -3,7 +3,7 @@ title: Elasticsearch Monitoring Overview description: Elasticsearch Monitoring Overview menu: docs_{{ .version }}: - identifier: es-monitoring-overview + identifier: es-monitoring-guide name: Overview parent: es-monitoring-elasticsearch weight: 10 diff --git a/docs/guides/elasticsearch/plugins-backup/overview/index.md b/docs/guides/elasticsearch/plugins-backup/overview/index.md index f4e0907a85..c784650b92 100644 --- a/docs/guides/elasticsearch/plugins-backup/overview/index.md +++ b/docs/guides/elasticsearch/plugins-backup/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore Elasticsearch Using Snapshot Plugins menu: docs_{{ .version }}: - identifier: guides-es-plugins-backup-overview + identifier: guides-es-plugins-backup-guide name: Overview parent: guides-es-plugins-backup weight: 10 diff --git a/docs/guides/elasticsearch/quickstart/overview/_index.md b/docs/guides/elasticsearch/quickstart/overview/_index.md index 29876db1fb..cb8ce9f9d6 100755 --- a/docs/guides/elasticsearch/quickstart/overview/_index.md +++ b/docs/guides/elasticsearch/quickstart/overview/_index.md @@ -2,7 +2,7 @@ title: Elasticsearch Overview menu: docs_{{ .version }}: - identifier: es-overview-elasticsearch + identifier: es-guide-elasticsearch name: Overview parent: es-quickstart-elasticsearch weight: 10 diff --git a/docs/guides/elasticsearch/quickstart/overview/elasticsearch/index.md b/docs/guides/elasticsearch/quickstart/overview/elasticsearch/index.md index 755ade6dfd..f218f3e188 100644 --- a/docs/guides/elasticsearch/quickstart/overview/elasticsearch/index.md +++ b/docs/guides/elasticsearch/quickstart/overview/elasticsearch/index.md @@ -2,9 +2,9 @@ title: Elasticsearch Quickstart menu: docs_{{ .version }}: - identifier: es-elasticsearch-overview-elasticsearch + identifier: es-elasticsearch-guide-elasticsearch name: Elasticsearch - parent: es-overview-elasticsearch + parent: es-guide-elasticsearch weight: 10 menu_name: docs_{{ .version }} section_menu_id: guides @@ -165,7 +165,7 @@ spec: ``` ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/elasticsearch/quickstart/overview/elasticsearch/yamls/elasticsearch-v1.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/elasticsearch/quickstart/guide/elasticsearch/yamls/elasticsearch-v1.yaml elasticsearch.kubedb.com/es-quickstart created ``` @@ -607,7 +607,7 @@ Say, the Elasticsearch CR was deleted with `spec.deletionPolicy` to `Halt` and y You can do it by simpily re-deploying the original Elasticsearch object: ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/elasticsearch/quickstart/overview/elasticsearch/yamls/elasticsearch.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/elasticsearch/quickstart/guide/elasticsearch/yamls/elasticsearch.yaml elasticsearch.kubedb.com/es-quickstart created ``` diff --git a/docs/guides/elasticsearch/quickstart/overview/opensearch/index.md b/docs/guides/elasticsearch/quickstart/overview/opensearch/index.md index 100e49a854..72daf7b639 100644 --- a/docs/guides/elasticsearch/quickstart/overview/opensearch/index.md +++ b/docs/guides/elasticsearch/quickstart/overview/opensearch/index.md @@ -2,9 +2,9 @@ title: OpenSearch Quickstart menu: docs_{{ .version }}: - identifier: es-opensearch-overview-elasticsearch + identifier: es-opensearch-guide-elasticsearch name: OpenSearch - parent: es-overview-elasticsearch + parent: es-guide-elasticsearch weight: 10 menu_name: docs_{{ .version }} section_menu_id: guides @@ -160,7 +160,7 @@ spec: ``` ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/elasticsearch/quickstart/overview/opensearch/yamls/opensearch-v1.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/elasticsearch/quickstart/guide/opensearch/yamls/opensearch-v1.yaml elasticsearch.kubedb.com/es-quickstart created ``` diff --git a/docs/guides/kafka/autoscaler/compute/overview.md b/docs/guides/kafka/autoscaler/compute/overview.md index d98826da46..294e112b5d 100644 --- a/docs/guides/kafka/autoscaler/compute/overview.md +++ b/docs/guides/kafka/autoscaler/compute/overview.md @@ -2,7 +2,7 @@ title: Kafka Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: kf-auto-scaling-overview + identifier: kf-auto-scaling-guide name: Overview parent: kf-compute-auto-scaling weight: 10 diff --git a/docs/guides/kafka/autoscaler/storage/overview.md b/docs/guides/kafka/autoscaler/storage/overview.md index b1bf56d051..dc0c1d4eb4 100644 --- a/docs/guides/kafka/autoscaler/storage/overview.md +++ b/docs/guides/kafka/autoscaler/storage/overview.md @@ -2,7 +2,7 @@ title: Kafka Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: kf-storage-auto-scaling-overview + identifier: kf-storage-auto-scaling-guide name: Overview parent: kf-storage-auto-scaling weight: 10 diff --git a/docs/guides/kafka/migration/overview.md b/docs/guides/kafka/migration/overview.md index a5399830da..adbcc5b0d0 100644 --- a/docs/guides/kafka/migration/overview.md +++ b/docs/guides/kafka/migration/overview.md @@ -3,7 +3,7 @@ title: Kafka Migration Overview description: Kafka Migration Overview menu: docs_{{ .version }}: - identifier: kf-migration-overview + identifier: kf-migration-guide name: Overview parent: kf-migration-kafka weight: 5 diff --git a/docs/guides/kafka/monitoring/overview.md b/docs/guides/kafka/monitoring/overview.md index 2dba113b7d..09092018c2 100644 --- a/docs/guides/kafka/monitoring/overview.md +++ b/docs/guides/kafka/monitoring/overview.md @@ -3,7 +3,7 @@ title: Kafka Monitoring Overview description: Kafka Monitoring Overview menu: docs_{{ .version }}: - identifier: kf-monitoring-overview + identifier: kf-monitoring-guide name: Overview parent: kf-monitoring-kafka weight: 10 diff --git a/docs/guides/kafka/reconfigure-tls/overview.md b/docs/guides/kafka/reconfigure-tls/overview.md index f309b45d3a..5da7cce680 100644 --- a/docs/guides/kafka/reconfigure-tls/overview.md +++ b/docs/guides/kafka/reconfigure-tls/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS/SSL menu: docs_{{ .version }}: - identifier: kf-reconfigure-tls-overview + identifier: kf-reconfigure-tls-guide name: Overview parent: kf-reconfigure-tls weight: 10 diff --git a/docs/guides/kafka/reconfigure/overview.md b/docs/guides/kafka/reconfigure/overview.md index dc33f41d20..9066eb9edb 100644 --- a/docs/guides/kafka/reconfigure/overview.md +++ b/docs/guides/kafka/reconfigure/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring Kafka menu: docs_{{ .version }}: - identifier: kf-reconfigure-overview + identifier: kf-reconfigure-guide name: Overview parent: kf-reconfigure weight: 10 diff --git a/docs/guides/kafka/restproxy/overview.md b/docs/guides/kafka/restproxy/overview.md index b80f7ac71c..637b579d9a 100644 --- a/docs/guides/kafka/restproxy/overview.md +++ b/docs/guides/kafka/restproxy/overview.md @@ -2,7 +2,7 @@ title: Rest Proxy Overview menu: docs_{{ .version }}: - identifier: kf-rest-proxy-guides-overview + identifier: kf-rest-proxy-guides-guide name: Overview parent: kf-rest-proxy-guides weight: 10 diff --git a/docs/guides/kafka/scaling/horizontal-scaling/overview.md b/docs/guides/kafka/scaling/horizontal-scaling/overview.md index 2f28bcea59..11d1cc6a15 100644 --- a/docs/guides/kafka/scaling/horizontal-scaling/overview.md +++ b/docs/guides/kafka/scaling/horizontal-scaling/overview.md @@ -2,7 +2,7 @@ title: Kafka Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: kf-horizontal-scaling-overview + identifier: kf-horizontal-scaling-guide name: Overview parent: kf-horizontal-scaling weight: 10 diff --git a/docs/guides/kafka/scaling/vertical-scaling/overview.md b/docs/guides/kafka/scaling/vertical-scaling/overview.md index 2c95d1867f..1caf1ec8bf 100644 --- a/docs/guides/kafka/scaling/vertical-scaling/overview.md +++ b/docs/guides/kafka/scaling/vertical-scaling/overview.md @@ -2,7 +2,7 @@ title: Kafka Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: kf-vertical-scaling-overview + identifier: kf-vertical-scaling-guide name: Overview parent: kf-vertical-scaling weight: 10 diff --git a/docs/guides/kafka/schemaregistry/overview.md b/docs/guides/kafka/schemaregistry/overview.md index 4e6bdb132e..6df292c528 100644 --- a/docs/guides/kafka/schemaregistry/overview.md +++ b/docs/guides/kafka/schemaregistry/overview.md @@ -2,7 +2,7 @@ title: Schema Registry Overview menu: docs_{{ .version }}: - identifier: kf-schema-registry-guides-overview + identifier: kf-schema-registry-guides-guide name: Overview parent: kf-schema-registry-guides weight: 10 diff --git a/docs/guides/kafka/tls/overview.md b/docs/guides/kafka/tls/overview.md index f094edb746..a529adf105 100644 --- a/docs/guides/kafka/tls/overview.md +++ b/docs/guides/kafka/tls/overview.md @@ -2,7 +2,7 @@ title: Kafka TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: kf-tls-overview + identifier: kf-tls-guide name: Overview parent: kf-tls weight: 10 diff --git a/docs/guides/kafka/update-version/overview.md b/docs/guides/kafka/update-version/overview.md index 78d6eb593a..0e9ff23f8c 100644 --- a/docs/guides/kafka/update-version/overview.md +++ b/docs/guides/kafka/update-version/overview.md @@ -2,7 +2,7 @@ title: Update Version Overview menu: docs_{{ .version }}: - identifier: kf-update-version-overview + identifier: kf-update-version-guide name: Overview parent: kf-update-version weight: 10 diff --git a/docs/guides/kafka/volume-expansion/overview.md b/docs/guides/kafka/volume-expansion/overview.md index adb8d485f6..f3fa1e5e42 100644 --- a/docs/guides/kafka/volume-expansion/overview.md +++ b/docs/guides/kafka/volume-expansion/overview.md @@ -2,7 +2,7 @@ title: Kafka Volume Expansion Overview menu: docs_{{ .version }}: - identifier: kf-volume-expansion-overview + identifier: kf-volume-expansion-guide name: Overview parent: kf-volume-expansion weight: 10 diff --git a/docs/guides/mariadb/README.md b/docs/guides/mariadb/README.md index e75c537fef..57a664f411 100644 --- a/docs/guides/mariadb/README.md +++ b/docs/guides/mariadb/README.md @@ -2,7 +2,7 @@ title: MariaDB menu: docs_{{ .version }}: - identifier: guides-mariadb-overview + identifier: guides-mariadb-guide name: MariaDB parent: guides-mariadb weight: 10 diff --git a/docs/guides/mariadb/autoscaler/compute/overview/index.md b/docs/guides/mariadb/autoscaler/compute/overview/index.md index 1fd23cdd7e..a8b83bbd26 100644 --- a/docs/guides/mariadb/autoscaler/compute/overview/index.md +++ b/docs/guides/mariadb/autoscaler/compute/overview/index.md @@ -2,7 +2,7 @@ title: MariaDB Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: guides-mariadb-autoscaling-compute-overview + identifier: guides-mariadb-autoscaling-compute-guide name: Overview parent: guides-mariadb-autoscaling-compute weight: 10 diff --git a/docs/guides/mariadb/autoscaler/storage/overview/index.md b/docs/guides/mariadb/autoscaler/storage/overview/index.md index 42539a2dc9..cf858ed6fe 100644 --- a/docs/guides/mariadb/autoscaler/storage/overview/index.md +++ b/docs/guides/mariadb/autoscaler/storage/overview/index.md @@ -2,7 +2,7 @@ title: MariaDB Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: mguides-mariadb-autoscaling-storage-overview + identifier: mguides-mariadb-autoscaling-storage-guide name: Overview parent: guides-mariadb-autoscaling-storage weight: 10 diff --git a/docs/guides/mariadb/backup/kubestash/overview/index.md b/docs/guides/mariadb/backup/kubestash/overview/index.md index 5c3d4363a0..67c1f68d78 100644 --- a/docs/guides/mariadb/backup/kubestash/overview/index.md +++ b/docs/guides/mariadb/backup/kubestash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore MariaDB Using KubeStash menu: docs_{{ .version }}: - identifier: guides-mariadb-backup-overview-stashv2 + identifier: guides-mariadb-backup-guide-stashv2 name: Overview parent: guides-mariadb-backup-stashv2 weight: 10 diff --git a/docs/guides/mariadb/backup/stash/overview/index.md b/docs/guides/mariadb/backup/stash/overview/index.md index cb53467d9e..9d89f8337e 100644 --- a/docs/guides/mariadb/backup/stash/overview/index.md +++ b/docs/guides/mariadb/backup/stash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore MariaDB Using Stash menu: docs_{{ .version }}: - identifier: guides-mariadb-backup-overview-stashv1 + identifier: guides-mariadb-backup-guide-stashv1 name: Overview parent: guides-mariadb-backup-stashv1 weight: 10 diff --git a/docs/guides/mariadb/clustering/overview/index.md b/docs/guides/mariadb/clustering/overview/index.md index eb00981de6..cd84cd9ad9 100644 --- a/docs/guides/mariadb/clustering/overview/index.md +++ b/docs/guides/mariadb/clustering/overview/index.md @@ -2,7 +2,7 @@ title: MariaDB Galera Cluster Overview menu: docs_{{ .version }}: - identifier: guides-mariadb-clustering-overview + identifier: guides-mariadb-clustering-guide name: MariaDB Galera Cluster Overview parent: guides-mariadb-clustering weight: 10 diff --git a/docs/guides/mariadb/monitoring/overview/index.md b/docs/guides/mariadb/monitoring/overview/index.md index 6b1d82f970..c6a604a4eb 100644 --- a/docs/guides/mariadb/monitoring/overview/index.md +++ b/docs/guides/mariadb/monitoring/overview/index.md @@ -3,7 +3,7 @@ title: MariaDB Monitoring Overview description: MariaDB Monitoring Overview menu: docs_{{ .version }}: - identifier: guides-mariadb-monitoring-overview + identifier: guides-mariadb-monitoring-guide name: Overview parent: guides-mariadb-monitoring weight: 10 diff --git a/docs/guides/mariadb/pitr/overview/index.md b/docs/guides/mariadb/pitr/overview/index.md index 51d8607d65..d8f0e35749 100644 --- a/docs/guides/mariadb/pitr/overview/index.md +++ b/docs/guides/mariadb/pitr/overview/index.md @@ -104,7 +104,7 @@ spec: last: 2 ``` ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/pitr/overview/yamls/retention-policy.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/pitr/guide/yamls/retention-policy.yaml retentionpolicy.storage.kubestash.com/mariadb-retention-policy created ``` @@ -171,9 +171,9 @@ stringData: ``` ```bash - $ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/pitr/overview/yamls/mariadbarchiver.yaml + $ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/pitr/guide/yamls/mariadbarchiver.yaml mariadbarchiver.archiver.kubedb.com/mariadbarchiver-sample created - $ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/pitr/overview/yamls/encryptionSecret.yaml + $ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/pitr/guide/yamls/encryptionSecret.yaml ``` ## Ensure volumeSnapshotClass diff --git a/docs/guides/mariadb/quickstart/overview/index.md b/docs/guides/mariadb/quickstart/overview/index.md index 25167edec5..3a34532570 100644 --- a/docs/guides/mariadb/quickstart/overview/index.md +++ b/docs/guides/mariadb/quickstart/overview/index.md @@ -2,7 +2,7 @@ title: MariaDB Quickstart menu: docs_{{ .version }}: - identifier: guides-mariadb-quickstart-overview + identifier: guides-mariadb-quickstart-guide name: Overview parent: guides-mariadb-quickstart weight: 10 @@ -81,7 +81,7 @@ spec: ``` ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/quickstart/overview/examples/sample-mariadb-v1.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/quickstart/guide/examples/sample-mariadb-v1.yaml mariadb.kubedb.com/sample-mariadb created ``` @@ -105,7 +105,7 @@ spec: ``` ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/quickstart/overview/examples/sample-mariadb-v1alpha2.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/mariadb/quickstart/guide/examples/sample-mariadb-v1alpha2.yaml mariadb.kubedb.com/sample-mariadb created ``` diff --git a/docs/guides/mariadb/reconfigure-tls/overview/index.md b/docs/guides/mariadb/reconfigure-tls/overview/index.md index 5e116126c3..56e6b2ad89 100644 --- a/docs/guides/mariadb/reconfigure-tls/overview/index.md +++ b/docs/guides/mariadb/reconfigure-tls/overview/index.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS of MariaDB Database menu: docs_{{ .version }}: - identifier: guides-mariadb-reconfigure-tls-overview + identifier: guides-mariadb-reconfigure-tls-guide name: Overview parent: guides-mariadb-reconfigure-tls weight: 10 diff --git a/docs/guides/mariadb/reconfigure/overview/index.md b/docs/guides/mariadb/reconfigure/overview/index.md index 368cfcc706..4df58a1735 100644 --- a/docs/guides/mariadb/reconfigure/overview/index.md +++ b/docs/guides/mariadb/reconfigure/overview/index.md @@ -2,7 +2,7 @@ title: Reconfiguring MariaDB menu: docs_{{ .version }}: - identifier: guides-mariadb-reconfigure-overview + identifier: guides-mariadb-reconfigure-guide name: Overview parent: guides-mariadb-reconfigure weight: 10 diff --git a/docs/guides/mariadb/scaling/horizontal-scaling/overview/index.md b/docs/guides/mariadb/scaling/horizontal-scaling/overview/index.md index da80910fcc..61bdcfa2fd 100644 --- a/docs/guides/mariadb/scaling/horizontal-scaling/overview/index.md +++ b/docs/guides/mariadb/scaling/horizontal-scaling/overview/index.md @@ -2,7 +2,7 @@ title: MariaDB Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: guides-mariadb-scaling-horizontal-overview + identifier: guides-mariadb-scaling-horizontal-guide name: Overview parent: guides-mariadb-scaling-horizontal weight: 10 diff --git a/docs/guides/mariadb/scaling/vertical-scaling/overview/index.md b/docs/guides/mariadb/scaling/vertical-scaling/overview/index.md index 83449d15e6..65787b4da6 100644 --- a/docs/guides/mariadb/scaling/vertical-scaling/overview/index.md +++ b/docs/guides/mariadb/scaling/vertical-scaling/overview/index.md @@ -2,7 +2,7 @@ title: MariaDB Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: guides-mariadb-scaling-vertical-overview + identifier: guides-mariadb-scaling-vertical-guide name: Overview parent: guides-mariadb-scaling-vertical weight: 10 diff --git a/docs/guides/mariadb/tls/overview/index.md b/docs/guides/mariadb/tls/overview/index.md index a4359683a2..6802aa94b3 100644 --- a/docs/guides/mariadb/tls/overview/index.md +++ b/docs/guides/mariadb/tls/overview/index.md @@ -2,7 +2,7 @@ title: MariaDB TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: guides-mariadb-tls-overview + identifier: guides-mariadb-tls-guide name: Overview parent: guides-mariadb-tls weight: 10 diff --git a/docs/guides/mariadb/update-version/overview/index.md b/docs/guides/mariadb/update-version/overview/index.md index 1e286d719c..063e89585b 100644 --- a/docs/guides/mariadb/update-version/overview/index.md +++ b/docs/guides/mariadb/update-version/overview/index.md @@ -2,7 +2,7 @@ title: Updating MariaDB Overview menu: docs_{{ .version }}: - identifier: guides-mariadb-updating-overview + identifier: guides-mariadb-updating-guide name: Overview parent: guides-mariadb-updating weight: 10 diff --git a/docs/guides/mariadb/volume-expansion/overview/index.md b/docs/guides/mariadb/volume-expansion/overview/index.md index 3c5eb5a6d4..25169ddb02 100644 --- a/docs/guides/mariadb/volume-expansion/overview/index.md +++ b/docs/guides/mariadb/volume-expansion/overview/index.md @@ -2,7 +2,7 @@ title: MariaDB Volume Expansion Overview menu: docs_{{ .version }}: - identifier: guides-mariadb-volume-expansion-overview + identifier: guides-mariadb-volume-expansion-guide name: Overview parent: guides-mariadb-volume-expansion weight: 10 diff --git a/docs/guides/memcached/autoscaler/compute/overview.md b/docs/guides/memcached/autoscaler/compute/overview.md index 8e2567be19..0e6b45b18c 100644 --- a/docs/guides/memcached/autoscaler/compute/overview.md +++ b/docs/guides/memcached/autoscaler/compute/overview.md @@ -2,7 +2,7 @@ title: Memcached Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: mc-auto-scaling-overview + identifier: mc-auto-scaling-guide name: Overview parent: compute-auto-scaling weight: 10 diff --git a/docs/guides/memcached/monitoring/overview.md b/docs/guides/memcached/monitoring/overview.md index 5fd48a2c78..506f032033 100644 --- a/docs/guides/memcached/monitoring/overview.md +++ b/docs/guides/memcached/monitoring/overview.md @@ -3,7 +3,7 @@ title: Memcached Monitoring Overview description: Memcached Monitoring Overview menu: docs_{{ .version }}: - identifier: mc-monitoring-overview + identifier: mc-monitoring-guide name: Overview parent: mc-monitoring-memcached weight: 10 diff --git a/docs/guides/memcached/reconfigure/overview.md b/docs/guides/memcached/reconfigure/overview.md index 0fa2a949c1..bc2709219d 100644 --- a/docs/guides/memcached/reconfigure/overview.md +++ b/docs/guides/memcached/reconfigure/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring Memcached menu: docs_{{ .version }}: - identifier: mc-reconfigure-overview + identifier: mc-reconfigure-guide name: Overview parent: reconfigure weight: 10 diff --git a/docs/guides/memcached/scaling/horizontal-scaling/overview.md b/docs/guides/memcached/scaling/horizontal-scaling/overview.md index d369bb6595..604543cb92 100644 --- a/docs/guides/memcached/scaling/horizontal-scaling/overview.md +++ b/docs/guides/memcached/scaling/horizontal-scaling/overview.md @@ -2,7 +2,7 @@ title: Memcached Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: mc-horizontal-scaling-overview + identifier: mc-horizontal-scaling-guide name: Overview parent: horizontal-scaling weight: 10 diff --git a/docs/guides/memcached/scaling/vertical-scaling/overview.md b/docs/guides/memcached/scaling/vertical-scaling/overview.md index 9f963896cb..a4659f1935 100644 --- a/docs/guides/memcached/scaling/vertical-scaling/overview.md +++ b/docs/guides/memcached/scaling/vertical-scaling/overview.md @@ -2,7 +2,7 @@ title: Memcached Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: mc-vertical-scaling-overview + identifier: mc-vertical-scaling-guide name: Overview parent: vertical-scaling weight: 10 diff --git a/docs/guides/memcached/update-version/overview.md b/docs/guides/memcached/update-version/overview.md index 9807b04cb2..a7394caf7d 100644 --- a/docs/guides/memcached/update-version/overview.md +++ b/docs/guides/memcached/update-version/overview.md @@ -2,7 +2,7 @@ title: Updating Memcached Version Overview menu: docs_{{ .version }}: - identifier: mc-update-version-overview + identifier: mc-update-version-guide name: Overview parent: update-version weight: 10 diff --git a/docs/guides/mongodb/autoscaler/compute/overview.md b/docs/guides/mongodb/autoscaler/compute/overview.md index bd7c2909b2..672d882d79 100644 --- a/docs/guides/mongodb/autoscaler/compute/overview.md +++ b/docs/guides/mongodb/autoscaler/compute/overview.md @@ -2,7 +2,7 @@ title: MongoDB Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: mg-auto-scaling-overview + identifier: mg-auto-scaling-guide name: Overview parent: mg-compute-auto-scaling weight: 10 diff --git a/docs/guides/mongodb/autoscaler/storage/overview.md b/docs/guides/mongodb/autoscaler/storage/overview.md index e51114c77b..8657f2aae6 100644 --- a/docs/guides/mongodb/autoscaler/storage/overview.md +++ b/docs/guides/mongodb/autoscaler/storage/overview.md @@ -2,7 +2,7 @@ title: MongoDB Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: mg-storage-auto-scaling-overview + identifier: mg-storage-auto-scaling-guide name: Overview parent: mg-storage-auto-scaling weight: 10 diff --git a/docs/guides/mongodb/backup/kubestash/overview/index.md b/docs/guides/mongodb/backup/kubestash/overview/index.md index a6b3402eb0..89c97af3c5 100644 --- a/docs/guides/mongodb/backup/kubestash/overview/index.md +++ b/docs/guides/mongodb/backup/kubestash/overview/index.md @@ -2,7 +2,7 @@ title: MongoDB Backup & Restore Overview | KubeStash menu: docs_{{ .version }}: - identifier: guides-mongodb-backup-kubestash-overview + identifier: guides-mongodb-backup-kubestash-guide name: Overview parent: guides-mongodb-backup-stashv2 weight: 10 diff --git a/docs/guides/mongodb/backup/stash/overview/index.md b/docs/guides/mongodb/backup/stash/overview/index.md index 2d260ae3b8..8a67e9e2b8 100644 --- a/docs/guides/mongodb/backup/stash/overview/index.md +++ b/docs/guides/mongodb/backup/stash/overview/index.md @@ -2,7 +2,7 @@ title: MongoDB Backup & Restore Overview menu: docs_{{ .version }}: - identifier: guides-mongodb-backup-overview + identifier: guides-mongodb-backup-guide name: Overview parent: guides-mongodb-backup-stashv1 weight: 10 diff --git a/docs/guides/mongodb/monitoring/overview.md b/docs/guides/mongodb/monitoring/overview.md index 461fbb54a5..c2a9ec35a6 100644 --- a/docs/guides/mongodb/monitoring/overview.md +++ b/docs/guides/mongodb/monitoring/overview.md @@ -3,7 +3,7 @@ title: MongoDB Monitoring Overview description: MongoDB Monitoring Overview menu: docs_{{ .version }}: - identifier: mg-monitoring-overview + identifier: mg-monitoring-guide name: Overview parent: mg-monitoring-mongodb weight: 10 diff --git a/docs/guides/mongodb/reconfigure-tls/overview.md b/docs/guides/mongodb/reconfigure-tls/overview.md index dd9fdab05a..6323cb997a 100644 --- a/docs/guides/mongodb/reconfigure-tls/overview.md +++ b/docs/guides/mongodb/reconfigure-tls/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS of MongoDB Database menu: docs_{{ .version }}: - identifier: mg-reconfigure-tls-overview + identifier: mg-reconfigure-tls-guide name: Overview parent: mg-reconfigure-tls weight: 10 diff --git a/docs/guides/mongodb/reconfigure/overview.md b/docs/guides/mongodb/reconfigure/overview.md index 4975e7588a..4e8c5dcf79 100644 --- a/docs/guides/mongodb/reconfigure/overview.md +++ b/docs/guides/mongodb/reconfigure/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring MongoDB menu: docs_{{ .version }}: - identifier: mg-reconfigure-overview + identifier: mg-reconfigure-guide name: Overview parent: mg-reconfigure weight: 10 diff --git a/docs/guides/mongodb/scaling/horizontal-scaling/overview.md b/docs/guides/mongodb/scaling/horizontal-scaling/overview.md index 47b5639d8c..51260312d0 100644 --- a/docs/guides/mongodb/scaling/horizontal-scaling/overview.md +++ b/docs/guides/mongodb/scaling/horizontal-scaling/overview.md @@ -2,7 +2,7 @@ title: MongoDB Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: mg-horizontal-scaling-overview + identifier: mg-horizontal-scaling-guide name: Overview parent: mg-horizontal-scaling weight: 10 diff --git a/docs/guides/mongodb/scaling/vertical-scaling/overview.md b/docs/guides/mongodb/scaling/vertical-scaling/overview.md index 0057e8693c..f8553a43a7 100644 --- a/docs/guides/mongodb/scaling/vertical-scaling/overview.md +++ b/docs/guides/mongodb/scaling/vertical-scaling/overview.md @@ -2,7 +2,7 @@ title: MongoDB Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: mg-vertical-scaling-overview + identifier: mg-vertical-scaling-guide name: Overview parent: mg-vertical-scaling weight: 10 diff --git a/docs/guides/mongodb/schema-manager/overview/index.md b/docs/guides/mongodb/schema-manager/overview/index.md index 3feff42adb..d4b12fb5ef 100644 --- a/docs/guides/mongodb/schema-manager/overview/index.md +++ b/docs/guides/mongodb/schema-manager/overview/index.md @@ -2,7 +2,7 @@ title: MongoDB Schema Manager Overview menu: docs_{{ .version }}: - identifier: mg-schema-manager-overview + identifier: mg-schema-manager-guide name: Overview parent: mg-schema-manager weight: 10 diff --git a/docs/guides/mongodb/tls/overview.md b/docs/guides/mongodb/tls/overview.md index c737d75aa8..382752895d 100644 --- a/docs/guides/mongodb/tls/overview.md +++ b/docs/guides/mongodb/tls/overview.md @@ -2,7 +2,7 @@ title: MongoDB TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: mg-tls-overview + identifier: mg-tls-guide name: Overview parent: mg-tls weight: 10 diff --git a/docs/guides/mongodb/update-version/overview.md b/docs/guides/mongodb/update-version/overview.md index 4497a3b7da..32dbeea9c8 100644 --- a/docs/guides/mongodb/update-version/overview.md +++ b/docs/guides/mongodb/update-version/overview.md @@ -2,7 +2,7 @@ title: Updating MongoDB Overview menu: docs_{{ .version }}: - identifier: mg-updating-overview + identifier: mg-updating-guide name: Overview parent: mg-updating weight: 10 diff --git a/docs/guides/mongodb/volume-expansion/overview.md b/docs/guides/mongodb/volume-expansion/overview.md index 9b715260bc..2ff7648142 100644 --- a/docs/guides/mongodb/volume-expansion/overview.md +++ b/docs/guides/mongodb/volume-expansion/overview.md @@ -2,7 +2,7 @@ title: MongoDB Volume Expansion Overview menu: docs_{{ .version }}: - identifier: mg-volume-expansion-overview + identifier: mg-volume-expansion-guide name: Overview parent: mg-volume-expansion weight: 10 diff --git a/docs/guides/mssqlserver/backup/overview/index.md b/docs/guides/mssqlserver/backup/overview/index.md index 1bfff95649..6295d1e44a 100644 --- a/docs/guides/mssqlserver/backup/overview/index.md +++ b/docs/guides/mssqlserver/backup/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore Microsoft SQL Server Using KubeStash menu: docs_{{ .version }}: - identifier: guides-mssqlserver-backup-overview + identifier: guides-mssqlserver-backup-guide name: Overview parent: guides-mssqlserver-backup weight: 10 diff --git a/docs/guides/mysql/autoscaler/compute/overview/index.md b/docs/guides/mysql/autoscaler/compute/overview/index.md index be69c6807f..72e62dbff2 100644 --- a/docs/guides/mysql/autoscaler/compute/overview/index.md +++ b/docs/guides/mysql/autoscaler/compute/overview/index.md @@ -2,7 +2,7 @@ title: MySQL Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: guides-mysql-autoscaling-compute-overview + identifier: guides-mysql-autoscaling-compute-guide name: Overview parent: guides-mysql-autoscaling-compute weight: 10 diff --git a/docs/guides/mysql/autoscaler/storage/overview/index.md b/docs/guides/mysql/autoscaler/storage/overview/index.md index 1ea6c0d8fd..5e915f4bbd 100644 --- a/docs/guides/mysql/autoscaler/storage/overview/index.md +++ b/docs/guides/mysql/autoscaler/storage/overview/index.md @@ -2,7 +2,7 @@ title: MySQL Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: mguides-mysql-autoscaling-storage-overview + identifier: mguides-mysql-autoscaling-storage-guide name: Overview parent: guides-mysql-autoscaling-storage weight: 10 diff --git a/docs/guides/mysql/backup/kubestash/overview/index.md b/docs/guides/mysql/backup/kubestash/overview/index.md index 9a724c314a..fc55099cb7 100644 --- a/docs/guides/mysql/backup/kubestash/overview/index.md +++ b/docs/guides/mysql/backup/kubestash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore MySQL Overview menu: docs_{{ .version }}: - identifier: guides-mysql-backup-kubestash-overview-stashv2 + identifier: guides-mysql-backup-kubestash-guide-stashv2 name: Overview parent: guides-mysql-backup-stashv2 weight: 10 diff --git a/docs/guides/mysql/backup/stash/overview/index.md b/docs/guides/mysql/backup/stash/overview/index.md index f1180c2d33..9b6b446b39 100644 --- a/docs/guides/mysql/backup/stash/overview/index.md +++ b/docs/guides/mysql/backup/stash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore MySQL Overview menu: docs_{{ .version }}: - identifier: guides-mysql-backup-overview-stashv1 + identifier: guides-mysql-backup-guide-stashv1 name: Overview parent: guides-mysql-backup-stashv1 weight: 10 diff --git a/docs/guides/mysql/clustering/overview/index.md b/docs/guides/mysql/clustering/overview/index.md index 58d26ce3e7..232a115183 100644 --- a/docs/guides/mysql/clustering/overview/index.md +++ b/docs/guides/mysql/clustering/overview/index.md @@ -2,7 +2,7 @@ title: MySQL Group Replication Overview menu: docs_{{ .version }}: - identifier: guides-mysql-clustering-overview + identifier: guides-mysql-clustering-guide name: MySQL Group Replication Overview parent: guides-mysql-clustering weight: 15 diff --git a/docs/guides/mysql/monitoring/overview/index.md b/docs/guides/mysql/monitoring/overview/index.md index 2b85d7bee2..8496b45805 100644 --- a/docs/guides/mysql/monitoring/overview/index.md +++ b/docs/guides/mysql/monitoring/overview/index.md @@ -3,7 +3,7 @@ title: MySQL Monitoring Overview description: MySQL Monitoring Overview menu: docs_{{ .version }}: - identifier: guides-mysql-monitoring-overview + identifier: guides-mysql-monitoring-guide name: Overview parent: guides-mysql-monitoring weight: 10 diff --git a/docs/guides/mysql/reconfigure-tls/overview/index.md b/docs/guides/mysql/reconfigure-tls/overview/index.md index 27444c611b..20bbb758b9 100644 --- a/docs/guides/mysql/reconfigure-tls/overview/index.md +++ b/docs/guides/mysql/reconfigure-tls/overview/index.md @@ -2,7 +2,7 @@ title: MySQL Vertical Reconfigure TLS Overview menu: docs_{{ .version }}: - identifier: guides-mysql-reconfigure-tls-overview + identifier: guides-mysql-reconfigure-tls-guide name: Overview parent: guides-mysql-reconfigure-tls weight: 11 diff --git a/docs/guides/mysql/reconfigure/overview/index.md b/docs/guides/mysql/reconfigure/overview/index.md index 4c3beafd87..72f5f0b3c8 100644 --- a/docs/guides/mysql/reconfigure/overview/index.md +++ b/docs/guides/mysql/reconfigure/overview/index.md @@ -2,7 +2,7 @@ title: Reconfiguring MySQL menu: docs_{{ .version }}: - identifier: guides-mysql-reconfigure-overview + identifier: guides-mysql-reconfigure-guide name: Overview parent: guides-mysql-reconfigure weight: 10 diff --git a/docs/guides/mysql/scaling/horizontal-scaling/overview/index.md b/docs/guides/mysql/scaling/horizontal-scaling/overview/index.md index b98411418b..83b90f7d5e 100644 --- a/docs/guides/mysql/scaling/horizontal-scaling/overview/index.md +++ b/docs/guides/mysql/scaling/horizontal-scaling/overview/index.md @@ -2,7 +2,7 @@ title: MySQL Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: guides-mysql-scaling-horizontal-overview + identifier: guides-mysql-scaling-horizontal-guide name: Overview parent: guides-mysql-scaling-horizontal weight: 10 diff --git a/docs/guides/mysql/scaling/vertical-scaling/overview/index.md b/docs/guides/mysql/scaling/vertical-scaling/overview/index.md index 36dcc2b6b4..f1f40ae002 100644 --- a/docs/guides/mysql/scaling/vertical-scaling/overview/index.md +++ b/docs/guides/mysql/scaling/vertical-scaling/overview/index.md @@ -2,7 +2,7 @@ title: MySQL Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: guides-mysql-scaling-vertical-overview + identifier: guides-mysql-scaling-vertical-guide name: Overview parent: guides-mysql-scaling-vertical weight: 10 diff --git a/docs/guides/mysql/schema-manager/overview/index.md b/docs/guides/mysql/schema-manager/overview/index.md index 23d458d426..fd78e42d22 100644 --- a/docs/guides/mysql/schema-manager/overview/index.md +++ b/docs/guides/mysql/schema-manager/overview/index.md @@ -2,7 +2,7 @@ title: MySQL Schema Manager Overview menu: docs_{{ .version }}: - identifier: mysql-schema-manager-overview + identifier: mysql-schema-manager-guide name: Overview parent: guides-mysql-schema-manager weight: 10 diff --git a/docs/guides/mysql/tls/overview/index.md b/docs/guides/mysql/tls/overview/index.md index 345223f88d..5bcd2c986a 100644 --- a/docs/guides/mysql/tls/overview/index.md +++ b/docs/guides/mysql/tls/overview/index.md @@ -2,7 +2,7 @@ title: MySQL TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: guides-mysql-tls-overview + identifier: guides-mysql-tls-guide name: Overview parent: guides-mysql-tls weight: 10 diff --git a/docs/guides/mysql/update-version/overview/index.md b/docs/guides/mysql/update-version/overview/index.md index afad90ff0f..4f13ef2de3 100644 --- a/docs/guides/mysql/update-version/overview/index.md +++ b/docs/guides/mysql/update-version/overview/index.md @@ -2,7 +2,7 @@ title: Updating MySQL Overview menu: docs_{{ .version }}: - identifier: guides-mysql-updating-overview + identifier: guides-mysql-updating-guide name: Overview parent: guides-mysql-updating weight: 10 diff --git a/docs/guides/mysql/volume-expansion/overview/index.md b/docs/guides/mysql/volume-expansion/overview/index.md index f102cf2a51..4724f41699 100644 --- a/docs/guides/mysql/volume-expansion/overview/index.md +++ b/docs/guides/mysql/volume-expansion/overview/index.md @@ -2,7 +2,7 @@ title: MySQL Volume Expansion Overview menu: docs_{{ .version }}: - identifier: guides-mysql-volume-expansion-overview + identifier: guides-mysql-volume-expansion-guide name: Overview parent: guides-mysql-volume-expansion weight: 11 diff --git a/docs/guides/percona-xtradb/README.md b/docs/guides/percona-xtradb/README.md index 26ca2b23f5..020a4ffb33 100644 --- a/docs/guides/percona-xtradb/README.md +++ b/docs/guides/percona-xtradb/README.md @@ -2,7 +2,7 @@ title: PerconaXtraDB menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-overview + identifier: guides-perconaxtradb-guide name: PerconaXtraDB parent: guides-perconaxtradb weight: 10 diff --git a/docs/guides/percona-xtradb/autoscaler/compute/overview/index.md b/docs/guides/percona-xtradb/autoscaler/compute/overview/index.md index 02fdf7de3b..1f4e996ac0 100644 --- a/docs/guides/percona-xtradb/autoscaler/compute/overview/index.md +++ b/docs/guides/percona-xtradb/autoscaler/compute/overview/index.md @@ -2,7 +2,7 @@ title: PerconaXtraDB Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-autoscaling-compute-overview + identifier: guides-perconaxtradb-autoscaling-compute-guide name: Overview parent: guides-perconaxtradb-autoscaling-compute weight: 10 diff --git a/docs/guides/percona-xtradb/autoscaler/storage/overview/index.md b/docs/guides/percona-xtradb/autoscaler/storage/overview/index.md index c407874a98..04e51ee3ba 100644 --- a/docs/guides/percona-xtradb/autoscaler/storage/overview/index.md +++ b/docs/guides/percona-xtradb/autoscaler/storage/overview/index.md @@ -2,7 +2,7 @@ title: PerconaXtraDB Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-autoscaling-storage-overview + identifier: guides-perconaxtradb-autoscaling-storage-guide name: Overview parent: guides-perconaxtradb-autoscaling-storage weight: 10 diff --git a/docs/guides/percona-xtradb/clustering/overview/index.md b/docs/guides/percona-xtradb/clustering/overview/index.md index 4727efcbbc..a23f9cc7d6 100644 --- a/docs/guides/percona-xtradb/clustering/overview/index.md +++ b/docs/guides/percona-xtradb/clustering/overview/index.md @@ -2,7 +2,7 @@ title: PerconaXtraDB Galera Cluster Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-clustering-overview + identifier: guides-perconaxtradb-clustering-guide name: PerconaXtraDB Galera Cluster Overview parent: guides-perconaxtradb-clustering weight: 10 diff --git a/docs/guides/percona-xtradb/monitoring/overview/index.md b/docs/guides/percona-xtradb/monitoring/overview/index.md index 9d64203ae2..a1a91d3551 100644 --- a/docs/guides/percona-xtradb/monitoring/overview/index.md +++ b/docs/guides/percona-xtradb/monitoring/overview/index.md @@ -3,7 +3,7 @@ title: PerconaXtraDB Monitoring Overview description: PerconaXtraDB Monitoring Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-monitoring-overview + identifier: guides-perconaxtradb-monitoring-guide name: Overview parent: guides-perconaxtradb-monitoring weight: 10 diff --git a/docs/guides/percona-xtradb/quickstart/overview/index.md b/docs/guides/percona-xtradb/quickstart/overview/index.md index 9bc4a3fd6b..1ba9b1b393 100644 --- a/docs/guides/percona-xtradb/quickstart/overview/index.md +++ b/docs/guides/percona-xtradb/quickstart/overview/index.md @@ -2,7 +2,7 @@ title: PerconaXtraDB Quickstart menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-quickstart-overview + identifier: guides-perconaxtradb-quickstart-guide name: Overview parent: guides-perconaxtradb-quickstart weight: 10 @@ -80,7 +80,7 @@ spec: ``` ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/percona-xtradb/quickstart/overview/examples/sample-pxc-v1.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/percona-xtradb/quickstart/guide/examples/sample-pxc-v1.yaml perconaxtradb.kubedb.com/sample-pxc created ``` @@ -104,7 +104,7 @@ spec: ``` ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/percona-xtradb/quickstart/overview/examples/sample-pxc-v1alpha2.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/percona-xtradb/quickstart/guide/examples/sample-pxc-v1alpha2.yaml perconaxtradb.kubedb.com/sample-pxc created ``` diff --git a/docs/guides/percona-xtradb/reconfigure-tls/overview/index.md b/docs/guides/percona-xtradb/reconfigure-tls/overview/index.md index 47ac74b531..a586aa9f91 100644 --- a/docs/guides/percona-xtradb/reconfigure-tls/overview/index.md +++ b/docs/guides/percona-xtradb/reconfigure-tls/overview/index.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS of PerconaXtraDB Database menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-reconfigure-tls-overview + identifier: guides-perconaxtradb-reconfigure-tls-guide name: Overview parent: guides-perconaxtradb-reconfigure-tls weight: 10 diff --git a/docs/guides/percona-xtradb/reconfigure/overview/index.md b/docs/guides/percona-xtradb/reconfigure/overview/index.md index 98d9b41bd6..e1465f0708 100644 --- a/docs/guides/percona-xtradb/reconfigure/overview/index.md +++ b/docs/guides/percona-xtradb/reconfigure/overview/index.md @@ -2,7 +2,7 @@ title: Reconfiguring PerconaXtraDB menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-reconfigure-overview + identifier: guides-perconaxtradb-reconfigure-guide name: Overview parent: guides-perconaxtradb-reconfigure weight: 10 diff --git a/docs/guides/percona-xtradb/scaling/horizontal-scaling/overview/index.md b/docs/guides/percona-xtradb/scaling/horizontal-scaling/overview/index.md index f127f9ae20..9326cc5d31 100644 --- a/docs/guides/percona-xtradb/scaling/horizontal-scaling/overview/index.md +++ b/docs/guides/percona-xtradb/scaling/horizontal-scaling/overview/index.md @@ -2,7 +2,7 @@ title: PerconaXtraDB Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-scaling-horizontal-overview + identifier: guides-perconaxtradb-scaling-horizontal-guide name: Overview parent: guides-perconaxtradb-scaling-horizontal weight: 10 diff --git a/docs/guides/percona-xtradb/scaling/vertical-scaling/overview/index.md b/docs/guides/percona-xtradb/scaling/vertical-scaling/overview/index.md index 66cd609322..66570d51ca 100644 --- a/docs/guides/percona-xtradb/scaling/vertical-scaling/overview/index.md +++ b/docs/guides/percona-xtradb/scaling/vertical-scaling/overview/index.md @@ -2,7 +2,7 @@ title: PerconaXtraDB Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-scaling-vertical-overview + identifier: guides-perconaxtradb-scaling-vertical-guide name: Overview parent: guides-perconaxtradb-scaling-vertical weight: 10 diff --git a/docs/guides/percona-xtradb/tls/overview/index.md b/docs/guides/percona-xtradb/tls/overview/index.md index daf2452f1d..f8a4e82111 100644 --- a/docs/guides/percona-xtradb/tls/overview/index.md +++ b/docs/guides/percona-xtradb/tls/overview/index.md @@ -2,7 +2,7 @@ title: PerconaXtraDB TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-tls-overview + identifier: guides-perconaxtradb-tls-guide name: Overview parent: guides-perconaxtradb-tls weight: 10 diff --git a/docs/guides/percona-xtradb/update-version/overview/index.md b/docs/guides/percona-xtradb/update-version/overview/index.md index 39cde62bc9..5664ec7fc9 100644 --- a/docs/guides/percona-xtradb/update-version/overview/index.md +++ b/docs/guides/percona-xtradb/update-version/overview/index.md @@ -2,7 +2,7 @@ title: Updating PerconaXtraDB Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-updating-overview + identifier: guides-perconaxtradb-updating-guide name: Overview parent: guides-perconaxtradb-updating weight: 10 diff --git a/docs/guides/percona-xtradb/volume-expansion/overview/index.md b/docs/guides/percona-xtradb/volume-expansion/overview/index.md index e2370adb21..161faaede6 100644 --- a/docs/guides/percona-xtradb/volume-expansion/overview/index.md +++ b/docs/guides/percona-xtradb/volume-expansion/overview/index.md @@ -2,7 +2,7 @@ title: PerconaXtraDB Volume Expansion Overview menu: docs_{{ .version }}: - identifier: guides-perconaxtradb-volume-expansion-overview + identifier: guides-perconaxtradb-volume-expansion-guide name: Overview parent: guides-perconaxtradb-volume-expansion weight: 10 diff --git a/docs/guides/pgbouncer/monitoring/overview.md b/docs/guides/pgbouncer/monitoring/overview.md index 6230ab5b42..7dd2087029 100644 --- a/docs/guides/pgbouncer/monitoring/overview.md +++ b/docs/guides/pgbouncer/monitoring/overview.md @@ -3,7 +3,7 @@ title: PgBouncer Monitoring Overview description: PgBouncer Monitoring Overview menu: docs_{{ .version }}: - identifier: pb-monitoring-overview + identifier: pb-monitoring-guide name: Overview parent: pb-monitoring-pgbouncer weight: 10 diff --git a/docs/guides/pgpool/autoscaler/compute/overview.md b/docs/guides/pgpool/autoscaler/compute/overview.md index 0486940bea..d2344a0cd4 100644 --- a/docs/guides/pgpool/autoscaler/compute/overview.md +++ b/docs/guides/pgpool/autoscaler/compute/overview.md @@ -2,7 +2,7 @@ title: Pgpool Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: pp-auto-scaling-overview + identifier: pp-auto-scaling-guide name: Overview parent: pp-compute-auto-scaling weight: 10 diff --git a/docs/guides/pgpool/monitoring/overview.md b/docs/guides/pgpool/monitoring/overview.md index 0b80f7415c..60aa76654c 100644 --- a/docs/guides/pgpool/monitoring/overview.md +++ b/docs/guides/pgpool/monitoring/overview.md @@ -3,7 +3,7 @@ title: Pgpool Monitoring Overview description: Pgpool Monitoring Overview menu: docs_{{ .version }}: - identifier: pp-monitoring-overview + identifier: pp-monitoring-guide name: Overview parent: pp-monitoring-pgpool weight: 10 diff --git a/docs/guides/pgpool/reconfigure-tls/overview.md b/docs/guides/pgpool/reconfigure-tls/overview.md index 799f9eaad4..e40855a2f1 100644 --- a/docs/guides/pgpool/reconfigure-tls/overview.md +++ b/docs/guides/pgpool/reconfigure-tls/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS of Pgpool menu: docs_{{ .version }}: - identifier: pp-reconfigure-tls-overview + identifier: pp-reconfigure-tls-guide name: Overview parent: pp-reconfigure-tls weight: 10 diff --git a/docs/guides/pgpool/reconfigure/overview.md b/docs/guides/pgpool/reconfigure/overview.md index ace840b13e..5f1ac30006 100644 --- a/docs/guides/pgpool/reconfigure/overview.md +++ b/docs/guides/pgpool/reconfigure/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring Pgpool menu: docs_{{ .version }}: - identifier: pp-reconfigure-overview + identifier: pp-reconfigure-guide name: Overview parent: pp-reconfigure weight: 10 diff --git a/docs/guides/pgpool/scaling/horizontal-scaling/overview.md b/docs/guides/pgpool/scaling/horizontal-scaling/overview.md index 4b47faea86..d0790c1d06 100644 --- a/docs/guides/pgpool/scaling/horizontal-scaling/overview.md +++ b/docs/guides/pgpool/scaling/horizontal-scaling/overview.md @@ -2,7 +2,7 @@ title: Pgpool Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: pp-horizontal-scaling-overview + identifier: pp-horizontal-scaling-guide name: Overview parent: pp-horizontal-scaling weight: 10 diff --git a/docs/guides/pgpool/scaling/vertical-scaling/overview.md b/docs/guides/pgpool/scaling/vertical-scaling/overview.md index ce810c4b18..0e7ec1806c 100644 --- a/docs/guides/pgpool/scaling/vertical-scaling/overview.md +++ b/docs/guides/pgpool/scaling/vertical-scaling/overview.md @@ -2,7 +2,7 @@ title: Pgpool Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: pp-vertical-scaling-overview + identifier: pp-vertical-scaling-guide name: Overview parent: pp-vertical-scaling weight: 10 diff --git a/docs/guides/pgpool/tls/overview.md b/docs/guides/pgpool/tls/overview.md index 6dbb520405..4b17da5aef 100644 --- a/docs/guides/pgpool/tls/overview.md +++ b/docs/guides/pgpool/tls/overview.md @@ -2,7 +2,7 @@ title: Pgpool TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: pp-tls-overview + identifier: pp-tls-guide name: Overview parent: pp-tls weight: 10 diff --git a/docs/guides/pgpool/update-version/overview.md b/docs/guides/pgpool/update-version/overview.md index 0be3a59d66..babdf7a0b6 100644 --- a/docs/guides/pgpool/update-version/overview.md +++ b/docs/guides/pgpool/update-version/overview.md @@ -2,7 +2,7 @@ title: Updating Pgpool Overview menu: docs_{{ .version }}: - identifier: pp-updating-overview + identifier: pp-updating-guide name: Overview parent: pp-updating weight: 10 diff --git a/docs/guides/postgres/autoscaler/compute/overview.md b/docs/guides/postgres/autoscaler/compute/overview.md index ac5f18295b..cf6f0ed3e5 100644 --- a/docs/guides/postgres/autoscaler/compute/overview.md +++ b/docs/guides/postgres/autoscaler/compute/overview.md @@ -2,7 +2,7 @@ title: Postgres Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: pg-auto-scaling-overview + identifier: pg-auto-scaling-guide name: Overview parent: pg-compute-auto-scaling weight: 10 diff --git a/docs/guides/postgres/autoscaler/storage/overview.md b/docs/guides/postgres/autoscaler/storage/overview.md index af742ed814..ad2cf48fa2 100644 --- a/docs/guides/postgres/autoscaler/storage/overview.md +++ b/docs/guides/postgres/autoscaler/storage/overview.md @@ -2,7 +2,7 @@ title: Postgres Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: pg-storage-auto-scaling-overview + identifier: pg-storage-auto-scaling-guide name: Overview parent: pg-storage-auto-scaling weight: 10 diff --git a/docs/guides/postgres/backup/kubestash/overview/index.md b/docs/guides/postgres/backup/kubestash/overview/index.md index 4ed7970d59..2a57ae501e 100644 --- a/docs/guides/postgres/backup/kubestash/overview/index.md +++ b/docs/guides/postgres/backup/kubestash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore PostgreSQL Using KubeStash menu: docs_{{ .version }}: - identifier: guides-pg-backup-overview-stashv2 + identifier: guides-pg-backup-guide-stashv2 name: Overview parent: guides-pg-backup-stashv2 weight: 10 diff --git a/docs/guides/postgres/backup/stash/overview/index.md b/docs/guides/postgres/backup/stash/overview/index.md index cb56b2b426..4026d555d3 100644 --- a/docs/guides/postgres/backup/stash/overview/index.md +++ b/docs/guides/postgres/backup/stash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore PostgreSQL Using Stash menu: docs_{{ .version }}: - identifier: guides-pg-backup-overview-stashv1 + identifier: guides-pg-backup-guide-stashv1 name: Overview parent: guides-pg-backup-stashv1 weight: 10 diff --git a/docs/guides/postgres/monitoring/overview.md b/docs/guides/postgres/monitoring/overview.md index 97df4aab91..5860e75acd 100644 --- a/docs/guides/postgres/monitoring/overview.md +++ b/docs/guides/postgres/monitoring/overview.md @@ -3,7 +3,7 @@ title: PostgreSQL Monitoring Overview description: PostgreSQL Monitoring Overview menu: docs_{{ .version }}: - identifier: pg-monitoring-overview + identifier: pg-monitoring-guide name: Overview parent: pg-monitoring-postgres weight: 10 diff --git a/docs/guides/postgres/reconfigure-tls/overview.md b/docs/guides/postgres/reconfigure-tls/overview.md index 6f09b1817e..3b95b4da0d 100644 --- a/docs/guides/postgres/reconfigure-tls/overview.md +++ b/docs/guides/postgres/reconfigure-tls/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS of Postgres Database menu: docs_{{ .version }}: - identifier: pg-reconfigure-tls-overview + identifier: pg-reconfigure-tls-guide name: Overview parent: pg-reconfigure-tls weight: 10 diff --git a/docs/guides/postgres/reconfigure/overview.md b/docs/guides/postgres/reconfigure/overview.md index 6dd51a1a75..e1ce520557 100644 --- a/docs/guides/postgres/reconfigure/overview.md +++ b/docs/guides/postgres/reconfigure/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring Postgres menu: docs_{{ .version }}: - identifier: pg-reconfigure-overview + identifier: pg-reconfigure-guide name: Overview parent: pg-reconfigure weight: 10 diff --git a/docs/guides/postgres/scaling/horizontal-scaling/overview/index.md b/docs/guides/postgres/scaling/horizontal-scaling/overview/index.md index b8726fad4e..7e5e005d81 100644 --- a/docs/guides/postgres/scaling/horizontal-scaling/overview/index.md +++ b/docs/guides/postgres/scaling/horizontal-scaling/overview/index.md @@ -2,7 +2,7 @@ title: Postgres Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: guides-postgres-scaling-horizontal-overview + identifier: guides-postgres-scaling-horizontal-guide name: Overview parent: guides-postgres-scaling-horizontal weight: 10 diff --git a/docs/guides/postgres/scaling/vertical-scaling/overview/index.md b/docs/guides/postgres/scaling/vertical-scaling/overview/index.md index c15fe56164..368a5c2025 100644 --- a/docs/guides/postgres/scaling/vertical-scaling/overview/index.md +++ b/docs/guides/postgres/scaling/vertical-scaling/overview/index.md @@ -2,7 +2,7 @@ title: Postgres Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: guides-postgres-scaling-vertical-overview + identifier: guides-postgres-scaling-vertical-guide name: Overview parent: guides-postgres-scaling-vertical weight: 10 diff --git a/docs/guides/postgres/tls/overview/index.md b/docs/guides/postgres/tls/overview/index.md index 8b8ce85fce..e779121019 100644 --- a/docs/guides/postgres/tls/overview/index.md +++ b/docs/guides/postgres/tls/overview/index.md @@ -2,7 +2,7 @@ title: Postgres TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: guides-postgres-tls-overview + identifier: guides-postgres-tls-guide name: Overview parent: guides-postgres-tls weight: 10 diff --git a/docs/guides/postgres/update-version/overview/index.md b/docs/guides/postgres/update-version/overview/index.md index 4894d4df3e..d04fa76f28 100644 --- a/docs/guides/postgres/update-version/overview/index.md +++ b/docs/guides/postgres/update-version/overview/index.md @@ -2,7 +2,7 @@ title: Updating Postgres Overview menu: docs_{{ .version }}: - identifier: guides-postgres-updating-overview + identifier: guides-postgres-updating-guide name: Overview parent: guides-postgres-updating weight: 10 diff --git a/docs/guides/postgres/volume-expansion/Overview/overview.md b/docs/guides/postgres/volume-expansion/Overview/overview.md index aa9bd9640e..2edefa1da4 100644 --- a/docs/guides/postgres/volume-expansion/Overview/overview.md +++ b/docs/guides/postgres/volume-expansion/Overview/overview.md @@ -2,7 +2,7 @@ title: Postgres Volume Expansion Overview menu: docs_{{ .version }}: - identifier: pg-volume-expansion-overview + identifier: pg-volume-expansion-guide name: Overview parent: pg-volume-expansion weight: 10 diff --git a/docs/guides/proxysql/autoscaler/compute/overview/index.md b/docs/guides/proxysql/autoscaler/compute/overview/index.md index 2397820029..f7c13c7130 100644 --- a/docs/guides/proxysql/autoscaler/compute/overview/index.md +++ b/docs/guides/proxysql/autoscaler/compute/overview/index.md @@ -2,7 +2,7 @@ title: ProxySQL Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: guides-proxysql-autoscaling-compute-overview + identifier: guides-proxysql-autoscaling-compute-guide name: Overview parent: guides-proxysql-autoscaling-compute weight: 10 diff --git a/docs/guides/proxysql/clustering/overview/index.md b/docs/guides/proxysql/clustering/overview/index.md index f44f96b941..d0003160e9 100644 --- a/docs/guides/proxysql/clustering/overview/index.md +++ b/docs/guides/proxysql/clustering/overview/index.md @@ -2,7 +2,7 @@ title: ProxySQL Cluster Overview menu: docs_{{ .version }}: - identifier: guides-proxysql-clustering-overview + identifier: guides-proxysql-clustering-guide name: ProxySQL Cluster Overview parent: guides-proxysql-clustering weight: 10 diff --git a/docs/guides/proxysql/monitoring/overview/index.md b/docs/guides/proxysql/monitoring/overview/index.md index f1871ef696..c5379b3813 100644 --- a/docs/guides/proxysql/monitoring/overview/index.md +++ b/docs/guides/proxysql/monitoring/overview/index.md @@ -3,7 +3,7 @@ title: ProxySQL Monitoring Overview description: ProxySQL Monitoring Overview menu: docs_{{ .version }}: - identifier: guides-proxysql-monitoring-overview + identifier: guides-proxysql-monitoring-guide name: Overview parent: guides-proxysql-monitoring weight: 10 diff --git a/docs/guides/proxysql/quickstart/mysqlgrp/index.md b/docs/guides/proxysql/quickstart/mysqlgrp/index.md index 0df49c1d0c..64c65182cf 100644 --- a/docs/guides/proxysql/quickstart/mysqlgrp/index.md +++ b/docs/guides/proxysql/quickstart/mysqlgrp/index.md @@ -2,7 +2,7 @@ title: Load Balance To MySQL Group Replication With KubeDB Provisioned ProxySQL menu: docs_{{ .version }}: - identifier: guides-proxysql-quickstart-overview + identifier: guides-proxysql-quickstart-guide name: KubeDB MySQL Group Replication Backend parent: guides-proxysql-quickstart weight: 20 diff --git a/docs/guides/proxysql/reconfigure-tls/overview/index.md b/docs/guides/proxysql/reconfigure-tls/overview/index.md index 3f239ff819..5858a2514d 100644 --- a/docs/guides/proxysql/reconfigure-tls/overview/index.md +++ b/docs/guides/proxysql/reconfigure-tls/overview/index.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS of ProxySQL menu: docs_{{ .version }}: - identifier: guides-proxysql-reconfigure-tls-overview + identifier: guides-proxysql-reconfigure-tls-guide name: Overview parent: guides-proxysql-reconfigure-tls weight: 10 diff --git a/docs/guides/proxysql/reconfigure/overview/index.md b/docs/guides/proxysql/reconfigure/overview/index.md index faaf322b9e..525c9dd5f0 100644 --- a/docs/guides/proxysql/reconfigure/overview/index.md +++ b/docs/guides/proxysql/reconfigure/overview/index.md @@ -2,7 +2,7 @@ title: Reconfiguring ProxySQL menu: docs_{{ .version }}: - identifier: guides-proxysql-reconfigure-overview + identifier: guides-proxysql-reconfigure-guide name: Overview parent: guides-proxysql-reconfigure weight: 10 diff --git a/docs/guides/proxysql/scaling/horizontal-scaling/overview/index.md b/docs/guides/proxysql/scaling/horizontal-scaling/overview/index.md index ee405c3bd1..62e5bdae86 100644 --- a/docs/guides/proxysql/scaling/horizontal-scaling/overview/index.md +++ b/docs/guides/proxysql/scaling/horizontal-scaling/overview/index.md @@ -2,7 +2,7 @@ title: ProxySQL Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: guides-proxysql-scaling-horizontal-overview + identifier: guides-proxysql-scaling-horizontal-guide name: Overview parent: guides-proxysql-scaling-horizontal weight: 10 diff --git a/docs/guides/proxysql/scaling/vertical-scaling/overview/index.md b/docs/guides/proxysql/scaling/vertical-scaling/overview/index.md index 8139b02369..9a63f46b0a 100644 --- a/docs/guides/proxysql/scaling/vertical-scaling/overview/index.md +++ b/docs/guides/proxysql/scaling/vertical-scaling/overview/index.md @@ -2,7 +2,7 @@ title: ProxySQL Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: guides-proxysql-scaling-vertical-overview + identifier: guides-proxysql-scaling-vertical-guide name: Overview parent: guides-proxysql-scaling-vertical weight: 10 diff --git a/docs/guides/proxysql/tls/overview/index.md b/docs/guides/proxysql/tls/overview/index.md index 90440ca12b..0abaaec9c9 100644 --- a/docs/guides/proxysql/tls/overview/index.md +++ b/docs/guides/proxysql/tls/overview/index.md @@ -2,7 +2,7 @@ title: ProxySQL TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: guides-proxysql-tls-overview + identifier: guides-proxysql-tls-guide name: Overview parent: guides-proxysql-tls weight: 10 diff --git a/docs/guides/proxysql/update-version/overview/index.md b/docs/guides/proxysql/update-version/overview/index.md index 32c68319cf..2eb8c5b43d 100644 --- a/docs/guides/proxysql/update-version/overview/index.md +++ b/docs/guides/proxysql/update-version/overview/index.md @@ -2,7 +2,7 @@ title: Updating ProxySQL Overview menu: docs_{{ .version }}: - identifier: guides-proxysql-updating-overview + identifier: guides-proxysql-updating-guide name: Overview parent: guides-proxysql-updating weight: 10 diff --git a/docs/guides/rabbitmq/autoscaler/compute/overview.md b/docs/guides/rabbitmq/autoscaler/compute/overview.md index 9dea23d6f6..8f5c74a68b 100644 --- a/docs/guides/rabbitmq/autoscaler/compute/overview.md +++ b/docs/guides/rabbitmq/autoscaler/compute/overview.md @@ -2,7 +2,7 @@ title: RabbitMQ Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: rm-autoscaling-compute-overview + identifier: rm-autoscaling-compute-guide name: Overview parent: rm-autoscaling-compute weight: 10 diff --git a/docs/guides/rabbitmq/autoscaler/storage/overview.md b/docs/guides/rabbitmq/autoscaler/storage/overview.md index cba5c6f504..78a5483e67 100644 --- a/docs/guides/rabbitmq/autoscaler/storage/overview.md +++ b/docs/guides/rabbitmq/autoscaler/storage/overview.md @@ -2,7 +2,7 @@ title: RabbitMQ Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: rm-autoscaling-storage-overview + identifier: rm-autoscaling-storage-guide name: Overview parent: rm-autoscaling-storage weight: 10 diff --git a/docs/guides/rabbitmq/monitoring/overview.md b/docs/guides/rabbitmq/monitoring/overview.md index 404e5f6975..d34a56d581 100644 --- a/docs/guides/rabbitmq/monitoring/overview.md +++ b/docs/guides/rabbitmq/monitoring/overview.md @@ -3,7 +3,7 @@ title: RabbitMQ Monitoring Overview description: RabbitMQ Monitoring Overview menu: docs_{{ .version }}: - identifier: rm-monitoring-overview + identifier: rm-monitoring-guide name: Overview parent: rm-monitoring-guides weight: 10 diff --git a/docs/guides/rabbitmq/reconfigure-tls/overview.md b/docs/guides/rabbitmq/reconfigure-tls/overview.md index 31f43e6eb7..b6f0391765 100644 --- a/docs/guides/rabbitmq/reconfigure-tls/overview.md +++ b/docs/guides/rabbitmq/reconfigure-tls/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS of RabbitMQ menu: docs_{{ .version }}: - identifier: rm-reconfigure-tls-overview + identifier: rm-reconfigure-tls-guide name: Overview parent: rm-reconfigure-tls weight: 10 diff --git a/docs/guides/rabbitmq/reconfigure/overview.md b/docs/guides/rabbitmq/reconfigure/overview.md index 1229108347..0359b19ac3 100644 --- a/docs/guides/rabbitmq/reconfigure/overview.md +++ b/docs/guides/rabbitmq/reconfigure/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring RabbitMQ menu: docs_{{ .version }}: - identifier: rm-reconfigure-overview + identifier: rm-reconfigure-guide name: Overview parent: rm-reconfigure weight: 10 diff --git a/docs/guides/rabbitmq/scaling/horizontal-scaling/overview.md b/docs/guides/rabbitmq/scaling/horizontal-scaling/overview.md index a5e338a493..b1dab263d9 100644 --- a/docs/guides/rabbitmq/scaling/horizontal-scaling/overview.md +++ b/docs/guides/rabbitmq/scaling/horizontal-scaling/overview.md @@ -2,7 +2,7 @@ title: RabbitMQ Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: rm-horizontal-scaling-overview + identifier: rm-horizontal-scaling-guide name: Overview parent: rm-horizontal-scaling weight: 10 diff --git a/docs/guides/rabbitmq/scaling/vertical-scaling/overview.md b/docs/guides/rabbitmq/scaling/vertical-scaling/overview.md index a126638539..868b67d736 100644 --- a/docs/guides/rabbitmq/scaling/vertical-scaling/overview.md +++ b/docs/guides/rabbitmq/scaling/vertical-scaling/overview.md @@ -2,7 +2,7 @@ title: RabbitMQ Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: rm-vertical-scaling-overview + identifier: rm-vertical-scaling-guide name: Overview parent: rm-vertical-scaling weight: 10 diff --git a/docs/guides/rabbitmq/tls/overview.md b/docs/guides/rabbitmq/tls/overview.md index 70a3a50ddc..a1b61ba9a4 100644 --- a/docs/guides/rabbitmq/tls/overview.md +++ b/docs/guides/rabbitmq/tls/overview.md @@ -2,7 +2,7 @@ title: RabbitMQ TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: rm-tls-overview + identifier: rm-tls-guide name: Overview parent: rm-tls weight: 10 diff --git a/docs/guides/rabbitmq/update-version/overview.md b/docs/guides/rabbitmq/update-version/overview.md index 0844dfd8e8..a470bae554 100644 --- a/docs/guides/rabbitmq/update-version/overview.md +++ b/docs/guides/rabbitmq/update-version/overview.md @@ -2,7 +2,7 @@ title: Updating RabbitMQ Overview menu: docs_{{ .version }}: - identifier: rm-update-version-overview + identifier: rm-update-version-guide name: Overview parent: rm-update-version weight: 10 diff --git a/docs/guides/rabbitmq/volume-expansion/overview.md b/docs/guides/rabbitmq/volume-expansion/overview.md index b98295a611..17993fca53 100644 --- a/docs/guides/rabbitmq/volume-expansion/overview.md +++ b/docs/guides/rabbitmq/volume-expansion/overview.md @@ -2,7 +2,7 @@ title: RabbitMQ Volume Expansion Overview menu: docs_{{ .version }}: - identifier: rm-volume-expansion-overview + identifier: rm-volume-expansion-guide name: Overview parent: rm-volume-expansion weight: 10 diff --git a/docs/guides/redis/autoscaler/compute/overview.md b/docs/guides/redis/autoscaler/compute/overview.md index c7254643a9..9e78977b08 100644 --- a/docs/guides/redis/autoscaler/compute/overview.md +++ b/docs/guides/redis/autoscaler/compute/overview.md @@ -2,7 +2,7 @@ title: Redis Compute Autoscaling Overview menu: docs_{{ .version }}: - identifier: rd-auto-scaling-overview + identifier: rd-auto-scaling-guide name: Overview parent: rd-compute-auto-scaling weight: 10 diff --git a/docs/guides/redis/autoscaler/storage/overview.md b/docs/guides/redis/autoscaler/storage/overview.md index 85ad4ba72f..362635d7e6 100644 --- a/docs/guides/redis/autoscaler/storage/overview.md +++ b/docs/guides/redis/autoscaler/storage/overview.md @@ -2,7 +2,7 @@ title: Redis Storage Autoscaling Overview menu: docs_{{ .version }}: - identifier: rd-storage-auto-scaling-overview + identifier: rd-storage-auto-scaling-guide name: Overview parent: rd-storage-auto-scaling weight: 10 diff --git a/docs/guides/redis/backup/kubestash/overview/index.md b/docs/guides/redis/backup/kubestash/overview/index.md index 319f7f911d..6e589a4124 100644 --- a/docs/guides/redis/backup/kubestash/overview/index.md +++ b/docs/guides/redis/backup/kubestash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore Redis Using KubeStash menu: docs_{{ .version }}: - identifier: guides-rd-backup-overview-stashv2 + identifier: guides-rd-backup-guide-stashv2 name: Overview parent: guides-rd-backup-stashv2 weight: 10 diff --git a/docs/guides/redis/backup/stash/overview/index.md b/docs/guides/redis/backup/stash/overview/index.md index 90251de15a..c5879975f5 100644 --- a/docs/guides/redis/backup/stash/overview/index.md +++ b/docs/guides/redis/backup/stash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore Redis Using Stash menu: docs_{{ .version }}: - identifier: rd-backup-overview + identifier: rd-backup-guide name: Overview parent: guides-rd-backup-stashv1 weight: 10 diff --git a/docs/guides/redis/clustering/overview.md b/docs/guides/redis/clustering/overview.md index 32c40042a4..607c3d40da 100644 --- a/docs/guides/redis/clustering/overview.md +++ b/docs/guides/redis/clustering/overview.md @@ -2,7 +2,7 @@ title: Redis Cluster Overview menu: docs_{{ .version }}: - identifier: rd-clustering-overview + identifier: rd-clustering-guide name: Overview parent: rd-clustering-redis weight: 10 diff --git a/docs/guides/redis/monitoring/overview.md b/docs/guides/redis/monitoring/overview.md index 7d6c34b800..715801ca1c 100644 --- a/docs/guides/redis/monitoring/overview.md +++ b/docs/guides/redis/monitoring/overview.md @@ -3,7 +3,7 @@ title: Redis Monitoring Overview description: Redis Monitoring Overview menu: docs_{{ .version }}: - identifier: rd-monitoring-overview + identifier: rd-monitoring-guide name: Overview parent: rd-monitoring-redis weight: 10 diff --git a/docs/guides/redis/reconfigure-tls/overview.md b/docs/guides/redis/reconfigure-tls/overview.md index bc2010b3aa..d75e8c9905 100644 --- a/docs/guides/redis/reconfigure-tls/overview.md +++ b/docs/guides/redis/reconfigure-tls/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring TLS of Redis menu: docs_{{ .version }}: - identifier: rd-reconfigure-tls-overview + identifier: rd-reconfigure-tls-guide name: Overview parent: rd-reconfigure-tls weight: 10 diff --git a/docs/guides/redis/reconfigure/overview.md b/docs/guides/redis/reconfigure/overview.md index 56ed5d8d26..d567b051d1 100644 --- a/docs/guides/redis/reconfigure/overview.md +++ b/docs/guides/redis/reconfigure/overview.md @@ -2,7 +2,7 @@ title: Reconfiguring Redis menu: docs_{{ .version }}: - identifier: rd-reconfigure-overview + identifier: rd-reconfigure-guide name: Overview parent: rd-reconfigure weight: 10 diff --git a/docs/guides/redis/scaling/horizontal-scaling/overview.md b/docs/guides/redis/scaling/horizontal-scaling/overview.md index 8c4da24d76..017c68febb 100644 --- a/docs/guides/redis/scaling/horizontal-scaling/overview.md +++ b/docs/guides/redis/scaling/horizontal-scaling/overview.md @@ -2,7 +2,7 @@ title: Redis Horizontal Scaling Overview menu: docs_{{ .version }}: - identifier: rd-horizontal-scaling-overview + identifier: rd-horizontal-scaling-guide name: Overview parent: rd-horizontal-scaling weight: 10 diff --git a/docs/guides/redis/scaling/vertical-scaling/overview.md b/docs/guides/redis/scaling/vertical-scaling/overview.md index d2e63a04ab..63ba45c933 100644 --- a/docs/guides/redis/scaling/vertical-scaling/overview.md +++ b/docs/guides/redis/scaling/vertical-scaling/overview.md @@ -2,7 +2,7 @@ title: Redis Vertical Scaling Overview menu: docs_{{ .version }}: - identifier: rd-vertical-scaling-overview + identifier: rd-vertical-scaling-guide name: Overview parent: rd-vertical-scaling weight: 10 diff --git a/docs/guides/redis/sentinel/overview.md b/docs/guides/redis/sentinel/overview.md index addf801908..5ffb562473 100644 --- a/docs/guides/redis/sentinel/overview.md +++ b/docs/guides/redis/sentinel/overview.md @@ -2,7 +2,7 @@ title: Redis Sentinel Overview menu: docs_{{ .version }}: - identifier: rd-sentinel-overview + identifier: rd-sentinel-guide name: Overview parent: rd-sentinel-redis weight: 10 diff --git a/docs/guides/redis/sentinel/replacesentinel/overview.md b/docs/guides/redis/sentinel/replacesentinel/overview.md index 6785daf765..a434a00382 100644 --- a/docs/guides/redis/sentinel/replacesentinel/overview.md +++ b/docs/guides/redis/sentinel/replacesentinel/overview.md @@ -2,7 +2,7 @@ title: Replace Sentinel Overview menu: docs_{{ .version }}: - identifier: replace-sentinel-overview + identifier: replace-sentinel-guide name: Overview parent: rd-replace-sentinel weight: 10 diff --git a/docs/guides/redis/tls/overview.md b/docs/guides/redis/tls/overview.md index 9cfab56066..5d8325da86 100644 --- a/docs/guides/redis/tls/overview.md +++ b/docs/guides/redis/tls/overview.md @@ -2,7 +2,7 @@ title: Redis TLS/SSL Encryption Overview menu: docs_{{ .version }}: - identifier: rd-tls-overview + identifier: rd-tls-guide name: Overview parent: rd-tls weight: 10 diff --git a/docs/guides/redis/update-version/overview.md b/docs/guides/redis/update-version/overview.md index 30c29fc19b..17bf64ab30 100644 --- a/docs/guides/redis/update-version/overview.md +++ b/docs/guides/redis/update-version/overview.md @@ -2,7 +2,7 @@ title: Updating Redis Version Overview menu: docs_{{ .version }}: - identifier: rd-update-version-overview + identifier: rd-update-version-guide name: Overview parent: rd-update-version weight: 10 diff --git a/docs/guides/redis/volume-expansion/overview.md b/docs/guides/redis/volume-expansion/overview.md index cd99e8d547..c18819f2a8 100644 --- a/docs/guides/redis/volume-expansion/overview.md +++ b/docs/guides/redis/volume-expansion/overview.md @@ -2,7 +2,7 @@ title: Redis Volume Expansion Overview menu: docs_{{ .version }}: - identifier: rd-volume-expansion-overview + identifier: rd-volume-expansion-guide name: Overview parent: rd-volume-expansion weight: 10 diff --git a/docs/guides/singlestore/backup/kubestash/overview/index.md b/docs/guides/singlestore/backup/kubestash/overview/index.md index 046af600ec..aa4822fdb2 100644 --- a/docs/guides/singlestore/backup/kubestash/overview/index.md +++ b/docs/guides/singlestore/backup/kubestash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore SingleStore Using KubeStash menu: docs_{{ .version }}: - identifier: guides-sdb-backup-overview-stashv2 + identifier: guides-sdb-backup-guide-stashv2 name: Overview parent: guides-sdb-backup-stashv2 weight: 10 diff --git a/docs/guides/solr/quickstart/overview/index.md b/docs/guides/solr/quickstart/overview/index.md index 2622cd6a2b..7d04516382 100644 --- a/docs/guides/solr/quickstart/overview/index.md +++ b/docs/guides/solr/quickstart/overview/index.md @@ -2,7 +2,7 @@ title: Solr Quickstart menu: docs_{{ .version }}: - identifier: sl-overview-solr + identifier: sl-guide-solr name: Overview parent: sl-quickstart-solr weight: 10 @@ -115,7 +115,7 @@ Here, Let's create the ZooKeeper CR that is shown above: ```bash -$ $ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/solr/quickstart/overview/yamls/zookeeper/zookeeper.yaml +$ $ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/solr/quickstart/guide/yamls/zookeeper/zookeeper.yaml ZooKeeper.kubedb.com/es-quickstart created ``` @@ -166,7 +166,7 @@ Here, Let's create the Solr CR that is shown above: ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/solr/quickstart/overview/yamls/solr/solr.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/solr/quickstart/guide/yamls/solr/solr.yaml solr.kubedb.com/solr-combined created ``` @@ -482,7 +482,7 @@ Say, the Solr CR was deleted with `spec.deletionPolicy` to `Halt` and you want t You can do it by simpily re-deploying the original Solr object: ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/solr/quickstart/overview/yamls/solr/solr.yaml +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/solr/quickstart/guide/yamls/solr/solr.yaml solr.kubedb.com/solr-combined created ``` diff --git a/docs/guides/zookeeper/backup/kubestash/overview/index.md b/docs/guides/zookeeper/backup/kubestash/overview/index.md index e4ba11980f..ebdf199fac 100644 --- a/docs/guides/zookeeper/backup/kubestash/overview/index.md +++ b/docs/guides/zookeeper/backup/kubestash/overview/index.md @@ -2,7 +2,7 @@ title: Backup & Restore ZooKeeper Using KubeStash menu: docs_{{ .version }}: - identifier: guides-zk-backup-overview-stashv2 + identifier: guides-zk-backup-guide-stashv2 name: Overview parent: guides-zk-backup-stashv2 weight: 10 diff --git a/docs/overview/README.md b/docs/overview/README.md index 6c85eae399..71d77b2d2f 100644 --- a/docs/overview/README.md +++ b/docs/overview/README.md @@ -2,15 +2,15 @@ title: KubeDB Overview menu: docs_{{ .version }}: - identifier: overview-readme + identifier: guide-readme name: Readme - parent: overview + parent: guide weight: -1 menu_name: docs_{{ .version }} -section_menu_id: overview -url: /docs/{{ .version }}/overview/ +section_menu_id: guide +url: /docs/{{ .version }}/guide/ aliases: - - /docs/{{ .version }}/overview/README/ + - /docs/{{ .version }}/guide/README/ --- # KubeDB by AppsCode diff --git a/docs/overview/_index.md b/docs/overview/_index.md index 679bd1db4e..0e11b1092c 100644 --- a/docs/overview/_index.md +++ b/docs/overview/_index.md @@ -3,7 +3,7 @@ title: Overview description: Overview menu: docs_{{ .version }}: - identifier: overview + identifier: guide name: Overview weight: 20 menu_name: docs_{{ .version }} diff --git a/docs/setup/monitoring/overview.md b/docs/setup/monitoring/overview.md index 621952ee03..73d7a0754b 100644 --- a/docs/setup/monitoring/overview.md +++ b/docs/setup/monitoring/overview.md @@ -2,7 +2,7 @@ title: Monitoring KubeDB Operator menu: docs_{{ .version }}: - identifier: operator-monitoring-overview + identifier: operator-monitoring-guide name: Overview parent: operator-monitoring weight: 10