-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[discuss] Allow to ignore specific deprecations #113734
Comments
Pinging @elastic/kibana-core (Team:Core) |
cloud
service to core
cloud
service to core
From the licensing perspective given what the cloud plugin currently does, no. However, I'm curious about the following reasoning:
During previous discussions, we decided that it's acceptable to have OSS plugins have optional dependencies on x-pack plugins. This makes it possible for us to make all of these plugins have dependencies on the This just leaves us with Only moving the cloud-config to |
True. However we can't have bi-lateral dependencies, and
I don't think core should be inseparable from cloud, but I feel like core should be aware of if it's running on cloud or not, one way or another.
That's definitely the easiest one, as it would require changes only in the Kibana codebase. But if we think this is not acceptable (and we do want core to be aware of if it's running on cloud or not), we could open the discussion with the cloud team to seek potential other options. |
Thinking long-term, I don't think that we want the Cloud config to be part of core. I'm having a hard time thinking of a future situation where we'd need core itself to know whether or not it's running on Cloud, outside of the current predicament that we're in because ESS can't use the new logging format yet. If we're just talking about code that would be in 7.16 to accommodate for the logging issue, do we feel any differently about accessing the |
You probably have a way better long-term vision than I do regarding this, so I will trust you on this. (I will still
As said during our sync discussion, that's not because we can access every parts of the config from within core that we should. I really do hate the idea of hacking our ways in the config just to disable some deprecations. If we do decide that we don't want to move the (basic) cloud config in core, I'd say that's not reason enough to just go the hacky way. In that case, I would just either try to find another solution, or just let the legacy logging deprecations visible on cloud in 7.16. But that's only a personal opinion, let's see what the other @elastic/kibana-core members think about it. Also, note that this is only one part of the problem. We also have a (more) concrete issue of cloud's dependency plugin needing to access the cloud API in #110638. What should we do about this one? Split the cloud plugin into two parts as suggested in #113734 (comment)? |
My ++. I don't really like the fact Kibana changes its behavior in the specific environment due to several reasons:
It might solve the problem in short term, WDYT about my suggestion to extend UA with API allowing Cloud to suppress some of the Cloud-specific depreciations? Other Cloud-specific rules may follow the same pattern: # cloud kibana.yml
logging: .....
x-pack.upgrade_assistant.mute: ['logging....']
home.ui.showSelfManagedTelemetry: false |
If it's technically feasible, it sounds good to me. |
I was originally in favor of having
This is probably the thing that would make me the most nervous about adding the logic into core.
I also had forgotten about this discussion. If we are mostly doing this as a workaround for the issues linked in the description, then for now I am +1 on exploring other options (like the UA-specific API, and possibly splitting the |
As it seems we don't want to 'ship' cloud into core, that looks like the most realistic alternative to work around the specific 'legacy logging deprecation showing in cloud 7.16 instances' issue. However, note that UA does not have the info about the path of the setting being deprecated, as the kibana/src/core/server/deprecations/types.ts Lines 18 to 76 in 249c5fb
Given the timeline, would we be able to perform those changes before 7.16FF ? If not, do we think this is important enough to try and merge it after FF? |
That's a product requirement IMO. cc @thesmallestduck
Sure, it will. @cjcenizal Do you agree on extending UA API? |
@mshustov @pgayvallet and others, just so I'm clear on this: the proposal is to offer a new setting in If so I'm +1 on this proposal. I just want to voice a couple concerns:
|
@cjcenizal - Elasticsearch has just introduced a new setting The intent is that we will work with Cloud for the 7.x last version to identify the small handful of settings that they set that are deprecated (like the transport client settings) but the user can/should not change. Then when the cluster is upgraded to the 7.x last this new setting will be added to the cluster so that when the user starts to look at the upgrade asssistant (which reads from the deprecation info API) they will not see these specific deprecation's. Also, we (ES) limited our setting to just skip specific deprecated settings not any random deprecations. This is due to a lack of unique identifier for deprecations (settings have a natural unique identifier) and we don't have any known deprecrations outside of settings that we want to skip. |
Imho you're right, that seems to be a better design than having UA filter the deprecations itself.
That was going to be my next point. We also don't have unique identifiers for deprecations. However in our case, we unfortunately don't (necessarily) have the setting's path for config deprecations, e.g const destLoggingDeprecation: ConfigDeprecation = (settings, fromPath, addDeprecation) => {
if (settings.logging?.dest) {
addDeprecation({
documentationUrl:
'https://github.com/elastic/kibana/blob/master/src/core/server/logging/README.mdx#loggingdest',
title: i18n.translate('core.deprecations.loggingDest.deprecationTitle', {
defaultMessage: `Setting "logging.dest" is deprecated`,
}),
message: i18n.translate('core.deprecations.loggingDest.deprecationMessage', {
defaultMessage:
'"logging.dest" has been deprecated and will be removed ' +
'in 8.0. To set the destination moving forward, you can use the "console" appender ' +
'in your logging configuration or define a custom one. For more details, see ' +
'https://github.com/elastic/kibana/blob/master/src/core/server/logging/README.mdx',
}),
correctiveActions: {
...
},
});
}
}; So we will need to be able to identify them somehow. My draft proposal would be:
Once this is implemented, for our specific example, the required changes in the config would be: deprecations:
ignore:
- 'logging.*' (and of course, also add the const destLoggingDeprecation: ConfigDeprecation = (settings, fromPath, addDeprecation) => {
if (settings.logging?.dest) {
addDeprecation({
id: 'logging.dest',
documentationUrl: '...',
title: '...',
// ...
});
}
}; Note: for the specific legacy logging deprecations, if we do want to use/allow the @mshustov @cjcenizal WDYT? |
cloud
service to core
Correct. In the case of the Cloud, domain owners will be responsible to update these settings. For example, the Kibana Core team will add logging settings in the blocklist.
Agree, it sounds like a deprecation service responsibility. I'd expect Kibana not to log a deprecation warning if a deprecation of a setting is "blocked".
The most practical solution is to add any unique identifier, so my +1. There are 40 deprecations, so the number is manageable to update manually.
For the sake of consistency and better UX, I'd suggest using the same naming pattern that Elasticsearch config does:
The same approach is applicable: if Elasticsearch config doesn't support a wildcard, Kibana shouldn't do so. |
Fine with me. Do you think we'll also want to only allow to skip/ignore config type deprecations, as it is what ES is doing (would be fine to our usecase here) |
I can imagine that we might want to deprecate other Kibana API (an endpoint, for example), but IMO we should align the deprecation approach across the Stack. Should we deprecate other entities later, we can extend functionality: for example, for an endpoint, we can introduce |
I'm pleased with where y'all have landed, @mshustov and @pgayvallet. Thank you for driving this forward! |
FWIW, Looking at the ES implementation, the skipped settings are based on their config path, not on an arbitrary ID. Given that we decided that Kibana will also only support skipping config-type deprecation (for now at least), I will add a |
Closed by #114751 |
Currently, all cloud-related information are exposed from the
cloud
xpack plugin. This has two main limitationd limitations:core
itself.cloud
plugin having dependencies towardusageCollection
,home
andsecurity
, it's not possible to access the cloud config from the dependency plugins without introducing a cyclic dependency (that would force to split thecloud
plugin into multiple pieces)This question come back often. The two most recent example being:
isCloudEnabled
from thehome
plugin: Self-managed telemetry Privacy Statement notice shown in Cloud environment #110638isCloudEnabled
fromcore
to toggle some legacy logging deprecationsWith cloud being a first-class citizen of our 'customers', and with our current focus on cloud, I suspect that this kind of need will be more and more frequent. Which is why I'm opening this issue to discuss the possibility to move and expose the cloud config from core itself.
We could do that this way:
xpack.cloud.*
in favor of eithercloud.*
orcore.cloud.*
(with a properrename
deprecation for BWC)cloud
core service, both on the server and client-sidecloudId
,deploymentId
,isCloudEnabled
cloud
plugin consume this config instead of using its own plugin configprofileUrl
,snapshotsUrl
) to be exposed from the core service or from the cloud plugincc @kobelb @stacey-gammon is there any licensing concern on having the base
cloud
config living inside core instead of an xpack plugin?The text was updated successfully, but these errors were encountered: