From ef16b6177cdafd1a78ab4aa7942aaa1f8c2a76c9 Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Tue, 13 Oct 2020 15:21:09 -0400 Subject: [PATCH] Update configuration docs (#661) * Update configuration docs * Fix public addr example --- internal/cmd/base/servers.go | 3 +- .../content/docs/configuration/controller.mdx | 2 +- website/content/docs/configuration/index.mdx | 45 +++++++++---------- .../content/docs/configuration/kms/aead.mdx | 17 ++++--- .../docs/configuration/kms/alicloudkms.mdx | 5 ++- .../content/docs/configuration/kms/awskms.mdx | 6 ++- .../docs/configuration/kms/azurekeyvault.mdx | 7 ++- .../docs/configuration/kms/gcpckms.mdx | 3 ++ .../content/docs/configuration/kms/ocikms.mdx | 30 +++++++------ .../docs/configuration/kms/transit.mdx | 10 +++-- .../docs/configuration/listener/tcp.mdx | 27 ++++++----- .../content/docs/configuration/telemetry.mdx | 12 ----- website/content/docs/configuration/worker.mdx | 30 ++++++++----- website/data/docs-navigation.js | 1 - 14 files changed, 107 insertions(+), 91 deletions(-) delete mode 100644 website/content/docs/configuration/telemetry.mdx diff --git a/internal/cmd/base/servers.go b/internal/cmd/base/servers.go index fb2dae702..6f4bef1a7 100644 --- a/internal/cmd/base/servers.go +++ b/internal/cmd/base/servers.go @@ -312,7 +312,8 @@ func (b *Server) SetupListeners(ui cli.Ui, config *configutil.SharedConfig, allo if lnConfig.MaxRequestSize == 0 { lnConfig.MaxRequestSize = globals.DefaultMaxRequestSize } - props["max_request_size"] = fmt.Sprintf("%d", lnConfig.MaxRequestSize) + // TODO: We don't actually limit this yet. + //props["max_request_size"] = fmt.Sprintf("%d", lnConfig.MaxRequestSize) if lnConfig.MaxRequestDuration == 0 { lnConfig.MaxRequestDuration = globals.DefaultMaxRequestDuration diff --git a/website/content/docs/configuration/controller.mdx b/website/content/docs/configuration/controller.mdx index aa570dc0d..321d3c6ae 100644 --- a/website/content/docs/configuration/controller.mdx +++ b/website/content/docs/configuration/controller.mdx @@ -26,7 +26,7 @@ controller { - `database` - Configuration block with two valid parameters for connecting to Postgres: - `url` - Configures the URL for connecting to Postgres - - `migration_url` - Can be used to specify a different URL for the migrations, as that + - `migration_url` - Can be used to specify a different URL for migrations, as that usually requires higher privileges. Either can refer to a file on disk (file://) from which a URL will be read; an env diff --git a/website/content/docs/configuration/index.mdx b/website/content/docs/configuration/index.mdx index ae39cd209..7a518287e 100644 --- a/website/content/docs/configuration/index.mdx +++ b/website/content/docs/configuration/index.mdx @@ -21,38 +21,37 @@ After the configuration is written, use the `-config` flag to specify a local pa ## Parameters -- `controller` ([Controller][controller]: \) - Controller specific configuration. Only required when running a `boundary controller`. +- [`controller`](/docs/configuration/controller): Controller specific +configuration. If present, `boundary server` will start a Controller subprocess. -- `worker` ([Worker][worker]: \) - Worker specific configuration. Only required when running a `boundary worker`. +- [`worker`](/docs/configuration/worker): Worker specific configuration. If +present, `boundary server` will start a Worker subprocess. -- `listener` ([Listener][listener]: \) – Configures the Boundary server - options for controllers and workers. +- [`listener`](/docs/configuration/listener): Configures the listeners on which +Boundary serves traffic (API, cluster, and proxy). - Controllers will have two listener blocks, one for the API server and the other for the data-plane - server. By default, controller API server runs on :9200 and the data-plane (which is used for - worker communication) uses :9201. + Controllers will have two listener blocks: one marked for `api` purpose and + the other marked for `cluster` purpose. By default, the API listener runs on + :9200 and the cluster listener (currently used for worker communication) uses + :9201. - Workers will have only one listener. + Workers will have only one listener, marked for `proxy` purpose. -- `kms` ([KMS][kms]: \) – Configures KMS blocks for root, worker authentication, and recovery keys. +- [`kms`](/docs/configuration/kms): Configures KMS blocks [for various +purposes](/docs/concepts/security/data-encryption). - `disable_mlock` `(bool: false)` – Disables the server from executing the - `mlock` syscall. `mlock` prevents memory from being swapped to disk. Disabling - `mlock` is not recommended in production, but is fine for local development - and testing. - - Disabling `mlock` is not recommended unless the systems running Vault only - use encrypted swap or do not use swap at all. Boundary only supports memory - locking on UNIX-like systems that support the mlock() syscall (Linux, FreeBSD, etc). - Non UNIX-like systems (e.g. Windows, NaCL, Android) lack the primitives to keep a - process's entire memory address space from spilling to disk and is therefore - automatically disabled on unsupported platforms. + `mlock` syscall, which prevents memory from being swapped to disk. This is + fine for local development and testing; in production, it is not recommended + unless the systems running Boundary only use encrypted swap or do not use swap + at all. Boundary only supports memory locking on UNIX-like systems that + support the mlock() syscall (Linux, FreeBSD, etc). On Linux, to give the Boundary executable the ability to use the `mlock` syscall without running the process as root, run: ```shell - sudo setcap cap_ipc_lock=+ep $(readlink -f $(which vault)) + sudo setcap cap_ipc_lock=+ep $(readlink -f $(which boundary)) ``` If you use a Linux distribution with a modern version of systemd, you can add @@ -62,13 +61,11 @@ After the configuration is written, use the `-config` flag to specify a local pa LimitMEMLOCK=infinity ``` -- `telemetry` ([Telemetry][telemetry]: <none>) – Not yet implemented. - -- `log_level` `(string: "")` – Specifies the log level to use; overridden by +- `log_level` `(string: "info")` – Specifies the log level to use; overridden by CLI and env var parameters. Supported log levels: Trace, Debug, Error, Warn, Info. - `log_format` `(string: "")` – Specifies the log format to use; overridden by - CLI and env var parameters. Supported log formats: "standard", "json". + CLI and env var parameters. Supported log formats: `"standard"`, `"json"`. ## Example Configurations diff --git a/website/content/docs/configuration/kms/aead.mdx b/website/content/docs/configuration/kms/aead.mdx index 854810342..01ff1ace7 100644 --- a/website/content/docs/configuration/kms/aead.mdx +++ b/website/content/docs/configuration/kms/aead.mdx @@ -1,11 +1,16 @@ --- layout: docs -page_title: KMS AEAD - Configuration -sidebar_title: KMS AEAD +page_title: AEAD - Configuration +sidebar_title: AEAD description: |- - The KMS AEAD configures KMS-specifc parameters. + The AEAD KMS configures AEAD-specifc parameters. --- +~> This is mostly used for `dev` workflows or testing. The key will be exposed +to anyone that can view the configuration file. If using this KMS, consider +using `boundary config encrypt` to encrypt all but the `config` KMS and using an +external KMS for `config` purposes. + ```hcl kms "aead" { purpose = "worker-auth" @@ -15,10 +20,10 @@ kms "aead" { } ``` -- `purpose` - Purpose of this KMS, acceptable values are: `worker-auth`, `root`, and `recovery`. +- `purpose` - Purpose of this KMS, acceptable values are: `worker-auth`, `root`, `recovery`, or `config`. -- `aead_type` - The type of encryption this KMS uses. +- `aead_type` - The type of encryption this KMS uses. Currently only `aes-gcm` is implemented. -- `key` - Optional, a hard coded key if not using an external KMS. +- `key` - The base64-encoded 256-bit encryption key. - `key_id` - The unique name of this key. diff --git a/website/content/docs/configuration/kms/alicloudkms.mdx b/website/content/docs/configuration/kms/alicloudkms.mdx index 4490815d6..9e4eaf297 100644 --- a/website/content/docs/configuration/kms/alicloudkms.mdx +++ b/website/content/docs/configuration/kms/alicloudkms.mdx @@ -20,6 +20,7 @@ by providing all the required values: ```hcl kms "alicloudkms" { + purpose = "root" region = "us-east-1" access_key = "0wNEpMMlzy7szvai" secret_key = "PupkTg8jdmau1cXxYacgE736PJj4cA" @@ -31,6 +32,8 @@ kms "alicloudkms" { These parameters apply to the `kms` stanza in the Boundary configuration file: +- `purpose` - Purpose of this KMS, acceptable values are: `worker-auth`, `root`, `recovery`, or `config`. + - `region` `(string: "us-east-1")`: The AliCloud region where the encryption key lives. May also be specified by the `ALICLOUD_REGION` environment variable. @@ -48,7 +51,7 @@ These parameters apply to the `kms` stanza in the Boundary configuration file: part of the AliCloud profile from the AliCloud CLI or instance profile. - `kms_key_id` `(string: )`: The AliCloud KMS key ID to use for encryption - and decryption. May also be specified by the `VAULT_ALICLOUDKMS_SEAL_KEY_ID` + and decryption. May also be specified by the `ALICLOUDKMS_WRAPPER_KEY_ID` environment variable. ## Authentication diff --git a/website/content/docs/configuration/kms/awskms.mdx b/website/content/docs/configuration/kms/awskms.mdx index 97dbc66cd..f179730c5 100644 --- a/website/content/docs/configuration/kms/awskms.mdx +++ b/website/content/docs/configuration/kms/awskms.mdx @@ -18,6 +18,7 @@ by providing all the required values: ```hcl kms "awskms" { + purpose = "root" region = "us-east-1" access_key = "AKIAIOSFODNN7EXAMPLE" secret_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" @@ -30,6 +31,9 @@ kms "awskms" { These parameters apply to the `kms` stanza in the Boundary configuration file: +- `purpose` - Purpose of this KMS, acceptable values are: `worker-auth`, `root`, +`recovery`, or `config`. + - `region` `(string: "us-east-1")`: The AWS region where the encryption key lives. If not provided, may be populated from the `AWS_REGION` or `AWS_DEFAULT_REGION` environment variables, from your `~/.aws/config` file, @@ -47,7 +51,7 @@ These parameters apply to the `kms` stanza in the Boundary configuration file: part of the AWS profile from the AWS CLI or instance profile. - `kms_key_id` `(string: )`: The AWS KMS key ID to use for encryption - and decryption. May also be specified by the `VAULT_AWSKMS_SEAL_KEY_ID` + and decryption. May also be specified by the `AWSKMS_WRAPPER_KEY_ID` environment variable. - `endpoint` `(string: "")`: The KMS API endpoint to be used to make AWS KMS diff --git a/website/content/docs/configuration/kms/azurekeyvault.mdx b/website/content/docs/configuration/kms/azurekeyvault.mdx index 3c6515fe2..4e30870b4 100644 --- a/website/content/docs/configuration/kms/azurekeyvault.mdx +++ b/website/content/docs/configuration/kms/azurekeyvault.mdx @@ -20,6 +20,7 @@ configuration file by providing all the required values: ```hcl kms "azurekeyvault" { + purpose = "root" tenant_id = "46646709-b63e-4747-be42-516edeaf1e14" client_id = "03dc33fc-16d9-4b77-8152-3ec568f8af6e" client_secret = "DUJDS3..." @@ -32,6 +33,8 @@ kms "azurekeyvault" { These parameters apply to the `kms` stanza in the Vault configuration file: +- `purpose` - Purpose of this KMS, acceptable values are: `worker-auth`, `root`, `recovery`, or `config`. + - `tenant_id` `(string: )`: The tenant id for the Azure Active Directory organization. May also be specified by the `AZURE_TENANT_ID` environment variable. @@ -45,10 +48,10 @@ These parameters apply to the `kms` stanza in the Vault configuration file: be specified by the `AZURE_ENVIRONMENT` environment variable. - `vault_name` `(string: )`: The Key Vault vault to use the encryption keys for encryption and - decryption. May also be specified by the `VAULT_AZUREKEYVAULT_VAULT_NAME` environment variable. + decryption. May also be specified by the `AZUREKEYVAULT_WRAPPER_VAULT_NAME` environment variable. - `key_name` `(string: )`: The Key Vault key to use for encryption and decryption. May also be specified by the - `VAULT_AZUREKEYVAULT_KEY_NAME` environment variable. + `AZUREKEYVAULT_WRAPPER_KEY_NAME` environment variable. ## Authentication diff --git a/website/content/docs/configuration/kms/gcpckms.mdx b/website/content/docs/configuration/kms/gcpckms.mdx index 53792ae3a..1b3c7b6e7 100644 --- a/website/content/docs/configuration/kms/gcpckms.mdx +++ b/website/content/docs/configuration/kms/gcpckms.mdx @@ -19,6 +19,7 @@ configuration file by providing all the required values: ```hcl kms "gcpckms" { + purpose = "root" credentials = "/usr/boundary/boundary-project-user-creds.json" project = "boundary-project" region = "global" @@ -31,6 +32,8 @@ kms "gcpckms" { These parameters apply to the `kms` stanza in the Boundary configuration file: +- `purpose` - Purpose of this KMS, acceptable values are: `worker-auth`, `root`, `recovery`, or `config`. + - `credentials` `(string: )`: The path to the credentials JSON file to use. May be also specified by the `GOOGLE_CREDENTIALS` or `GOOGLE_APPLICATION_CREDENTIALS` environment variable or set automatically if diff --git a/website/content/docs/configuration/kms/ocikms.mdx b/website/content/docs/configuration/kms/ocikms.mdx index eb937cc2c..b5d03061f 100644 --- a/website/content/docs/configuration/kms/ocikms.mdx +++ b/website/content/docs/configuration/kms/ocikms.mdx @@ -19,10 +19,11 @@ by providing all the required values: ```hcl kms "ocikms" { - key_id = "ocid1.key.oc1.iad.afnxza26aag4s.abzwkljsbapzb2nrha5nt3s7s7p42ctcrcj72vn3kq5qx" - crypto_endpoint = "https://afnxza26aag4s-crypto.kms.us-ashburn-1.oraclecloud.com" - management_endpoint = "https://afnxza26aag4s-management.kms.us-ashburn-1.oraclecloud.com" - auth_type_api_key = "true" + purpose = "root" + key_id = "ocid1.key.oc1.iad.afnxza26aag4s.abzwkljsbapzb2nrha5nt3s7s7p42ctcrcj72vn3kq5qx" + crypto_endpoint = "https://afnxza26aag4s-crypto.kms.us-ashburn-1.oraclecloud.com" + management_endpoint = "https://afnxza26aag4s-management.kms.us-ashburn-1.oraclecloud.com" + auth_type_api_key = "true" } ``` @@ -30,6 +31,7 @@ kms "ocikms" { These parameters apply to the `kms` stanza in the Boundary configuration file: +- `purpose` - Purpose of this KMS, acceptable values are: `worker-auth`, `root`, `recovery`, or `config`. - `key_id` `(string: )`: The OCI KMS key ID to use. - `crypto_endpoint` `(string: )`: The OCI KMS cryptographic endpoint (or data plane endpoint) to be used to make OCI KMS encryption/decryption requests. @@ -47,9 +49,10 @@ If you want to use Instance Principal, add section configuration below and add f ```hcl kms "ocikms" { - crypto_endpoint = "" - management_endpoint = "" - key_id = "" + purpose = "root" + crypto_endpoint = "" + management_endpoint = "" + key_id = "" } ``` @@ -57,10 +60,11 @@ If you want to use User Principal, the plugin will take the API key you defined ```hcl kms "ocikms" { - auth_type_api_key = true - crypto_endpoint = "" - management_endpoint = "" - key_id = "" + purpose = "root" + auth_type_api_key = true + crypto_endpoint = "" + management_endpoint = "" + key_id = "" } ``` @@ -87,12 +91,10 @@ admit dynamic-group of tenancy tenantA to use keys in compa ``` -## `ocikms` Rotate OCI KMS Master Key +## `ocikms` Rotate OCI KMS Key For the [OCI KMS key rotation feature][oci-kms-rotation], OCI KMS will create a new version of key internally. This process is independent from Boundary, and boundary still uses the same `key_id` without any interruption. -If you want to change the `key_id`: migrate to Shamir, change `key_id`, and then migrate to OCI KMS with the new `key_id`. - [oci-sdk]: https://docs.cloud.oracle.com/iaas/Content/API/Concepts/sdkconfig.htm [oci-dg]: https://docs.cloud.oracle.com/iaas/Content/Identity/Tasks/managingdynamicgroups.htm [oci-id]: https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/policies.htm diff --git a/website/content/docs/configuration/kms/transit.mdx b/website/content/docs/configuration/kms/transit.mdx index a28b34b4e..a55f8ef12 100644 --- a/website/content/docs/configuration/kms/transit.mdx +++ b/website/content/docs/configuration/kms/transit.mdx @@ -19,6 +19,7 @@ by providing all the required values: ```hcl kms "transit" { + purpose = "root" address = "https://vault:8200" token = "s.Qf1s5zigZ4OX6akYjQXJC1jY" disable_renewal = "false" @@ -41,6 +42,9 @@ kms "transit" { These parameters apply to the `kms` stanza in the Vault configuration file: +- `purpose` - Purpose of this KMS, acceptable values are: `worker-auth`, `root`, +`recovery`, or `config`. + - `address` `(string: )`: The full address to the Vault cluster. This may also be specified by the `VAULT_ADDR` environment variable. @@ -48,11 +52,11 @@ These parameters apply to the `kms` stanza in the Vault configuration file: specified by the `VAULT_TOKEN` environment variable. - `key_name` `(string: )`: The transit key to use for encryption and - decryption. This may also be supplied using the `VAULT_TRANSIT_SEAL_KEY_NAME` + decryption. This may also be supplied using the `TRANSIT_WRAPPER_KEY_NAME` environment variable. - `mount_path` `(string: )`: The mount path to the transit secret engine. - This may also be supplied using the `VAULT_TRANSIT_SEAL_MOUNT_PATH` environment + This may also be supplied using the `TRANSIT_WRAPPER_MOUNT_PATH` environment variable. - `namespace` `(string: "")`: The namespace path to the transit secret engine. @@ -61,7 +65,7 @@ These parameters apply to the `kms` stanza in the Vault configuration file: - `disable_renewal` `(string: "false")`: Disables the automatic renewal of the token in case the lifecycle of the token is managed with some other mechanism outside of Vault, such as Vault Agent. This may also be specified using the - `VAULT_TRANSIT_SEAL_DISABLE_RENEWAL` environment variable. + `TRANSIT_WRAPPER_DISABLE_RENEWAL` environment variable. - `tls_ca_cert` `(string: "")`: Specifies the path to the CA certificate file used for communication with the Vault server. This may also be specified using the diff --git a/website/content/docs/configuration/listener/tcp.mdx b/website/content/docs/configuration/listener/tcp.mdx index 56ab836ba..8b3f7dcba 100644 --- a/website/content/docs/configuration/listener/tcp.mdx +++ b/website/content/docs/configuration/listener/tcp.mdx @@ -13,27 +13,23 @@ The TCP listener configures Boundary to listen on a TCP address/port. ```hcl listener "tcp" { + purpose = "api" address = "127.0.0.1:9200" } ``` The `listener` stanza may be specified more than once to make Boundary listen on -multiple interfaces. If you configure multiple listeners you also need to -specify [`api_addr`][api-addr] and [`cluster_addr`][cluster-addr] so Boundary will -advertise the correct address to other nodes. +multiple interfaces; however, only one listener marked for `cluster` purpose is +allowed. ## `tcp` Listener Parameters +- `purpose` `(string: "")` - Specifies the purpose. Can be `api`, `cluster`, or +`proxy`. + - `address` `(string: "127.0.0.1:9200")` – Specifies the address to bind to for listening. -- `cluster_address` `(string: "127.0.0.1:9201")` – Specifies the address to bind - to for cluster server-to-server requests. This defaults to one port higher - than the value of `address`. This does not usually need to be set, but can be - useful in case Boundary servers are isolated from each other in such a way that - they need to hop through a TCP load balancer or some other scheme in order to - talk. - - `http_idle_timeout` `(string: "5m")` - Specifies the maximum amount of time to wait for the next request when keep-alives are enabled. If `http_idle_timeout` is zero, the value of `http_read_timeout` is used. If both are zero, the value @@ -53,9 +49,11 @@ advertise the correct address to other nodes. is read. The default value of `"0"` means inifinity. This is specified using a label suffix like `"30s"` or `"1h"`. + - `max_request_duration` `(string: "90s")` – Specifies the maximum request duration allowed before Boundary cancels the request. This overrides @@ -100,6 +98,7 @@ advertise the correct address to other nodes. - `tls_client_ca_file` `(string: "")` – PEM-encoded Certificate Authority file used for checking the authenticity of client. + ## `tcp` Listener Examples @@ -132,6 +132,7 @@ This example shows enabling a TLS listener. ```hcl listener "tcp" { + purpose = "api" tls_cert_file = "/etc/certs/Boundary.crt" tls_key_file = "/etc/certs/Boundary.key" } @@ -143,16 +144,14 @@ This example shows Boundary listening on a private interface, as well as localho ```hcl listener "tcp" { + purpose = "api" address = "127.0.0.1:9200" } listener "tcp" { + purpose = "cluster" address = "10.0.0.5:9200" } - -# Advertise the non-loopback interface -api_addr = "https://10.0.0.5:9200" -cluster_addr = "https://10.0.0.5:9201" ``` [golang-tls]: https://golang.org/src/crypto/tls/cipher_suites.go diff --git a/website/content/docs/configuration/telemetry.mdx b/website/content/docs/configuration/telemetry.mdx deleted file mode 100644 index 7aa8cecf7..000000000 --- a/website/content/docs/configuration/telemetry.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: docs -page_title: Telemetry - Configuration -sidebar_title: telemetry -description: |- - The telemetry stanza specifies various configurations for Boundary to publish - metrics to upstream systems. ---- - -# `telemetry` Stanza - -NOT YET IMPLEMENTED diff --git a/website/content/docs/configuration/worker.mdx b/website/content/docs/configuration/worker.mdx index 7ba5c07a6..7eaf57230 100644 --- a/website/content/docs/configuration/worker.mdx +++ b/website/content/docs/configuration/worker.mdx @@ -3,7 +3,7 @@ layout: docs page_title: Worker - Configuration sidebar_title: worker description: |- - The worker stanza configures worker-specifc parameters. + The worker stanza configures worker-specific parameters. --- # `worker` Stanza @@ -18,17 +18,23 @@ worker { } ``` -- `name` - Specifies a unique name of this worker within the Boundary worker cluster. +- `name` - Specifies a unique name of this worker within the Boundary worker +cluster. - `description` - Specifies a friendly description of this worker. -- `public_addr` - Specifies the public IP address for the worker to be reached on. This is useful for cloud environments that do not bind a publicly accessible IP to a NIC on the host directly, such as an Amazon EIP. +- `public_addr` - Specifies the public host or IP address (and optionally port) +at which the worker can be reached _by clients for proxying_. This defaults to +the address of the listener marked for `proxy` purpose. This is especially +useful for cloud environments that do not bind a publicly accessible IP to a NIC +on the host directly, such as an Amazon EIP. -- `controllers` - A list of IP addresses for reaching controllers on port :9202. +- `controllers` - A list of hosts/IP addresses and optionally ports for reaching +controllers. The port will default to :9201 if not specified. -- KMS block designated for `worker-auth` - This is the KMS configuration for authentication between the workers and controllers and must be present. Example: -```hcl -kms "aead" { +- KMS block designated for `worker-auth` - This is the KMS configuration for +authentication between the workers and controllers and must be present. Example (not safe for production!): +```hcl kms "aead" { purpose = "worker-auth" aead_type = "aes-gcm" key = "8fZBjCUfN0TzjEGLQldGY4+iE9AkOvCfjh7+p0GtRBQ=" @@ -45,16 +51,18 @@ listener "tcp" { } worker { - # Name attr must be unique across workers if running in HA mode - name = "demo-worker-1" - description = "A default worker created demonstration" + # Name attr must be unique across workers + name = "demo-worker-1" + description = "A default worker created demonstration" # Workers must be able to reach controllers on :9202 - controllers = [ + controllers = [ "10.0.0.1", "10.0.0.2", "10.0.0.3", ] + + public_addr = "myhost.mycompany.com" } # must be same key as used on controller config diff --git a/website/data/docs-navigation.js b/website/data/docs-navigation.js index e4cb393c8..0d2ec4f7a 100644 --- a/website/data/docs-navigation.js +++ b/website/data/docs-navigation.js @@ -77,7 +77,6 @@ export default [ }, 'controller', 'worker', - 'telemetry', ], }, {