Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inigo plugin initial docs #7785

Merged
merged 3 commits into from
Dec 9, 2024
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions app/_hub/inigo/inigo/_changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## Changelog

### 0.1.0

* Initial Inigo Kong Plugin.

Check failure on line 5 in app/_hub/inigo/inigo/_changelog.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/_changelog.md", "range": {"start": {"line": 5, "column": 11}}}, "severity": "ERROR"}
* Includes all supported Inigo features at release time.

Check failure on line 6 in app/_hub/inigo/inigo/_changelog.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/_changelog.md", "range": {"start": {"line": 6, "column": 26}}}, "severity": "ERROR"}

38 changes: 38 additions & 0 deletions app/_hub/inigo/inigo/_metadata.yml
ejoffe marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Inigo GraphQL
publisher: Inigo
support_url: https://docs.inigo.io/support

categories:
- community

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
67 changes: 67 additions & 0 deletions app/_hub/inigo/inigo/overview/_index.md
Original file line number Diff line number Diff line change
@@ -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:

Check failure on line 6 in app/_hub/inigo/inigo/overview/_index.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/overview/_index.md", "range": {"start": {"line": 6, "column": 1}}}, "severity": "ERROR"}

Check failure on line 6 in app/_hub/inigo/inigo/overview/_index.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/overview/_index.md", "range": {"start": {"line": 6, "column": 152}}}, "severity": "ERROR"}
ejoffe marked this conversation as resolved.
Show resolved Hide resolved
- 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.

Check failure on line 16 in app/_hub/inigo/inigo/overview/_index.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/overview/_index.md", "range": {"start": {"line": 16, "column": 5}}}, "severity": "ERROR"}

Check failure on line 16 in app/_hub/inigo/inigo/overview/_index.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/overview/_index.md", "range": {"start": {"line": 16, "column": 97}}}, "severity": "ERROR"}

Check failure on line 16 in app/_hub/inigo/inigo/overview/_index.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/overview/_index.md", "range": {"start": {"line": 16, "column": 233}}}, "severity": "ERROR"}

Check failure on line 16 in app/_hub/inigo/inigo/overview/_index.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/overview/_index.md", "range": {"start": {"line": 16, "column": 296}}}, "severity": "ERROR"}

## 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:

Check failure on line 28 in app/_hub/inigo/inigo/overview/_index.md

GitHub Actions / Vale

[vale] reported by reviewdog 🐶 [kong.Spelling] Did you really mean 'Inigo'? Raw Output: {"message": "[kong.Spelling] Did you really mean 'Inigo'?", "location": {"path": "app/_hub/inigo/inigo/overview/_index.md", "range": {"start": {"line": 28, "column": 16}}}, "severity": "ERROR"}

```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.
ejoffe marked this conversation as resolved.
Show resolved Hide resolved


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
ejoffe marked this conversation as resolved.
Show resolved Hide resolved

Create and service and token in [Inigo](https://app.inigo.io]
ejoffe marked this conversation as resolved.
Show resolved Hide resolved
Set the INIGO_SERVICE_TOKEN env variable with the token's value.
ejoffe marked this conversation as resolved.
Show resolved Hide resolved

4. Restart {{site.base_gateway}}:

```sh
kong restart
```

## Using the plugin

- Go to [Inigo App](https://app.inigo.io) to monitor your API observability.
ejoffe marked this conversation as resolved.
Show resolved Hide resolved
- Refer to the [Inigo Docs](https://docs.inigo.io) for detailed information on feature usage and policy configurations.


19 changes: 19 additions & 0 deletions app/_hub/inigo/inigo/schemas/_index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"fields": [
{
"consumer_group": {
"eq": null,
"type": "foreign",
"reference": "consumer_groups"
}
},
{
"config": {
"fields": [
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the config fields are missing here. Could you please add them, then base the example file off the basic config that the plugin expects?

The example file would be at app/_hub/inigo/inigo/examples/_index.yml.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our current plugin doesn't have any configuration, I wasn't sure how to represent that?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm. That's a good question. We haven't had that use case before, so I'm not sure that we've built in support for disabling the config key in the output (here: https://deploy-preview-7785--kongdocs.netlify.app/hub/inigo/inigo/configuration/). Let me look into that.

],
"type": "record",
"required": true
}
}
]
}
Binary file added app/assets/images/icons/hub/inigo_inigo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.