-
Notifications
You must be signed in to change notification settings - Fork 916
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
[RFC] Enable OpenSearch Dashboards to support multiple OpenSearch clusters #1388
Comments
@zhongnansu would you take a look |
@zengyan-amazon @seraphjiang Thanks for putting up the detailed proposal. I do have some questions that I'd like to discuss here.
|
@zhongnansu these are good points and call outs
I would suggest to start with no cross cluster and then we can discuss if we want to add the capability later to OSD. cross cluster can be a follow up project, which may also requires aggregation in OSD and a lot of other considerations. We can keep it in mind when doing the design and implementation to leave as much flexibility as possbile for future. Keeping OSD flexible and extensible is always one of our principle.
This is more about the design detail, the point is the OSD needs to have a way to determine a specific capability is support in the given data source. Define it in data source is one approach, using We can discuss the pros and cons in design phase, e.g. the config in data source approach is not dynamic, while the API approach has an assumption that the identity used by data source (or maybe OSD server) needs to have the permission to list all plugins in each backend cluster, which may or many not be a valid assumption. |
Created a proposal for better client management in multi data source project. POC is needed |
@zengyan-amazon This seems like an opportunity to reinvent the primitive data type used to power OpenSearch Dashboard queries, When adding support for other sources like SQL tables, DynamoDB, or CosmoDB there would be a common interface. Another way to frame this problem is how to write an OpenSearch data-source. |
@peternied A If we really want to support other sources like SQL DB, DynamoDB or others, we may consider still use composition that making |
I can confirm that this is a valid user need. I'm dealing with very many OpenSearch clusters deployed in kubernetes and it would be very nice to have one OSD in front of them all and also not having to configure SSO for each OSD. Kind regards, Bankole. |
I see that the proposal has a separate UX for credentials and data sources. I think this is a bad idea.
I think that for the first cut you should simplify and not build a credentials panel, but let users configure credentials in the data source editor UX. You can still store credentials in a separate object so that you can build a credentials management panel in the future.
|
here is link to track the feedback |
@zengyan-amazon This issue is labeled |
Closing this as it is RFC, will track task in other meta issue. |
Problem Statement
OpenSearch Dashboards (OSD for short) was design and implemented to work with one single OpenSearch cluster. Dashboards users need to navigate between Dashboards endpoints to visualize their data if they have multiple OpenSearch clusters. This experience is not user friendly and also added overheads as users need to maintain multiple OpenSearch Dashboards instances, one for each OpenSearch cluster.
We expect to provide the experience for OpenSearch Dashboards users to have one single Dashboards that can visualize data in different OpenSearch clusters. An OpenSearch that saves raw data for analysis is a
data source
.The proposal here is to enable OpenSearch Dashboards to have the capability allow users to dynamically manage their data sources. Then users can build visualization and dashboards against data in those data sources, and put those visualizations into single dashboard.
Proposed Solution
We propose to add a new
data-source
type in Dashboards saved objects, which includes the data source URL, capabilities (such as what plugins are available), and credentials (credentials will be encrypted by OSD when persisted) to be used to access the data source. Thenindex-pattern
can refer to adata-source
, and based on thisdata-source
reference, Dashboards server can execute the query against the specificdata-source
.For instance, a
data-source
object may look like:And we will add a reference to
data-source
inindex-pattern
, so that anindex-pattern
object will look like:With the new
data-source
model being added, visualziations are able to get the data source reference id from index pattern and then pass it to OSD server along with the query. Then OSD server can get the data source attributes using saved object service, then query that specific data source.The user experience will be changed by having the new
data-source
model. Users needs to create data sources before they can create an index pattern. Then, when creating an index pattern, users will need to select a data source which the index pattern will be associated to. Going afterwards, the visualization and dashboard building experience will remain the same as it is today.A PoC for adding
data-source
model and use it in index-pattern and visualization can be found at: https://github.com/zengyan-amazon/OpenSearch-Dashboards/tree/ext-data-source-discoverThere is a caveat that
data-source
includes user credentials, which needs to be encrypted and handled carefully. That may break the general data handling in saved object service, asdata-source
needs to be handled specially. Or we may end up letting OSD to manage another secure index(or data store) to handle data-source/credentails.Scope
FAQ
Is it required to have data source defined for all index patterns? What if I don't want this capability?
The plan is to have this multiple data source feature configurable, so that users can enable or disable it in OSD's yml config file.
Also, we wanted to maintain backward compatibility, so that users can upgrade safely. When an index pattern doesn't have a data source, it can fall back to use the same OpenSearch endpoint as its saved object store.
I enabled security plugin for both OpenSearch Dashboards and OpenSearch clusters, can OpenSearch Dashboards use my OSD credentials to query OpenSearch data sources?
This is more about a implementation level detail. It can work with basic auth, but not likely to work with users who logs into OSD using SSO like OIDC or SAML. We want to provide the simplest expreience to users, and will figure out more details during design and implemenation phase.
The text was updated successfully, but these errors were encountered: