From 4004ddd443aa951e82d098c9d750f951fa1d67cb Mon Sep 17 00:00:00 2001 From: Eitan Joffe Date: Thu, 22 Aug 2024 20:56:37 -0700 Subject: [PATCH 1/3] Inigo plugin initial docs --- app/_hub/inigo/inigo/_changelog.md | 7 ++ app/_hub/inigo/inigo/_metadata.yml | 39 ++++++++++++ app/_hub/inigo/inigo/overview/_index.md | 67 ++++++++++++++++++++ app/_hub/inigo/inigo/schemas/_index.json | 19 ++++++ app/assets/images/icons/hub/inigo_inigo.png | Bin 0 -> 7461 bytes 5 files changed, 132 insertions(+) create mode 100644 app/_hub/inigo/inigo/_changelog.md create mode 100644 app/_hub/inigo/inigo/_metadata.yml create mode 100644 app/_hub/inigo/inigo/overview/_index.md create mode 100644 app/_hub/inigo/inigo/schemas/_index.json create mode 100644 app/assets/images/icons/hub/inigo_inigo.png diff --git a/app/_hub/inigo/inigo/_changelog.md b/app/_hub/inigo/inigo/_changelog.md new file mode 100644 index 000000000000..7d1f5ac33be5 --- /dev/null +++ b/app/_hub/inigo/inigo/_changelog.md @@ -0,0 +1,7 @@ +## Changelog + +### 0.1.0 + +* Initial Inigo Kong Plugin. +* Includes all supported Inigo features at release time. + diff --git a/app/_hub/inigo/inigo/_metadata.yml b/app/_hub/inigo/inigo/_metadata.yml new file mode 100644 index 000000000000..3db4ff9b8ad0 --- /dev/null +++ b/app/_hub/inigo/inigo/_metadata.yml @@ -0,0 +1,39 @@ +name: Inigo GraphQL +publisher: Inigo +support_url: https://docs.inigo.io/support + +categories: + - third-party-partner + - analytics-monitoring + +type: plugin + +desc: Integrate Kong API Gateway with Inigo GraphQL Observability and Security + +source_code: https://github.com/inigolabs/inigo-kong + +kong_version_compatibility: + community_edition: + compatible: + - 3.5.x + - 3.4.x + - 3.3.x + - 3.2.x + - 3.0.x + enterprise_edition: + compatible: + - 3.5.x + - 3.4.x + - 3.3.x + - 3.2.x + - 3.0.x + +free: true +enterprise: true +konnect: true + +dbless_compatible: yes + +search_aliases: + - inigo + - graphql diff --git a/app/_hub/inigo/inigo/overview/_index.md b/app/_hub/inigo/inigo/overview/_index.md new file mode 100644 index 000000000000..4324008d5cd2 --- /dev/null +++ b/app/_hub/inigo/inigo/overview/_index.md @@ -0,0 +1,67 @@ +--- +nav_title: Overview +title: Overview +--- + +Inigo offers complete visibility, control and security over your production GraphQL APIs, enabling you to confidently adopt and scale GraphQL with the Inigo Kong plugin. Designed specifically for GraphQL APIs, this plugin provides: +- Deep API analytics +- Schema-based role-based access control (RBAC) +- Performance and error monitoring +- Dynamic rate-limiting +- Prevention of breaking schema changes +Inigo’s plugin gives you unique, in-depth insights into GraphQL usage, from granular field-level details to full query paths, along with overall server health and performance metrics. It enforces security policies, modifies or blocks malicious queries before they reach your GraphQL servers, and alerts you to any API issues. + +## How it works + +The Inigo plugin can be enabled on any GraphQL API route. It syncs with a service configured in Inigo using the service token provided. The plugin enforces access control, rate limits, and other security policies configured in your Inigo service. Requests are batched and sent asynchronously to Inigo, ensuring no added latency to your API. The data is then analyzed in the cloud, matched against your GraphQL schema, and presented with full observability and insights into your API’s performance. + +## How to install + +Custom plugins can be installed via LuaRocks. A Lua plugin is distributed in `.rock` format, which is +a self-contained package that can be installed locally or from a remote server. + +If you used one of the official {{site.base_gateway}} installation packages, the LuaRocks utility +should already be installed in your system. +Install the `.rock` in your LuaRocks tree, that is, the directory in which LuaRocks +installs Lua modules. + +1. Install the Inigo plugin: + + ```sh + luarocks install inigo-kong-plugin + ``` + +2. Download the Inigo library: + + Find the [library](https://github.com/inigolabs/artifacts/releases/latest) for your architecture. Library file names start with *inigo-*. + Download and copy the library into your kong run directory. + + +3. Update your loaded plugins list in {{site.base_gateway}}. + + In your `kong.conf`, append `inigo` to the `plugins` field. Make sure the field is not commented out. + + ```yaml + plugins = bundled,inigo # Comma-separated list of plugins this node + # should load. By default, only plugins + # bundled in official distributions are + # loaded via the `bundled` keyword. + ``` + +4. Obtain and set Inigo Service Token + + Create and service and token in [Inigo](https://app.inigo.io] + Set the INIGO_SERVICE_TOKEN env variable with the token's value. + +4. Restart {{site.base_gateway}}: + + ```sh + kong restart + ``` + +## Using the plugin + +- Go to [Inigo App](https://app.inigo.io) to monitor your API observability. +- Refer to the [Inigo Docs](https://docs.inigo.io) for detailed information on feature usage and policy configurations. + + diff --git a/app/_hub/inigo/inigo/schemas/_index.json b/app/_hub/inigo/inigo/schemas/_index.json new file mode 100644 index 000000000000..31a9d8d160be --- /dev/null +++ b/app/_hub/inigo/inigo/schemas/_index.json @@ -0,0 +1,19 @@ +{ + "fields": [ + { + "consumer_group": { + "eq": null, + "type": "foreign", + "reference": "consumer_groups" + } + }, + { + "config": { + "fields": [ + ], + "type": "record", + "required": true + } + } + ] +} diff --git a/app/assets/images/icons/hub/inigo_inigo.png b/app/assets/images/icons/hub/inigo_inigo.png new file mode 100644 index 0000000000000000000000000000000000000000..0b476eb227741d6ad0ed314119634d99057d6d6b GIT binary patch literal 7461 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%0At^eT0`LU8fZq%2Bb=LTNHSuhk6B?Z+ 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 Date: Fri, 23 Aug 2024 12:23:13 -0700 Subject: [PATCH 2/3] fixup : set metadata.tags to community --- app/_hub/inigo/inigo/_metadata.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/_hub/inigo/inigo/_metadata.yml b/app/_hub/inigo/inigo/_metadata.yml index 3db4ff9b8ad0..dbc6ab81dfc2 100644 --- a/app/_hub/inigo/inigo/_metadata.yml +++ b/app/_hub/inigo/inigo/_metadata.yml @@ -3,8 +3,7 @@ publisher: Inigo support_url: https://docs.inigo.io/support categories: - - third-party-partner - - analytics-monitoring + - community type: plugin From de5dd9a39613dd7e057a1df81da7b4e273891ea2 Mon Sep 17 00:00:00 2001 From: Eitan Joffe Date: Mon, 26 Aug 2024 16:09:41 -0700 Subject: [PATCH 3/3] fixups --- .github/styles/kong/dictionary.txt | 1 + .../inigo/{_metadata.yml => _metadata/_index.yml} | 0 app/_hub/inigo/inigo/overview/_index.md | 12 ++++++------ 3 files changed, 7 insertions(+), 6 deletions(-) rename app/_hub/inigo/inigo/{_metadata.yml => _metadata/_index.yml} (100%) diff --git a/.github/styles/kong/dictionary.txt b/.github/styles/kong/dictionary.txt index e4fcb92dd19c..645b3fdc2fd8 100644 --- a/.github/styles/kong/dictionary.txt +++ b/.github/styles/kong/dictionary.txt @@ -47,6 +47,7 @@ Grafana HTTPie istioctl Imperva +Inigo Istio Istio's Jira diff --git a/app/_hub/inigo/inigo/_metadata.yml b/app/_hub/inigo/inigo/_metadata/_index.yml similarity index 100% rename from app/_hub/inigo/inigo/_metadata.yml rename to app/_hub/inigo/inigo/_metadata/_index.yml diff --git a/app/_hub/inigo/inigo/overview/_index.md b/app/_hub/inigo/inigo/overview/_index.md index 4324008d5cd2..652d946bbade 100644 --- a/app/_hub/inigo/inigo/overview/_index.md +++ b/app/_hub/inigo/inigo/overview/_index.md @@ -3,7 +3,7 @@ nav_title: Overview title: Overview --- -Inigo offers complete visibility, control and security over your production GraphQL APIs, enabling you to confidently adopt and scale GraphQL with the Inigo Kong plugin. Designed specifically for GraphQL APIs, this plugin provides: +Inigo offers complete visibility, control, and security for your production GraphQL APIs, enabling you to confidently adopt and scale GraphQL with the Inigo Kong plugin. Designed specifically for GraphQL APIs, this plugin provides: - Deep API analytics - Schema-based role-based access control (RBAC) - Performance and error monitoring @@ -34,7 +34,7 @@ installs Lua modules. 2. Download the Inigo library: Find the [library](https://github.com/inigolabs/artifacts/releases/latest) for your architecture. Library file names start with *inigo-*. - Download and copy the library into your kong run directory. + Download and copy the library into your `kong run` directory. 3. Update your loaded plugins list in {{site.base_gateway}}. @@ -48,10 +48,10 @@ installs Lua modules. # loaded via the `bundled` keyword. ``` -4. Obtain and set Inigo Service Token +4. Obtain and set the Inigo Service Token. - Create and service and token in [Inigo](https://app.inigo.io] - Set the INIGO_SERVICE_TOKEN env variable with the token's value. + Create a service and token in [Inigo](https://app.inigo.io]. + Set the `INIGO_SERVICE_TOKEN` environment variable with the token's value. 4. Restart {{site.base_gateway}}: @@ -61,7 +61,7 @@ installs Lua modules. ## Using the plugin -- Go to [Inigo App](https://app.inigo.io) to monitor your API observability. +- Go to the [Inigo App](https://app.inigo.io) to monitor your API observability. - Refer to the [Inigo Docs](https://docs.inigo.io) for detailed information on feature usage and policy configurations.