feat: plugin services, provides and manage infromations used by other plugins
Opened this issue · 0 comments
Description
As a user, I want to retrieve some information from external systems or registries, such as gRPC schemas and secrets, because storing secrets in plugin configurations is not secure. Therefore, I believe we need a mechanism that allows plugins to obtain secrets or schemas from an internal service managed by APISIX, known as the Plugin Service.
Plugin Services are extension points that are added by the user, configured by the user, and managed by APISIX.
The life cycle of Plugin Services is bound to APISIX.
User-configured plugins need to establish a connection when they need to retrieve information from specific Plugin Services and should release the connection when it is no longer needed.
APISIX acts as an agent between Plugins and Plugin Services, ensuring that Plugins and Plugin Services do not communicate directly under any situation.
The communication flow should be as follows:
- A plugin requests informations from spec Plugin Service through APISIX.
- APISIX authenticates the plugin's request.
- If authenticated, APISIX retrieves the requested information from the appropriate Plugin Service.
- APISIX returns the information to the plugin.
- Once the plugin is finished with the information, it notifies APISIX to release the connection.
P.S. The content mentioned above is just a proposed idea. If the needs outlined above are widely required, we should consider further designing and implementing it.