Add disclaimers regarding Event lifetime#5531
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: dabico The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Pull request overview
Adds a brief “events are ephemeral” disclaimer under Kubernetes Events tables to help users understand Event retention behavior across the UI.
Changes:
- Add an info-note below the object details Events table (
ObjectEventList) and the Cluster Overview Events section. - Introduce a new i18n string for the disclaimer and update locale files.
- Update Storybook storyshot snapshots across affected details views.
Reviewed changes
Copilot reviewed 68 out of 68 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/src/components/common/ObjectEventList.tsx | Renders an info disclaimer under the per-object Events table. |
| frontend/src/components/cluster/Overview.tsx | Renders an info disclaimer under the Cluster Overview Events table. |
| frontend/src/i18n/locales/en/translation.json | Adds the new disclaimer string in English. |
| frontend/src/i18n/locales/de/translation.json | Adds German translation entry for the new disclaimer string. |
| frontend/src/i18n/locales/it/translation.json | Adds Italian translation entry for the new disclaimer string. |
| frontend/src/i18n/locales/es/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/i18n/locales/fr/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/i18n/locales/hi/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/i18n/locales/ja/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/i18n/locales/ko/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/i18n/locales/pt/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/i18n/locales/ta/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/i18n/locales/zh/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/i18n/locales/zh-tw/translation.json | Adds placeholder entry for the new disclaimer string. |
| frontend/src/components/common/snapshots/ObjectEventList.WithEvents.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/common/snapshots/ObjectEventList.NoEventsForObject.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/common/snapshots/ObjectEventList.ErrorFetching.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/cluster/snapshots/Overview.Events.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/cluster/snapshots/Overview.ErrorState.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/cluster/snapshots/Overview.EmptyState.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/webhookconfiguration/snapshots/ValidatingWebhookConfigDetails.WithURL.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/webhookconfiguration/snapshots/ValidatingWebhookConfigDetails.WithService.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/webhookconfiguration/snapshots/MutatingWebhookConfigDetails.WithURL.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/webhookconfiguration/snapshots/MutatingWebhookConfigDetails.WithService.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/verticalPodAutoscaler/snapshots/VPADetails.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/storage/snapshots/VolumeDetails.Base.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/storage/snapshots/ClassDetails.Base.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/storage/snapshots/ClaimDetails.Base.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/statefulset/snapshots/Details.WithOnDeleteStrategy.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/statefulset/snapshots/Details.WithMultipleContainers.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/statefulset/snapshots/Details.WithComplexSelector.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/statefulset/snapshots/Details.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/service/snapshots/ServiceDetails.WithA8ROwnerOnly.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/service/snapshots/ServiceDetails.WithA8RAnnotations.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/service/snapshots/ServiceDetails.ErrorWithEndpoints.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/service/snapshots/ServiceDetails.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/secret/snapshots/Details.WithBase.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/secret/snapshots/Details.Empty.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/runtimeClass/snapshots/Details.Base.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/resourceQuota/snapshots/resourceQuotaDetails.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/priorityClass/snapshots/priorityClassDetails.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/podDisruptionBudget/snapshots/pdbDetails.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/networkpolicy/snapshots/Details.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/namespace/snapshots/NamespaceDetails.Active.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/limitRange/snapshots/Details.LimitRangeDetail.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/lease/snapshots/Details.LeaseDetail.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/ingress/snapshots/Details.WithWildcardTLS.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/ingress/snapshots/Details.WithTLS.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/ingress/snapshots/Details.WithResource.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/ingress/snapshots/ClassDetails.WithDefault.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/ingress/snapshots/ClassDetails.Basic.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/horizontalPodAutoscaler/snapshots/HPADetails.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/gateway/snapshots/ReferenceGrantDetails.Basic.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/gateway/snapshots/HTTPRouteDetails.Empty.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/gateway/snapshots/HTTPRouteDetails.Basic.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/gateway/snapshots/GRPCRouteDetails.Basic.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/gateway/snapshots/GatewayDetails.Basic.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/gateway/snapshots/ClassDetails.Basic.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/gateway/snapshots/BackendTrafficPolicyDetails.Basic.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/gateway/snapshots/BackendTLSPolicyDetails.Basic.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/endpointSlices/snapshots/EndpointSliceDetails.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/endpoints/snapshots/EndpointDetails.Default.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/cronjob/snapshots/CronJobDetails.EveryMinute.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/cronjob/snapshots/CronJobDetails.EveryAst.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/crd/snapshots/CustomResourceDetails.NoError.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/crd/snapshots/CustomResourceDefinition.Details.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/configmap/snapshots/Details.WithBase.stories.storyshot | Updates snapshot to include the disclaimer. |
| frontend/src/components/configmap/snapshots/Details.Empty.stories.storyshot | Updates snapshot to include the disclaimer. |
|
@copilot's comments are technically correct, but one should keep the following in mind: most managed Kubernetes services (AKS, EKS, GKE, etc.) don't offer options for configuring the |
|
@dabico I think having a ℹ️ icon next to events Header and showing the text as tooltip on hover will be a better UX. I think its better to mention that the 1hr timelimit can vary based on Users Cluster config. |
illume
left a comment
There was a problem hiding this comment.
Thanks for this PR.
The open review comments from Copilot still need attention — can you have a look? Once addressed, please mark them as resolved.
illume
left a comment
There was a problem hiding this comment.
Thanks for the contribution.
This PR has git conflicts — could you resolve them?
How to resolve conflicts
Rebase or merge the latest main into your branch, resolve the conflicts, and push the updated branch.
@yolossn I've implemented the suggestions. You can see what it looks like in the updated issue description. @illume I've rebased off of |
| <SectionBox | ||
| title={t('glossary|Events')} | ||
| headerProps={{ | ||
| noPadding: false, | ||
| headerStyle: 'subsection', | ||
| titleSideActions: [ | ||
| <LightTooltip | ||
| key="event-lifetime-info" | ||
| title={t( | ||
| "translation|Kubernetes events have a lifetime of 1 hour by default. This duration may vary depending on your cluster's configuration." | ||
| )} | ||
| interactive | ||
| > | ||
| <Box | ||
| component="span" | ||
| sx={{ | ||
| display: 'inline-flex', | ||
| alignItems: 'center', | ||
| verticalAlign: 'middle', | ||
| fontSize: '1.75rem', | ||
| lineHeight: 0, | ||
| mr: 1, | ||
| }} | ||
| > | ||
| <Icon icon="mdi:information-outline" /> | ||
| </Box> | ||
| </LightTooltip>, | ||
| ], | ||
| }} | ||
| > |
| <LightTooltip | ||
| key="event-lifetime-info" | ||
| title={t( | ||
| "translation|Kubernetes events have a lifetime of 1 hour by default. This duration may vary depending on your cluster's configuration." | ||
| )} | ||
| interactive | ||
| > | ||
| <Box | ||
| component="span" | ||
| sx={{ | ||
| display: 'inline-flex', | ||
| alignItems: 'center', | ||
| verticalAlign: 'middle', | ||
| fontSize: '1.75rem', | ||
| lineHeight: 0, | ||
| mr: 1, | ||
| }} | ||
| > | ||
| <Icon icon="mdi:information-outline" /> | ||
| </Box> | ||
| </LightTooltip>, |
| "Reason": "Reason", | ||
| "Count": "Count", | ||
| "Last Seen": "Last Seen", | ||
| "Kubernetes events have a lifetime of 1 hour by default. This duration may vary depending on your cluster's configuration.": "Kubernetes events have a lifetime of 1 hour by default. This duration may vary depending on your cluster's configuration.", |
illume
left a comment
There was a problem hiding this comment.
Thanks for the contribution.
There are some open Copilot review comments — could you take a look at them? Please mark each one as resolved once you've addressed it.
|
PR needs rebase. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Summary
Add a small disclaimer tooltip next to the title of "Events" tables regarding
Eventresource lifetime in Kubernetes. Helpful to teach newbie users aboutEventretention, and a good reminder even for more veteran users.Changes
Steps to Test
Launch locally with Minikube:
Open Headlamp UI in the browser.
Navigate to the Clusters page and hover over the information icon to view.
Under Workloads, select any resource to view its details, hover over the information icon to view.
Screenshots
Notes for the Reviewer