From 932bc3a3bf5f3e8b8457e20c55452f5409ec8e92 Mon Sep 17 00:00:00 2001 From: "kong-docs[bot]" Date: Thu, 19 Sep 2024 00:24:35 +0000 Subject: [PATCH 01/28] chore(deps): bump kumahq/kuma-website from 5cc88633 to 3c6d7c8d Signed-off-by: kong-docs[bot] --- app/_src/.repos/kuma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/_src/.repos/kuma b/app/_src/.repos/kuma index 5cc8863312e..3c6d7c8d6f3 160000 --- a/app/_src/.repos/kuma +++ b/app/_src/.repos/kuma @@ -1 +1 @@ -Subproject commit 5cc8863312e36745d28c0629caf9848d383fc34c +Subproject commit 3c6d7c8d6f34e10f56cb6225e7325a2cceb40564 From 745794ad3d78b411878bdf1c5c686c03b5d0ed13 Mon Sep 17 00:00:00 2001 From: "kumahq[bot]" <110050114+kumahq[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 18:50:07 +0000 Subject: [PATCH 02/28] chore(deps): update docs from repo source Signed-off-by: kumahq[bot] <110050114+kumahq[bot]@users.noreply.github.com> --- .../mesh/dev/raw/crds/kuma.io_meshmultizoneservices.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/assets/mesh/dev/raw/crds/kuma.io_meshmultizoneservices.yaml b/app/assets/mesh/dev/raw/crds/kuma.io_meshmultizoneservices.yaml index 380548283ce..7bb02ef79c5 100644 --- a/app/assets/mesh/dev/raw/crds/kuma.io_meshmultizoneservices.yaml +++ b/app/assets/mesh/dev/raw/crds/kuma.io_meshmultizoneservices.yaml @@ -54,11 +54,6 @@ spec: port: format: int32 type: integer - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true required: - port type: object From d977c934483c4658c7a0f6cf468f5d7a06eb8006 Mon Sep 17 00:00:00 2001 From: Dustin Dauncey Date: Thu, 19 Sep 2024 09:48:19 -0700 Subject: [PATCH 03/28] Fix: Add missing prerequisite for Rewrite URI annotation (#7940) * Update rewrite-annotation.md Added prerequisite to call out that the `RewriteURIs` feature gate needs to be enabled for this annotation to work. * Update app/_src/kubernetes-ingress-controller/guides/requests/rewrite-annotation.md Update URL for the feature gate page. Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --------- Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --- .../guides/requests/rewrite-annotation.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/_src/kubernetes-ingress-controller/guides/requests/rewrite-annotation.md b/app/_src/kubernetes-ingress-controller/guides/requests/rewrite-annotation.md index e92a4f0bd16..486e613d272 100644 --- a/app/_src/kubernetes-ingress-controller/guides/requests/rewrite-annotation.md +++ b/app/_src/kubernetes-ingress-controller/guides/requests/rewrite-annotation.md @@ -9,7 +9,13 @@ purpose: | The annotation can be used on `Ingress` and `HTTPRoute` resources, and configures a [request-transformer](/hub/kong-inc/request-transformer/) plugin within Kong when added to a route. -This definition creates a route that matches the path `/users/(\w+)` and rewrites it to `/requests/users_svc/$1` before sending the request upstream. +This definition creates a route that matches the path `/users/(\w+)` and rewrites it to `/requests/users_svc/$1` before sending the request upstream. + +## Prerequisite + +The `RewriteURIs` [feature gate](/kubernetes-ingress-controller/{{page.release}}/reference/feature-gates/) must be enabled. + +## Rewriting the path {% include /md/kic/http-test-routing-resource.md release=page.release path='/users/(\w+)' name='user' service='users' port='80' skip_host=true route_type='RegularExpression' no_results=true annotation_rewrite="/requests/users_svc/$1" %} From e97f390424a8d2aaa9bfeb1be0610c50e8015a2c Mon Sep 17 00:00:00 2001 From: Diana <75819066+cloudjumpercat@users.noreply.github.com> Date: Thu, 19 Sep 2024 14:41:42 -0500 Subject: [PATCH 04/28] fix: Convert to AI Semantic Cache LLM examples to `plugin_example` (#7932) * Convert to plugin_example Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> * Fix formatting issues with the plugin examples Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> * Add plugin_example info to contributing docs Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> * Make some formatting updates after testing, some grammar updates Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --------- Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --- .../_mistral.md | 90 ++++++++--------- .../_openai.md | 88 ++++++++--------- app/contributing/kong-plugins.md | 96 +++++++++++++++++++ 3 files changed, 187 insertions(+), 87 deletions(-) diff --git a/app/_hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/_mistral.md b/app/_hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/_mistral.md index 467554f21c4..3139990425a 100644 --- a/app/_hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/_mistral.md +++ b/app/_hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/_mistral.md @@ -8,59 +8,61 @@ title: Set up AI Semantic Cache with Mistral * Mistral's API key * [Redis configured as a vector database](https://redis.io/docs/latest/develop/get-started/vector-database/) * [Redis configured as a cache](https://redis.io/docs/latest/operate/oss_and_stack/management/config/#configuring-redis-as-a-cache) -* You need a service to contain the route for the LLM provider. Create a service **first**: +* A service and a route for the LLM provider. You need a service to contain the route for the LLM provider. Create a service **first**: ```sh curl -X POST http://localhost:8001/services \ --data "name=ai-semantic-cache" \ --data "url=http://localhost:32000" ``` Remember that the upstream URL can point anywhere empty, as it won’t be used by the plugin. + + Then, create a route: + ```sh + curl -X POST http://localhost:8001/services/ai-semantic-cache/routes \ + --data "name=mistral-semantic-cache" \ + --data "paths[]=~/mistral-semantic-cache$" + ``` + -## Steps -1. Create a route: -```sh -curl -X POST http://localhost:8001/services/ai-semantic-cache/routes \ - --data "name=mistral-semantic-cache" \ - --data "paths[]=~/mistral-semantic-cache$" -``` + +{% plugin_example %} +title: Mistral Example +plugin: kong-inc/ai-semantic-cache +name: ai-semantic-cache +config: + embeddings: + auth: + header_name: Authorization + header_value: Bearer MISTRAL_API_KEY + model: + provider: mistral + name: mistral-embed + options: + upstream_url: https://api.mistral.ai/v1/embeddings + vectordb: + dimensions: 1024 + distance_metric: cosine + strategy: redis + threshold: 0.1 + redis: + host: redis-stack.redis.svc.cluster.local + port: 6379 +targets: + - route +formats: + - curl + - konnect + - yaml + - kubernetes + - terraform +{% endplugin_example %} + -1. Set the AI Semantic Cache plugin. This uses Mistral's API Key explicitly, but you can use an environment variable instead if you want. -```sh -curl -s -X POST http://localhost:8001/routes/mistral-semantic-cache/plugins \ - --header 'Content-Type: application/json' \ - --header 'accept: application/json' \ - --data '{ - "name": "ai-semantic-cache", - "instance_name": "ai-semantic-cache", - "config": { - "embeddings": { - "auth": { - "header_name": "Authorization", - "header_value": "Bearer MISTRAL_API_KEY" - }, - "model": { - "provider": "mistral", - "name": "mistral-embed", - "options": { - "upstream_url": "https://api.mistral.ai/v1/embeddings" - } - } - }, - "vectordb": { - "dimensions": 1024, - "distance_metric": "cosine", - "strategy": "redis", - "threshold": 0.1, - "redis": { - "host": "redis-stack.redis.svc.cluster.local", - "port": 6379 - } - } - } - }' -``` This configures the following: -* `embeddings.model.name`: The AI model to use for generating embeddings. This example is configured with `mistral-embed` because it's the only option available for Mistral AI. +* `embeddings.auth.header_value`: The API key for Mistral. This uses Mistral's API Key explicitly, but you can use an environment variable instead if you want. +* `model.provider`: The model provider you want to use. In this example, Mistral. +* `model.name`: The AI model to use for generating embeddings. This example is configured with `mistral-embed` because it's the only option available for Mistral AI. +* `model.options.upstream_url`: The upstream URL for the LLM provider. * `vectordb.dimensions`: The dimensionality for the vectors. This configuration uses `1024` since it's the [example Mistral uses in their documentation](https://docs.mistral.ai/capabilities/embeddings/#mistral-embed-api). * `vectordb.distance_metric`: The distance metric to use for vectors. This example uses `cosine`. * `vectordb.strategy`: Defines the vector database, in this case, Redis. diff --git a/app/_hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/_openai.md b/app/_hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/_openai.md index 8954c0819a2..f8c10fafe79 100644 --- a/app/_hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/_openai.md +++ b/app/_hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/_openai.md @@ -8,7 +8,7 @@ title: Set up AI Semantic Cache with OpenAI * OpenAI account and subscription * [Redis configured as a vector database](https://redis.io/docs/latest/develop/get-started/vector-database/) * [Redis configured as a cache](https://redis.io/docs/latest/operate/oss_and_stack/management/config/#configuring-redis-as-a-cache) -* You need a service to contain the route for the LLM provider. Create a service **first**: +* A service and a route for the LLM provider. You need a service to contain the route for the LLM provider. Create a service **first**: ```sh curl -X POST http://localhost:8001/services \ --data "name=ai-semantic-cache" \ @@ -16,51 +16,52 @@ title: Set up AI Semantic Cache with OpenAI ``` Remember that the upstream URL can point anywhere empty, as it won’t be used by the plugin. -## Steps -1. Create a route: -```sh -curl -X POST http://localhost:8001/services/ai-semantic-cache/routes \ + Then, create a route: + ```sh + curl -X POST http://localhost:8001/services/ai-semantic-cache/routes \ --data "name=openai-semantic-cache" \ --data "paths[]=~/openai-semantic-cache$" -``` + ``` + + +{% plugin_example %} +title: OpenAI Example +plugin: kong-inc/ai-semantic-cache +name: ai-semantic-cache +config: + embeddings: + auth: + header_name: Authorization + header_value: Bearer OPENAI_API_KEY + model: + provider: openai + name: text-embedding-3-large + options: + upstream_url: https://api.openai.com/v1/embeddings + vectordb: + dimensions: 3072 + distance_metric: cosine + strategy: redis + threshold: 0.1 + redis: + host: redis-stack.redis.svc.cluster.local + port: 6379 +targets: + - route +formats: + - curl + - konnect + - yaml + - kubernetes + - terraform +{% endplugin_example %} + -1. Set the AI Semantic Cache plugin. This uses Mistral's API Key explicitly, but you can use an environment variable instead if you want. -```sh -curl -s -X POST http://localhost:8001/routes/openai-semantic-cache/plugins \ - --header 'Content-Type: application/json' \ - --header 'accept: application/json' \ - --data '{ - "name": "ai-semantic-cache", - "instance_name": "ai-semantic-cache", - "config": { - "embeddings": { - "auth": { - "header_name": "Authorization", - "header_value": "Bearer OPENAI_API_KEY" - }, - "model": { - "provider": "openai", - "name": "text-embedding-3-large", - "options": { - "upstream_url": "https://api.openai.com/v1/embeddings" - } - } - }, - "vectordb": { - "dimensions": 3072, - "distance_metric": "cosine", - "strategy": "redis", - "threshold": 0.1, - "redis": { - "host": "redis-stack.redis.svc.cluster.local", - "port": 6379 - } - } - } - }' -``` This configures the following: -* `embeddings.model.name`: The AI model to use for generating embeddings. This example is configured with `text-embedding-3-large`, but you can also choose `text-embedding-3-small` for OpenAI. +* `embeddings.auth.header_value`: The API key for OpenAI. This uses OpenAI's API Key explicitly, but you can use an environment variable instead if you want. +* `model.provider`: The model provider you want to use. In this example, OpenAI. +* `model.name`: The AI model to use for generating embeddings. This example is configured with `text-embedding-3-large`, but you can also choose `text-embedding-3-small` for OpenAI. +* `model.options.upstream_url`: The upstream URL for the LLM provider. * `vectordb.dimensions`: The dimensionality for the vectors. Since this example uses `text-embedding-3-large`, OpenAI uses `3072` as the [default embedding dimension](https://platform.openai.com/docs/guides/embeddings/how-to-get-embeddings). * `vectordb.distance_metric`: The distance metric to use for vectors. This example uses `cosine` because [OpenAI recommends it](https://platform.openai.com/docs/guides/embeddings/which-distance-function-should-i-use). * `vectordb.strategy`: Defines the vector database, in this case, Redis. @@ -68,7 +69,8 @@ This configures the following: * `vectordb.redis.host`: The host of your vector database. * `vectordb.redis.port`: The port to use for your vector database. * `config.embeddings.name`: The AI model to use for generating embeddings. This example is configured with `text-embedding-3-large`, but you can also choose `text-embedding-3-small` for OpenAI. -The `threshold` parameter defines the similarity between for accepting semantic search results. + +This uses OpenAI's API Key explicitly, but you can use an environment variable instead if you want. ## More information * *Redis Documentation:* [Vectors](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/vectors/) - Learn how to use vector fields and perform vector searches in Redis diff --git a/app/contributing/kong-plugins.md b/app/contributing/kong-plugins.md index 5fe2871995a..10557b2a5a5 100644 --- a/app/contributing/kong-plugins.md +++ b/app/contributing/kong-plugins.md @@ -92,6 +92,102 @@ If you have any diagrams or screenshots that you want to add to your plugin docu > *Figure 1: Diagram showing an OAuth2 authentication flow with Keycloak.* ``` +## Adding plugin examples + +You can use `plugin_example` to easily define and format examples using the plugin. + +The example accepts all plugin config, and you can configure it to output any combination of targets and formats that you need. + +Possible targets: +* `service` +* `route` +* `consumer` +* `consumer_group` +* `global` + +Possible formats: +* `curl` +* `konnect` +* `yaml` +* `kubernetes` +* `terrafrom` + +Here's an example of how to format `plugin_example` using OpenAI and AI Semantic Cache: + + +{% raw %} +``` +{% plugin_example %} +title: OpenAI Example +plugin: kong-inc/ai-semantic-cache +name: ai-semantic-cache +config: + embeddings: + auth: + header_name: Authorization + header_value: Bearer OPENAI_API_KEY + model: + provider: openai + name: text-embedding-3-large + options: + upstream_url: https://api.openai.com/v1/embeddings + vectordb: + dimensions: 3072 + distance_metric: cosine + strategy: redis + threshold: 0.1 + redis: + host: redis-stack.redis.svc.cluster.local + port: 6379 +targets: + - route +formats: + - curl + - konnect + - yaml + - kubernetes + - terraform +{% endplugin_example %} +``` +{% endraw %} + + +And here's how that example would render: + + +{% plugin_example %} +title: OpenAI Example +plugin: kong-inc/ai-semantic-cache +name: ai-semantic-cache +config: + embeddings: + auth: + header_name: Authorization + header_value: Bearer OPENAI_API_KEY + model: + provider: openai + name: text-embedding-3-large + options: + upstream_url: https://api.openai.com/v1/embeddings + vectordb: + dimensions: 3072 + distance_metric: cosine + strategy: redis + threshold: 0.1 + redis: + host: redis-stack.redis.svc.cluster.local + port: 6379 +targets: + - route +formats: + - curl + - konnect + - yaml + - kubernetes + - terraform +{% endplugin_example %} + + ## Test and submit plugin 1. Run the docs site locally per the instructions in From 52acdf8697aa1a800aeac055482afb28cd729758 Mon Sep 17 00:00:00 2001 From: Angel Date: Thu, 19 Sep 2024 18:41:57 -0400 Subject: [PATCH 05/28] Chore: Clustering endpoints (#7935) * clustering endpoint * cache endpoints * Apply suggestions from code review Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> * caps * missed one * Apply suggestions from code review Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --------- Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --- api-specs/Gateway-EE/3.6/kong-ee-3.6.yaml | 200 +++++++++++++++++++- api-specs/Gateway-EE/3.7/kong-ee-3.7.yaml | 199 ++++++++++++++++++- api-specs/Gateway-EE/latest/kong-ee.yaml | 199 ++++++++++++++++++- api-specs/Gateway-OSS/3.6/kong-oss-3.6.yaml | 199 ++++++++++++++++++- api-specs/Gateway-OSS/3.7/kong-oss-3.7.yaml | 199 ++++++++++++++++++- api-specs/Gateway-OSS/latest/kong-oss.yaml | 199 ++++++++++++++++++- 6 files changed, 1189 insertions(+), 6 deletions(-) diff --git a/api-specs/Gateway-EE/3.6/kong-ee-3.6.yaml b/api-specs/Gateway-EE/3.6/kong-ee-3.6.yaml index e7e83a5315e..a5c5ed30c93 100644 --- a/api-specs/Gateway-EE/3.6/kong-ee-3.6.yaml +++ b/api-specs/Gateway-EE/3.6/kong-ee-3.6.yaml @@ -15192,6 +15192,198 @@ paths: fips_disabled: value: {"active": false, "version": "unknown"} summary: FIPS mode is disabled or not supported. This may be the default state or result from a license configuration that does not enable FIPS mode. + '/clustering/data-planes': + get: + summary: Retrieve connected data planes + description: > + Retrieve a list of all data planes connected to the control plane. This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlanes + responses: + '200': + description: A list of connected data planes. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: object + properties: + ip: + type: string + description: The IP address of the data plane. + updated_at: + type: integer + description: Unix timestamp of the last update. + config_hash: + type: string + description: The hash of the current configuration on the data plane. + sync_status: + type: string + description: The sync status of the data plane. + version: + type: string + description: The version of Kong running on the data plane. + id: + type: string + description: Unique identifier of the data plane. + hostname: + type: string + description: The hostname of the data plane. + ttl: + type: integer + description: Time-to-live for the connection. + last_seen: + type: integer + description: Unix timestamp when the data plane was last seen by the control plane. + labels: + type: object + description: Metadata labels attached to the data plane. + properties: + deployment: + type: string + description: The deployment name. + region: + type: string + description: The region of the data plane. + cert_details: + type: object + properties: + expiry_timestamp: + type: integer + description: Timestamp for when the certificate expires. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is configured to run as a control plane for the cluster. + tags: + - clustering + + '/clustering/status': + get: + summary: Retrieve the status of connected data planes + description: > + Retrieve a status report for all data planes connected to the control plane. It includes information like the config hash, hostname, IP address, and last seen timestamp. + This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlaneStatus + responses: + '200': + description: The status of all connected data planes. + headers: + Deprecation: + description: > + Indicates that the endpoint may be deprecated in the future. + schema: + type: string + content: + application/json: + schema: + type: object + additionalProperties: + type: object + properties: + config_hash: + type: string + description: Hash of the configuration running on the data plane. + hostname: + type: string + description: Hostname of the data plane. + ip: + type: string + description: The IP address of the data plane. + last_seen: + type: integer + description: Unix timestamp of the last interaction between the data plane and control plane. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is configured to run as a control plane for the cluster. + tags: + - clustering + '/cache/{key}': + get: + summary: Get cache value by key + description: > + Retrieve the cached value for a specific key. This endpoint probes both `kong.cache` and `kong.core_cache`. + If the key exists, it returns the associated value and TTL. If not found, it returns a 404. + operationId: getCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to retrieve. + schema: + type: string + responses: + '200': + description: Cached value found. + content: + application/json: + schema: + type: object + properties: + ttl: + type: integer + description: Time-to-live (TTL) of the cached entry. + message: + type: string + description: Cached value or a message. + '404': + description: Cache key not found. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: Not found + tags: + - cache + delete: + summary: Invalidate cache by key + description: > + Invalidate the cache for a specific key in both `kong.cache` and `kong.core_cache`. + operationId: deleteCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to invalidate. + schema: + type: string + responses: + '204': + description: Cache invalidated successfully. + tags: + - cache + + '/cache': + delete: + summary: Purge all cache entries + description: > + Purge all cache entries in both `kong.cache` and `kong.core_cache`. + operationId: purgeAllCache + responses: + '204': + description: All cache entries purged successfully. + tags: + - cache + servers: - description: Default Admin API URL @@ -15359,4 +15551,10 @@ tags:

Event hooks do not work with Konnect yet.

- name: Event-hooks \ No newline at end of file + name: Event-hooks + - description: | + Retrieve information about the status of data planes when Kong Gateway is running in hybrid mode. + name: clustering + - description: | + Querying and managing cache entries. + name: cache \ No newline at end of file diff --git a/api-specs/Gateway-EE/3.7/kong-ee-3.7.yaml b/api-specs/Gateway-EE/3.7/kong-ee-3.7.yaml index 1d261aff5e9..8eb973f8bf2 100644 --- a/api-specs/Gateway-EE/3.7/kong-ee-3.7.yaml +++ b/api-specs/Gateway-EE/3.7/kong-ee-3.7.yaml @@ -15382,6 +15382,197 @@ paths: summary: Associate a role with a group tags: - Workspaces + '/clustering/data-planes': + get: + summary: Retrieve connected data planes + description: > + Retrieve a list of all data planes connected to the control plane. This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlanes + responses: + '200': + description: A list of connected data planes. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: object + properties: + ip: + type: string + description: The IP address of the data plane. + updated_at: + type: integer + description: Unix timestamp of the last update. + config_hash: + type: string + description: The hash of the current configuration on the data plane. + sync_status: + type: string + description: The sync status of the data plane. + version: + type: string + description: The version of Kong running on the data plane. + id: + type: string + description: Unique identifier of the data plane. + hostname: + type: string + description: The hostname of the data plane. + ttl: + type: integer + description: Time-to-live for the connection. + last_seen: + type: integer + description: Unix timestamp when the data plane was last seen by the control plane. + labels: + type: object + description: Metadata labels attached to the data plane. + properties: + deployment: + type: string + description: The deployment name. + region: + type: string + description: The region of the data plane. + cert_details: + type: object + properties: + expiry_timestamp: + type: integer + description: Timestamp for when the certificate expires. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong Gateway is running as a control plane for the cluster. + tags: + - clustering + + '/clustering/status': + get: + summary: Retrieve the status of connected data planes + description: > + Retrieve a status report for all data planes connected to the control plane. It includes information like the config hash, hostname, IP address, and last seen timestamp. + This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlaneStatus + responses: + '200': + description: The status of all connected data planes. + headers: + Deprecation: + description: > + Indicates that the endpoint may be deprecated in the future. + schema: + type: string + content: + application/json: + schema: + type: object + additionalProperties: + type: object + properties: + config_hash: + type: string + description: Hash of the configuration running on the data plane. + hostname: + type: string + description: Hostname of the data plane. + ip: + type: string + description: The IP address of the data plane. + last_seen: + type: integer + description: Unix timestamp of the last interaction between the data plane and control plane. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + '/cache/{key}': + get: + summary: Get cache value by key + description: > + Retrieve the cached value for a specific key. This endpoint probes both `kong.cache` and `kong.core_cache`. + If the key exists, it returns the associated value and TTL. If not found, it returns a 404. + operationId: getCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to retrieve. + schema: + type: string + responses: + '200': + description: Cached value found. + content: + application/json: + schema: + type: object + properties: + ttl: + type: integer + description: Time-to-live (TTL) of the cached entry. + message: + type: string + description: Cached value or a message. + '404': + description: Cache key not found. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: Not found + tags: + - cache + delete: + summary: Invalidate cache by key + description: > + Invalidate the cache for a specific key in both `kong.cache` and `kong.core_cache`. + operationId: deleteCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to invalidate. + schema: + type: string + responses: + '204': + description: Cache invalidated successfully. + tags: + - cache + + '/cache': + delete: + summary: Purge all cache entries + description: > + Purge all cache entries in both `kong.cache` and `kong.core_cache`. + operationId: purgeAllCache + responses: + '204': + description: All cache entries purged successfully. + tags: + - cache servers: - description: Default Admin API URL @@ -15553,4 +15744,10 @@ tags:

Event hooks do not work with Konnect yet.

- name: Event-hooks \ No newline at end of file + name: Event-hooks + - description: | + Retrieve information about the status of data planes when Kong Gateway is running in hybrid mode. + name: clustering + - description: | + Querying and managing cache entries. + name: cache \ No newline at end of file diff --git a/api-specs/Gateway-EE/latest/kong-ee.yaml b/api-specs/Gateway-EE/latest/kong-ee.yaml index bf143cdb1ec..02469b5bc72 100644 --- a/api-specs/Gateway-EE/latest/kong-ee.yaml +++ b/api-specs/Gateway-EE/latest/kong-ee.yaml @@ -15921,6 +15921,197 @@ paths: summary: Associate a role with a group tags: - Workspaces + '/clustering/data-planes': + get: + summary: Retrieve connected data planes + description: > + Retrieve a list of all data planes connected to the control plane. This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlanes + responses: + '200': + description: A list of connected data planes. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: object + properties: + ip: + type: string + description: The IP address of the data plane. + updated_at: + type: integer + description: Unix timestamp of the last update. + config_hash: + type: string + description: The hash of the current configuration on the data plane. + sync_status: + type: string + description: The sync status of the data plane. + version: + type: string + description: The version of Kong running on the data plane. + id: + type: string + description: Unique identifier of the data plane. + hostname: + type: string + description: The hostname of the data plane. + ttl: + type: integer + description: Time-to-live for the connection. + last_seen: + type: integer + description: Unix timestamp when the data plane was last seen by the control plane. + labels: + type: object + description: Metadata labels attached to the data plane. + properties: + deployment: + type: string + description: The deployment name. + region: + type: string + description: The region of the data plane. + cert_details: + type: object + properties: + expiry_timestamp: + type: integer + description: Timestamp for when the certificate expires. + '400': + description: Kong Gatewat is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + + '/clustering/status': + get: + summary: Retrieve the status of connected data planes + description: > + Retrieve a status report for all data planes connected to the control plane. It includes information like the config hash, hostname, IP address, and last seen timestamp. + This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlaneStatus + responses: + '200': + description: The status of all connected data planes. + headers: + Deprecation: + description: > + Indicates that the endpoint may be deprecated in the future. + schema: + type: string + content: + application/json: + schema: + type: object + additionalProperties: + type: object + properties: + config_hash: + type: string + description: Hash of the configuration running on the data plane. + hostname: + type: string + description: Hostname of the data plane. + ip: + type: string + description: The IP address of the data plane. + last_seen: + type: integer + description: Unix timestamp of the last interaction between the data plane and control plane. + '400': + description: Kong Gatewat is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + '/cache/{key}': + get: + summary: Get cache value by key + description: > + Retrieve the cached value for a specific key. This endpoint probes both `kong.cache` and `kong.core_cache`. + If the key exists, it returns the associated value and TTL. If not found, it returns a 404. + operationId: getCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to retrieve. + schema: + type: string + responses: + '200': + description: Cached value found. + content: + application/json: + schema: + type: object + properties: + ttl: + type: integer + description: Time-to-live (TTL) of the cached entry. + message: + type: string + description: Cached value or a message. + '404': + description: Cache key not found. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: Not found + tags: + - cache + delete: + summary: Invalidate cache by key + description: > + Invalidate the cache for a specific key in both `kong.cache` and `kong.core_cache`. + operationId: deleteCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to invalidate. + schema: + type: string + responses: + '204': + description: Cache invalidated successfully. + tags: + - cache + + '/cache': + delete: + summary: Purge all cache entries + description: > + Purge all cache entries in both `kong.cache` and `kong.core_cache`. + operationId: purgeAllCache + responses: + '204': + description: All cache entries purged successfully. + tags: + - cache servers: - description: Default Admin API URL @@ -16101,4 +16292,10 @@ tags:

Event hooks do not work with Konnect yet.

- name: Event-hooks \ No newline at end of file + name: Event-hooks + - description: | + Retrieve information about the status of data planes when Kong Gateway is running in hybrid mode. + name: clustering + - description: | + Querying and managing cache entries. + name: cache \ No newline at end of file diff --git a/api-specs/Gateway-OSS/3.6/kong-oss-3.6.yaml b/api-specs/Gateway-OSS/3.6/kong-oss-3.6.yaml index 55f3dd5d009..3e2271a90ba 100644 --- a/api-specs/Gateway-OSS/3.6/kong-oss-3.6.yaml +++ b/api-specs/Gateway-OSS/3.6/kong-oss-3.6.yaml @@ -7370,6 +7370,197 @@ paths: description: No vault named operationId: get-schemas-vaults-vault_name description: Retrieve the schema of a vault. + '/clustering/data-planes': + get: + summary: Retrieve connected data planes + description: > + Retrieve a list of all data planes connected to the control plane. This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlanes + responses: + '200': + description: A list of connected data planes. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: object + properties: + ip: + type: string + description: The IP address of the data plane. + updated_at: + type: integer + description: Unix timestamp of the last update. + config_hash: + type: string + description: The hash of the current configuration on the data plane. + sync_status: + type: string + description: The sync status of the data plane. + version: + type: string + description: The version of Kong running on the data plane. + id: + type: string + description: Unique identifier of the data plane. + hostname: + type: string + description: The hostname of the data plane. + ttl: + type: integer + description: Time-to-live for the connection. + last_seen: + type: integer + description: Unix timestamp when the data plane was last seen by the control plane. + labels: + type: object + description: Metadata labels attached to the data plane. + properties: + deployment: + type: string + description: The deployment name. + region: + type: string + description: The region of the data plane. + cert_details: + type: object + properties: + expiry_timestamp: + type: integer + description: Timestamp for when the certificate expires. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + + '/clustering/status': + get: + summary: Retrieve the status of connected data planes + description: > + Retrieve a status report for all data planes connected to the control plane. It includes information like the config hash, hostname, IP address, and last seen timestamp. + This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlaneStatus + responses: + '200': + description: The status of all connected data planes. + headers: + Deprecation: + description: > + Indicates that the endpoint may be deprecated in the future. + schema: + type: string + content: + application/json: + schema: + type: object + additionalProperties: + type: object + properties: + config_hash: + type: string + description: Hash of the configuration running on the data plane. + hostname: + type: string + description: Hostname of the data plane. + ip: + type: string + description: The IP address of the data plane. + last_seen: + type: integer + description: Unix timestamp of the last interaction between the data plane and control plane. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + '/cache/{key}': + get: + summary: Get cache value by key + description: > + Retrieve the cached value for a specific key. This endpoint probes both `kong.cache` and `kong.core_cache`. + If the key exists, it returns the associated value and TTL. If not found, it returns a 404. + operationId: getCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to retrieve. + schema: + type: string + responses: + '200': + description: Cached value found. + content: + application/json: + schema: + type: object + properties: + ttl: + type: integer + description: Time-to-live (TTL) of the cached entry. + message: + type: string + description: Cached value or a message. + '404': + description: Cache key not found. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: Not found + tags: + - cache + delete: + summary: Invalidate cache by key + description: > + Invalidate the cache for a specific key in both `kong.cache` and `kong.core_cache`. + operationId: deleteCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to invalidate. + schema: + type: string + responses: + '204': + description: Cache invalidated successfully. + tags: + - cache + + '/cache': + delete: + summary: Purge all cache entries + description: > + Purge all cache entries in both `kong.cache` and `kong.core_cache`. + operationId: purgeAllCache + responses: + '204': + description: All cache entries purged successfully. + tags: + - cache servers: - description: Default Admin API URL url: '{protocol}://{hostname}:{port}{path}' @@ -7484,4 +7675,10 @@ tags: Tags are strings associated to entities in Kong Gateway. Tags can contain almost all UTF-8 characters, with the following exceptions: `,`,`/`, and non-printable ASCII (for example, the space character).

Most core entities can be tagged via the tags attribute upon creation or modification. - name: Tags \ No newline at end of file + name: Tags + - description: | + Retrieve information about the status of data planes when Kong Gateway is running in hybrid mode. + name: clustering + - description: | + Querying and managing cache entries. + name: cache \ No newline at end of file diff --git a/api-specs/Gateway-OSS/3.7/kong-oss-3.7.yaml b/api-specs/Gateway-OSS/3.7/kong-oss-3.7.yaml index dc16a78475f..122e7e78ac8 100644 --- a/api-specs/Gateway-OSS/3.7/kong-oss-3.7.yaml +++ b/api-specs/Gateway-OSS/3.7/kong-oss-3.7.yaml @@ -7280,7 +7280,7 @@ paths: '401': $ref: '#/components/responses/HTTP401Error' description: | - Change the log level of all Control Plane nodes deployed in Hybrid (CP/DP) cluster. + Change the log level of all control plane nodes deployed in a hybrid (CP/DP) cluster. See the [NGINX docs](http://nginx.org/en/docs/ngx_core_module.html#error_log) for a list of accepted values. @@ -7718,6 +7718,197 @@ paths: Delete filter chain associated to a specific service. tags: - filter-chains + '/clustering/data-planes': + get: + summary: Retrieve connected data planes + description: > + Retrieve a list of all data planes connected to the control plane. This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlanes + responses: + '200': + description: A list of connected data planes. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: object + properties: + ip: + type: string + description: The IP address of the data plane. + updated_at: + type: integer + description: Unix timestamp of the last update. + config_hash: + type: string + description: The hash of the current configuration on the data plane. + sync_status: + type: string + description: The sync status of the data plane. + version: + type: string + description: The version of Kong running on the data plane. + id: + type: string + description: Unique identifier of the data plane. + hostname: + type: string + description: The hostname of the data plane. + ttl: + type: integer + description: Time-to-live for the connection. + last_seen: + type: integer + description: Unix timestamp when the data plane was last seen by the control plane. + labels: + type: object + description: Metadata labels attached to the data plane. + properties: + deployment: + type: string + description: The deployment name. + region: + type: string + description: The region of the data plane. + cert_details: + type: object + properties: + expiry_timestamp: + type: integer + description: Timestamp for when the certificate expires. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + + '/clustering/status': + get: + summary: Retrieve the status of connected data planes + description: > + Retrieve a status report for all data planes connected to the control plane. It includes information like the config hash, hostname, IP address, and last seen timestamp. + This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlaneStatus + responses: + '200': + description: The status of all connected data planes. + headers: + Deprecation: + description: > + Indicates that the endpoint may be deprecated in the future. + schema: + type: string + content: + application/json: + schema: + type: object + additionalProperties: + type: object + properties: + config_hash: + type: string + description: Hash of the configuration running on the data plane. + hostname: + type: string + description: Hostname of the data plane. + ip: + type: string + description: The IP address of the data plane. + last_seen: + type: integer + description: Unix timestamp of the last interaction between the data plane and control plane. + '400': + description: Kong Gateway is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + '/cache/{key}': + get: + summary: Get cache value by key + description: > + Retrieve the cached value for a specific key. This endpoint probes both `kong.cache` and `kong.core_cache`. + If the key exists, it returns the associated value and TTL. If not found, it returns a 404. + operationId: getCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to retrieve. + schema: + type: string + responses: + '200': + description: Cached value found. + content: + application/json: + schema: + type: object + properties: + ttl: + type: integer + description: Time-to-live (TTL) of the cached entry. + message: + type: string + description: Cached value or a message. + '404': + description: Cache key not found. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: Not found + tags: + - cache + delete: + summary: Invalidate cache by key + description: > + Invalidate the cache for a specific key in both `kong.cache` and `kong.core_cache`. + operationId: deleteCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to invalidate. + schema: + type: string + responses: + '204': + description: Cache invalidated successfully. + tags: + - cache + + '/cache': + delete: + summary: Purge all cache entries + description: > + Purge all cache entries in both `kong.cache` and `kong.core_cache`. + operationId: purgeAllCache + responses: + '204': + description: All cache entries purged successfully. + tags: + - cache servers: - description: Default Admin API URL url: '{protocol}://{hostname}:{port}{path}' @@ -7833,3 +8024,9 @@ tags:

Most core entities can be tagged via the tags attribute upon creation or modification. name: Tags + - description: | + Retreieve information about the status of data planes when Kong Gateway is configured in hybrid mode. + name: clustering + - description: | + Querying and managing cache entries. + name: cache diff --git a/api-specs/Gateway-OSS/latest/kong-oss.yaml b/api-specs/Gateway-OSS/latest/kong-oss.yaml index 6aa5a0fcb0c..0a914d473fe 100644 --- a/api-specs/Gateway-OSS/latest/kong-oss.yaml +++ b/api-specs/Gateway-OSS/latest/kong-oss.yaml @@ -7331,7 +7331,7 @@ paths: '401': $ref: '#/components/responses/HTTP401Error' description: | - Change the log level of all Control Plane nodes deployed in Hybrid (CP/DP) cluster. + Change the log level of all control plane nodes deployed in a hybrid (CP/DP) cluster. See the [NGINX docs](http://nginx.org/en/docs/ngx_core_module.html#error_log) for a list of accepted values. @@ -7769,6 +7769,197 @@ paths: Delete filter chain associated to a specific service. tags: - filter-chains + '/clustering/data-planes': + get: + summary: Retrieve connected data planes + description: > + Retrieve a list of all data planes connected to the control plane. This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlanes + responses: + '200': + description: A list of connected data planes. + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: object + properties: + ip: + type: string + description: The IP address of the data plane. + updated_at: + type: integer + description: Unix timestamp of the last update. + config_hash: + type: string + description: The hash of the current configuration on the data plane. + sync_status: + type: string + description: The sync status of the data plane. + version: + type: string + description: The version of Kong running on the data plane. + id: + type: string + description: Unique identifier of the data plane. + hostname: + type: string + description: The hostname of the data plane. + ttl: + type: integer + description: Time-to-live for the connection. + last_seen: + type: integer + description: Unix timestamp when the data plane was last seen by the control plane. + labels: + type: object + description: Metadata labels attached to the data plane. + properties: + deployment: + type: string + description: The deployment name. + region: + type: string + description: The region of the data plane. + cert_details: + type: object + properties: + expiry_timestamp: + type: integer + description: Timestamp for when the certificate expires. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + + '/clustering/status': + get: + summary: Retrieve the status of connected data planes + description: > + Retrieve a status report for all data planes connected to the control plane. It includes information like the config hash, hostname, IP address, and last seen timestamp. + This endpoint is only accessible when Kong Gateway is running in hybrid mode. + operationId: getDataPlaneStatus + responses: + '200': + description: The status of all connected data planes. + headers: + Deprecation: + description: > + Indicates that the endpoint may be deprecated in the future. + schema: + type: string + content: + application/json: + schema: + type: object + additionalProperties: + type: object + properties: + config_hash: + type: string + description: Hash of the configuration running on the data plane. + hostname: + type: string + description: Hostname of the data plane. + ip: + type: string + description: The IP address of the data plane. + last_seen: + type: integer + description: Unix timestamp of the last interaction between the data plane and control plane. + '400': + description: Kong is not running as a control plane. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: This endpoint is only available when Kong is running as a control plane for the cluster. + tags: + - clustering + '/cache/{key}': + get: + summary: Get cache value by key + description: > + Retrieve the cached value for a specific key. This endpoint probes both `kong.cache` and `kong.core_cache`. + If the key exists, it returns the associated value and TTL. If not found, it returns a 404. + operationId: getCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to retrieve. + schema: + type: string + responses: + '200': + description: Cached value found. + content: + application/json: + schema: + type: object + properties: + ttl: + type: integer + description: Time-to-live (TTL) of the cached entry. + message: + type: string + description: Cached value or a message. + '404': + description: Cache key not found. + content: + application/json: + schema: + type: object + properties: + message: + type: string + example: Not found + tags: + - cache + delete: + summary: Invalidate cache by key + description: > + Invalidate the cache for a specific key in both `kong.cache` and `kong.core_cache`. + operationId: deleteCacheByKey + parameters: + - name: key + in: path + required: true + description: The cache key to invalidate. + schema: + type: string + responses: + '204': + description: Cache invalidated successfully. + tags: + - cache + + '/cache': + delete: + summary: Purge all cache entries + description: > + Purge all cache entries in both `kong.cache` and `kong.core_cache`. + operationId: purgeAllCache + responses: + '204': + description: All cache entries purged successfully. + tags: + - cache servers: - description: Default Admin API URL url: '{protocol}://{hostname}:{port}{path}' @@ -7884,3 +8075,9 @@ tags:

Most core entities can be tagged via the tags attribute upon creation or modification. name: Tags + - description: | + Retreieve information about the status of data planes when Kong Gateway is configured in hybrid mode. + name: clustering + - description: | + Querying and managing cache entries. + name: cache From cd91077c1bcac7eb4ff664a1688237a0403060bf Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Fri, 20 Sep 2024 06:57:00 -0700 Subject: [PATCH 06/28] Fix: Logging plugins log format + descriptions (#7948) update and clean up log example --- app/_hub/kong-inc/file-log/overview/_index.md | 4 +- .../kong-inc/kafka-log/overview/_index.md | 2 +- app/_hub/kong-inc/loggly/overview/_index.md | 4 +- app/_hub/kong-inc/syslog/overview/_index.md | 4 +- app/_hub/kong-inc/tcp-log/overview/_index.md | 4 +- app/_hub/kong-inc/udp-log/overview/_index.md | 4 +- .../md/plugins-hub/json-object-log.md | 16 +- app/_includes/md/plugins-hub/log-format.md | 297 ++++++------------ 8 files changed, 124 insertions(+), 211 deletions(-) diff --git a/app/_hub/kong-inc/file-log/overview/_index.md b/app/_hub/kong-inc/file-log/overview/_index.md index 9d3829d3540..6155cde38cb 100644 --- a/app/_hub/kong-inc/file-log/overview/_index.md +++ b/app/_hub/kong-inc/file-log/overview/_index.md @@ -13,7 +13,7 @@ to physical files on slow (spinning) disks. {% include /md/plugins-hub/log-format.md %} -### JSON object considerations +### Log format definitions {% include /md/plugins-hub/json-object-log.md %} @@ -21,7 +21,7 @@ to physical files on slow (spinning) disks. {% include /md/plugins-hub/kong-process-errors.md %} -## Custom Fields by Lua +## Custom fields by Lua {% include /md/plugins-hub/log_custom_fields_by_lua.md %} diff --git a/app/_hub/kong-inc/kafka-log/overview/_index.md b/app/_hub/kong-inc/kafka-log/overview/_index.md index 708ef7918e8..7f3e5358ae3 100644 --- a/app/_hub/kong-inc/kafka-log/overview/_index.md +++ b/app/_hub/kong-inc/kafka-log/overview/_index.md @@ -136,7 +136,7 @@ This plugin supports the following authentication mechanisms: [Read more on how to create, renew, and revoke delegation tokens.](https://docs.confluent.io/platform/current/kafka/authentication_sasl/authentication_sasl_delegation.html#authentication-using-delegation-tokens) {% if_version gte:3.4.x %} -## Custom Fields by Lua +## Custom fields by Lua {% include /md/plugins-hub/log_custom_fields_by_lua.md %} diff --git a/app/_hub/kong-inc/loggly/overview/_index.md b/app/_hub/kong-inc/loggly/overview/_index.md index 3d34c898ca0..cbbed5d1782 100644 --- a/app/_hub/kong-inc/loggly/overview/_index.md +++ b/app/_hub/kong-inc/loggly/overview/_index.md @@ -14,7 +14,7 @@ logging level severity the same as or lower than the set `config.log_level` for {% include /md/plugins-hub/log-format.md %} -### JSON object considerations +### Log format definitions {% include /md/plugins-hub/json-object-log.md %} @@ -22,6 +22,6 @@ logging level severity the same as or lower than the set `config.log_level` for {% include /md/plugins-hub/kong-process-errors.md %} -## Custom Fields by Lua +## Custom fields by Lua {% include /md/plugins-hub/log_custom_fields_by_lua.md %} diff --git a/app/_hub/kong-inc/syslog/overview/_index.md b/app/_hub/kong-inc/syslog/overview/_index.md index 32c74ea125f..5cac6b439aa 100644 --- a/app/_hub/kong-inc/syslog/overview/_index.md +++ b/app/_hub/kong-inc/syslog/overview/_index.md @@ -14,7 +14,7 @@ logging level severity the same as or lower than the set `config.log_level` for {% include /md/plugins-hub/log-format.md %} -### JSON object considerations +### Log format definitions {% include /md/plugins-hub/json-object-log.md %} @@ -22,7 +22,7 @@ logging level severity the same as or lower than the set `config.log_level` for {% include /md/plugins-hub/kong-process-errors.md %} -## Custom Fields by Lua +## Custom fields by Lua {% include /md/plugins-hub/log_custom_fields_by_lua.md %} diff --git a/app/_hub/kong-inc/tcp-log/overview/_index.md b/app/_hub/kong-inc/tcp-log/overview/_index.md index 947843f527f..f6aa529f3cc 100644 --- a/app/_hub/kong-inc/tcp-log/overview/_index.md +++ b/app/_hub/kong-inc/tcp-log/overview/_index.md @@ -8,7 +8,7 @@ Log request and response data to a TCP server. {% include /md/plugins-hub/log-format.md %} -### JSON object considerations +### Log format definitions {% include /md/plugins-hub/json-object-log.md %} @@ -16,7 +16,7 @@ Log request and response data to a TCP server. {% include /md/plugins-hub/kong-process-errors.md %} -## Custom Fields by Lua +## Custom fields by Lua {% include /md/plugins-hub/log_custom_fields_by_lua.md %} diff --git a/app/_hub/kong-inc/udp-log/overview/_index.md b/app/_hub/kong-inc/udp-log/overview/_index.md index fa99d33dbba..d6e89bbb87c 100644 --- a/app/_hub/kong-inc/udp-log/overview/_index.md +++ b/app/_hub/kong-inc/udp-log/overview/_index.md @@ -8,7 +8,7 @@ Log request and response data to an UDP server. {% include /md/plugins-hub/log-format.md %} -### JSON object considerations +### Log format definitions {% include /md/plugins-hub/json-object-log.md %} @@ -16,7 +16,7 @@ Log request and response data to an UDP server. {% include /md/plugins-hub/kong-process-errors.md %} -## Custom Fields by Lua +## Custom fields by Lua {% include /md/plugins-hub/log_custom_fields_by_lua.md %} diff --git a/app/_includes/md/plugins-hub/json-object-log.md b/app/_includes/md/plugins-hub/json-object-log.md index 0f890ca61ba..e63352a2c90 100644 --- a/app/_includes/md/plugins-hub/json-object-log.md +++ b/app/_includes/md/plugins-hub/json-object-log.md @@ -5,7 +5,7 @@ * `request`: Properties about the request sent by the client. * `response`: Properties about the response sent to the client. * `latencies`: Latency data. -{% if_version gte:3.7.x %} +{%- if_version gte:3.7.x %} * `kong`: The internal {{site.base_gateway}} latency, in milliseconds, that it takes to process the request. * For requests that are proxied to an upstream, it is equivalent to the `X-Kong-Proxy-Latency` [response header](/gateway/latest/reference/configuration/#headers). * For requests that generate a response within {{ site.base_gateway }} (typically the result of an error or a plugin-generated response), it is equivalent to the `X-Kong-Response-Latency` [response header](/gateway/latest/reference/configuration/#headers). @@ -13,8 +13,8 @@ * `proxy`: The time in milliseconds that it took for the upstream to process the request. In other words, it's the time elapsed between transferring the request to the final service and when {{site.base_gateway}} starts receiving the response. * `receive`: The time in milliseconds that it took to receive and process the response (headers and body) from the upstream. -{% endif_version %} -{% if_version lte:3.6.x %} +{%- endif_version %} +{%- if_version lte:3.6.x %} * `kong`: The internal {{site.base_gateway}} latency, in milliseconds, that it takes to process the request. It varies based on the actual processing flow. Generally, it consists of three parts: * The time it took to find the right upstream. * The time it took to receive the whole response from upstream. @@ -22,7 +22,7 @@ * `request`: The time in milliseconds that has elapsed between when the first bytes were read from the client and the last byte was sent to the client. This is useful for detecting slow clients. * `proxy`: The time in milliseconds that it took for the upstream to process the request. In other words, it's the time elapsed between transferring the request to the final service and when {{site.base_gateway}} starts receiving the response. -{% endif_version %} +{%- endif_version %} * `tries`: a list of iterations made by the load balancer for this request. * `balancer_start`: A Unix timestamp for when the balancer started. * `ip`: The IP address of the contacted balancer. @@ -30,12 +30,16 @@ * `balancer_latency`: The latency of the balancer expressed in milliseconds. * `client_ip`: The original client IP address. * `workspace`: The UUID of the workspace associated with this request. -{% if_version gte:3.4.x %} +{%- if_version gte:3.4.x %} * `workspace_name`: The name of the workspace associated with this request. -{% endif_version %} +{%- endif_version %} * `upstream_uri`: The URI, including query parameters, for the configured upstream. * `authenticated_entity`: Properties about the authenticated credential (if an authentication plugin has been enabled). * `consumer`: The authenticated consumer (if an authentication plugin has been enabled). * `started_at`: The unix timestamp of when the request has started to be processed. +{%- if_version gte:3.6.x %} +* `source`: Indicates whether the response is generated by `kong` or `upstream`. +* `upstream_status`: The status code received from the upstream in the response. +{%- endif_version %} Log plugins enabled on services and routes contain information about the service or route. diff --git a/app/_includes/md/plugins-hub/log-format.md b/app/_includes/md/plugins-hub/log-format.md index 4c718326833..17fed1ce33b 100644 --- a/app/_includes/md/plugins-hub/log-format.md +++ b/app/_includes/md/plugins-hub/log-format.md @@ -1,206 +1,115 @@ - + Every request is logged separately in a JSON object, separated by a new line `\n`, with the following format: -{% if_version lte:3.3.x %} ```json { - "service": { - "host": "httpbin.org", - "created_at": 1614232642, - "connect_timeout": 60000, - "id": "167290ee-c682-4ebf-bdea-e49a3ac5e260", - "protocol": "http", - "read_timeout": 60000, - "port": 80, - "path": "/anything", - "updated_at": 1614232642, - "write_timeout": 60000, - "retries": 5, - "ws_id": "54baa5a9-23d6-41e0-9c9a-02434b010b25" - }, - "route": { - "id": "78f79740-c410-4fd9-a998-d0a60a99dc9b", - "paths": [ - "/log" - ], - "protocols": [ - "http" - ], - "strip_path": true, - "created_at": 1614232648, - "ws_id": "54baa5a9-23d6-41e0-9c9a-02434b010b25", - "request_buffering": true, - "updated_at": 1614232648, - "preserve_host": false, - "regex_priority": 0, - "response_buffering": true, - "https_redirect_status_code": 426, - "path_handling": "v0", - "service": { - "id": "167290ee-c682-4ebf-bdea-e49a3ac5e260" - } - }, - "request": { - "querystring": {}, - "size": 138, - "uri": "/log", - "url": "http://localhost:8000/log", - "headers": { - "host": "localhost:8000", - "accept-encoding": "gzip, deflate", - "user-agent": "HTTPie/2.4.0", - "accept": "*/*", - "connection": "keep-alive" + "response": { + "size": 9982, + "headers": { + "access-control-allow-origin": "*", + "content-length": "9593", + "date": "Thu, 19 Sep 2024 22:10:39 GMT", + "content-type": "text/html; charset=utf-8", + "via": "1.1 kong/3.8.0.0-enterprise-edition", + "connection": "close", + "server": "gunicorn/19.9.0", + "access-control-allow-credentials": "true", + "x-kong-upstream-latency": "171", + "x-kong-proxy-latency": "1", + {%- if_version gte:3.5.x %} + "x-kong-request-id": "2f6946328ffc4946b8c9120704a4a155" + {%- endif_version %} + }, + "status": 200 }, - "method": "GET" - }, - "response": { - "headers": { - "content-type": "application/json", - "date": "Thu, 25 Feb 2021 05:57:48 GMT", - "connection": "close", - "access-control-allow-credentials": "true", - "content-length": "503", - "server": "gunicorn/19.9.0", - "via": "kong/2.2.1.0-enterprise-edition", - "x-kong-proxy-latency": "57", - "x-kong-upstream-latency": "457", - "access-control-allow-origin": "*" + "route": { + "updated_at": 1726782477, + "tags": [], + "response_buffering": true, + "path_handling": "v0", + "protocols": [ + "http", + "https" + ], + "service": { + "id": "fb4eecf8-dec2-40ef-b779-16de7e2384c7" + }, + "https_redirect_status_code": 426, + "regex_priority": 0, + "name": "example_route", + "id": "0f1a4101-3327-4274-b1e4-484a4ab0c030", + "strip_path": true, + "preserve_host": false, + "created_at": 1726782477, + "request_buffering": true, + "ws_id": "f381e34e-5c25-4e65-b91b-3c0a86cfc393", + "paths": [ + "/example-route" + ] }, - "status": 200, - "size": 827 - }, - "latencies": { - "request": 515, - "kong": 58, - "proxy": 457 - }, - "tries": [ - { - "balancer_latency": 0, - "port": 80, - "balancer_start": 1614232668399, - "ip": "18.211.130.98" - } - ], - "client_ip": "192.168.144.1", - "workspace": "54baa5a9-23d6-41e0-9c9a-02434b010b25", - "upstream_uri": "/anything", - "authenticated_entity": { - "id": "c62c1455-9b1d-4f2d-8797-509ba83b8ae8" - }, - "consumer": { - "id": "ae974d6c-0f8a-4dc5-b701-fa0aa38592bd", - "created_at": 1674035962, - "username_lower": "foo", - "username": "foo", - "type": 0 - }, - "started_at": 1614232668342 -} -``` -{% endif_version %} - - -{% if_version gte:3.4.x %} -```json -{ - "service": { - "host": "httpbin.org", - "created_at": 1614232642, - "connect_timeout": 60000, - "id": "167290ee-c682-4ebf-bdea-e49a3ac5e260", - "protocol": "http", - "read_timeout": 60000, - "port": 80, - "path": "/anything", - "updated_at": 1614232642, - "write_timeout": 60000, - "retries": 5, - "ws_id": "54baa5a9-23d6-41e0-9c9a-02434b010b25" - }, - "route": { - "id": "78f79740-c410-4fd9-a998-d0a60a99dc9b", - "paths": [ - "/log" - ], - "protocols": [ - "http" + "workspace": "f381e34e-5c25-4e65-b91b-3c0a86cfc393", + {%- if_version gte:3.4.x %} + "workspace_name": "default", + {%- endif_version %} + "tries": [ + { + "balancer_start": 1726783839539, + "balancer_start_ns": 1.7267838395395e+18, + "ip": "34.237.204.224", + "balancer_latency": 0, + "port": 80, + "balancer_latency_ns": 27904 + } ], - "strip_path": true, - "created_at": 1614232648, - "ws_id": "54baa5a9-23d6-41e0-9c9a-02434b010b25", - "request_buffering": true, - "updated_at": 1614232648, - "preserve_host": false, - "regex_priority": 0, - "response_buffering": true, - "https_redirect_status_code": 426, - "path_handling": "v0", - "service": { - "id": "167290ee-c682-4ebf-bdea-e49a3ac5e260" - } - }, - "request": { - "querystring": {}, - "size": 138, - "uri": "/log", - "url": "http://localhost:8000/log", - "headers": { - "host": "localhost:8000", - "accept-encoding": "gzip, deflate", - "user-agent": "HTTPie/2.4.0", - "accept": "*/*", - "connection": "keep-alive" + "client_ip": "192.168.65.1", + "request": { + {%- if_version gte:3.5.x %} + "id": "2f6946328ffc4946b8c9120704a4a155", + {%- endif_version %} + "headers": { + "accept": "*/*", + "user-agent": "HTTPie/3.2.3", + "host": "localhost:8000", + "connection": "keep-alive", + "accept-encoding": "gzip, deflate" + }, + "uri": "/example-route", + "size": 139, + "method": "GET", + "querystring": {}, + "url": "http://localhost:8000/example-route" }, - "method": "GET" - }, - "response": { - "headers": { - "content-type": "application/json", - "date": "Thu, 25 Feb 2021 05:57:48 GMT", - "connection": "close", - "access-control-allow-credentials": "true", - "content-length": "503", - "server": "gunicorn/19.9.0", - "via": "kong/2.2.1.0-enterprise-edition", - "x-kong-proxy-latency": "57", - "x-kong-upstream-latency": "457", - "access-control-allow-origin": "*" + {%- if_version gte:3.6.x %} + "upstream_uri": "/", + {%- endif_version %} + "started_at": 1726783839538, + {%- if_version gte:3.6.x %} + "source": "upstream", + {%- endif_version %} + "upstream_status": "200", + "latencies": { + "kong": 1, + "proxy": 171, + "request": 173, + {%- if_version gte:3.7.x %} + "receive": 1 + {%- endif_version %} }, - "status": 200, - "size": 827 - }, - "latencies": { - "request": 515, - "kong": 58, - "proxy": 457 - }, - "tries": [ - { - "balancer_latency": 0, - "port": 80, - "balancer_start": 1614232668399, - "ip": "18.211.130.98" + "service": { + "write_timeout": 60000, + "read_timeout": 60000, + "updated_at": 1726782459, + "host": "httpbin.org", + "name": "example_service", + "id": "fb4eecf8-dec2-40ef-b779-16de7e2384c7", + "port": 80, + "enabled": true, + "created_at": 1726782459, + "protocol": "http", + "ws_id": "f381e34e-5c25-4e65-b91b-3c0a86cfc393", + "connect_timeout": 60000, + "retries": 5 } - ], - "client_ip": "192.168.144.1", - "workspace": "54baa5a9-23d6-41e0-9c9a-02434b010b25", - "workspace_name": "default", - "upstream_uri": "/anything", - "authenticated_entity": { - "id": "c62c1455-9b1d-4f2d-8797-509ba83b8ae8" - }, - "consumer": { - "id": "ae974d6c-0f8a-4dc5-b701-fa0aa38592bd", - "created_at": 1674035962, - "username_lower": "foo", - "username": "foo", - "type": 0 - }, - "started_at": 1614232668342 } -``` -{% endif_version %} +``` \ No newline at end of file From 7a8d814f52e8bd136d616c1fd9029fbc8dc6353e Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Fri, 20 Sep 2024 06:57:43 -0700 Subject: [PATCH 07/28] Chore: Add AI Gateway to sidebar dropdown (#7946) add AI Gateway to sidebar dropdown --- app/_includes/docs-sidebar.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/_includes/docs-sidebar.html b/app/_includes/docs-sidebar.html index 093f98d05d1..439ded99f76 100644 --- a/app/_includes/docs-sidebar.html +++ b/app/_includes/docs-sidebar.html @@ -30,6 +30,9 @@ +
  • + Kong AI Gateway +
  • Plugin Hub
  • From bc97cf462792f8d141319c6269c86e22316cb094 Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Fri, 20 Sep 2024 06:58:12 -0700 Subject: [PATCH 08/28] Fix: Add missing `_APPD` to env variables (#7945) add missing _APPD to env variables --- app/_hub/kong-inc/app-dynamics/overview/_index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/_hub/kong-inc/app-dynamics/overview/_index.md b/app/_hub/kong-inc/app-dynamics/overview/_index.md index 16227744c5d..03c39d8e731 100644 --- a/app/_hub/kong-inc/app-dynamics/overview/_index.md +++ b/app/_hub/kong-inc/app-dynamics/overview/_index.md @@ -83,15 +83,15 @@ for more information about the configuration parameters. | `KONG_APPD_CONTROLLER_HTTP_PROXY_USERNAME` | Username to use to identify to proxy. This value is a string that is never shown in logs. This value can be specified as a vault reference.| String | | | `KONG_APPD_CONTROLLER_HTTP_PROXY_PASSWORD` | Password to use to identify to proxy. This value is a string that is never shown in logs. This value can be specified as a vault reference.| String | | {% if_version eq:3.4.x %} -| `KONG_CONTROLLER_CERTIFICATE_FILE` | Path to a self-signed certificate file. For example, `/etc/kong/certs/ca-certs.pem`.

    _Available starting in {{site.base_gateway}} 3.4.3.3_ | String | | -| `KONG_CONTROLLER_CERTIFICATE_DIR` | Path to a certificate directory. For example, `/etc/kong/certs/`.

    _Available starting in {{site.base_gateway}} 3.4.3.3_ | String | | +| `KONG_APPD_CONTROLLER_CERTIFICATE_FILE` | Path to a self-signed certificate file. For example, `/etc/kong/certs/ca-certs.pem`.

    _Available starting in {{site.base_gateway}} 3.4.3.3_ | String | | +| `KONG_APPD_CONTROLLER_CERTIFICATE_DIR` | Path to a certificate directory. For example, `/etc/kong/certs/`.

    _Available starting in {{site.base_gateway}} 3.4.3.3_ | String | | {% endif_version %} {% if_version gte:3.6.x %} -| `KONG_CONTROLLER_CERTIFICATE_FILE` | Path to a self-signed certificate file. For example, `/etc/kong/certs/ca-certs.pem`. | String | | -| `KONG_CONTROLLER_CERTIFICATE_DIR` | Path to a certificate directory. For example, `/etc/kong/certs/`. | String | | +| `KONG_APPD_CONTROLLER_CERTIFICATE_FILE` | Path to a self-signed certificate file. For example, `/etc/kong/certs/ca-certs.pem`. | String | | +| `KONG_APPD_CONTROLLER_CERTIFICATE_DIR` | Path to a certificate directory. For example, `/etc/kong/certs/`. | String | | {% endif_version %} {% if_version gte:3.8.x %} -| `KONG_ANALYTICS_ENABLE` | Enable or disable Analytics Agent reporting. When disabled (default), Analytics-related logging messages are suppressed. | Boolean | `false` | +| `KONG_APPD_ANALYTICS_ENABLE` | Enable or disable Analytics Agent reporting. When disabled (default), Analytics-related logging messages are suppressed. | Boolean | `false` | {% endif_version %} #### Possible values for the `KONG_APPD_LOGGING_LEVEL` parameter From 550d205e3e98197d169ef9805986fa5210133e8c Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Fri, 20 Sep 2024 06:58:28 -0700 Subject: [PATCH 09/28] fix: decK latest version (#7944) * fix deck latest version * Update to latest available patch versions --- app/_data/kong_versions.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/_data/kong_versions.yml b/app/_data/kong_versions.yml index 8efb125bafe..f9c2d07af8f 100644 --- a/app/_data/kong_versions.yml +++ b/app/_data/kong_versions.yml @@ -277,13 +277,13 @@ - release: "1.38.x" version: "1.38.1" edition: "deck" - latest: true - release: "1.39.x" - version: "1.39.0" + version: "1.39.6" edition: "deck" - release: "1.40.x" - version: "1.40.0" + version: "1.40.2" edition: "deck" + latest: true - release: "1.41.x" version: "1.41.0" edition: "deck" From 919628595fd0720d27c17beef75bf2319460baba Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Fri, 20 Sep 2024 06:59:33 -0700 Subject: [PATCH 10/28] chore: Add terraform tab to plugin_examples blocks (#7926) add terraform tab to plugin_examples blocks --- app/_hub/kong-inc/acl/how-to/_consumer-groups.md.md | 2 ++ app/_hub/kong-inc/ai-azure-content-safety/how-to/_index.md | 2 ++ .../how-to/_cloud-provider-authentication.md | 4 ++++ .../how-to/llm-provider-integration-guides/_anthropic.md | 1 + .../how-to/llm-provider-integration-guides/_azure.md | 1 + .../how-to/llm-provider-integration-guides/_cohere.md | 1 + .../how-to/llm-provider-integration-guides/_llama2.md | 1 + .../how-to/llm-provider-integration-guides/_mistral.md | 1 + .../how-to/llm-provider-integration-guides/_openai.md | 1 + .../ai-proxy/how-to/_cloud-provider-authentication.md | 4 ++++ app/_hub/kong-inc/http-log/how-to/_splunk.md | 1 + .../how-to/_demonstrating-proof-of-possession.md | 1 + .../how-to/authentication/_authorization-code-flow.md | 1 + .../how-to/authentication/_client-credentials.md | 1 + .../openid-connect/how-to/authentication/_introspection.md | 1 + .../openid-connect/how-to/authentication/_jwt-access-token.md | 2 ++ .../openid-connect/how-to/authentication/_kong-oauth-token.md | 1 + .../openid-connect/how-to/authentication/_password-grant.md | 1 + .../openid-connect/how-to/authentication/_refresh-token.md | 1 + .../kong-inc/openid-connect/how-to/authentication/_session.md | 1 + .../openid-connect/how-to/authentication/_user-info.md | 1 + app/_hub/kong-inc/openid-connect/how-to/authorization/_acl.md | 3 +++ .../kong-inc/openid-connect/how-to/authorization/_claims.md | 1 + .../kong-inc/openid-connect/how-to/authorization/_consumer.md | 1 + .../openid-connect/how-to/client-authentication/_mtls.md | 1 + app/_hub/kong-inc/opentelemetry/how-to/_dynatrace.md | 1 + app/_hub/kong-inc/opentelemetry/how-to/_getting-started.md | 1 + app/_plugins/blocks/plugin_example.rb | 2 ++ 28 files changed, 40 insertions(+) diff --git a/app/_hub/kong-inc/acl/how-to/_consumer-groups.md.md b/app/_hub/kong-inc/acl/how-to/_consumer-groups.md.md index 88ab93a3f44..0ecfa0e48a3 100644 --- a/app/_hub/kong-inc/acl/how-to/_consumer-groups.md.md +++ b/app/_hub/kong-inc/acl/how-to/_consumer-groups.md.md @@ -99,6 +99,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} @@ -119,5 +120,6 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/ai-azure-content-safety/how-to/_index.md b/app/_hub/kong-inc/ai-azure-content-safety/how-to/_index.md index a4156d41b1f..7903bdb252d 100644 --- a/app/_hub/kong-inc/ai-azure-content-safety/how-to/_index.md +++ b/app/_hub/kong-inc/ai-azure-content-safety/how-to/_index.md @@ -93,6 +93,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -199,6 +200,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/ai-proxy-advanced/how-to/_cloud-provider-authentication.md b/app/_hub/kong-inc/ai-proxy-advanced/how-to/_cloud-provider-authentication.md index 9833c951b35..07c404d7a68 100644 --- a/app/_hub/kong-inc/ai-proxy-advanced/how-to/_cloud-provider-authentication.md +++ b/app/_hub/kong-inc/ai-proxy-advanced/how-to/_cloud-provider-authentication.md @@ -87,6 +87,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -118,6 +119,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -151,6 +153,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -191,5 +194,6 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} \ No newline at end of file diff --git a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_anthropic.md b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_anthropic.md index 652ccd9cfc9..876a0ee830a 100644 --- a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_anthropic.md +++ b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_anthropic.md @@ -53,6 +53,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_azure.md b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_azure.md index 43088918dfc..df5e3d6bf82 100644 --- a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_azure.md +++ b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_azure.md @@ -64,6 +64,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_cohere.md b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_cohere.md index 6cef82d662d..4ee33a5b428 100644 --- a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_cohere.md +++ b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_cohere.md @@ -51,6 +51,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_llama2.md b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_llama2.md index 69261d3c7d6..3548e41c38a 100644 --- a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_llama2.md +++ b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_llama2.md @@ -99,6 +99,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_mistral.md b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_mistral.md index ff71b974df5..24743c78d15 100644 --- a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_mistral.md +++ b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_mistral.md @@ -90,6 +90,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_openai.md b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_openai.md index c986e980260..43356bbfa2a 100644 --- a/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_openai.md +++ b/app/_hub/kong-inc/ai-proxy-advanced/how-to/llm-provider-integration-guides/_openai.md @@ -51,6 +51,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/ai-proxy/how-to/_cloud-provider-authentication.md b/app/_hub/kong-inc/ai-proxy/how-to/_cloud-provider-authentication.md index e4036546cba..d287d5700fe 100644 --- a/app/_hub/kong-inc/ai-proxy/how-to/_cloud-provider-authentication.md +++ b/app/_hub/kong-inc/ai-proxy/how-to/_cloud-provider-authentication.md @@ -87,6 +87,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -118,6 +119,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -151,6 +153,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -191,5 +194,6 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} \ No newline at end of file diff --git a/app/_hub/kong-inc/http-log/how-to/_splunk.md b/app/_hub/kong-inc/http-log/how-to/_splunk.md index 30afc06d28d..d849d23f9db 100644 --- a/app/_hub/kong-inc/http-log/how-to/_splunk.md +++ b/app/_hub/kong-inc/http-log/how-to/_splunk.md @@ -42,6 +42,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} {% endif_version %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/_demonstrating-proof-of-possession.md b/app/_hub/kong-inc/openid-connect/how-to/_demonstrating-proof-of-possession.md index 8b94d2ae380..1ede44c0782 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/_demonstrating-proof-of-possession.md +++ b/app/_hub/kong-inc/openid-connect/how-to/_demonstrating-proof-of-possession.md @@ -98,6 +98,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_authorization-code-flow.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_authorization-code-flow.md index d712b61447a..b86e901748d 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_authorization-code-flow.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_authorization-code-flow.md @@ -112,6 +112,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_client-credentials.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_client-credentials.md index 78cbfd2a45f..d268300c0c0 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_client-credentials.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_client-credentials.md @@ -81,6 +81,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_introspection.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_introspection.md index 694c183f8b0..e936c3e90ef 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_introspection.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_introspection.md @@ -84,6 +84,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_jwt-access-token.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_jwt-access-token.md index 46a9d1608e9..aa47fb46d43 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_jwt-access-token.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_jwt-access-token.md @@ -79,6 +79,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -109,6 +110,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_kong-oauth-token.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_kong-oauth-token.md index ad8ae40c4ae..657fcae54d9 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_kong-oauth-token.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_kong-oauth-token.md @@ -117,6 +117,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_password-grant.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_password-grant.md index 4323a0aa46d..bcb83b6e1cc 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_password-grant.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_password-grant.md @@ -79,6 +79,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_refresh-token.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_refresh-token.md index bea75c8e34d..08c07f165b6 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_refresh-token.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_refresh-token.md @@ -87,6 +87,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_session.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_session.md index 4deff5aa280..aaee2f8fb40 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_session.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_session.md @@ -75,6 +75,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authentication/_user-info.md b/app/_hub/kong-inc/openid-connect/how-to/authentication/_user-info.md index 6ae098d58c6..eeb0e9f6d58 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authentication/_user-info.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authentication/_user-info.md @@ -84,6 +84,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authorization/_acl.md b/app/_hub/kong-inc/openid-connect/how-to/authorization/_acl.md index f499b4bbfcd..860b57890bd 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authorization/_acl.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authorization/_acl.md @@ -42,6 +42,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -85,6 +86,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} @@ -115,6 +117,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authorization/_claims.md b/app/_hub/kong-inc/openid-connect/how-to/authorization/_claims.md index 2ec7331ad3f..0c62e747fda 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authorization/_claims.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authorization/_claims.md @@ -58,6 +58,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/authorization/_consumer.md b/app/_hub/kong-inc/openid-connect/how-to/authorization/_consumer.md index 38a78ff65c9..c6616f88d28 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/authorization/_consumer.md +++ b/app/_hub/kong-inc/openid-connect/how-to/authorization/_consumer.md @@ -64,6 +64,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/openid-connect/how-to/client-authentication/_mtls.md b/app/_hub/kong-inc/openid-connect/how-to/client-authentication/_mtls.md index 8e45135b62f..05bf9050b39 100644 --- a/app/_hub/kong-inc/openid-connect/how-to/client-authentication/_mtls.md +++ b/app/_hub/kong-inc/openid-connect/how-to/client-authentication/_mtls.md @@ -92,6 +92,7 @@ formats: - curl - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/opentelemetry/how-to/_dynatrace.md b/app/_hub/kong-inc/opentelemetry/how-to/_dynatrace.md index 1a0d3d9b7bc..bd178bf92df 100644 --- a/app/_hub/kong-inc/opentelemetry/how-to/_dynatrace.md +++ b/app/_hub/kong-inc/opentelemetry/how-to/_dynatrace.md @@ -45,6 +45,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} diff --git a/app/_hub/kong-inc/opentelemetry/how-to/_getting-started.md b/app/_hub/kong-inc/opentelemetry/how-to/_getting-started.md index f53a1efa508..017192ba826 100644 --- a/app/_hub/kong-inc/opentelemetry/how-to/_getting-started.md +++ b/app/_hub/kong-inc/opentelemetry/how-to/_getting-started.md @@ -155,6 +155,7 @@ formats: - konnect - yaml - kubernetes + - terraform {% endplugin_example %} {% endif_version %} diff --git a/app/_plugins/blocks/plugin_example.rb b/app/_plugins/blocks/plugin_example.rb index 0c347d16d62..041cf9f949c 100644 --- a/app/_plugins/blocks/plugin_example.rb +++ b/app/_plugins/blocks/plugin_example.rb @@ -19,7 +19,9 @@ # formats: # - curl # - yaml +# - konnect # - kubernetes +# - terraform # {% endplugin_example %} module Jekyll From 1f791afb822e4459b8f7cf8564c65652244c9646 Mon Sep 17 00:00:00 2001 From: "kong[bot]" <123129154+kong[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 13:32:27 -0500 Subject: [PATCH 11/28] docs(mesh): update docs and changelog (#7951) chore(deps): update docs from repo source Signed-off-by: kumahq[bot] <110050114+kumahq[bot]@users.noreply.github.com> Co-authored-by: kumahq[bot] <110050114+kumahq[bot]@users.noreply.github.com> --- .../mesh/dev/raw/crds/kuma.io_meshexternalservices.yaml | 1 + app/assets/mesh/dev/raw/crds/kuma.io_meshtlses.yaml | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/mesh/dev/raw/crds/kuma.io_meshexternalservices.yaml b/app/assets/mesh/dev/raw/crds/kuma.io_meshexternalservices.yaml index 4350612fcc0..72ea5655eab 100644 --- a/app/assets/mesh/dev/raw/crds/kuma.io_meshexternalservices.yaml +++ b/app/assets/mesh/dev/raw/crds/kuma.io_meshexternalservices.yaml @@ -59,6 +59,7 @@ spec: type: integer required: - address + - port type: object type: array extension: diff --git a/app/assets/mesh/dev/raw/crds/kuma.io_meshtlses.yaml b/app/assets/mesh/dev/raw/crds/kuma.io_meshtlses.yaml index 82c2d1e92e9..4ddbfffcb1e 100644 --- a/app/assets/mesh/dev/raw/crds/kuma.io_meshtlses.yaml +++ b/app/assets/mesh/dev/raw/crds/kuma.io_meshtlses.yaml @@ -58,9 +58,8 @@ spec: 'targetRef' properties: mode: - description: |- - Mode defines the behavior of inbound listeners with regard to traffic encryption. - Default: Strict. + description: Mode defines the behavior of inbound listeners + with regard to traffic encryption. enum: - Permissive - Strict From a6be66da5a03e54bf883bda9135b4221d76121ac Mon Sep 17 00:00:00 2001 From: Haoxuan Date: Sat, 21 Sep 2024 02:46:18 +0800 Subject: [PATCH 12/28] Update: Add additional warning on debug-request (#7949) --- app/_src/gateway/production/debug-request.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/_src/gateway/production/debug-request.md b/app/_src/gateway/production/debug-request.md index eaa08d4a244..bfd581f6788 100644 --- a/app/_src/gateway/production/debug-request.md +++ b/app/_src/gateway/production/debug-request.md @@ -13,6 +13,9 @@ Request debugging provides the following insights: {:.note} > **Note:** This feature is meant for live debugging. The JSON schema of the header containing the timing should never be considered static and is always subject to change. +{:.warning} +> **Warning:** Debug requests originating from loopback addresses are not secured by `X-Kong-Request-Debug-Token`. Deploying {{site.base_gateway}} behind other proxies will be dangerous for exposing the debug interface to the public without any authentication. + ## Enable request debugging Request debugging is enabled by default and has the following configurations in [`kong.conf`](/gateway/{{page.release}}/reference/configuration/): @@ -57,7 +60,7 @@ If the `X-Kong-Request-Debug-Log` header is set to true, timing information will ### X-Kong-Request-Debug-Token header -The `X-Kong-Request-Debug-Token` is a token for authenticating the client and making the debug request to prevent abuse. Debug requests originating from loopback addresses don't require this header. +The `X-Kong-Request-Debug-Token` is a token for authenticating the client and making the debug request to prevent abuse. **Debug requests originating from loopback addresses don't require this header.** {% if_version gte:3.5.x %} ### X-Kong-Request-Id header From e8efa9eef04b04423e810256000f3e6cad893c26 Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:24:28 -0700 Subject: [PATCH 13/28] Chore: Third-party plugins template update (#7807) move metadata into nested folder --- .../{_metadata.yml => _metadata/_index.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/templates/partner-plugin-template/{_metadata.yml => _metadata/_index.yml} (100%) diff --git a/docs/templates/partner-plugin-template/_metadata.yml b/docs/templates/partner-plugin-template/_metadata/_index.yml similarity index 100% rename from docs/templates/partner-plugin-template/_metadata.yml rename to docs/templates/partner-plugin-template/_metadata/_index.yml From 94bcbc4e1c2b1a70d8fa3d5daf9da2e315de5af1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 17:15:12 +0000 Subject: [PATCH 14/28] Update dependency puma to v6.4.3 [SECURITY] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c420edf60d9..2c96bf29fa7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -125,7 +125,7 @@ GEM mini_mime (1.1.5) mini_portile2 (2.8.7) minitest (5.25.1) - nio4r (2.7.0) + nio4r (2.7.3) nokogiri (1.16.7) mini_portile2 (~> 2.8.2) racc (~> 1.4) @@ -140,7 +140,7 @@ GEM coderay (~> 1.1) method_source (~> 1.0) public_suffix (5.0.4) - puma (6.4.2) + puma (6.4.3) nio4r (~> 2.0) racc (1.8.1) rack (3.0.9.1) From 67d7ec6dddaa885749699b4c8af59e08efd8399b Mon Sep 17 00:00:00 2001 From: kong-docs <116832528+kong-docs@users.noreply.github.com> Date: Mon, 23 Sep 2024 16:17:11 +0200 Subject: [PATCH 15/28] Automated Changelog update [skip-ci] (#7955) * Automated changelog update * Update changelog.md --------- Co-authored-by: kong-docs[bot] Co-authored-by: Lucie Milan <32450552+lmilan@users.noreply.github.com> --- changelog.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/changelog.md b/changelog.md index d719fee42be..1bf7be230b6 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,64 @@ +## Week 38 + +### [Fix: Logging plugins log format + descriptions](https://github.com/Kong/docs.konghq.com/pull/7948) (2024-09-20) + +The log format example and descriptions were missing some changes from 3.6, and had incorrectly tagged versions. +Tested this out via the File Log plugin and compared the output to any log serializer [changelog entries](https://docs.konghq.com/gateway/changelog/). + +"JSON object considerations" was also a strange title that didn't describe the contents, which are just descriptions of each log item, so updated that to be clearer. + +Issue reported on Slack. + +#### Modified + +- https://docs.konghq.com/hub/kong-inc/file-log/overview/ +- https://docs.konghq.com/hub/kong-inc/kafka-log/overview/ +- https://docs.konghq.com/hub/kong-inc/loggly/overview/ +- https://docs.konghq.com/hub/kong-inc/syslog/overview/ +- https://docs.konghq.com/hub/kong-inc/tcp-log/overview/ +- https://docs.konghq.com/hub/kong-inc/udp-log/overview/ + + +### [Fix: Add missing `_APPD` to env variables](https://github.com/Kong/docs.konghq.com/pull/7945) (2024-09-20) + +Some of the newer parameters for the AppDynamics plugin are missing the `_APPD` section of the prefix. They should all be `KONG_APPD_*`. + +#### Modified + +- https://docs.konghq.com/hub/kong-inc/app-dynamics/overview/ + + +### [fix: Convert to AI Semantic Cache LLM examples to `plugin_example`](https://github.com/Kong/docs.konghq.com/pull/7932) (2024-09-19) + +Converting the LLM examples to use `plugin_example` instead for better consistency. + +DOCU-4060 + +#### Modified + +- https://docs.konghq.com/hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/ +- https://docs.konghq.com/hub/kong-inc/ai-semantic-cache/how-to/llm-provider-integration-guides/ +- https://docs.konghq.com/contributing/kong-plugins + + +### [Fix: AppD plugin missing info + broken collapsible note](https://github.com/Kong/docs.konghq.com/pull/7921) (2024-09-16) + +* Documenting the ARM64 limitation for the C/C++ AppD SDK +* Fixing the collapsible note + +https://konghq.atlassian.net/browse/DOCU-4061 + +Collapsible note with broken styling: https://docs.konghq.com/hub/kong-inc/app-dynamics/ + +![Screenshot 2024-09-12 at 1 35 15 PM](https://github.com/user-attachments/assets/7bb1e367-76eb-4ae8-ba36-fcc54b4954a4) + +#### Modified + +- https://docs.konghq.com/hub/kong-inc/app-dynamics/overview/ + ## Week 37 ### [Update: 3.8 known issue for JSON threat protection plugin](https://github.com/Kong/docs.konghq.com/pull/7924) (2024-09-13) From 85485ef078feb95b9124765386970b8c4cb05b3d Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Mon, 23 Sep 2024 08:23:42 -0700 Subject: [PATCH 16/28] Update: Adjust decK Konnect flag phrasing to remove ambiguity (#7954) adjust phrasing to remove ambiguity --- app/_src/deck/guides/konnect.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/_src/deck/guides/konnect.md b/app/_src/deck/guides/konnect.md index 42f03d70449..2393a3224be 100644 --- a/app/_src/deck/guides/konnect.md +++ b/app/_src/deck/guides/konnect.md @@ -13,7 +13,7 @@ You _cannot_ use decK to publish content to the Dev Portal, manage application r ## {{site.konnect_short_name}} flags -You can use decK commands such as `ping`, `diff`, or `sync` with `--konnect` flags to interact with {{site.konnect_short_name}}. +You can use decK commands such as `ping`, `diff`, or `sync` with `--konnect-*` flags to interact with {{site.konnect_short_name}}. If you don't pass a {{site.konnect_short_name}} flag to decK, decK looks for a local {{site.base_gateway}} instance instead. From 2740211c9cfeeeee9ab80858526f297c6ef0df4b Mon Sep 17 00:00:00 2001 From: Jordi Fernandez Date: Mon, 23 Sep 2024 20:47:17 +0200 Subject: [PATCH 17/28] Update deck_file_kong2tf.md (#7957) References to kubernetes removed, should be referencing terraform resources. --- app/_src/deck/reference/deck_file_kong2tf.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/_src/deck/reference/deck_file_kong2tf.md b/app/_src/deck/reference/deck_file_kong2tf.md index aec650b282c..49323c5c07e 100644 --- a/app/_src/deck/reference/deck_file_kong2tf.md +++ b/app/_src/deck/reference/deck_file_kong2tf.md @@ -7,8 +7,7 @@ content_type: reference The `kong2tf` subcommand transforms Kong's configuration files, written in the decK format, into Terraform resources. This tool serves as a bridge for deploying API configurations from decK files directly to {{site.konnect_product_name}}, facilitating integration into the final stages of an APIOps pipeline. Essentially, `kong2tf` translates the desired API configurations into a format that Terraform can deploy, ensuring that the API's intended state is accurately reflected in the {{site.konnect_short_name}} environment. -Let's see an example of how the following decK state file is converted to Ingress API Kubernetes -manifests and Gateway API Kubernetes manifests. +Let's see an example of how the following decK state file is converted to Terraform resources. {% navtabs %} {% navtab decK state file %} From a68152dd7bd20536017d2f580af993bf1402db8e Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Mon, 23 Sep 2024 11:48:39 -0700 Subject: [PATCH 18/28] Release: Gateway 2.8.4.13 (#7942) * changelog and version bump for 2.8.4.13 * review feedback --- app/_data/kong_versions.yml | 2 +- app/gateway/changelog.md | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/_data/kong_versions.yml b/app/_data/kong_versions.yml index f9c2d07af8f..5637a7d4761 100644 --- a/app/_data/kong_versions.yml +++ b/app/_data/kong_versions.yml @@ -29,7 +29,7 @@ pcre: "8.45" lua_doc: true - release: "2.8.x" - ee-version: "2.8.4.12" + ee-version: "2.8.4.13" ce-version: "2.8.5" edition: "gateway" luarocks_version: "2.5.1-0" diff --git a/app/gateway/changelog.md b/app/gateway/changelog.md index cd551f8e77c..1a66df33c11 100644 --- a/app/gateway/changelog.md +++ b/app/gateway/changelog.md @@ -5967,6 +5967,27 @@ openid-connect * Bumped `lodash` for Dev Portal from 4.17.11 to 4.17.21 * Bumped `lodash` for Kong Manager from 4.17.15 to 4.17.21 + +## 2.8.4.13 +**Release Date** 2024/09/20 + +### Breaking Changes + +#### Dependencies + +* Fixed RPM relocation by setting the default prefix to `/`, and added a symbolic + link for `resty` to handle missing `/usr/local/bin` in `PATH`. + +### Fixes +#### Core + +* Fixed an issue where `luarocks-admin` was not available in `/usr/local/bin`. + +#### Plugins + +* [**Rate Limiting Advanced**](/hub/kong-inc/rate-limiting-advanced/) (`rate-limiting-advanced`) + * Fixed an issue where the sync timer could stop working due to a race condition. + ## 2.8.4.12 **Release Date** 2024/07/29 From dfc3a87fd4f98790776d0853ef354b05d9dcfec6 Mon Sep 17 00:00:00 2001 From: Nathan Taylor Date: Mon, 23 Sep 2024 13:25:38 -0700 Subject: [PATCH 19/28] Add `shared` to list of available substitution sources in _templates.md (#7777) * Update _templates.md - Added "shared" substitution variable to documentation - Fixed formatting issue * Adjust for consistency with request transformer advanced --------- Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --- .../kong-inc/request-transformer/how-to/_templates.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/_hub/kong-inc/request-transformer/how-to/_templates.md b/app/_hub/kong-inc/request-transformer/how-to/_templates.md index 1bc50032adf..0292fb26e01 100644 --- a/app/_hub/kong-inc/request-transformer/how-to/_templates.md +++ b/app/_hub/kong-inc/request-transformer/how-to/_templates.md @@ -9,10 +9,11 @@ You can use any of the current request headers, query parameters, and captured U groups as templates to populate supported configuration fields. | Request Parameter | Template -| ------------- | ----------- -| header | `$(headers.)`, `$(headers[""])` or `$(headers[""])`) -| querystring | `$(query_params.)` or `$(query_params[""])`) -| captured URIs | `$(uri_captures.)` or `$(uri_captures[""])`) +| -------------- | ----------- +| header | `$(headers.)`, `$(headers[""])` or `$(headers[""])` +| querystring | `$(query_params.)` or `$(query_params[""])` +| captured URIs | `$(uri_captures.)` or `$(uri_captures[""])` +| shared variables | `$(shared.)` or `$(shared[""])`) To escape a template, wrap it inside quotes and pass inside another template. For example: From c7484969079b7eac0458b1325c38194be5c02f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20Burzy=C5=84ski?= Date: Mon, 23 Sep 2024 22:35:08 +0200 Subject: [PATCH 20/28] docs(kic): update metrics reference (#7839) --- .github/styles/kong/auto-ignore.txt | 4 ++- .../production/observability/prometheus.md | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.github/styles/kong/auto-ignore.txt b/.github/styles/kong/auto-ignore.txt index 468e3207335..91db1141fba 100644 --- a/.github/styles/kong/auto-ignore.txt +++ b/.github/styles/kong/auto-ignore.txt @@ -36,10 +36,12 @@ ingress_controller_fallback_configuration_push_duration_milliseconds ingress_controller_fallback_configuration_push_last ingress_controller_fallback_translation_broken_resource_count ingress_controller_fallback_translation_count +ingress_controller_fallback_translation_duration_milliseconds ingress_controller_processed_config_snapshot_cache_hit ingress_controller_processed_config_snapshot_cache_miss ingress_controller_translation_broken_resource_count ingress_controller_translation_count +ingress_controller_translation_duration_milliseconds inlineString involvedObject kuma @@ -103,4 +105,4 @@ KongClusterPlugin KongConsumer Rekor Sigstore -Hasura \ No newline at end of file +Hasura diff --git a/app/_src/kubernetes-ingress-controller/production/observability/prometheus.md b/app/_src/kubernetes-ingress-controller/production/observability/prometheus.md index 85e5a8565d7..7d35ac574f1 100644 --- a/app/_src/kubernetes-ingress-controller/production/observability/prometheus.md +++ b/app/_src/kubernetes-ingress-controller/production/observability/prometheus.md @@ -39,6 +39,19 @@ This metric provides these labels: This metric provides the `success` label. `success` logs the status of configuration updates. If `success` is `false`, an unrecoverable error occurred. If `success` is `true`, the translation succeeded with no errors. +{% if_version gte:3.3.x %} + +### ingress_controller_translation_duration_milliseconds + +`ingress_controller_translation_duration_milliseconds` (type: `histogram`) is the amount of time, in milliseconds, that +it takes to translate the Kubernetes state to the {{site.base_gateway}} state. + +This metric provides the `success` label: + +* `success` logs the status of the translation. If `success` is `false`, an unrecoverable error occurs. If `success` is `true`, the translation succeeded without errors. + +{% endif_version %} + ### ingress_controller_configuration_push_duration_milliseconds `ingress_controller_configuration_push_duration_milliseconds` (type: `histogram`) is the amount of time, in milliseconds, that it takes to push the configuration to {{site.base_gateway}}. @@ -84,6 +97,19 @@ This metric provides the `success` label: * `success` logs the status of the translation. If `success` is `false`, an unrecoverable error occurs. If `success` is `true`, the translation succeeded without errors. +{% if_version gte:3.3.x %} + +### ingress_controller_fallback_translation_duration_milliseconds + +`ingress_controller_fallback_translation_duration_milliseconds` (type: `histogram`) provides the amount of time, in milliseconds, +that it takes to translate the Kubernetes state to the {{site.base_gateway}} state in fallback mode. + +This metric provides the `success` label: + +* `success` logs the status of the translation. If `success` is `false`, an unrecoverable error occurs. If `success` is `true`, the translation succeeded without errors. + +{% endif_version %} + ### ingress_controller_fallback_translation_broken_resource_count `ingress_controller_fallback_translation_broken_resource_count` (type: `gauge`) provides the number of resources that the controller cannot successfully translate to Kong configuration in fallback mode. From 6d57faf4716891d17fb858e594a6360425ac9006 Mon Sep 17 00:00:00 2001 From: Angel Date: Mon, 23 Sep 2024 17:12:46 -0400 Subject: [PATCH 21/28] Chore: Move CGW docs (#7962) Move cgw section docs together --- app/_data/docs_nav_konnect.yml | 17 ++++++++++------- .../md/konnect/konnect-architecture.md | 2 +- app/_redirects | 8 ++++++++ app/contributing/style-guide.md | 2 +- .../azure-peering.md | 0 .../index.md} | 4 ++-- .../provision-cloud-gateway.md | 0 .../transit-gateways.md | 0 app/konnect/getting-started/index.md | 2 +- 9 files changed, 23 insertions(+), 12 deletions(-) rename app/konnect/gateway-manager/{data-plane-nodes => dedicated-cloud-gateways}/azure-peering.md (100%) rename app/konnect/gateway-manager/{dedicated-cloud-gateways.md => dedicated-cloud-gateways/index.md} (95%) rename app/konnect/gateway-manager/{ => dedicated-cloud-gateways}/provision-cloud-gateway.md (100%) rename app/konnect/gateway-manager/{data-plane-nodes => dedicated-cloud-gateways}/transit-gateways.md (100%) diff --git a/app/_data/docs_nav_konnect.yml b/app/_data/docs_nav_konnect.yml index 4c18b7527bc..347fcb628c5 100644 --- a/app/_data/docs_nav_konnect.yml +++ b/app/_data/docs_nav_konnect.yml @@ -41,7 +41,15 @@ - text: Overview url: /gateway-manager/ - text: Dedicated Cloud Gateways - url: /gateway-manager/dedicated-cloud-gateways/ + items: + - text: Overview + url: /gateway-manager/dedicated-cloud-gateways/ + - text: Provision a Dedicated Cloud Gateway + url: /gateway-manager/dedicated-cloud-gateways/provision-cloud-gateway/ + - text: Transit Gateways + url: /gateway-manager/dedicated-cloud-gateways/transit-gateways + - text: Azure VNET Peering + url: /gateway-manager/dedicated-cloud-gateways/azure-peering - text: Data Plane Nodes items: - text: Installation Options @@ -58,12 +66,6 @@ url: /gateway-manager/data-plane-nodes/parameter-reference/ - text: Using Custom DP Labels url: /gateway-manager/data-plane-nodes/custom-dp-labels - - text: Transit Gateways - url: /gateway-manager/data-plane-nodes/transit-gateways - - text: Azure VNET Peering - url: /gateway-manager/data-plane-nodes/azure-peering - - text: Provision a Dedicated Cloud Gateway - url: /gateway-manager/provision-cloud-gateway/ - text: Control Plane Groups items: - text: Overview @@ -108,6 +110,7 @@ - text: Troubleshooting url: /gateway-manager/troubleshoot/ + - title: Mesh Manager icon: /assets/images/icons/konnect/icn-mesh-manager-nav.svg items: diff --git a/app/_includes/md/konnect/konnect-architecture.md b/app/_includes/md/konnect/konnect-architecture.md index 80be9ae4a7f..f2f994d23c7 100644 --- a/app/_includes/md/konnect/konnect-architecture.md +++ b/app/_includes/md/konnect/konnect-architecture.md @@ -8,4 +8,4 @@ to manage all service configurations. You can use one or more of the following c The control plane propagates those configurations to the data plane group, which is composed of data plane nodes (and in the case of {{site.mesh_product_name}} proxies). The individual nodes can be running either on-premise, in -cloud-hosted environments, or fully managed by {{site.konnect_product_name}} with [Dedicated Cloud Gateways](/konnect/gateway-manager/dedicated-cloud-gateways). Each data plane node retains the configuration in-memory, ensuring efficient and reliable service management across deployment models. \ No newline at end of file +cloud-hosted environments, or fully managed by {{site.konnect_product_name}} with [Dedicated Cloud Gateways](/konnect/gateway-manager/dedicated-cloud-gateways/). Each data plane node retains the configuration in-memory, ensuring efficient and reliable service management across deployment models. \ No newline at end of file diff --git a/app/_redirects b/app/_redirects index 227e290ef03..bb1eba0e63c 100644 --- a/app/_redirects +++ b/app/_redirects @@ -22,6 +22,14 @@ ###################################################################### + +## DCG seperate section + + +/konnect/gateway-manager/data-plane-nodes/azure-peering/ /konnect/gateway-manager/dedicated-cloud-gateways/azure-peering/ +/konnect/gateway-manager/data-plane-nodes/transit-gateways/ /konnect/gateway-manager/dedicated-cloud-gateways/transit-gateways/ +/konnect/gateway-manager/provision-cloud-gateway/ /konnect/gateway-manager/dedicated-cloud-gateways/provision-cloud-gateway/ +/konnect/gateway-manager/dedicated-cloud-gateways/ /konnect/gateway-manager/dedicated-cloud-gateways/ ## Saml SSO /konnect/org-management/oidc-idp/ /konnect/org-management/sso/ diff --git a/app/contributing/style-guide.md b/app/contributing/style-guide.md index f5099d3866e..afd65c8f221 100644 --- a/app/contributing/style-guide.md +++ b/app/contributing/style-guide.md @@ -291,7 +291,7 @@ In many cases, a link is enough, often as part of a step or a group of prerequis * [Add Developer Teams from Identity Providers](/konnect/dev-portal/access-and-approval/add-teams/) * **Include third-party instructions with integrations**: Provide instructions that involve switching between products, and include links to the official third-party documentation when possible. For example: - * [How to configure Transit Gateways](/konnect/gateway-manager/data-plane-nodes/transit-gateways/) + * [How to configure Transit Gateways](/konnect/gateway-manager/dedicated-cloud-gateways/transit-gateways/) ### Pitfalls to avoid diff --git a/app/konnect/gateway-manager/data-plane-nodes/azure-peering.md b/app/konnect/gateway-manager/dedicated-cloud-gateways/azure-peering.md similarity index 100% rename from app/konnect/gateway-manager/data-plane-nodes/azure-peering.md rename to app/konnect/gateway-manager/dedicated-cloud-gateways/azure-peering.md diff --git a/app/konnect/gateway-manager/dedicated-cloud-gateways.md b/app/konnect/gateway-manager/dedicated-cloud-gateways/index.md similarity index 95% rename from app/konnect/gateway-manager/dedicated-cloud-gateways.md rename to app/konnect/gateway-manager/dedicated-cloud-gateways/index.md index fa9eafac0d3..781076c5619 100644 --- a/app/konnect/gateway-manager/dedicated-cloud-gateways.md +++ b/app/konnect/gateway-manager/dedicated-cloud-gateways/index.md @@ -43,7 +43,7 @@ Dedicated Cloud Gateways support public and private networking on AWS. * **Public networking:** Easy access to services and APIs, but low security. We recommend only using this option for testing. * **Private networking:** A secure way to expose your APIs to the internet. -You can set up private networking for Dedicated Cloud Gateways with [AWS Transit Gateways](/konnect/gateway-manager/data-plane-nodes/transit-gateways/). +You can set up private networking for Dedicated Cloud Gateways with [AWS Transit Gateways](/konnect/gateway-manager/dedicated-cloud-gateways/transit-gateways/). ## Plugin considerations for Dedicated Cloud Gateways There are some limitations for plugins with Dedicated Cloud Gateways: @@ -57,7 +57,7 @@ This includes [Data Plane Resilience](/gateway/latest/kong-enterprise/cp-outage- * [Networking and Peering information](/konnect/network-resiliency/#how-does-network-peering-work-with-dedicated-cloud-gateway-nodes) * [Supported regions](/konnect/geo/#dedicated-cloud-gateways) -* [Transit Gateways](/konnect/gateway-manager/data-plane-nodes/transit-gateways/) +* [Transit Gateways](/konnect/gateway-manager/dedicated-cloud-gateways/transit-gateways/) * [How to upgrade data planes](/konnect/gateway-manager/data-plane-nodes/upgrade/) * [Custom Domains](/konnect/reference/custom-dns/) * [Cloud Gateways API](/konnect/api/cloud-gateways/latest/) \ No newline at end of file diff --git a/app/konnect/gateway-manager/provision-cloud-gateway.md b/app/konnect/gateway-manager/dedicated-cloud-gateways/provision-cloud-gateway.md similarity index 100% rename from app/konnect/gateway-manager/provision-cloud-gateway.md rename to app/konnect/gateway-manager/dedicated-cloud-gateways/provision-cloud-gateway.md diff --git a/app/konnect/gateway-manager/data-plane-nodes/transit-gateways.md b/app/konnect/gateway-manager/dedicated-cloud-gateways/transit-gateways.md similarity index 100% rename from app/konnect/gateway-manager/data-plane-nodes/transit-gateways.md rename to app/konnect/gateway-manager/dedicated-cloud-gateways/transit-gateways.md diff --git a/app/konnect/getting-started/index.md b/app/konnect/getting-started/index.md index 7e6de0a9eab..df1060ddc68 100644 --- a/app/konnect/getting-started/index.md +++ b/app/konnect/getting-started/index.md @@ -58,7 +58,7 @@ These gateways provide: You can run Dedicated Cloud Gateways in [autopilot mode](/konnect/gateway-manager/dedicated-cloud-gateways/#autopilot-mode) to streamline the management of your API gateway resources by automatically adjusting to traffic and volume. This mode ensures that your infrastructure is prepared to handle traffic as it arrives, scaling resources to maintain consistent performance without manual intervention. -Dedicated Cloud Gateways also support [private networking](/konnect/gateway-manager/data-plane-nodes/transit-gateways). +Dedicated Cloud Gateways also support [private networking](/konnect/gateway-manager/dedicated-cloud-gateways/transit-gateways). Integration with [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/), allows you to connect your networks in a way that supports your organization's security requirements, enabling your {{site.konnect_short_name}}-powered API infrastructure to interact with your internal networks and cloud resources securely. From e51e6d4e623b4bc6e8c11b29d1350f28241b39cc Mon Sep 17 00:00:00 2001 From: kong-docs <116832528+kong-docs@users.noreply.github.com> Date: Tue, 24 Sep 2024 20:30:13 +0200 Subject: [PATCH 22/28] chore(deps): bump kumahq/kuma-website from 3c6d7c8d to 10e28f49 (#7964) Signed-off-by: kong-docs[bot] Co-authored-by: kong-docs[bot] --- app/_src/.repos/kuma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/_src/.repos/kuma b/app/_src/.repos/kuma index 3c6d7c8d6f3..10e28f49cef 160000 --- a/app/_src/.repos/kuma +++ b/app/_src/.repos/kuma @@ -1 +1 @@ -Subproject commit 3c6d7c8d6f34e10f56cb6225e7325a2cceb40564 +Subproject commit 10e28f49cef79cd4d94b74daefac0f1aedfc993d From 14ba8bda99775703c17ecf3ccc62fa07442d6578 Mon Sep 17 00:00:00 2001 From: lena-larionova <54370747+lena-larionova@users.noreply.github.com> Date: Tue, 24 Sep 2024 15:04:37 -0700 Subject: [PATCH 23/28] Chore: remove orphaned dev portal RBAC topic (#7961) remove orphaned dev portal RBAC topic --- app/_redirects | 2 + .../api/portal-auth/portal-rbac-guide.md | 162 ------------------ 2 files changed, 2 insertions(+), 162 deletions(-) delete mode 100644 app/konnect/api/portal-auth/portal-rbac-guide.md diff --git a/app/_redirects b/app/_redirects index bb1eba0e63c..15f9602964d 100644 --- a/app/_redirects +++ b/app/_redirects @@ -116,6 +116,8 @@ /konnect/dev-portal/access-and-approval/azure/ /konnect/dev-portal/access-and-approval/sso/ /konnect/dev-portal/access-and-approval/manage-app-reg-requests/ /konnect/dev-portal/access-and-approval/manage-app-connections/ /konnect/dev-portal/access-and-approval/auto-approve-devs-apps/ /konnect/dev-portal/create-dev-portal/ +/konnect/dev-portal/access-and-approval/manage-teams /konnect/dev-portal/access-and-approval/manage-teams/#enable-portal-rbac +/konnect/api/portal-auth/portal-rbac-guide/ /konnect/dev-portal/access-and-approval/manage-teams/#enable-portal-rbac # API markdown doc deprecation diff --git a/app/konnect/api/portal-auth/portal-rbac-guide.md b/app/konnect/api/portal-auth/portal-rbac-guide.md deleted file mode 100644 index 73562e0229d..00000000000 --- a/app/konnect/api/portal-auth/portal-rbac-guide.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: Portal RBAC Setup -content-type: tutorial ---- - -## Overview - -A common scenario for a Dev Portal is to restrict developers' ability to view or request access to specific services based on their permissions. - -{{site.konnect_short_name}} Dev Portal enables administrators to define Role-Based Access Control (RBAC) for teams of developers through the Konnect API. - -Portal RBAC supports two different roles for API products that can be applied to a team of developers: - -* API Viewer: provides read access to the documentation associated with an API product. -* API Consumer: can register applications to consume versions of an API product. - -You can use the API to create a team, assign a role to the team, and finally, add developers to the team. - -## Enable RBAC in portal - -Portal RBAC is deny-by-default which means that if you haven't configured teams and roles for your developers, then enabling the capability will prevent them from seeing any services in the portal. - -We recommend setting up your teams and permissions before enabling RBAC which will allow for a seamless transition: developers see what they're supposed to, instead of nothing at all. - -RBAC is disabled by default in the {{site.konnect_short_name}} portal. To enable RBAC, you must make a `PATCH` request to the portal configuration endpoint. The following example shows how to enable RBAC in the portal. For more details on how to create your personal access token, see the [authentication documentation](/konnect/api/#authentication). - -```bash -curl --request PATCH \ - --url https://.api.konghq.com/konnect-api/api/portals/{portal-id} \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --data '{ - "rbac_enabled": true - }' -``` - -{:.note} -> The `portal-id` can be found in {{site.konnect_short_name}} within the **Dev Portal** section. - -## Setup RBAC - -### Create a Team - -To create a team, you must make a POST request to the teams endpoint. The following example shows how to create a team. - -```bash -curl --request POST \ - --url https://.api.konghq.com/v2/portals/{portal-id}/teams \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --data '{ - "name": "IDM - Developers Team", - "description": "The Identity Management (IDM) team." - }' -``` - -You can verify that the team has been created by making a GET request to the teams endpoint. - -```bash -curl --request GET \ - --url https://.api.konghq.com/v2/portals/{portal-id}/teams \ - --header 'Authorization: Bearer ' -``` - -### Assign a Role to a Team - -Once you have defined a team, the next step is to assign one or more roles to the team. - -To get a list of the available roles, make a `GET` request to the roles endpoint. The following example shows how to get a list of the available roles. - -```bash -curl --request GET \ - --url https://.api.konghq.com/v2/portal-roles \ - --header 'Authorization: Bearer ' -``` - -Available roles are limited to managing access to API products. In the future, we may expand the types of access that can be managed. The current list of available service roles are: - -* "API Consumer" -* "API Viewer" - -Assigning a role to a team requires a few pieces of information: - -* The entity type (e.g. `services`) -* The role to be applied (e.g. `API Consumer` or `API Viewer`) -* The entity id (e.g. `5b349722-dfb4-4e78-937c-41526164fa1a`) -* The region of the entity (e.g. `us` or `eu`) - -To assign a role to a team, you must make a POST request to the team roles endpoint. The following example shows how to assign the `API Viewer` role to the team created in the previous section for a particular service with id of `5b349722-dfb4-4e78-937c-41526164fa1a`. - -```bash -curl --request POST \ - --url https://.api.konghq.com/v2/portals/{portal-id}/teams//assigned-roles \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --data '{ - "role_name": "API Viewer", - "entity_id": "5b349722-dfb4-4e78-937c-41526164fa1a", - "entity_type_name": "Services", - "entity_region": "us" -}' -``` - -Each role mapping created has a unique ID that can be used later for removing that role permission. - -```json -{ - "id": "8a368199-258e-4e55-81e7-346bbf9c182a", - "role_name": "API Viewer", - "entity_region": "us", - "entity_type_name": "Services", - "entity_id": "a2df2d4d-127e-4625-b26d-92cbd4a3b930" -} -``` - -To remove a role from a team, you must make a `DELETE` request to the team roles endpoint. The following example shows how to remove the RBAC role from the team created in the previous section. - -```bash -curl --request DELETE \ - --url https://.api.konghq.com/v2/portals/{portal-id}/teams/{team-id}/assigned-roles/{role-id} \ - --header 'Authorization: Bearer ' -``` - -### Add a Developer to a Team - -Once a team has been created with one or more RBAC roles, you need to add developers to the team. - -Every developer in your portal has a unique ID that can be used for management operations. - -You can make a `GET` request to the developers endpoint to retrieve all the information about individual developers who have registered to the Dev Portal. The following example shows how to make the request. - -```bash -curl --request GET \ - --url https://.api.konghq.com/v2/portals/{portal-id}/developers \ - --header 'Authorization: Bearer ' -``` - -To add a developer to a team, you make a POST request to the team members endpoint with the unique ID of the developer you want to add. The following example shows how to add a developer to a team. - -```bash -curl --request POST \ - --url https://.api.konghq.com/v2/portals/{portal-id}/teams//developers \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' \ - --data '{ - "id": "" -}' -``` - -### Remove a Developer from a Team - -To remove a developer from a team, you must make a `DELETE` request to the team members endpoint with the unique ID of the developer you want to remove. The following example shows how to add a developer to a team. - -```bash -curl --request DELETE \ - --url https://.api.konghq.com/v2/portals/{portal-id}/teams/{team-id}/developers/{developer-id} \ - --header 'Authorization: Bearer ' \ - --header 'Content-Type: application/json' -``` - -## More information -[Portal RBAC API documentation](/konnect/api/portal-rbac/v2/) From a6eb817ec861c72ab6d43a66c8c59cf295248ac2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:08:07 +0000 Subject: [PATCH 24/28] chore(deps): bump send and serve-static in /pdf-generation Bumps [send](https://github.com/pillarjs/send) to 0.19.0 and updates ancestor dependency [serve-static](https://github.com/expressjs/serve-static). These dependencies need to be updated together. Updates `send` from 0.18.0 to 0.19.0 - [Release notes](https://github.com/pillarjs/send/releases) - [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md) - [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0) Updates `serve-static` from 1.16.0 to 1.16.2 - [Release notes](https://github.com/expressjs/serve-static/releases) - [Changelog](https://github.com/expressjs/serve-static/blob/v1.16.2/HISTORY.md) - [Commits](https://github.com/expressjs/serve-static/compare/1.16.0...v1.16.2) --- updated-dependencies: - dependency-name: send dependency-type: indirect - dependency-name: serve-static dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pdf-generation/package-lock.json | 73 +++++++++++++++++++------------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/pdf-generation/package-lock.json b/pdf-generation/package-lock.json index 3f3bde308fc..1626f639e2d 100644 --- a/pdf-generation/package-lock.json +++ b/pdf-generation/package-lock.json @@ -479,9 +479,9 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -521,7 +521,7 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "1.0.5", @@ -582,7 +582,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } @@ -656,7 +656,7 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } @@ -1262,9 +1262,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -1295,7 +1295,15 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/send/node_modules/ms": { "version": "2.1.3", @@ -1303,14 +1311,14 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -1988,9 +1996,9 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" }, "end-of-stream": { "version": "1.4.4", @@ -2021,7 +2029,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "escape-string-regexp": { "version": "1.0.5", @@ -2057,7 +2065,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "extract-zip": { "version": "2.0.1", @@ -2114,7 +2122,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, "fs-extra": { "version": "11.2.0", @@ -2535,9 +2543,9 @@ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" }, "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "requires": { "debug": "2.6.9", "depd": "2.0.0", @@ -2565,10 +2573,15 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2577,14 +2590,14 @@ } }, "serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" } }, "setprototypeof": { From b080713cd5d2351f4022472210213984f5ad67ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:08:48 +0000 Subject: [PATCH 25/28] chore(deps): bump serve-static, browser-sync and netlify-cli Bumps [serve-static](https://github.com/expressjs/serve-static) to 1.16.2 and updates ancestor dependencies [serve-static](https://github.com/expressjs/serve-static), [browser-sync](https://github.com/BrowserSync/browser-sync) and [netlify-cli](https://github.com/netlify/cli). These dependencies need to be updated together. Updates `serve-static` from 1.15.0 to 1.16.2 - [Release notes](https://github.com/expressjs/serve-static/releases) - [Changelog](https://github.com/expressjs/serve-static/blob/v1.16.2/HISTORY.md) - [Commits](https://github.com/expressjs/serve-static/compare/v1.15.0...v1.16.2) Updates `browser-sync` from 3.0.2 to 3.0.3 - [Release notes](https://github.com/BrowserSync/browser-sync/releases) - [Changelog](https://github.com/BrowserSync/browser-sync/blob/master/CHANGELOG.md) - [Commits](https://github.com/BrowserSync/browser-sync/compare/v3.0.2...v3.0.3) Updates `netlify-cli` from 17.35.0 to 17.36.2 - [Release notes](https://github.com/netlify/cli/releases) - [Changelog](https://github.com/netlify/cli/blob/main/CHANGELOG.md) - [Commits](https://github.com/netlify/cli/compare/v17.35.0...v17.36.2) --- updated-dependencies: - dependency-name: serve-static dependency-type: indirect - dependency-name: browser-sync dependency-type: direct:development - dependency-name: netlify-cli dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- package-lock.json | 892 ++++++++++++++++++++++++++++------------------ package.json | 4 +- 2 files changed, 542 insertions(+), 354 deletions(-) diff --git a/package-lock.json b/package-lock.json index 710af6132b2..94356959122 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,13 +26,13 @@ "@rollup/plugin-inject": "^5.0.3", "@vitejs/plugin-vue": "^5.0.0", "broken-link-checker": "0.7.8", - "browser-sync": "3.0.2", + "browser-sync": "3.0.3", "cheerio": "1.0.0", "fancy-log": "2.0.0", "jest": "29.7.0", "less": "^4.1.3", "lodash": "4.17.21", - "netlify-cli": "17.35.0", + "netlify-cli": "17.36.2", "node-fetch": "2.7.0", "postcss-custom-properties": "^14.0.0", "prettier": "3.3.3", @@ -3388,7 +3388,6 @@ "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -3991,13 +3990,13 @@ } }, "node_modules/browser-sync": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", - "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", + "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", "dev": true, "dependencies": { - "browser-sync-client": "^3.0.2", - "browser-sync-ui": "^3.0.2", + "browser-sync-client": "^3.0.3", + "browser-sync-ui": "^3.0.3", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -4011,15 +4010,15 @@ "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "micromatch": "^4.0.2", + "micromatch": "^4.0.8", "opn": "5.3.0", "portscanner": "2.2.0", "raw-body": "^2.3.2", "resp-modifier": "6.0.2", "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", + "send": "^0.19.0", + "serve-index": "^1.9.1", + "serve-static": "^1.16.2", "server-destroy": "1.0.1", "socket.io": "^4.4.1", "ua-parser-js": "^1.0.33", @@ -4033,9 +4032,9 @@ } }, "node_modules/browser-sync-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", - "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", + "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", "dev": true, "dependencies": { "etag": "1.8.1", @@ -4047,9 +4046,9 @@ } }, "node_modules/browser-sync-ui": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", - "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", + "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", "dev": true, "dependencies": { "async-each-series": "0.1.1", @@ -4562,7 +4561,6 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } @@ -4868,11 +4866,14 @@ } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-libc": { "version": "2.0.3", @@ -5136,25 +5137,25 @@ } }, "node_modules/engine.io-client": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", - "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", + "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.0.0" + "xmlhttprequest-ssl": "~2.1.1" } }, "node_modules/engine.io-client/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -5165,6 +5166,12 @@ } } }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/engine.io-parser": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", @@ -5415,9 +5422,8 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5799,9 +5805,8 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7922,13 +7927,15 @@ } }, "node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "license": "MIT", "bin": { "mime": "cli.js" + }, + "engines": { + "node": ">=4" } }, "node_modules/mime-db": { @@ -8011,8 +8018,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/mkdirp": { "version": "3.0.1", @@ -8159,24 +8165,23 @@ } }, "node_modules/netlify-cli": { - "version": "17.35.0", - "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-17.35.0.tgz", - "integrity": "sha512-ftVu3mmGVDyfjtAXQeQ+IODmKmqRzAMZHQI2U1kNWXxipPIig2DUfK3ZhBR20o2vH6aO9l4x8XXAlqBQFruMdQ==", + "version": "17.36.2", + "resolved": "https://registry.npmjs.org/netlify-cli/-/netlify-cli-17.36.2.tgz", + "integrity": "sha512-kDrsnNSYT3ZWwJNlcpqRPCAz28ahxwZ2Mo/pntNQqScN+MKcVEwia+Twy6FCPakotVJ9nQFquU85jU4mqaXgUw==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, - "license": "MIT", "dependencies": { "@bugsnag/js": "7.25.0", "@fastify/static": "7.0.4", - "@netlify/blobs": "8.0.0", - "@netlify/build": "29.54.0", - "@netlify/build-info": "7.14.1", + "@netlify/blobs": "8.0.1", + "@netlify/build": "29.54.4", + "@netlify/build-info": "7.14.3", "@netlify/config": "20.19.0", "@netlify/edge-bundler": "12.2.3", "@netlify/edge-functions": "2.9.0", "@netlify/local-functions-proxy": "1.1.1", - "@netlify/zip-it-and-ship-it": "9.38.0", + "@netlify/zip-it-and-ship-it": "9.39.2", "@octokit/rest": "20.1.1", "@opentelemetry/api": "1.8.0", "ansi-escapes": "7.0.0", @@ -8205,7 +8210,7 @@ "envinfo": "7.13.0", "etag": "1.8.1", "execa": "5.1.1", - "express": "4.19.2", + "express": "4.20.0", "express-logging": "1.1.1", "extract-zip": "2.0.1", "fastest-levenshtein": "1.0.16", @@ -8404,9 +8409,9 @@ } }, "node_modules/netlify-cli/node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.24.8", @@ -9337,18 +9342,18 @@ "dev": true }, "node_modules/netlify-cli/node_modules/@netlify/blobs": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-8.0.0.tgz", - "integrity": "sha512-p9DdRSPvDuFhl9PYODWRo5QYWB4Du/lX5gbZNmwmtw+xfcaIpPD3lWs8I1OwHcpVgbay0Ik4JfCT75ZiPylKgA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@netlify/blobs/-/blobs-8.0.1.tgz", + "integrity": "sha512-IrZHVqillU0x12eDbsap4Ba6poi+4IdVCYjZa+tA0eD95TaSbSqfw1zNkO27MiKw0pOjPB6+RXFK4pdfOs/qUQ==", "dev": true, "engines": { "node": "^14.16.0 || >=16.0.0" } }, "node_modules/netlify-cli/node_modules/@netlify/build": { - "version": "29.54.0", - "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.54.0.tgz", - "integrity": "sha512-bRq3uecHqYXgZVT1TxAsSkvk3iiS04RDHVr+REpYt30mW1/AkCvmniYQz7ump+0+Ys9Kp24UPNo3zk4R1l/NqA==", + "version": "29.54.4", + "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.54.4.tgz", + "integrity": "sha512-fblSp3ic7reMyIr11L9TKQhT550HihL11xMounQshQ/dnkv8t9Ch0kWNqEhwyxsc3r/jiEdX9Ywd1xi6wm4qJw==", "dev": true, "dependencies": { "@bugsnag/js": "^7.0.0", @@ -9357,12 +9362,12 @@ "@netlify/config": "^20.19.0", "@netlify/edge-bundler": "12.2.3", "@netlify/framework-info": "^9.8.13", - "@netlify/functions-utils": "^5.2.79", + "@netlify/functions-utils": "^5.2.83", "@netlify/git-utils": "^5.1.1", "@netlify/opentelemetry-utils": "^1.2.1", "@netlify/plugins-list": "^6.80.0", "@netlify/run-utils": "^5.1.1", - "@netlify/zip-it-and-ship-it": "9.38.0", + "@netlify/zip-it-and-ship-it": "9.39.2", "@sindresorhus/slugify": "^2.0.0", "ansi-escapes": "^6.0.0", "chalk": "^5.0.0", @@ -9427,9 +9432,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/build-info": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@netlify/build-info/-/build-info-7.14.1.tgz", - "integrity": "sha512-0FhHK8+v80pDt0hkN4s5+sFUL5OF8bVU4bqwqDx04NiSQ/jOUSwCZ70F5MHkbvjuqf4RoP0vVKqrvIB3EP0wyA==", + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@netlify/build-info/-/build-info-7.14.3.tgz", + "integrity": "sha512-HUYHll4I/5aus/mmmiALOWuYwjvSGLD+KxHROBTNVO5D9i1HNXbIvYCtInBYX+xwoXCwqQuXWwHXTAfusXT3Sw==", "dev": true, "dependencies": { "@bugsnag/js": "^7.20.0", @@ -9532,9 +9537,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/build-info/node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "dev": true, "bin": { "yaml": "bin.mjs" @@ -11000,12 +11005,12 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/functions-utils": { - "version": "5.2.79", - "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-5.2.79.tgz", - "integrity": "sha512-lpHlxN1LmRo/ah6thRQ2IeOYpXmRh5Eh3bZE/gSlCsKT4uOCwBQFI5lVXVXS2ZpNiGPydYgIzCblF18/w2drFg==", + "version": "5.2.83", + "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-5.2.83.tgz", + "integrity": "sha512-ZWItQ4yaVN/15tXTOFv+mOjcS8aEygGS/GGNOUIT+FZsWc5IKFKslr7WsVlwwixoPCDCMSwZtaLuX+FbPVFo1w==", "dev": true, "dependencies": { - "@netlify/zip-it-and-ship-it": "9.38.0", + "@netlify/zip-it-and-ship-it": "9.39.2", "cpy": "^9.0.0", "path-exists": "^5.0.0" }, @@ -11495,15 +11500,15 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.38.0.tgz", - "integrity": "sha512-xQK4O0rhAbzboKod/Dw7EwzwDKLki8ui+zTpA8iS5RtLMRtRUPI8P+aSScafwrt3HL3NHmNe8Pdd+0RYSTGQDQ==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-9.39.2.tgz", + "integrity": "sha512-vTEUxRIXsxnDDHnycw8wYmx5IhZp0J5s1d5ZZevnjOI9ozHoP4DKEU6EMnGyioQxyVwYRJOZjbY1fOL+ZEU7Rg==", "dev": true, "dependencies": { "@babel/parser": "^7.22.5", - "@babel/types": "7.25.2", + "@babel/types": "7.25.6", "@netlify/binary-info": "^1.0.0", - "@netlify/serverless-functions-api": "^1.22.0", + "@netlify/serverless-functions-api": "^1.23.1", "@vercel/nft": "^0.27.1", "archiver": "^7.0.0", "common-path-prefix": "^3.0.0", @@ -11543,9 +11548,9 @@ } }, "node_modules/netlify-cli/node_modules/@netlify/zip-it-and-ship-it/node_modules/@netlify/serverless-functions-api": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.22.0.tgz", - "integrity": "sha512-vv8fWCOIadSvdmR+8UYopdyHO/gOysl+8IBOxUUB0B3y7nnLOiBniE1JBeBR3y7gI/q/cnibBF2RhR3W04Wo/A==", + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.23.1.tgz", + "integrity": "sha512-o0WjLdMbPeE5DT9uazGOFI6pWDPF85BsCaO0iGAkXCti6tvxPM19NtsBfy9wVSYXUUIXip2jwZBT6sL8YpXMRQ==", "dev": true, "dependencies": { "@netlify/node-cookies": "^0.1.0", @@ -12185,8 +12190,6 @@ }, "node_modules/netlify-cli/node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/napi-wasm/-/napi-wasm-1.1.0.tgz", - "integrity": "sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==", "dev": true, "inBundle": true, "license": "MIT" @@ -13708,70 +13711,6 @@ "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", "dev": true }, - "node_modules/netlify-cli/node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/netlify-cli/node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/netlify-cli/node_modules/body-parser/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/netlify-cli/node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/netlify-cli/node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/netlify-cli/node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -13995,13 +13934,19 @@ } }, "node_modules/netlify-cli/node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15279,6 +15224,23 @@ "node": ">=10" } }, + "node_modules/netlify-cli/node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/netlify-cli/node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -15761,6 +15723,27 @@ "stackframe": "^1.3.4" } }, + "node_modules/netlify-cli/node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/netlify-cli/node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/netlify-cli/node_modules/es-module-lexer": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", @@ -15974,37 +15957,37 @@ } }, "node_modules/netlify-cli/node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -16027,6 +16010,45 @@ "node": ">= 0.10.26" } }, + "node_modules/netlify-cli/node_modules/express/node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/netlify-cli/node_modules/express/node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/netlify-cli/node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -16036,6 +16058,12 @@ "ms": "2.0.0" } }, + "node_modules/netlify-cli/node_modules/express/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/netlify-cli/node_modules/express/node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -16045,6 +16073,15 @@ "node": ">= 0.8" } }, + "node_modules/netlify-cli/node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/netlify-cli/node_modules/express/node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -16061,10 +16098,19 @@ "node": ">= 0.8" } }, - "node_modules/netlify-cli/node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/netlify-cli/node_modules/express/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/netlify-cli/node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/netlify-cli/node_modules/express/node_modules/safe-buffer": { @@ -16087,48 +16133,129 @@ } ] }, - "node_modules/netlify-cli/node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "node_modules/netlify-cli/node_modules/express/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "dependencies": { - "mime-db": "^1.28.0" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/netlify-cli/node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "node_modules/netlify-cli/node_modules/express/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, - "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - }, "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/netlify-cli/node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/netlify-cli/node_modules/express/node_modules/serve-static": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", "dev": true, "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/netlify-cli/node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "node_modules/netlify-cli/node_modules/express/node_modules/serve-static/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/netlify-cli/node_modules/express/node_modules/serve-static/node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/netlify-cli/node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "dev": true, + "dependencies": { + "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/netlify-cli/node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dev": true, + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/netlify-cli/node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "dependencies": { @@ -16716,9 +16843,9 @@ "dev": true }, "node_modules/netlify-cli/node_modules/find-my-way": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.0.tgz", - "integrity": "sha512-HdWXgFYc6b1BJcOBDBwjqWuHJj1WYiqrxSh25qtU4DabpMFdj/gSunNBQb83t+8Zt67D7CXEzJWTkxaShMTMOA==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz", + "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -17048,14 +17175,19 @@ } }, "node_modules/netlify-cli/node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17233,6 +17365,18 @@ "node": ">=0.6.0" } }, + "node_modules/netlify-cli/node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/netlify-cli/node_modules/got": { "version": "12.6.1", "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", @@ -17311,6 +17455,30 @@ "node": ">=8" } }, + "node_modules/netlify-cli/node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/netlify-cli/node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/netlify-cli/node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -17384,6 +17552,18 @@ "node": ">=8" } }, + "node_modules/netlify-cli/node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/netlify-cli/node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -19524,12 +19704,6 @@ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", "dev": true }, - "node_modules/netlify-cli/node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, "node_modules/netlify-cli/node_modules/merge-options": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", @@ -19588,12 +19762,12 @@ "dev": true }, "node_modules/netlify-cli/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -20286,10 +20460,13 @@ } }, "node_modules/netlify-cli/node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20851,12 +21028,6 @@ "node": "14 || >=16.14" } }, - "node_modules/netlify-cli/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, "node_modules/netlify-cli/node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -20892,9 +21063,9 @@ "dev": true }, "node_modules/netlify-cli/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true }, "node_modules/netlify-cli/node_modules/picomatch": { @@ -20921,9 +21092,9 @@ } }, "node_modules/netlify-cli/node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "funding": [ { @@ -20941,8 +21112,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -21962,85 +22133,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/netlify-cli/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/netlify-cli/node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/netlify-cli/node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/netlify-cli/node_modules/send/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/netlify-cli/node_modules/send/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/netlify-cli/node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/netlify-cli/node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -22053,6 +22145,23 @@ "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", "dev": true }, + "node_modules/netlify-cli/node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/netlify-cli/node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -22141,14 +22250,18 @@ } }, "node_modules/netlify-cli/node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -22288,9 +22401,9 @@ } }, "node_modules/netlify-cli/node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -25082,7 +25195,6 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -25683,36 +25795,101 @@ } }, "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/send/node_modules/ms": { + "node_modules/send/node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } }, "node_modules/serialize-error": { "version": "8.1.0", @@ -25759,27 +25936,34 @@ } }, "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, - "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/server-destroy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/set-function-length": { "version": "1.2.2", @@ -25974,14 +26158,14 @@ } }, "node_modules/socket.io-client": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", - "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", + "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.5.2", + "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" }, "engines": { @@ -25989,13 +26173,12 @@ } }, "node_modules/socket.io-client/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -26006,6 +26189,12 @@ } } }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", @@ -26186,7 +26375,6 @@ "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "commander": "^2.2.0", "limiter": "^1.0.5" @@ -27471,9 +27659,9 @@ } }, "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", + "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", "dev": true, "engines": { "node": ">=0.4.0" diff --git a/package.json b/package.json index 023a44fde50..92de7f85613 100644 --- a/package.json +++ b/package.json @@ -24,13 +24,13 @@ "@rollup/plugin-inject": "^5.0.3", "@vitejs/plugin-vue": "^5.0.0", "broken-link-checker": "0.7.8", - "browser-sync": "3.0.2", + "browser-sync": "3.0.3", "cheerio": "1.0.0", "fancy-log": "2.0.0", "jest": "29.7.0", "less": "^4.1.3", "lodash": "4.17.21", - "netlify-cli": "17.35.0", + "netlify-cli": "17.36.2", "node-fetch": "2.7.0", "postcss-custom-properties": "^14.0.0", "prettier": "3.3.3", From 86de100277c1e5e8e18a506bdf3a9c3d33a51838 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Sep 2024 06:52:52 +0000 Subject: [PATCH 26/28] chore(deps): bump webrick from 1.8.1 to 1.8.2 Bumps [webrick](https://github.com/ruby/webrick) from 1.8.1 to 1.8.2. - [Release notes](https://github.com/ruby/webrick/releases) - [Commits](https://github.com/ruby/webrick/compare/v1.8.1...v1.8.2) --- updated-dependencies: - dependency-name: webrick dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2c96bf29fa7..1bd4b9d0f2d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -210,7 +210,7 @@ GEM dry-cli (>= 0.7, < 2) rack-proxy (~> 0.6, >= 0.6.1) zeitwerk (~> 2.2) - webrick (1.8.1) + webrick (1.8.2) xpath (3.2.0) nokogiri (~> 1.8) zeitwerk (2.6.12) From e1b19ace96b131634415a988cf265e2452de9de1 Mon Sep 17 00:00:00 2001 From: Tao Yi Date: Thu, 26 Sep 2024 10:18:02 +0800 Subject: [PATCH 27/28] add introduction of --disable-consumer-sync in konnect KIC section (#7898) * add introduction of --disable-consumer-sync in konnect KIC section * Apply suggestions from code review Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> * remove version tags * mention version in text after all --------- Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --- app/konnect/gateway-manager/kic.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/konnect/gateway-manager/kic.md b/app/konnect/gateway-manager/kic.md index b13f2238d70..29e9231d446 100644 --- a/app/konnect/gateway-manager/kic.md +++ b/app/konnect/gateway-manager/kic.md @@ -54,6 +54,11 @@ Item | Description **Summary** | This section displays the traffic and error rate of your KIC data plane node. **Analytics** | Analytics data for the KIC data plane node. You can configure the analytics options using the [**Analytics tool**](/konnect/analytics/). +### Optimize performance of synchronizing configuration + +When your environment has many `KongConsumer`s, they can slow down your configuration synchronization with {{site.konnect_short_name}}. {{site.kic_product_name}} 3.3 and later provides a `--disable-consumer-sync` flag to disable synchronizing consumers with {{site.konnect_short_name}}. You can enable this flag to make the synchronization faster. See [{{site.kic_product_name}} CLI arguments](/kubernetes-ingress-controller/latest/reference/cli-arguments/) for more details. + + ## KIC analytics compatibility The following table describes which {{site.base_gateway}} versions are compatible with the KIC analytics feature in {{site.konnect_short_name}}: From a19feaec20af4e9a1e89fd92d959c3d292367065 Mon Sep 17 00:00:00 2001 From: Tao Yi Date: Thu, 26 Sep 2024 10:29:46 +0800 Subject: [PATCH 28/28] Add KIC failure mode page (#7793) * add kic failure mode page * fix vale and broken link * Apply copyedits and add errors table Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> * fix anchor links --------- Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> Co-authored-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --- app/_data/docs_nav_kic_3.3.x.yml | 2 + .../reference/failure-modes.md | 107 ++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 app/_src/kubernetes-ingress-controller/reference/failure-modes.md diff --git a/app/_data/docs_nav_kic_3.3.x.yml b/app/_data/docs_nav_kic_3.3.x.yml index 3bc623fe90f..7b7d5eefc3c 100644 --- a/app/_data/docs_nav_kic_3.3.x.yml +++ b/app/_data/docs_nav_kic_3.3.x.yml @@ -219,3 +219,5 @@ items: url: /reference/ingress-to-gateway-migration - text: Required Permissions for Installation url: /reference/required-permissions + - text: Categories of Failures + url: /reference/failure-modes diff --git a/app/_src/kubernetes-ingress-controller/reference/failure-modes.md b/app/_src/kubernetes-ingress-controller/reference/failure-modes.md new file mode 100644 index 00000000000..42eb3c4c9cb --- /dev/null +++ b/app/_src/kubernetes-ingress-controller/reference/failure-modes.md @@ -0,0 +1,107 @@ +--- +title: Failure Modes and Processing in KIC +type: reference +--- + +This reference describes the different types of {{site.kic_product_name}} failure modes and how it processes them. + +When you run {{site.kic_product_name}}, you can encounter the following failures: + +| Error Example | Failure Mode | +|-----------------------------------|-----------------------------------------| +| `Reconciler error` in logs | [Errors in reconciling Kubernetes resources](#errors-in-reconciling-kubernetes-resources) | +| Non-existent service referenced by an `Ingress`.
    Example: `Ingress` with a non-existent backend service | [Failures in translating configuration](#failures-in-translating-configuration) | +| {{site.base_gateway}} rejected configuration
    Example: `Ingress` with invalid regex in the path | [Failures in applying configuration to {{site.base_gateway}}](#failures-in-applying-configuration-to-kong-gateway) | +| Errors when sending configuration to {{site.konnect_product_name}}
    Example: Failed request logs | [Failures in uploading configuration to {{site.konnect_short_name}}](#failures-in-uploading-configuration-to-konnect) | + +{{site.kic_product_name}} uses different methods to process each failure type, and creates error logs or other evidence, like Prometheus metrics and Kubernetes events, so you can observe and track the failures. + + +## Errors in reconciling Kubernetes resources + +When the controllers reconciling a specific kind of Kubernetes resource run into errors in reconciling the resource, a `Reconciler error` log line is recorded and the resource is re-queued for another round of reconciliation. + +Thee Prometheus metric `controller_runtime_reconcile_errors_total` stores the total number of reconcile errors per controller from the start of {{site.kic_product_name}}. Search for the `Reconciler error` keyword in the {{site.kic_product_name}} container logs to see detailed errors. + +## Failures in translating configuration + +When {{site.kic_product_name}} finds Kubernetes resources that can't be correctly translated to {{site.base_gateway}} configuration (for example, an `Ingress` is using a non-existent `Service` as its backend), a translation failure is generated with the namespace and name of the objects causing the failure. + +The Kubernetes objects causing translation failures are not translated to {{site.base_gateway}} configuration in the translation process. +You can use Kubernetes events and Prometheus metrics to observe the translation failures. +If {{site.kic_product_name}} is integrated with {{site.konnect_product_name}}, it will report that a translation error happened in the uploading node status. + +{{site.kic_product_name}} collects all translation failures and generates a Kubernetes `Event` with the `Warning` type and the `KongConfigurationTranslationFailed` reason for each causing object in a translation failure. Prometheus metrics could also reflect the statistics of translation failures: +* `ingress_controller_translation_broken_resource_count` is the number of translation failures that happened in the latest translation +* `ingress_controller_translation_count` with the `success=false` label is the total number of translation procedures where translation failures happened + +You can use `kubectl get events -n --field-selector reason="KongConfigurationTranslationFailed"` to fetch events generated for translation failures. For example, if an `Ingress` named `ing-1` in the namespace `test` used a non-existent `Service` as its backend, you could get the event with the following command: + +```bash +kubectl get events -n test --field-selector reason="KongConfigurationTranslationFailed" + +LAST SEEN TYPE REASON OBJECT MESSAGE +18m Warning KongConfigurationTranslationFailed ingress/ing-1 failed to resolve Kubernetes Service for backend: failed to fetch Service test/httpbin-deployment-1: Service test/httpbin-deployment-1 not found +``` + +## Failures in applying configuration to {{site.base_gateway}} + +When {{site.kic_product_name}} fails to apply translated {{site.base_gateway}} configuration to {{site.base_gateway}}, {{site.kic_product_name}} will try to recover from the failure and record the failure into logs, Kubernetes events, and Prometheus metrics. +Recovery usually fails because the translated configuration is rejected by {{site.base_gateway}}. + +If {{site.kic_product_name}} fails to apply the translated configuration, it then tries to apply the last successful {{site.base_gateway}} configuration to new instances of {{site.base_gateway}} to attempt a best effort at making them available. +If the `FallbackConfiguration` feature gate is enabled, {{site.kic_product_name}} discovers the Kubernetes objects that caused the invalid configuration, and tries to build a fallback configuration from valid objects and parts of the last valid configuration that are built from the broken objects. See [fallback configuration][fallback configuration] for more information. + +### Debugging configuration failures + +You can observe failures in applying configuration from Kubernetes events and Prometheus metrics: +* {{site.kic_product_name}} generates an event with the `Warning` type and the `KongConfigurationApplyFailed` reason attached to the pod itself when it fails to apply the configuration. +* For each object that causes the invalid configuration, {{site.kic_product_name}} generates a `Warning` event type and the `KongConfigurationApplyFailed` reason attached to the object. +* The Prometheus metric `ingress_controller_configuration_push_count` with the `success=false` label shows the total number of failures from applying the configuration by reason and URL of {{site.base_gateway}} admin API. +* The Prometheus metric `ingress_controller_configuration_push_broken_resource_count` reflects the number of Kubernetes resources that caused the error in the last configuration push. + +If the CLI flag `--dump-config` is enabled, then the `/debug/config/raw-error` endpoint is enabled on the debug server port of {{site.kic_product_name}}, which will fetch the raw error returned from {{site.base_gateway}} if applying the configuration fails. + +For example, let's say you create an `Ingress` with the `ImplementationSpecific` path type and an invalid regex in `Path` (which can only be only be done when the validating webhook is disabled, otherwise it will be rejected by the webhook): + +```yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + konghq.com/strip-path: "true" + name: ingress-invalid-regex + namespace: default +spec: + ingressClassName: kong + rules: + - http: + paths: + - backend: + service: + name: httpbin-deployment + port: + number: 80 + path: /~^^/a$ + pathType: ImplementationSpecific +``` + +You can get the Kubernetes events: + +```bash +kubectl get events --all-namespaces --field-selector reason=KongConfigurationApplyFailed +NAMESPACE LAST SEEN TYPE REASON OBJECT MESSAGE +default 2m9s Warning KongConfigurationApplyFailed ingress/ingress-invalid-regex invalid paths.1: should start with: / (fixed path) or ~/ (regex path) +kong 15s Warning KongConfigurationApplyFailed pod/kong-controller-779cb796f4-7q7c2 failed to apply Kong configuration to https://10.244.1.43:8444: HTTP status 400 (message: "failed posting new config to /config") +``` + +Both the events attached to the invalid ingress and attached to the {{site.kic_product_name}} pod are recorded. + +## Failures in uploading configuration to {{site.konnect_short_name}} + +When {{site.kic_product_name}} is integrated with {{site.konnect_short_name}} and it fails to send configuration to {{site.konnect_short_name}}, it generates error logs for failed requests, records the failures to Prometheus metrics, and updates the node status of itself in {{site.konnect_short_name}}: + +* {{site.kic_product_name}} parses errors returned from {{site.konnect_short_name}} when uploading the configuration fails. It logs a line at the error level for each {{site.base_gateway}} entity that failed to create/update/delete, with the message `Failed to send request to Konnect`. +* The Prometheus metrics `ingress_controller_configuration_push_count` and `ingress_controller_configuration_push_duration_milliseconds_bucket` can also reflect configuration upload failures to {{site.konnect_short_name}}, where the `dataplane` label is the URL of {{site.konnect_short_name}} and `success=false` APIs. + +[fallback configuration]: /kubernetes-ingress-controller/{{page.release}}/guides/high-availability/fallback-config \ No newline at end of file