You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by li...@apache.org on 2022/07/12 07:11:01 UTC

[pulsar] branch master updated: [improve][doc] Add information for Get Started and clarify configurations for JWT (#16134)

This is an automated email from the ASF dual-hosted git repository.

liuyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 12d43a86d9f [improve][doc] Add information for Get Started and clarify configurations for JWT (#16134)
12d43a86d9f is described below

commit 12d43a86d9fb228b498914155bc3a6194874a2a2
Author: momo-jun <60...@users.noreply.github.com>
AuthorDate: Tue Jul 12 15:10:52 2022 +0800

    [improve][doc] Add information for Get Started and clarify configurations for JWT (#16134)
---
 site2/docs/client-libraries-cgo.md                 |  2 +-
 site2/docs/client-libraries-cpp.md                 |  2 +-
 site2/docs/client-libraries-java.md                |  2 +-
 site2/docs/client-libraries-websocket.md           |  2 +-
 site2/docs/concepts-messaging.md                   |  4 +-
 site2/docs/concepts-multi-tenancy.md               |  2 +-
 site2/docs/deploy-aws.md                           |  2 +-
 site2/docs/deploy-bare-metal-multi-cluster.md      |  2 +-
 site2/docs/deploy-bare-metal.md                    |  4 +-
 site2/docs/functions-concepts.md                   | 10 ++--
 site2/docs/functions-overview.md                   |  2 +-
 site2/docs/functions-runtime.md                    |  6 +-
 site2/docs/functions-worker-temp-file-path.md      |  4 +-
 site2/docs/getting-started-docker.md               |  3 +-
 site2/docs/getting-started-helm.md                 | 18 ++++--
 site2/docs/getting-started-standalone.md           | 28 +++++----
 site2/docs/io-cdc.md                               |  4 +-
 site2/docs/io-develop.md                           |  2 +-
 site2/docs/io-quickstart.md                        |  6 +-
 site2/docs/reference-cli-tools.md                  |  2 +-
 site2/docs/security-authorization.md               |  4 +-
 site2/docs/security-jwt.md                         | 67 +++++++++++-----------
 site2/docs/security-tls-keystore.md                |  4 +-
 site2/docs/security-tls-transport.md               |  4 +-
 site2/docs/sql-deployment-configurations.md        |  2 +-
 site2/docs/sql-overview.md                         |  2 +-
 site2/docs/tiered-storage-overview.md              | 12 ++--
 .../version-2.10.0/admin-api-brokers.md            |  2 +-
 .../administration-pulsar-manager.md               |  4 +-
 .../version-2.10.0/client-libraries-cpp.md         |  2 +-
 .../version-2.10.0/client-libraries-java.md        |  4 +-
 .../concepts-architecture-overview.md              |  2 +-
 .../version-2.10.0/concepts-messaging.md           |  2 +-
 .../version-2.10.0/cookbooks-compaction.md         |  2 +-
 .../version-2.10.0/cookbooks-non-persistent.md     |  2 +-
 .../versioned_docs/version-2.10.0/deploy-aws.md    |  2 +-
 .../deploy-bare-metal-multi-cluster.md             |  2 +-
 .../version-2.10.0/deploy-bare-metal.md            |  4 +-
 .../version-2.10.0/functions-develop.md            |  2 +-
 .../version-2.10.0/functions-overview.md           |  2 +-
 .../version-2.10.0/functions-worker.md             |  2 +-
 .../versioned_docs/version-2.10.0/io-cdc.md        |  4 +-
 .../versioned_docs/version-2.10.0/io-develop.md    |  2 +-
 .../version-2.10.0/io-kafka-source.md              |  2 +-
 .../versioned_docs/version-2.10.0/io-overview.md   |  2 +-
 .../versioned_docs/version-2.10.0/io-quickstart.md |  6 +-
 .../version-2.10.0/performance-pulsar-perf.md      |  2 +-
 .../version-2.10.0/reference-cli-tools.md          |  2 +-
 .../versioned_docs/version-2.10.0/schema-manage.md |  2 +-
 .../version-2.10.0/security-athenz.md              |  2 +-
 .../version-2.10.0/security-authorization.md       |  2 +-
 .../versioned_docs/version-2.10.0/security-jwt.md  | 22 ++++---
 .../version-2.10.0/security-tls-authentication.md  |  2 +-
 .../version-2.10.0/security-tls-keystore.md        |  4 +-
 .../version-2.10.0/security-tls-transport.md       |  2 +-
 .../sql-deployment-configurations.md               |  2 +-
 .../versioned_docs/version-2.10.0/sql-overview.md  |  2 +-
 .../version-2.10.0/tiered-storage-overview.md      |  6 +-
 .../versioned_docs/version-2.10.1/security-jwt.md  | 22 ++++---
 .../versioned_docs/version-2.8.0/security-jwt.md   | 12 ++--
 .../versioned_docs/version-2.8.1/security-jwt.md   | 12 ++--
 .../versioned_docs/version-2.8.2/security-jwt.md   | 12 ++--
 .../versioned_docs/version-2.8.3/security-jwt.md   | 12 ++--
 .../versioned_docs/version-2.9.0/security-jwt.md   | 12 ++--
 .../versioned_docs/version-2.9.1/security-jwt.md   | 12 ++--
 .../versioned_docs/version-2.9.2/security-jwt.md   | 12 ++--
 66 files changed, 223 insertions(+), 185 deletions(-)

diff --git a/site2/docs/client-libraries-cgo.md b/site2/docs/client-libraries-cgo.md
index 26f44fca9c9..a42a98757e1 100644
--- a/site2/docs/client-libraries-cgo.md
+++ b/site2/docs/client-libraries-cgo.md
@@ -4,7 +4,7 @@ title: Pulsar CGo client
 sidebar_label: "CGo(deprecated)"
 ---
 
-> The CGo client has been deprecated since version 2.7.0. If possible, use the [Go client](client-libraries-go) instead.
+> The CGo client has been deprecated since version 2.7.0. If possible, use the [Go client](client-libraries-go.md) instead.
 
 You can use Pulsar Go client to create Pulsar [producers](#producers), [consumers](#consumers), and [readers](#readers) in Go (aka Golang).
 
diff --git a/site2/docs/client-libraries-cpp.md b/site2/docs/client-libraries-cpp.md
index 99755ab88a5..2cbaf368d83 100644
--- a/site2/docs/client-libraries-cpp.md
+++ b/site2/docs/client-libraries-cpp.md
@@ -660,7 +660,7 @@ For complete examples, refer to [C++ client examples](https://github.com/apache/
 ## Schema
 
 This section describes some examples about schema. For more information about
-schema, see [Pulsar schema](schema-get-started).
+schema, see [Pulsar schema](schema-get-started.md).
 
 ### Avro schema
 
diff --git a/site2/docs/client-libraries-java.md b/site2/docs/client-libraries-java.md
index 71af800a6e4..690bd7e21ae 100644
--- a/site2/docs/client-libraries-java.md
+++ b/site2/docs/client-libraries-java.md
@@ -1392,7 +1392,7 @@ tv.forEach((key, value) -> /*operations on all existing messages*/)
 
 ## Schema
 
-In Pulsar, all message data consists of byte arrays "under the hood." [Message schemas](schema-get-started) enable you to use other types of data when constructing and handling messages (from simple types like strings to more complex, application-specific types). If you construct, say, a [producer](#producer) without specifying a schema, then the producer can only produce messages of type `byte[]`. The following is an example.
+In Pulsar, all message data consists of byte arrays "under the hood." [Message schemas](schema-get-started.md) enable you to use other types of data when constructing and handling messages (from simple types like strings to more complex, application-specific types). If you construct, say, a [producer](#producer) without specifying a schema, then the producer can only produce messages of type `byte[]`. The following is an example.
 
 ```java
 
diff --git a/site2/docs/client-libraries-websocket.md b/site2/docs/client-libraries-websocket.md
index 89434b2b611..6c84ba3d8ac 100644
--- a/site2/docs/client-libraries-websocket.md
+++ b/site2/docs/client-libraries-websocket.md
@@ -4,7 +4,7 @@ title: Pulsar WebSocket API
 sidebar_label: "WebSocket"
 ---
 
-Pulsar [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) API provides a simple way to interact with Pulsar using languages that do not have an official [client library](getting-started-clients). Through WebSocket, you can publish and consume messages and use features available on the [Client Features Matrix](https://github.com/apache/pulsar/wiki/Client-Features-Matrix) page.
+Pulsar [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) API provides a simple way to interact with Pulsar using languages that do not have an official [client library](getting-started-clients.md). Through WebSocket, you can publish and consume messages and use features available on the [Client Features Matrix](https://github.com/apache/pulsar/wiki/Client-Features-Matrix) page.
 
 
 > You can use Pulsar WebSocket API with any WebSocket client library. See examples for Python and Node.js [below](#client-examples).
diff --git a/site2/docs/concepts-messaging.md b/site2/docs/concepts-messaging.md
index 48c19c43454..131272fc57e 100644
--- a/site2/docs/concepts-messaging.md
+++ b/site2/docs/concepts-messaging.md
@@ -22,8 +22,8 @@ Messages are the basic "unit" of Pulsar. The following table lists the component
 
 Component | Description
 :---------|:-------
-Value / data payload | The data carried by the message. All Pulsar messages contain raw bytes, although message data can also conform to data [schemas](schema-get-started).
-Key | The key (string type) of the message. It is a short name of message key or partition key. Messages are optionally tagged with keys, which is useful for features like [topic compaction](concepts-topic-compaction).
+Value / data payload | The data carried by the message. All Pulsar messages contain raw bytes, although message data can also conform to data [schemas](schema-get-started.md).
+Key | The key (string type) of the message. It is a short name of message key or partition key. Messages are optionally tagged with keys, which is useful for features like [topic compaction](concepts-topic-compaction.md).
 Properties | An optional key/value map of user-defined properties.
 Producer name | The name of the producer who produces the message. If you do not specify a producer name, the default name is used. 
 Topic name | The name of the topic that the message is published to.
diff --git a/site2/docs/concepts-multi-tenancy.md b/site2/docs/concepts-multi-tenancy.md
index e340923988e..5d58b3c52d0 100644
--- a/site2/docs/concepts-multi-tenancy.md
+++ b/site2/docs/concepts-multi-tenancy.md
@@ -4,7 +4,7 @@ title: Multi Tenancy
 sidebar_label: "Multi Tenancy"
 ---
 
-Pulsar was created from the ground up as a multi-tenant system. To support multi-tenancy, Pulsar has a concept of tenants. Tenants can be spread across clusters and can each have their own [authentication and authorization](security-overview) scheme applied to them. They are also the administrative unit at which storage quotas, [message TTL](cookbooks-retention-expiry.md#time-to-live-ttl), and isolation policies can be managed.
+Pulsar was created from the ground up as a multi-tenant system. To support multi-tenancy, Pulsar has a concept of tenants. Tenants can be spread across clusters and can each have their own [authentication and authorization](security-overview.md) scheme applied to them. They are also the administrative unit at which storage quotas, [message TTL](cookbooks-retention-expiry.md#time-to-live-ttl), and isolation policies can be managed.
 
 The multi-tenant nature of Pulsar is reflected mostly visibly in topic URLs, which have this structure:
 
diff --git a/site2/docs/deploy-aws.md b/site2/docs/deploy-aws.md
index 1f86834cc22..60ac4c22d76 100644
--- a/site2/docs/deploy-aws.md
+++ b/site2/docs/deploy-aws.md
@@ -209,7 +209,7 @@ Remember to enter this command just only once. If you attempt to enter this comm
 
 Once you have created the necessary AWS resources using Terraform, you can install and run Pulsar on the Terraform-created EC2 instances using Ansible. 
 
-(Optional) If you want to use any [built-in IO connectors](io-connectors), edit the `Download Pulsar IO packages` task in the `deploy-pulsar.yaml` file and uncomment the connectors you want to use. 
+(Optional) If you want to use any [built-in IO connectors](io-connectors.md), edit the `Download Pulsar IO packages` task in the `deploy-pulsar.yaml` file and uncomment the connectors you want to use. 
 
 To run the playbook, enter this command:
 
diff --git a/site2/docs/deploy-bare-metal-multi-cluster.md b/site2/docs/deploy-bare-metal-multi-cluster.md
index 998f6e5647b..f7409e623a8 100644
--- a/site2/docs/deploy-bare-metal-multi-cluster.md
+++ b/site2/docs/deploy-bare-metal-multi-cluster.md
@@ -65,7 +65,7 @@ The Pulsar binary package initially contains the following directories:
 
 Directory | Contains
 :---------|:--------
-`bin` | [Command-line tools](reference-cli-tools) of Pulsar, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](/tools/pulsar-admin/)
+`bin` | [Command-line tools](reference-cli-tools.md) of Pulsar, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](/tools/pulsar-admin/)
 `conf` | Configuration files for Pulsar, including for [broker configuration](reference-configuration.md#broker), [ZooKeeper configuration](reference-configuration.md#zookeeper), and more
 `examples` | A Java JAR file containing example [Pulsar Functions](functions-overview.md)
 `lib` | The [JAR](https://en.wikipedia.org/wiki/JAR_(file_format)) files that Pulsar uses 
diff --git a/site2/docs/deploy-bare-metal.md b/site2/docs/deploy-bare-metal.md
index f13280a0493..266fbd4afe0 100644
--- a/site2/docs/deploy-bare-metal.md
+++ b/site2/docs/deploy-bare-metal.md
@@ -122,7 +122,7 @@ The extracted directory contains the following subdirectories:
 
 Directory | Contains
 :---------|:--------
-`bin` |[command-line tools](reference-cli-tools) of Pulsar, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](/tools/pulsar-admin/)
+`bin` |[command-line tools](reference-cli-tools.md) of Pulsar, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](/tools/pulsar-admin/)
 `conf` | Configuration files for Pulsar, including for [broker configuration](reference-configuration.md#broker), [ZooKeeper configuration](reference-configuration.md#zookeeper), and more
 `data` | The data storage directory that ZooKeeper and BookKeeper use
 `lib` | The [JAR](https://en.wikipedia.org/wiki/JAR_(file_format)) files that Pulsar uses
@@ -447,7 +447,7 @@ If you want to enable [Pulsar Functions](functions-overview.md), you can follow
    
    ```
 
-If you want to learn more options about deploying the functions worker, check out [Deploy and manage functions worker](functions-worker).
+If you want to learn more options about deploying the functions worker, check out [Deploy and manage functions worker](functions-worker.md).
 
 ### Start Brokers
 
diff --git a/site2/docs/functions-concepts.md b/site2/docs/functions-concepts.md
index a22bc9f9767..a758ce45f2c 100644
--- a/site2/docs/functions-concepts.md
+++ b/site2/docs/functions-concepts.md
@@ -118,14 +118,14 @@ Java, Python, and Go SDKs provide access to a **context object** that can be use
 * The key, event time, properties, and partition key of a message.
 * The name of the topic that a message is sent to.
 * The names of all input topics as well as the output topic associated with the function.
-* The name of the class used for [SerDe](functions-develop-serde).
+* The name of the class used for [SerDe](functions-develop-serde.md).
 * The tenant and namespace associated with the function.
 * The ID of the function instance running the function.
 * The version of the function.
-* The [logger object](functions-develop-log) used by the function, which is used to create log messages.
-* Access to arbitrary [user configuration](functions-develop-user-defined-configs) values supplied via the CLI.
-* An interface for recording [metrics](functions-develop-metrics).
-* An interface for storing and retrieving state in [state storage](functions-develop-state).
+* The [logger object](functions-develop-log.md) used by the function, which is used to create log messages.
+* Access to arbitrary [user configuration](functions-develop-user-defined-configs.md) values supplied via the CLI.
+* An interface for recording [metrics](functions-develop-metrics.md).
+* An interface for storing and retrieving state in [state storage](functions-develop-state.md).
 * A function to publish new messages onto arbitrary topics.
 * A function to acknowledge the message being processed (if auto-ack is disabled).
 * (Java) get Pulsar admin client.
diff --git a/site2/docs/functions-overview.md b/site2/docs/functions-overview.md
index d8054edb127..03cbd123127 100644
--- a/site2/docs/functions-overview.md
+++ b/site2/docs/functions-overview.md
@@ -27,7 +27,7 @@ A function receives messages from one or more **input topics**. Each time messag
 2. Applies a customized processing logic to the messages and:
     a) writes output messages to an **output topic** in Pulsar
     b) writes logs to a **log topic** if it is configured (for debugging purposes)
-    c) writes [state](functions-develop-state) to BookKeeper (if it is configured) 
+    c) writes [state](functions-develop-state.md) to BookKeeper (if it is configured) 
 
 
 You can write functions in Java, Python, and Go. For example, you can use Pulsar Functions to set up the following processing chain:
diff --git a/site2/docs/functions-runtime.md b/site2/docs/functions-runtime.md
index 67739377e7d..b827eb4182c 100644
--- a/site2/docs/functions-runtime.md
+++ b/site2/docs/functions-runtime.md
@@ -10,9 +10,9 @@ The following table outlines the supported programming languages for each type o
 
 | Function runtime                                   | Supported programming languages of functions |
 |----------------------------------------------------|----------------------------------------------|
-| [Thread runtime](functions-runtime-thread)         | Java                                         |
-| [Process runtime](functions-runtime-process)       | Java, Python, Go                             |
-| [Kubernetes runtime](functions-runtime-kubernetes) | Java, Python, Go                             |
+| [Thread runtime](functions-runtime-thread.md)         | Java                                         |
+| [Process runtime](functions-runtime-process.md)       | Java, Python, Go                             |
+| [Kubernetes runtime](functions-runtime-kubernetes.md) | Java, Python, Go                             |
 
 :::note
 
diff --git a/site2/docs/functions-worker-temp-file-path.md b/site2/docs/functions-worker-temp-file-path.md
index 5bc43874c75..197f07e047e 100644
--- a/site2/docs/functions-worker-temp-file-path.md
+++ b/site2/docs/functions-worker-temp-file-path.md
@@ -10,5 +10,5 @@ If you want to change the default extraction file path for NAR packages to anoth
 
 | Function runtime | Configuration for temporary file path |
 |:------------------------|:-------------------------------------------------|
-| [Thread runtime](functions-runtime-thread.md)<br /> [Process runtime](functions-runtime-process) | `narExtractionDirectory` |
-| [Kubernetes runtime](functions-runtime-kubernetes) | `functionRuntimeFactoryConfigs.narExtractionDirectory` |
+| [Thread runtime](functions-runtime-thread.md)<br /> [Process runtime](functions-runtime-process.md) | `narExtractionDirectory` |
+| [Kubernetes runtime](functions-runtime-kubernetes.md) | `functionRuntimeFactoryConfigs.narExtractionDirectory` |
diff --git a/site2/docs/getting-started-docker.md b/site2/docs/getting-started-docker.md
index bd0bc529d96..c78ac7bccc1 100644
--- a/site2/docs/getting-started-docker.md
+++ b/site2/docs/getting-started-docker.md
@@ -47,7 +47,8 @@ After starting Pulsar successfully, you can see `INFO`-level log messages like t
 
 :::tip
 
-When you start a local standalone cluster, a `public/default` namespace is created automatically. The namespace is used for development purposes. All Pulsar topics are managed within namespaces. For more information, see [Topics](concepts-messaging.md#topics).
+* To perform a health check, you can use the `bin/pulsar-admin brokers healthcheck` command. For more information, see [Pulsar-admin docs](/tools/pulsar-admin/).
+* When you start a local standalone cluster, a `public/default` namespace is created automatically. The namespace is used for development purposes. All Pulsar topics are managed within namespaces. For more information, see [Topics](concepts-messaging.md#topics).
 
 :::
 
diff --git a/site2/docs/getting-started-helm.md b/site2/docs/getting-started-helm.md
index 0290491c740..6560fef606e 100644
--- a/site2/docs/getting-started-helm.md
+++ b/site2/docs/getting-started-helm.md
@@ -85,7 +85,7 @@ We use [Minikube](https://minikube.sigs.k8s.io/docs/start/) in this quick start
    
    ```
 
-3. Run the script `prepare_helm_release.sh` to create secrets required for installing the Apache Pulsar Helm chart. The username `pulsar` and password `pulsar` are used for logging into the Grafana dashboard and Pulsar Manager.
+3. Run the script `prepare_helm_release.sh` to create the secrets required for installing the Apache Pulsar Helm chart. The username `pulsar` and password `pulsar` are used for logging into the Grafana dashboard and Pulsar Manager.
 
    :::note
 
@@ -184,6 +184,12 @@ We use [Minikube](https://minikube.sigs.k8s.io/docs/start/) in this quick start
    
    ```
 
+   :::tip
+
+   To perform a health check, you can use the `bin/pulsar-admin brokers healthcheck` command. For more information, see [Pulsar-admin docs](/tools/pulsar-admin/).
+
+   :::
+
 2. In the `toolset` container, create a tenant named `apache`.
 
    ```bash
@@ -422,12 +428,12 @@ Then you can proceed with the following steps:
 
 3. In Pulsar Manager UI, you can create an environment. 
 
-   - Click `New Environment` button in the top-left corner.
-   - Type `pulsar-mini` for the field `Environment Name` in the popup window.
-   - Type `http://pulsar-mini-broker:8080` for the field `Service URL` in the popup window.
-   - Click `Confirm` button in the popup window.
+   - Click **New Environment** in the upper-left corner.
+   - Type `pulsar-mini` for the field `Environment Name` in the pop-up window.
+   - Type `http://pulsar-mini-broker:8080` for the field `Service URL` in the pop-up window.
+   - Click **Confirm** in the pop-up window.
 
-4. After successfully creating an environment, you are redirected to the `tenants` page of that environment. Then you can create `tenants`, `namespaces` and `topics` using the Pulsar Manager.
+4. After successfully creating an environment, you are redirected to the `tenants` page of that environment. Then you can create `tenants`, `namespaces`, and `topics` using the Pulsar Manager.
 
 ## Step 5: Use Prometheus and Grafana to monitor cluster
 
diff --git a/site2/docs/getting-started-standalone.md b/site2/docs/getting-started-standalone.md
index 2426bb21330..41997d43a66 100644
--- a/site2/docs/getting-started-standalone.md
+++ b/site2/docs/getting-started-standalone.md
@@ -16,11 +16,11 @@ This tutorial guides you through every step of installing Pulsar locally.
 ### System requirements
 
 Currently, Pulsar is available for 64-bit **macOS**, **Linux**, and **Windows**. To use Pulsar, you need to install 64-bit JRE/JDK.
-For the runtime Java version, please refer to [Pulsar Runtime Java Version Recommendation](https://github.com/apache/pulsar/blob/master/README.md#pulsar-runtime-java-version-recommendation) according to your target Pulsar version.
+For the runtime Java version, see [Pulsar Runtime Java Version Recommendation](https://github.com/apache/pulsar/blob/master/README.md#pulsar-runtime-java-version-recommendation) according to your target Pulsar version.
 
 :::tip
 
-By default, Pulsar allocates 2G JVM heap memory to start. It can be changed in `conf/pulsar_env.sh` file under `PULSAR_MEM`. This is extra options passed into JVM. 
+By default, Pulsar allocates 2G JVM heap memory to start. It can be changed in `conf/pulsar_env.sh` file under `PULSAR_MEM`. This is an extra option passed into JVM. 
 
 :::
 
@@ -137,14 +137,14 @@ Directory | Contains
 
 :::tip
 
-If you want to use builtin connectors and tiered storage offloaders, you can install them according to the following instructions:
-* [Install builtin connectors (optional)](#install-builtin-connectors-optional)
+If you want to use built-in connectors and tiered storage offloaders, you can install them according to the following instructions:
+* [Install built-in connectors (optional)](#install-builtin-connectors-optional)
 * [Install tiered storage offloaders (optional)](#install-tiered-storage-offloaders-optional)
 Otherwise, skip this step and perform the next step [Start Pulsar standalone](#start-pulsar-standalone). Pulsar can be successfully installed without installing bulitin connectors and tiered storage offloaders.
 
 :::
 
-### Install builtin connectors (optional)
+### Install built-in connectors (optional)
 
 Since `2.1.0-incubating` release, Pulsar releases a separate binary distribution, containing all the `builtin` connectors.
 To enable those `builtin` connectors, you can download the connectors tarball release in one of the following ways:
@@ -163,7 +163,7 @@ To enable those `builtin` connectors, you can download the connectors tarball re
   
   ```
 
-After you download the nar file, copy the file to the `connectors` directory in the pulsar directory. 
+After you download the NAR file, copy the file to the `connectors` directory in the pulsar directory. 
 For example, if you download the `pulsar-io-aerospike-@pulsar:version@.nar` connector file, enter the following commands:
 
 ```bash
@@ -189,7 +189,7 @@ pulsar-io-aerospike-@pulsar:version@.nar
 :::tip
 
 - Since `2.2.0` release, Pulsar releases a separate binary distribution, containing the tiered storage offloaders.
-- To enable tiered storage feature, follow the instructions below; otherwise skip this section.
+- To enable the tiered storage feature, follow the instructions below; otherwise skip this section.
 
 :::
 
@@ -257,16 +257,14 @@ If you have started Pulsar successfully, you will see `INFO`-level log messages
 
 :::tip
 
-* The service is running on your terminal, which is under your direct control. If you need to run other commands, open a new terminal window.  
+* The service is running on your terminal, which is under your direct control. If you need to run other commands, open a new terminal window. 
+* To run the service as a background process, you can use the `bin/pulsar-daemon start standalone` command. For more information, see [pulsar-daemon](/docs/en/reference-cli-tools/#pulsar-daemon).
+* To perform a health check, you can use the `bin/pulsar-admin brokers healthcheck` command. For more information, see [Pulsar-admin docs](/tools/pulsar-admin/).
+* When you start a local standalone cluster, a `public/default` [namespace](concepts-messaging.md#namespaces) is created automatically. The namespace is used for development purposes. All Pulsar topics are managed within namespaces. For more information, see [Topics](concepts-messaging.md#topics).
+* By default, there is no encryption, authentication, or authorization configured. Apache Pulsar can be accessed from a remote server without any authorization. See [Security Overview](security-overview.md) for how to secure your deployment. 
 
 :::
 
-You can also run the service as a background process using the `bin/pulsar-daemon start standalone` command. For more information, see [pulsar-daemon](/docs/en/reference-cli-tools/#pulsar-daemon).
-> 
-> * By default, there is no encryption, authentication, or authorization configured. Apache Pulsar can be accessed from remote server without any authorization. Please do check [Security Overview](security-overview.md) document to secure your deployment.
->
-> * When you start a local standalone cluster, a `public/default` [namespace](concepts-messaging.md#namespaces) is created automatically. The namespace is used for development purposes. All Pulsar topics are managed within namespaces. For more information, see [Topics](concepts-messaging.md#topics).
-
 ## Use Pulsar standalone
 
 Pulsar provides a CLI tool called [`pulsar-client`](reference-cli-tools.md#pulsar-client). The pulsar-client tool enables you to consume and produce messages to a Pulsar topic in a running cluster. 
@@ -291,7 +289,7 @@ If the message has been successfully consumed, you will see a confirmation like
 
 :::tip
 
-As you have noticed that we do not explicitly create the `my-topic` topic, to which we consume the message. When you consume a message to a topic that does not yet exist, Pulsar creates that topic for you automatically. Producing a message to a topic that does not exist will automatically create that topic for you as well.
+As you have noticed that we do not explicitly create the `my-topic` topic, to which we consume the message. When you consume a message on a topic that does not yet exist, Pulsar creates that topic for you automatically. Producing a message to a topic that does not exist will automatically create that topic for you as well.
 
 :::
 
diff --git a/site2/docs/io-cdc.md b/site2/docs/io-cdc.md
index df373977e3e..a3527dc0a9d 100644
--- a/site2/docs/io-cdc.md
+++ b/site2/docs/io-cdc.md
@@ -12,8 +12,8 @@ Currently, Pulsar has the following CDC connectors.
 
 Name|Java Class
 |---|---
-[Canal source connector](io-canal-source)|[org.apache.pulsar.io.canal.CanalStringSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/canal/src/main/java/org/apache/pulsar/io/canal/CanalStringSource.java)
-[Debezium source connector](io-cdc-debezium)|<li>[org.apache.pulsar.io.debezium.DebeziumSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/core/src/main/java/org/apache/pulsar/io/debezium/DebeziumSource.java)<br /></li><li>[org.apache.pulsar.io.debezium.mysql.DebeziumMysqlSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/java/org/apache/pulsar/io/debezium/mysql/DebeziumMysqlSource.java)<br /></li><li>[org.apache.pulsar.i [...]
+[Canal source connector](io-canal-source.md)|[org.apache.pulsar.io.canal.CanalStringSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/canal/src/main/java/org/apache/pulsar/io/canal/CanalStringSource.java)
+[Debezium source connector](io-cdc-debezium.md)|<li>[org.apache.pulsar.io.debezium.DebeziumSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/core/src/main/java/org/apache/pulsar/io/debezium/DebeziumSource.java)<br /></li><li>[org.apache.pulsar.io.debezium.mysql.DebeziumMysqlSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/java/org/apache/pulsar/io/debezium/mysql/DebeziumMysqlSource.java)<br /></li><li>[org.apache.pulsa [...]
 
 For more information about Canal and Debezium, see the information below.
 
diff --git a/site2/docs/io-develop.md b/site2/docs/io-develop.md
index 5ad21337f9c..d361a302b25 100644
--- a/site2/docs/io-develop.md
+++ b/site2/docs/io-develop.md
@@ -305,7 +305,7 @@ For more information about **how NAR works**, see [here](https://medium.com/hash
 
 :::
 
-Pulsar uses the same mechanism for packaging **all** [built-in connectors](io-connectors). 
+Pulsar uses the same mechanism for packaging **all** [built-in connectors](io-connectors.md). 
 
 The easiest approach to package a Pulsar connector is to create a NAR package using [nifi-nar-maven-plugin](https://mvnrepository.com/artifact/org.apache.nifi/nifi-nar-maven-plugin).
 
diff --git a/site2/docs/io-quickstart.md b/site2/docs/io-quickstart.md
index 143670ee522..e856926d8ff 100644
--- a/site2/docs/io-quickstart.md
+++ b/site2/docs/io-quickstart.md
@@ -108,7 +108,7 @@ This section demonstrates how to connect Pulsar to Cassandra.
 :::tip
 
 * Make sure you have Docker installed. If you do not have one, see [install Docker](https://docs.docker.com/docker-for-mac/install/).
-* The Cassandra sink connector reads messages from Pulsar topics and writes the messages into Cassandra tables. For more information, see [Cassandra sink connector](io-cassandra-sink).
+* The Cassandra sink connector reads messages from Pulsar topics and writes the messages into Cassandra tables. For more information, see [Cassandra sink connector](io-cassandra-sink.md).
 
 :::
 
@@ -235,7 +235,7 @@ You can create a configuration file through one of the following methods.
   
   ```
 
-For more information, see [Cassandra sink connector](io-cassandra-sink).
+For more information, see [Cassandra sink connector](io-cassandra-sink.md).
 
 ### Create a Cassandra sink
 
@@ -454,7 +454,7 @@ This section demonstrates how to connect Pulsar to PostgreSQL.
 :::
 
 and persists the messages to ClickHouse, MariaDB, PostgreSQL, or SQlite. 
->For more information, see [JDBC sink connector](io-jdbc-sink).
+>For more information, see [JDBC sink connector](io-jdbc-sink.md).
 
 
 ### Setup a PostgreSQL cluster
diff --git a/site2/docs/reference-cli-tools.md b/site2/docs/reference-cli-tools.md
index 4678cd59724..31507444676 100644
--- a/site2/docs/reference-cli-tools.md
+++ b/site2/docs/reference-cli-tools.md
@@ -809,7 +809,7 @@ Options
 
 ### `transaction`
 
-Run a transaction. For more information, see [Pulsar transactions](txn-why).
+Run a transaction. For more information, see [Pulsar transactions](txn-why.md).
 
 **Usage**
 
diff --git a/site2/docs/security-authorization.md b/site2/docs/security-authorization.md
index 28cf57abdc6..0111b1cd995 100644
--- a/site2/docs/security-authorization.md
+++ b/site2/docs/security-authorization.md
@@ -14,7 +14,7 @@ When a superuser creates a [tenant](reference-terminology.md#tenant), that tenan
 ## Broker and Proxy Setup
 
 ### Enable authorization and assign superusers
-You can enable the authorization and assign the superusers in the broker ([`conf/broker.conf`](reference-configuration.md#broker)) configuration files.
+You can enable the authorization and assign the superusers in the broker ([`conf/broker.conf`](reference-configuration.md#broker) or `conf/standalone.conf`) configuration files.
 
 ```properties
 
@@ -23,7 +23,7 @@ superUserRoles=my-super-user-1,my-super-user-2
 
 ```
 
-> A full list of parameters is available in the `conf/broker.conf` file.
+> A full list of parameters is available in the `conf/broker.conf` or `conf/standalone.conf` file.
 > You can also find the default values for those parameters in [Broker Configuration](reference-configuration.md#broker). 
 
 Typically, you use superuser roles for administrators, clients as well as broker-to-broker authorization. When you use [geo-replication](concepts-replication.md), every broker needs to be able to publish to all the other topics of clusters.
diff --git a/site2/docs/security-jwt.md b/site2/docs/security-jwt.md
index ac393284175..01b03dc85f3 100644
--- a/site2/docs/security-jwt.md
+++ b/site2/docs/security-jwt.md
@@ -19,7 +19,7 @@ is permitted to do some actions (eg: publish to a topic or consume from a topic)
 
 A user typically gets a token string from the administrator (or some automated service).
 
-The compact representation of a signed JWT is a string that looks like as the following:
+The compact representation of a signed JWT is a string that looks like the following:
 
 ```
 
@@ -29,9 +29,11 @@ eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKb2UifQ.ipevRNuRP6HflG8cFKnmUPtypruRC4fb1DWtoLL6
 
 Application specifies the token when you create the client instance. An alternative is to pass a "token supplier" (a function that returns the token when the client library needs one).
 
-> #### Always use TLS transport encryption
-> Sending a token is equivalent to sending a password over the wire. You had better use TLS encryption all the time when you connect to the Pulsar service. See
-> [Transport Encryption using TLS](security-tls-transport.md) for more details.
+:::note
+
+Always use TLS transport encryption when you connect to the Pulsar service, because sending a token is equivalent to sending a password over the wire. See [Transport Encryption using TLS](security-tls-transport.md) for more details.
+
+:::
 
 ### CLI Tools
 
@@ -174,11 +176,9 @@ var client = PulsarClient.Builder()
 
 ## Enable token authentication 
 
-On how to enable token authentication on a Pulsar cluster, you can refer to the guide below.
-
 JWT supports two different kinds of keys in order to generate and validate the tokens:
 
- * Symmetric :
+ * Symmetric:
     - You can use a single ***Secret*** key to generate and validate tokens.
  * Asymmetric: A pair of keys consists of the Private key and the Public key.
     - You can use ***Private*** key to generate tokens.
@@ -188,7 +188,7 @@ JWT supports two different kinds of keys in order to generate and validate the t
 
 When you use a secret key, the administrator creates the key and uses the key to generate the client tokens. You can also configure this key to brokers in order to validate the clients.
 
-Output file is generated in the root of your Pulsar installation directory. You can also provide absolute path for the output file using the command below.
+The output file is generated in the root of your Pulsar installation directory. You can also provide an absolute path for the output file using the command below.
 
 ```shell
 
@@ -196,7 +196,7 @@ $ bin/pulsar tokens create-secret-key --output my-secret.key
 
 ```
 
-Enter this command to generate base64 encoded private key.
+Enter this command to generate a base64 encoded private key.
 
 ```shell
 
@@ -208,7 +208,7 @@ $ bin/pulsar tokens create-secret-key --output  /opt/my-secret.key --base64
 
 With Public and Private keys, you need to create a pair of keys. Pulsar supports all algorithms that the Java JWT library (shown [here](https://github.com/jwtk/jjwt#signature-algorithms-keys)) supports.
 
-Output file is generated in the root of your Pulsar installation directory. You can also provide absolute path for the output file using the command below.
+The output file is generated in the root of your Pulsar installation directory. You can also provide an absolute path for the output file using the command below.
 
 ```shell
 
@@ -221,7 +221,7 @@ $ bin/pulsar tokens create-key-pair --output-private-key my-private.key --output
 
 ### Generate tokens
 
-A token is the credential associated with a user. The association is done through the "principal" or "role". In the case of JWT tokens, this field is typically referred as **subject**, though they are exactly the same concept.
+A token is a credential associated with a user. The association is done through the "principal" or "role". In the case of JWT tokens, this field is typically referred as **subject**, though they are exactly the same concept.
 
 Then, you need to use this command to require the generated token to have a **subject** field set.
 
@@ -253,35 +253,30 @@ $ bin/pulsar tokens create --secret-key file:///path/to/my-secret.key \
 
 ```
 
-### Authorization
-
-The token itself does not have any permission associated. The authorization engine determines whether the token should have permissions or not. Once you have created the token, you can grant permission for this token to do certain actions. The following is an example.
-
-```shell
+:::tip
 
-$ bin/pulsar-admin namespaces grant-permission my-tenant/my-namespace \
-            --role test-user \
-            --actions produce,consume
+The token itself does not have any permission associated. The authorization engine determines whether the token can have permissions or not. You need to [enable authorization and assign superusers](security-authorization.md#enable-authorization-and-assign-superusers), and then use the `bin/pulsar-admin namespaces grant-permission` command to grant permissions for tokens.
 
-```
+:::
 
 ### Enable token authentication on Brokers
 
-To configure brokers to authenticate clients, add the following parameters to `broker.conf`:
+To configure brokers to authenticate clients, add the following parameters to the `conf/broker.conf` or `conf/standalone.conf` file.
 
 ```properties
 
-# Configuration to enable authentication and authorization
+# Configuration to enable authentication
 authenticationEnabled=true
-authorizationEnabled=true
 authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
 
 # Authentication settings of the broker itself. Used when the broker connects to other brokers, either in same or other clusters
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}    
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -298,29 +293,31 @@ tokenSecretKey=file:///path/to/secret.key
 
 ```
 
-### Enable token authentication on Proxies
+:::note
+
+Equivalent to `brokerClientAuthenticationParameters`, you need to configure `authParams` in the `conf/client.conf` file. 
 
-To configure proxies to authenticate clients, add the following parameters to `proxy.conf`:
+:::
 
-The proxy uses its own token when connecting to brokers. You need to configure the role token for this key pair in the `proxyRoles` of the brokers. For more details, see the [authorization guide](security-authorization.md).
+### Enable token authentication on Proxies
+
+To configure proxies to authenticate clients, add the following parameters to the `conf/proxy.conf` file.
 
 ```properties
 
 # For clients connecting to the proxy
 authenticationEnabled=true
-authorizationEnabled=true
 authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
 tokenSecretKey=file:///path/to/secret.key
 
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
-
-# Whether client authorization credentials are forwarded to the broker for re-authorization.
-# Authentication must be enabled via authenticationEnabled=true for this to take effect.
-forwardAuthorizationCredentials=true
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 ```
 
+The proxy uses its own token when connecting to brokers. You need to configure the role token for this key pair in the `proxyRoles` of the brokers. For more details, see [authorization](security-authorization.md).
diff --git a/site2/docs/security-tls-keystore.md b/site2/docs/security-tls-keystore.md
index ffa25948aeb..d655290a2cb 100644
--- a/site2/docs/security-tls-keystore.md
+++ b/site2/docs/security-tls-keystore.md
@@ -183,7 +183,7 @@ This is similar to [TLS encryption configuing for client with PEM type](security
 For a minimal configuration, you need to provide the TrustStore information.
 
 For example:
-1. for [Command-line tools](reference-cli-tools) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+1. for [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
 
    ```properties
    
@@ -278,7 +278,7 @@ webSocketServiceEnabled=false
 Besides the TLS encryption configuring. The main work is configuring the KeyStore, which contains a valid CN as client role, for client.
 
 For example:
-1. for [Command-line tools](reference-cli-tools) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+1. for [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
 
    ```properties
    
diff --git a/site2/docs/security-tls-transport.md b/site2/docs/security-tls-transport.md
index 897665532e1..7f127f38a21 100644
--- a/site2/docs/security-tls-transport.md
+++ b/site2/docs/security-tls-transport.md
@@ -146,7 +146,7 @@ At this point, you have a cert, `broker.cert.pem`, and a key, `broker.key-pk8.pe
 
 ## Configure broker
 
-To configure a Pulsar [broker](reference-terminology.md#broker) to use TLS transport encryption, you need to make some changes to `broker.conf`, which locates in the `conf` directory of your [Pulsar installation](getting-started-standalone).
+To configure a Pulsar [broker](reference-terminology.md#broker) to use TLS transport encryption, you need to make some changes to `broker.conf`, which locates in the `conf` directory of your [Pulsar installation](getting-started-standalone.md).
 
 Add these values to the configuration file (substituting the appropriate certificate paths where necessary):
 
@@ -219,7 +219,7 @@ The examples below show that hostname verification is disabled for the CLI tools
 
 ### CLI tools
 
-[Command-line tools](reference-cli-tools) like [`pulsar-admin`](reference-cli-tools.md#pulsar-admin), [`pulsar-perf`](reference-cli-tools.md#pulsar-perf), and [`pulsar-client`](reference-cli-tools.md#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools.md#pulsar-admin), [`pulsar-perf`](reference-cli-tools.md#pulsar-perf), and [`pulsar-client`](reference-cli-tools.md#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
 
 You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:
 
diff --git a/site2/docs/sql-deployment-configurations.md b/site2/docs/sql-deployment-configurations.md
index 1666414460b..850d5053036 100644
--- a/site2/docs/sql-deployment-configurations.md
+++ b/site2/docs/sql-deployment-configurations.md
@@ -172,7 +172,7 @@ Since Pulsar SQL is powered by [Trino (formerly Presto SQL)](https://trino.io),
 
 :::note
 
-For how to set up a standalone single node environment, refer to [Query data](sql-getting-started). 
+For how to set up a standalone single node environment, refer to [Query data](sql-getting-started.md). 
 
 :::
 
diff --git a/site2/docs/sql-overview.md b/site2/docs/sql-overview.md
index 2f827f42679..ba531862749 100644
--- a/site2/docs/sql-overview.md
+++ b/site2/docs/sql-overview.md
@@ -4,7 +4,7 @@ title: Pulsar SQL Overview
 sidebar_label: "Overview"
 ---
 
-Apache Pulsar is used to store streams of event data, and the event data is structured with predefined fields. With the implementation of the [Schema Registry](schema-get-started), you can store structured data in Pulsar and query the data by using [Trino (formerly Presto SQL)](https://trino.io/).
+Apache Pulsar is used to store streams of event data, and the event data is structured with predefined fields. With the implementation of the [Schema Registry](schema-get-started.md), you can store structured data in Pulsar and query the data by using [Trino (formerly Presto SQL)](https://trino.io/).
 
 As the core of Pulsar SQL, Presto Pulsar connector enables Presto workers within a Presto cluster to query data from Pulsar.
 
diff --git a/site2/docs/tiered-storage-overview.md b/site2/docs/tiered-storage-overview.md
index caed660527e..8156f35444a 100644
--- a/site2/docs/tiered-storage-overview.md
+++ b/site2/docs/tiered-storage-overview.md
@@ -12,15 +12,15 @@ Pulsar's **Tiered Storage** feature allows older backlog data to be moved from B
 
   :::tip
 
-  - For more information about how to use the AWS S3 offloader with Pulsar, see [here](tiered-storage-aws).
+  - For more information about how to use the AWS S3 offloader with Pulsar, see [here](tiered-storage-aws.md).
   
-  - For more information about how to use the GCS offloader with Pulsar, see [here](tiered-storage-gcs).
+  - For more information about how to use the GCS offloader with Pulsar, see [here](tiered-storage-gcs.md).
   
-  - For more information about how to use the Azure offloader with Pulsar, see [here](tiered-storage-azure).
+  - For more information about how to use the Azure offloader with Pulsar, see [here](tiered-storage-azure.md).
   
-  - For more information about how to use the Aliyun OSS offloader with Pulsar, see [here](tiered-storage-aliyun).
+  - For more information about how to use the Aliyun OSS offloader with Pulsar, see [here](tiered-storage-aliyun.md).
 
-  - For more information about how to use the S3 offloader with Pulsar, see [here](tiered-storage-s3).
+  - For more information about how to use the S3 offloader with Pulsar, see [here](tiered-storage-s3.md).
 
   :::
 
@@ -30,7 +30,7 @@ Pulsar's **Tiered Storage** feature allows older backlog data to be moved from B
 
   :::tip
 
-  For more information about how to use the filesystem offloader with Pulsar, see [here](tiered-storage-filesystem).
+  For more information about how to use the filesystem offloader with Pulsar, see [here](tiered-storage-filesystem.md).
 
   :::
 
diff --git a/site2/website/versioned_docs/version-2.10.0/admin-api-brokers.md b/site2/website/versioned_docs/version-2.10.0/admin-api-brokers.md
index 89255b7f85e..9aeeea1a904 100644
--- a/site2/website/versioned_docs/version-2.10.0/admin-api-brokers.md
+++ b/site2/website/versioned_docs/version-2.10.0/admin-api-brokers.md
@@ -176,7 +176,7 @@ One way to configure a Pulsar [broker](reference-terminology.md#broker) is to su
 
 But since all broker configuration in Pulsar is stored in ZooKeeper, configuration values can also be dynamically updated *while the broker is running*. When you update broker configuration dynamically, ZooKeeper will notify the broker of the change and the broker will then override any existing configuration values.
 
-* The [`brokers`](reference-pulsar-admin.md#brokers) command for the [`pulsar-admin`](reference-pulsar-admin) tool has a variety of subcommands that enable you to manipulate a broker's configuration dynamically, enabling you to [update config values](#update-dynamic-configuration) and more.
+* The [`brokers`](reference-pulsar-admin.md#brokers) command for the [`pulsar-admin`](reference-pulsar-admin.md) tool has a variety of subcommands that enable you to manipulate a broker's configuration dynamically, enabling you to [update config values](#update-dynamic-configuration) and more.
 * In the Pulsar admin {@inject: rest:REST:/} API, dynamic configuration is managed through the `/admin/v2/brokers/configuration` endpoint.
 
 ### Update dynamic configuration
diff --git a/site2/website/versioned_docs/version-2.10.0/administration-pulsar-manager.md b/site2/website/versioned_docs/version-2.10.0/administration-pulsar-manager.md
index 99324099fad..c73ef8a270b 100644
--- a/site2/website/versioned_docs/version-2.10.0/administration-pulsar-manager.md
+++ b/site2/website/versioned_docs/version-2.10.0/administration-pulsar-manager.md
@@ -132,7 +132,7 @@ The request parameter in curl command:
 
 
 ### Configure the environment
-1. Login to the system, Visit http://localhost:9527 to login.  The current default account is  `admin/apachepulsar`
+1. Login to the system, Visit http://localhost:9527 to login. The current default account is  `admin/apachepulsar`
 
 2. Click "New Environment" button to add an environment.
 
@@ -146,7 +146,7 @@ The request parameter in curl command:
 
 When using binary packages for direct deployment, you can follow these steps.
 
-- Download and unzip the binary package, which is available on the [Pulsar Download](download) page.
+- Download and unzip the binary package, which is available on the [Pulsar Download](/download) page.
 
   ```bash
   
diff --git a/site2/website/versioned_docs/version-2.10.0/client-libraries-cpp.md b/site2/website/versioned_docs/version-2.10.0/client-libraries-cpp.md
index 8a2d4977a94..75b35ec97bb 100644
--- a/site2/website/versioned_docs/version-2.10.0/client-libraries-cpp.md
+++ b/site2/website/versioned_docs/version-2.10.0/client-libraries-cpp.md
@@ -658,7 +658,7 @@ For complete examples, refer to [C++ client examples](https://github.com/apache/
 ## Schema
 
 This section describes some examples about schema. For more information about
-schema, see [Pulsar schema](schema-get-started).
+schema, see [Pulsar schema](schema-get-started.md).
 
 ### Avro schema
 
diff --git a/site2/website/versioned_docs/version-2.10.0/client-libraries-java.md b/site2/website/versioned_docs/version-2.10.0/client-libraries-java.md
index c429c69700f..e126f3fb248 100644
--- a/site2/website/versioned_docs/version-2.10.0/client-libraries-java.md
+++ b/site2/website/versioned_docs/version-2.10.0/client-libraries-java.md
@@ -1331,7 +1331,7 @@ tv.forEach((key, value) -> /*operations on all existing messages*/)
 
 ## Schema
 
-In Pulsar, all message data consists of byte arrays "under the hood." [Message schemas](schema-get-started) enable you to use other types of data when constructing and handling messages (from simple types like strings to more complex, application-specific types). If you construct, say, a [producer](#producer) without specifying a schema, then the producer can only produce messages of type `byte[]`. The following is an example.
+In Pulsar, all message data consists of byte arrays "under the hood." [Message schemas](schema-get-started.md) enable you to use other types of data when constructing and handling messages (from simple types like strings to more complex, application-specific types). If you construct, say, a [producer](#producer) without specifying a schema, then the producer can only produce messages of type `byte[]`. The following is an example.
 
 ```java
 
@@ -1515,7 +1515,7 @@ PulsarClient client = PulsarClient.builder()
 
 ### Oauth2
 
-The following example shows how to use [Oauth2](security-oauth2) as an authentication provider for the Pulsar Java client.
+The following example shows how to use [Oauth2](security-oauth2.md) as an authentication provider for the Pulsar Java client.
 
 You can use the factory method to configure authentication for Pulsar Java client.
 
diff --git a/site2/website/versioned_docs/version-2.10.0/concepts-architecture-overview.md b/site2/website/versioned_docs/version-2.10.0/concepts-architecture-overview.md
index 5e09b172fb6..5f2fb2ea991 100644
--- a/site2/website/versioned_docs/version-2.10.0/concepts-architecture-overview.md
+++ b/site2/website/versioned_docs/version-2.10.0/concepts-architecture-overview.md
@@ -5,7 +5,7 @@ sidebar_label: "Architecture"
 original_id: concepts-architecture-overview
 ---
 
-At the highest level, a Pulsar instance is composed of one or more Pulsar clusters. Clusters within an instance can [replicate](concepts-replication) data amongst themselves.
+At the highest level, a Pulsar instance is composed of one or more Pulsar clusters. Clusters within an instance can [replicate](concepts-replication.md) data amongst themselves.
 
 In a Pulsar cluster:
 
diff --git a/site2/website/versioned_docs/version-2.10.0/concepts-messaging.md b/site2/website/versioned_docs/version-2.10.0/concepts-messaging.md
index bf7c9d6e084..b1d1483232e 100644
--- a/site2/website/versioned_docs/version-2.10.0/concepts-messaging.md
+++ b/site2/website/versioned_docs/version-2.10.0/concepts-messaging.md
@@ -23,7 +23,7 @@ Messages are the basic "unit" of Pulsar. The following table lists the component
 
 Component | Description
 :---------|:-------
-Value / data payload | The data carried by the message. All Pulsar messages contain raw bytes, although message data can also conform to data [schemas](schema-get-started).
+Value / data payload | The data carried by the message. All Pulsar messages contain raw bytes, although message data can also conform to data [schemas](schema-get-started.md).
 Key | Messages are optionally tagged with keys, which is useful for things like [topic compaction](concepts-topic-compaction.md).
 Properties | An optional key/value map of user-defined properties.
 Producer name | The name of the producer who produces the message. If you do not specify a producer name, the default name is used. 
diff --git a/site2/website/versioned_docs/version-2.10.0/cookbooks-compaction.md b/site2/website/versioned_docs/version-2.10.0/cookbooks-compaction.md
index 0a3623381db..82ded8081e4 100644
--- a/site2/website/versioned_docs/version-2.10.0/cookbooks-compaction.md
+++ b/site2/website/versioned_docs/version-2.10.0/cookbooks-compaction.md
@@ -45,7 +45,7 @@ Configuring the compaction threshold on a namespace will apply to all topics wit
 
 ## Triggering compaction manually
 
-In order to run compaction on a topic, you need to use the [`topics compact`](reference-pulsar-admin.md#topics-compact) command for the [`pulsar-admin`](reference-pulsar-admin) CLI tool. Here's an example:
+In order to run compaction on a topic, you need to use the [`topics compact`](reference-pulsar-admin.md#topics-compact) command for the [`pulsar-admin`](reference-pulsar-admin.md) CLI tool. Here's an example:
 
 ```bash
 
diff --git a/site2/website/versioned_docs/version-2.10.0/cookbooks-non-persistent.md b/site2/website/versioned_docs/version-2.10.0/cookbooks-non-persistent.md
index 6f3fff8a75d..178301e86eb 100644
--- a/site2/website/versioned_docs/version-2.10.0/cookbooks-non-persistent.md
+++ b/site2/website/versioned_docs/version-2.10.0/cookbooks-non-persistent.md
@@ -55,7 +55,7 @@ If you'd like to enable *only* non-persistent topics in a broker, you can set th
 
 ## Managing with cli
 
-Non-persistent topics can be managed using the [`pulsar-admin non-persistent`](reference-pulsar-admin.md#non-persistent) command-line interface. With that interface you can perform actions like [create a partitioned non-persistent topic](reference-pulsar-admin.md#non-persistent-create-partitioned-topic), get [stats](reference-pulsar-admin.md#non-persistent-stats) for a non-persistent topic, [list](reference-pulsar-admin) non-persistent topics under a namespace, and more.
+Non-persistent topics can be managed using the [`pulsar-admin non-persistent`](reference-pulsar-admin.md#non-persistent) command-line interface. With that interface you can perform actions like [create a partitioned non-persistent topic](reference-pulsar-admin.md#non-persistent-create-partitioned-topic), get [stats](reference-pulsar-admin.md#non-persistent-stats) for a non-persistent topic, [list](reference-pulsar-admin.md) non-persistent topics under a namespace, and more.
 
 ## Using with Pulsar clients
 
diff --git a/site2/website/versioned_docs/version-2.10.0/deploy-aws.md b/site2/website/versioned_docs/version-2.10.0/deploy-aws.md
index 2982f09efec..5497aadd786 100644
--- a/site2/website/versioned_docs/version-2.10.0/deploy-aws.md
+++ b/site2/website/versioned_docs/version-2.10.0/deploy-aws.md
@@ -210,7 +210,7 @@ Remember to enter this command just only once. If you attempt to enter this comm
 
 Once you have created the necessary AWS resources using Terraform, you can install and run Pulsar on the Terraform-created EC2 instances using Ansible. 
 
-(Optional) If you want to use any [built-in IO connectors](io-connectors), edit the `Download Pulsar IO packages` task in the `deploy-pulsar.yaml` file and uncomment the connectors you want to use. 
+(Optional) If you want to use any [built-in IO connectors](io-connectors.md), edit the `Download Pulsar IO packages` task in the `deploy-pulsar.yaml` file and uncomment the connectors you want to use. 
 
 To run the playbook, enter this command:
 
diff --git a/site2/website/versioned_docs/version-2.10.0/deploy-bare-metal-multi-cluster.md b/site2/website/versioned_docs/version-2.10.0/deploy-bare-metal-multi-cluster.md
index e3bd4c65867..9ac1a85580f 100644
--- a/site2/website/versioned_docs/version-2.10.0/deploy-bare-metal-multi-cluster.md
+++ b/site2/website/versioned_docs/version-2.10.0/deploy-bare-metal-multi-cluster.md
@@ -65,7 +65,7 @@ The Pulsar binary package initially contains the following directories:
 
 Directory | Contains
 :---------|:--------
-`bin` | [Command-line tools](reference-cli-tools) of Pulsar, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](/tools/pulsar-admin/)
+`bin` | [Command-line tools](reference-cli-tools.md) of Pulsar, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](/tools/pulsar-admin/)
 `conf` | Configuration files for Pulsar, including for [broker configuration](reference-configuration.md#broker), [ZooKeeper configuration](reference-configuration.md#zookeeper), and more
 `examples` | A Java JAR file containing example [Pulsar Functions](functions-overview.md)
 `lib` | The [JAR](https://en.wikipedia.org/wiki/JAR_(file_format)) files that Pulsar uses 
diff --git a/site2/website/versioned_docs/version-2.10.0/deploy-bare-metal.md b/site2/website/versioned_docs/version-2.10.0/deploy-bare-metal.md
index 28e7c56099d..25dc0445861 100644
--- a/site2/website/versioned_docs/version-2.10.0/deploy-bare-metal.md
+++ b/site2/website/versioned_docs/version-2.10.0/deploy-bare-metal.md
@@ -123,7 +123,7 @@ The extracted directory contains the following subdirectories:
 
 Directory | Contains
 :---------|:--------
-`bin` |[command-line tools](reference-cli-tools) of Pulsar, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](/tools/pulsar-admin/)
+`bin` |[command-line tools](reference-cli-tools.md) of Pulsar, such as [`pulsar`](reference-cli-tools.md#pulsar) and [`pulsar-admin`](/tools/pulsar-admin/)
 `conf` | Configuration files for Pulsar, including for [broker configuration](reference-configuration.md#broker), [ZooKeeper configuration](reference-configuration.md#zookeeper), and more
 `data` | The data storage directory that ZooKeeper and BookKeeper use
 `lib` | The [JAR](https://en.wikipedia.org/wiki/JAR_(file_format)) files that Pulsar uses
@@ -448,7 +448,7 @@ If you want to enable [Pulsar Functions](functions-overview.md), you can follow
    
    ```
 
-If you want to learn more options about deploying the functions worker, check out [Deploy and manage functions worker](functions-worker).
+If you want to learn more options about deploying the functions worker, check out [Deploy and manage functions worker](functions-worker.md).
 
 ### Start Brokers
 
diff --git a/site2/website/versioned_docs/version-2.10.0/functions-develop.md b/site2/website/versioned_docs/version-2.10.0/functions-develop.md
index 3a96054e234..c32199517cf 100644
--- a/site2/website/versioned_docs/version-2.10.0/functions-develop.md
+++ b/site2/website/versioned_docs/version-2.10.0/functions-develop.md
@@ -1292,7 +1292,7 @@ func metricRecorderFunction(ctx context.Context, in []byte) error {
 
 ## Security
 
-If you want to enable security on Pulsar Functions, first you should enable security on [Functions Workers](functions-worker). For more details, refer to [Security settings](functions-worker.md#security-settings).
+If you want to enable security on Pulsar Functions, first you should enable security on [Functions Workers](functions-worker.md). For more details, refer to [Security settings](functions-worker.md#security-settings).
 
 Pulsar Functions can support the following providers:
 
diff --git a/site2/website/versioned_docs/version-2.10.0/functions-overview.md b/site2/website/versioned_docs/version-2.10.0/functions-overview.md
index 25dc6029acf..816d301e0fd 100644
--- a/site2/website/versioned_docs/version-2.10.0/functions-overview.md
+++ b/site2/website/versioned_docs/version-2.10.0/functions-overview.md
@@ -164,7 +164,7 @@ tenant/namespace/name
 FQFNs enable you to create multiple functions with the same name provided that they are in different namespaces.
 
 ## Supported languages
-Currently, you can write Pulsar Functions in Java, Python, and Go. For details, refer to [Develop Pulsar Functions](functions-develop).
+Currently, you can write Pulsar Functions in Java, Python, and Go. For details, refer to [Develop Pulsar Functions](functions-develop.md).
 
 ## Processing guarantees
 Pulsar Functions provide three different messaging semantics that you can apply to any function.
diff --git a/site2/website/versioned_docs/version-2.10.0/functions-worker.md b/site2/website/versioned_docs/version-2.10.0/functions-worker.md
index fea7b852007..60eb8465791 100644
--- a/site2/website/versioned_docs/version-2.10.0/functions-worker.md
+++ b/site2/website/versioned_docs/version-2.10.0/functions-worker.md
@@ -4,7 +4,7 @@ title: Deploy and manage functions worker
 sidebar_label: "Setup: Pulsar Functions Worker"
 original_id: functions-worker
 ---
-Before using Pulsar Functions, you need to learn how to set up Pulsar Functions worker and how to [configure Functions runtime](functions-runtime).  
+Before using Pulsar Functions, you need to learn how to set up Pulsar Functions worker and how to [configure Functions runtime](functions-runtime.md).  
 
 Pulsar `functions-worker` is a logic component to run Pulsar Functions in cluster mode. Two options are available, and you can select either based on your requirements. 
 - [run with brokers](#run-functions-worker-with-brokers)
diff --git a/site2/website/versioned_docs/version-2.10.0/io-cdc.md b/site2/website/versioned_docs/version-2.10.0/io-cdc.md
index 20f16ae0d69..e6e66288482 100644
--- a/site2/website/versioned_docs/version-2.10.0/io-cdc.md
+++ b/site2/website/versioned_docs/version-2.10.0/io-cdc.md
@@ -13,8 +13,8 @@ Currently, Pulsar has the following CDC connectors.
 
 Name|Java Class
 |---|---
-[Canal source connector](io-canal-source)|[org.apache.pulsar.io.canal.CanalStringSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/canal/src/main/java/org/apache/pulsar/io/canal/CanalStringSource.java)
-[Debezium source connector](io-cdc-debezium)|<li>[org.apache.pulsar.io.debezium.DebeziumSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/core/src/main/java/org/apache/pulsar/io/debezium/DebeziumSource.java)<br /></li><li>[org.apache.pulsar.io.debezium.mysql.DebeziumMysqlSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/java/org/apache/pulsar/io/debezium/mysql/DebeziumMysqlSource.java)<br /></li><li>[org.apache.pulsar.i [...]
+[Canal source connector](io-canal-source.md)|[org.apache.pulsar.io.canal.CanalStringSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/canal/src/main/java/org/apache/pulsar/io/canal/CanalStringSource.java)
+[Debezium source connector](io-cdc-debezium.md)|<li>[org.apache.pulsar.io.debezium.DebeziumSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/core/src/main/java/org/apache/pulsar/io/debezium/DebeziumSource.java)<br /></li><li>[org.apache.pulsar.io.debezium.mysql.DebeziumMysqlSource.java](https://github.com/apache/pulsar/blob/master/pulsar-io/debezium/mysql/src/main/java/org/apache/pulsar/io/debezium/mysql/DebeziumMysqlSource.java)<br /></li><li>[org.apache.pulsa [...]
 
 For more information about Canal and Debezium, see the information below.
 
diff --git a/site2/website/versioned_docs/version-2.10.0/io-develop.md b/site2/website/versioned_docs/version-2.10.0/io-develop.md
index bbb640581e9..d6f4f8261ac 100644
--- a/site2/website/versioned_docs/version-2.10.0/io-develop.md
+++ b/site2/website/versioned_docs/version-2.10.0/io-develop.md
@@ -304,7 +304,7 @@ For more information about **how NAR works**, see [here](https://medium.com/hash
 
 :::
 
-Pulsar uses the same mechanism for packaging **all** [built-in connectors](io-connectors). 
+Pulsar uses the same mechanism for packaging **all** [built-in connectors](io-connectors.md). 
 
 The easiest approach to package a Pulsar connector is to create a NAR package using [nifi-nar-maven-plugin](https://mvnrepository.com/artifact/org.apache.nifi/nifi-nar-maven-plugin).
 
diff --git a/site2/website/versioned_docs/version-2.10.0/io-kafka-source.md b/site2/website/versioned_docs/version-2.10.0/io-kafka-source.md
index c160112cb08..dd6000aa0bd 100644
--- a/site2/website/versioned_docs/version-2.10.0/io-kafka-source.md
+++ b/site2/website/versioned_docs/version-2.10.0/io-kafka-source.md
@@ -213,7 +213,7 @@ This example explains how to create a Kafka source connector in an on-premises c
    
    ```
 
-2. Reload all [built-in connectors](io-connectors).
+2. Reload all [built-in connectors](io-connectors.md).
 
    ```
    
diff --git a/site2/website/versioned_docs/version-2.10.0/io-overview.md b/site2/website/versioned_docs/version-2.10.0/io-overview.md
index 0554e927e4f..82d0cd04a31 100644
--- a/site2/website/versioned_docs/version-2.10.0/io-overview.md
+++ b/site2/website/versioned_docs/version-2.10.0/io-overview.md
@@ -160,4 +160,4 @@ For more information about the options of `pulsar-admin sinks update`, see [here
 
 You can manage Pulsar connectors (for example, create, update, start, stop, restart, reload, delete and perform other operations on connectors) via the `Connector Admin CLI` with sources and sinks subcommands. For the latest and complete information, see [Pulsar admin docs](/tools/pulsar-admin/).
 
-Connectors (sources and sinks) and Functions are components of instances, and they all run on Functions workers. When managing a source, sink or function via the `Connector Admin CLI` or [Functions Admin CLI](functions-cli), an instance is started on a worker. For more information, see [Functions worker](functions-worker.md#run-functions-worker-separately).
+Connectors (sources and sinks) and Functions are components of instances, and they all run on Functions workers. When managing a source, sink or function via the `Connector Admin CLI` or [Functions Admin CLI](functions-cli.md), an instance is started on a worker. For more information, see [Functions worker](functions-worker.md#run-functions-worker-separately).
diff --git a/site2/website/versioned_docs/version-2.10.0/io-quickstart.md b/site2/website/versioned_docs/version-2.10.0/io-quickstart.md
index 1f3f255b504..fd2ce9fbb06 100644
--- a/site2/website/versioned_docs/version-2.10.0/io-quickstart.md
+++ b/site2/website/versioned_docs/version-2.10.0/io-quickstart.md
@@ -109,7 +109,7 @@ This section demonstrates how to connect Pulsar to Cassandra.
 :::tip
 
 * Make sure you have Docker installed. If you do not have one, see [install Docker](https://docs.docker.com/docker-for-mac/install/).
-* The Cassandra sink connector reads messages from Pulsar topics and writes the messages into Cassandra tables. For more information, see [Cassandra sink connector](io-cassandra-sink).
+* The Cassandra sink connector reads messages from Pulsar topics and writes the messages into Cassandra tables. For more information, see [Cassandra sink connector](io-cassandra-sink.md).
 
 :::
 
@@ -236,7 +236,7 @@ You can create a configuration file through one of the following methods.
   
   ```
 
-For more information, see [Cassandra sink connector](io-cassandra-sink).
+For more information, see [Cassandra sink connector](io-cassandra-sink.md).
 
 ### Create a Cassandra sink
 
@@ -455,7 +455,7 @@ This section demonstrates how to connect Pulsar to PostgreSQL.
 :::
 
 and persists the messages to ClickHouse, MariaDB, PostgreSQL, or SQlite. 
->For more information, see [JDBC sink connector](io-jdbc-sink).
+>For more information, see [JDBC sink connector](io-jdbc-sink.md).
 
 
 ### Setup a PostgreSQL cluster
diff --git a/site2/website/versioned_docs/version-2.10.0/performance-pulsar-perf.md b/site2/website/versioned_docs/version-2.10.0/performance-pulsar-perf.md
index fdb36b504e5..4441d147081 100644
--- a/site2/website/versioned_docs/version-2.10.0/performance-pulsar-perf.md
+++ b/site2/website/versioned_docs/version-2.10.0/performance-pulsar-perf.md
@@ -153,7 +153,7 @@ For the latest and complete information about `pulsar-perf`, including commands,
 
 ## Transactions
 
-This section shows how Pulsar Perf runs transactions. For more information, see [Pulsar transactions](txn-why).
+This section shows how Pulsar Perf runs transactions. For more information, see [Pulsar transactions](txn-why.md).
 
 ### Use transaction
 
diff --git a/site2/website/versioned_docs/version-2.10.0/reference-cli-tools.md b/site2/website/versioned_docs/version-2.10.0/reference-cli-tools.md
index 3b39c09e595..1e426501e23 100644
--- a/site2/website/versioned_docs/version-2.10.0/reference-cli-tools.md
+++ b/site2/website/versioned_docs/version-2.10.0/reference-cli-tools.md
@@ -826,7 +826,7 @@ Options
 
 ### `transaction`
 
-Run a transaction. For more information, see [Pulsar transactions](txn-why).
+Run a transaction. For more information, see [Pulsar transactions](txn-why.md).
 
 **Usage**
 
diff --git a/site2/website/versioned_docs/version-2.10.0/schema-manage.md b/site2/website/versioned_docs/version-2.10.0/schema-manage.md
index 40b5ab06c6b..56addb7b55a 100644
--- a/site2/website/versioned_docs/version-2.10.0/schema-manage.md
+++ b/site2/website/versioned_docs/version-2.10.0/schema-manage.md
@@ -160,7 +160,7 @@ To manage schemas, you can use one of the following methods.
 
 | Method |  Description | 
 | --- | --- |
-|  **Admin CLI**<li></li> |   You can use the `pulsar-admin` tool to manage Pulsar schemas, brokers, clusters, sources, sinks, topics, tenants and so on. For more information about how to use the `pulsar-admin` tool, see [here](reference-pulsar-admin).  | 
+|  **Admin CLI**<li></li> |   You can use the `pulsar-admin` tool to manage Pulsar schemas, brokers, clusters, sources, sinks, topics, tenants and so on. For more information about how to use the `pulsar-admin` tool, see [here](reference-pulsar-admin.md).  | 
 |  **REST API**<li></li> |   Pulsar exposes schema related management API in Pulsar’s admin RESTful API. You can access the admin RESTful endpoint directly to manage schemas. For more information about how to use the Pulsar REST API, see [here](/admin-rest-api/).  | 
 |  **Java Admin API**<li></li> |  Pulsar provides Java admin library. | 
 
diff --git a/site2/website/versioned_docs/version-2.10.0/security-athenz.md b/site2/website/versioned_docs/version-2.10.0/security-athenz.md
index 947c3f470be..8a39fe25316 100644
--- a/site2/website/versioned_docs/version-2.10.0/security-athenz.md
+++ b/site2/website/versioned_docs/version-2.10.0/security-athenz.md
@@ -76,7 +76,7 @@ For more information on Pulsar client authentication using Athenz, see the follo
 
 ## Configure CLI tools for Athenz
 
-[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-pulsar-admin), [`pulsar-perf`](reference-cli-tools.md#pulsar-perf), and [`pulsar-client`](reference-cli-tools.md#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-pulsar-admin.md), [`pulsar-perf`](reference-cli-tools.md#pulsar-perf), and [`pulsar-client`](reference-cli-tools.md#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
 
 You need to add the following authentication parameters to the `conf/client.conf` config file to use Athenz with CLI tools of Pulsar:
 
diff --git a/site2/website/versioned_docs/version-2.10.0/security-authorization.md b/site2/website/versioned_docs/version-2.10.0/security-authorization.md
index 28bf08df2c8..9cfd7c8c203 100644
--- a/site2/website/versioned_docs/version-2.10.0/security-authorization.md
+++ b/site2/website/versioned_docs/version-2.10.0/security-authorization.md
@@ -59,7 +59,7 @@ superUserRoles=my-super-user-1,my-super-user-2,my-proxy-role
 
 Pulsar [instance](reference-terminology.md#instance) administrators or some kind of self-service portal typically provisions a Pulsar [tenant](reference-terminology.md#tenant). 
 
-You can manage tenants using the [`pulsar-admin`](reference-pulsar-admin) tool. 
+You can manage tenants using the [`pulsar-admin`](reference-pulsar-admin.md) tool. 
 
 ### Create a new tenant
 
diff --git a/site2/website/versioned_docs/version-2.10.0/security-jwt.md b/site2/website/versioned_docs/version-2.10.0/security-jwt.md
index fcee5c0ce21..d5cbf1553b9 100644
--- a/site2/website/versioned_docs/version-2.10.0/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.10.0/security-jwt.md
@@ -20,7 +20,7 @@ is permitted to do some actions (eg: publish to a topic or consume from a topic)
 
 A user typically gets a token string from the administrator (or some automated service).
 
-The compact representation of a signed JWT is a string that looks like as the following:
+The compact representation of a signed JWT is a string that looks like the following:
 
 ```
 
@@ -189,7 +189,7 @@ JWT supports two different kinds of keys in order to generate and validate the t
 
 When you use a secret key, the administrator creates the key and uses the key to generate the client tokens. You can also configure this key to brokers in order to validate the clients.
 
-Output file is generated in the root of your Pulsar installation directory. You can also provide absolute path for the output file using the command below.
+The output file is generated in the root of your Pulsar installation directory. You can also provide an absolute path for the output file using the command below.
 
 ```shell
 
@@ -197,7 +197,7 @@ $ bin/pulsar tokens create-secret-key --output my-secret.key
 
 ```
 
-Enter this command to generate base64 encoded private key.
+Enter this command to generate a base64 encoded private key.
 
 ```shell
 
@@ -209,7 +209,7 @@ $ bin/pulsar tokens create-secret-key --output  /opt/my-secret.key --base64
 
 With Public and Private keys, you need to create a pair of keys. Pulsar supports all algorithms that the Java JWT library (shown [here](https://github.com/jwtk/jjwt#signature-algorithms-keys)) supports.
 
-Output file is generated in the root of your Pulsar installation directory. You can also provide absolute path for the output file using the command below.
+The output file is generated in the root of your Pulsar installation directory. You can also provide an absolute path for the output file using the command below.
 
 ```shell
 
@@ -222,7 +222,7 @@ $ bin/pulsar tokens create-key-pair --output-private-key my-private.key --output
 
 ### Generate tokens
 
-A token is the credential associated with a user. The association is done through the "principal" or "role". In the case of JWT tokens, this field is typically referred as **subject**, though they are exactly the same concept.
+A token is a credential associated with a user. The association is done through the "principal" or "role". In the case of JWT tokens, this field is typically referred as **subject**, though they are exactly the same concept.
 
 Then, you need to use this command to require the generated token to have a **subject** field set.
 
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.
diff --git a/site2/website/versioned_docs/version-2.10.0/security-tls-authentication.md b/site2/website/versioned_docs/version-2.10.0/security-tls-authentication.md
index 65491ba3128..17da5aab34d 100644
--- a/site2/website/versioned_docs/version-2.10.0/security-tls-authentication.md
+++ b/site2/website/versioned_docs/version-2.10.0/security-tls-authentication.md
@@ -123,7 +123,7 @@ When you use TLS authentication, client connects via TLS transport. You need to
 
 ### CLI tools
 
-[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-pulsar-admin), [`pulsar-perf`](reference-cli-tools.md#pulsar-perf), and [`pulsar-client`](reference-cli-tools.md#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-pulsar-admin.md), [`pulsar-perf`](reference-cli-tools.md#pulsar-perf), and [`pulsar-client`](reference-cli-tools.md#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
 
 You need to add the following parameters to that file to use TLS authentication with the CLI tools of Pulsar:
 
diff --git a/site2/website/versioned_docs/version-2.10.0/security-tls-keystore.md b/site2/website/versioned_docs/version-2.10.0/security-tls-keystore.md
index f4ee86df8c6..8a4654a0c33 100644
--- a/site2/website/versioned_docs/version-2.10.0/security-tls-keystore.md
+++ b/site2/website/versioned_docs/version-2.10.0/security-tls-keystore.md
@@ -184,7 +184,7 @@ This is similar to [TLS encryption configuing for client with PEM type](security
 For a minimal configuration, you need to provide the TrustStore information.
 
 For example:
-1. for [Command-line tools](reference-cli-tools) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+1. for [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
 
    ```properties
    
@@ -279,7 +279,7 @@ webSocketServiceEnabled=false
 Besides the TLS encryption configuring. The main work is configuring the KeyStore, which contains a valid CN as client role, for client.
 
 For example:
-1. for [Command-line tools](reference-cli-tools) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+1. for [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
 
    ```properties
    
diff --git a/site2/website/versioned_docs/version-2.10.0/security-tls-transport.md b/site2/website/versioned_docs/version-2.10.0/security-tls-transport.md
index 4facba405a1..c3fc81e7393 100644
--- a/site2/website/versioned_docs/version-2.10.0/security-tls-transport.md
+++ b/site2/website/versioned_docs/version-2.10.0/security-tls-transport.md
@@ -220,7 +220,7 @@ The examples below show that hostname verification is disabled for the CLI tools
 
 ### CLI tools
 
-[Command-line tools](reference-cli-tools) like [`pulsar-admin`](reference-cli-tools.md#pulsar-admin), [`pulsar-perf`](reference-cli-tools.md#pulsar-perf), and [`pulsar-client`](reference-cli-tools.md#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools.md#pulsar-admin), [`pulsar-perf`](reference-cli-tools.md#pulsar-perf), and [`pulsar-client`](reference-cli-tools.md#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
 
 You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:
 
diff --git a/site2/website/versioned_docs/version-2.10.0/sql-deployment-configurations.md b/site2/website/versioned_docs/version-2.10.0/sql-deployment-configurations.md
index d8a7dc6ea06..0178ca41e01 100644
--- a/site2/website/versioned_docs/version-2.10.0/sql-deployment-configurations.md
+++ b/site2/website/versioned_docs/version-2.10.0/sql-deployment-configurations.md
@@ -142,7 +142,7 @@ Since Pulsar SQL is powered by [Trino (formerly Presto SQL)](https://trino.io),
 
 :::note
 
-For how to set up a standalone single node environment, refer to [Query data](sql-getting-started). 
+For how to set up a standalone single node environment, refer to [Query data](sql-getting-started.md). 
 
 :::
 
diff --git a/site2/website/versioned_docs/version-2.10.0/sql-overview.md b/site2/website/versioned_docs/version-2.10.0/sql-overview.md
index 4a4d5f01b0b..8ba19d05300 100644
--- a/site2/website/versioned_docs/version-2.10.0/sql-overview.md
+++ b/site2/website/versioned_docs/version-2.10.0/sql-overview.md
@@ -5,7 +5,7 @@ sidebar_label: "Overview"
 original_id: sql-overview
 ---
 
-Apache Pulsar is used to store streams of event data, and the event data is structured with predefined fields. With the implementation of the [Schema Registry](schema-get-started), you can store structured data in Pulsar and query the data by using [Trino (formerly Presto SQL)](https://trino.io/).
+Apache Pulsar is used to store streams of event data, and the event data is structured with predefined fields. With the implementation of the [Schema Registry](schema-get-started.md), you can store structured data in Pulsar and query the data by using [Trino (formerly Presto SQL)](https://trino.io/).
 
 As the core of Pulsar SQL, Presto Pulsar connector enables Presto workers within a Presto cluster to query data from Pulsar.
 
diff --git a/site2/website/versioned_docs/version-2.10.0/tiered-storage-overview.md b/site2/website/versioned_docs/version-2.10.0/tiered-storage-overview.md
index 7c6528ce2b3..c635034f463 100644
--- a/site2/website/versioned_docs/version-2.10.0/tiered-storage-overview.md
+++ b/site2/website/versioned_docs/version-2.10.0/tiered-storage-overview.md
@@ -13,9 +13,9 @@ Pulsar's **Tiered Storage** feature allows older backlog data to be moved from B
 
   :::tip
 
-  - For more information about how to use the AWS S3 offloader with Pulsar, see [here](tiered-storage-aws).
+  - For more information about how to use the AWS S3 offloader with Pulsar, see [here](tiered-storage-aws.md).
   
-  - For more information about how to use the GCS offloader with Pulsar, see [here](tiered-storage-gcs).
+  - For more information about how to use the GCS offloader with Pulsar, see [here](tiered-storage-gcs.md).
 
   :::
 
@@ -25,7 +25,7 @@ Pulsar's **Tiered Storage** feature allows older backlog data to be moved from B
 
   :::tip
 
-  For more information about how to use the filesystem offloader with Pulsar, see [here](tiered-storage-filesystem).
+  For more information about how to use the filesystem offloader with Pulsar, see [here](tiered-storage-filesystem.md).
 
   :::
 
diff --git a/site2/website/versioned_docs/version-2.10.1/security-jwt.md b/site2/website/versioned_docs/version-2.10.1/security-jwt.md
index fcee5c0ce21..d5cbf1553b9 100644
--- a/site2/website/versioned_docs/version-2.10.1/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.10.1/security-jwt.md
@@ -20,7 +20,7 @@ is permitted to do some actions (eg: publish to a topic or consume from a topic)
 
 A user typically gets a token string from the administrator (or some automated service).
 
-The compact representation of a signed JWT is a string that looks like as the following:
+The compact representation of a signed JWT is a string that looks like the following:
 
 ```
 
@@ -189,7 +189,7 @@ JWT supports two different kinds of keys in order to generate and validate the t
 
 When you use a secret key, the administrator creates the key and uses the key to generate the client tokens. You can also configure this key to brokers in order to validate the clients.
 
-Output file is generated in the root of your Pulsar installation directory. You can also provide absolute path for the output file using the command below.
+The output file is generated in the root of your Pulsar installation directory. You can also provide an absolute path for the output file using the command below.
 
 ```shell
 
@@ -197,7 +197,7 @@ $ bin/pulsar tokens create-secret-key --output my-secret.key
 
 ```
 
-Enter this command to generate base64 encoded private key.
+Enter this command to generate a base64 encoded private key.
 
 ```shell
 
@@ -209,7 +209,7 @@ $ bin/pulsar tokens create-secret-key --output  /opt/my-secret.key --base64
 
 With Public and Private keys, you need to create a pair of keys. Pulsar supports all algorithms that the Java JWT library (shown [here](https://github.com/jwtk/jjwt#signature-algorithms-keys)) supports.
 
-Output file is generated in the root of your Pulsar installation directory. You can also provide absolute path for the output file using the command below.
+The output file is generated in the root of your Pulsar installation directory. You can also provide an absolute path for the output file using the command below.
 
 ```shell
 
@@ -222,7 +222,7 @@ $ bin/pulsar tokens create-key-pair --output-private-key my-private.key --output
 
 ### Generate tokens
 
-A token is the credential associated with a user. The association is done through the "principal" or "role". In the case of JWT tokens, this field is typically referred as **subject**, though they are exactly the same concept.
+A token is a credential associated with a user. The association is done through the "principal" or "role". In the case of JWT tokens, this field is typically referred as **subject**, though they are exactly the same concept.
 
 Then, you need to use this command to require the generated token to have a **subject** field set.
 
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.
diff --git a/site2/website/versioned_docs/version-2.8.0/security-jwt.md b/site2/website/versioned_docs/version-2.8.0/security-jwt.md
index b69c7bcb7b2..05e641ed67c 100644
--- a/site2/website/versioned_docs/version-2.8.0/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.8.0/security-jwt.md
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.
diff --git a/site2/website/versioned_docs/version-2.8.1/security-jwt.md b/site2/website/versioned_docs/version-2.8.1/security-jwt.md
index b69c7bcb7b2..05e641ed67c 100644
--- a/site2/website/versioned_docs/version-2.8.1/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.8.1/security-jwt.md
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.
diff --git a/site2/website/versioned_docs/version-2.8.2/security-jwt.md b/site2/website/versioned_docs/version-2.8.2/security-jwt.md
index b69c7bcb7b2..05e641ed67c 100644
--- a/site2/website/versioned_docs/version-2.8.2/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.8.2/security-jwt.md
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.
diff --git a/site2/website/versioned_docs/version-2.8.3/security-jwt.md b/site2/website/versioned_docs/version-2.8.3/security-jwt.md
index b69c7bcb7b2..05e641ed67c 100644
--- a/site2/website/versioned_docs/version-2.8.3/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.8.3/security-jwt.md
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.
diff --git a/site2/website/versioned_docs/version-2.9.0/security-jwt.md b/site2/website/versioned_docs/version-2.9.0/security-jwt.md
index b69c7bcb7b2..05e641ed67c 100644
--- a/site2/website/versioned_docs/version-2.9.0/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.9.0/security-jwt.md
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.
diff --git a/site2/website/versioned_docs/version-2.9.1/security-jwt.md b/site2/website/versioned_docs/version-2.9.1/security-jwt.md
index b69c7bcb7b2..05e641ed67c 100644
--- a/site2/website/versioned_docs/version-2.9.1/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.9.1/security-jwt.md
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.
diff --git a/site2/website/versioned_docs/version-2.9.2/security-jwt.md b/site2/website/versioned_docs/version-2.9.2/security-jwt.md
index b69c7bcb7b2..05e641ed67c 100644
--- a/site2/website/versioned_docs/version-2.9.2/security-jwt.md
+++ b/site2/website/versioned_docs/version-2.9.2/security-jwt.md
@@ -281,8 +281,10 @@ authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationPr
 brokerClientTlsEnabled=true
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 brokerClientTrustCertsFilePath=/path/my-ca/certs/ca.cert.pem
 
 # If this flag is set then the broker authenticates the original Auth data
@@ -316,8 +318,10 @@ tokenSecretKey=file:///path/to/secret.key
 # For the proxy to connect to brokers
 brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
 brokerClientAuthenticationParameters={"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw"}
-# Or, alternatively, read token from file
-# brokerClientAuthenticationParameters={"file":"///path/to/proxy-token.txt"}
+# Either configure the token string or specify to read it from a file. The following three available formats are all valid:
+# brokerClientAuthenticationParameters={"token":"your-token-string"}
+# brokerClientAuthenticationParameters=token:your-token-string
+# brokerClientAuthenticationParameters=file:///path/to/token
 
 # Whether client authorization credentials are forwarded to the broker for re-authorization.
 # Authentication must be enabled via authenticationEnabled=true for this to take effect.