Releases: GoogleCloudPlatform/khi
Release list
KHI v0.57.2
This change includes organizing the top page README and minor frontend useful feature improvements.
Check our new KHI introductory video out!
623308348-591357d0-9402-4dd1-b30f-6ae7e25b5cc9.mp4
What's Changed
Bug Fixes 🐛
Documentation 📝
- improved the top page document by @kyasbal in #839
- docs: update video thumbnail link, refine execution guide, and add job mode guide by @kyasbal in #843
- minor style improvement on README by @kyasbal in #844
- Added KHI introduction video by @kyasbal in #840
- Change asset link in README by @kyasbal in #841
- Replace asset link in README.ja.md by @kyasbal in #842
Other Changes 🛠
- feat(web): make log view left columns sticky on horizontal scroll by @kyasbal in #849
- feat(web): add collapse and expand feature for timeline hierarchy by @kyasbal in #850
Full Changelog: v0.57.1...v0.57.2
KHI v0.57.1
KHI v0.57.0
What's Changed
Development Environment 💻
Documentation 📝
Other Changes 🛠
- chore(storybook): unify and reorganize storybook folder hierarchy by @kyasbal in #830
- showing tooltip based on managedField metadata by @kyasbal in #831
- feat: support parsing and displaying mutating webhook annotations by @kyasbal in #834
Full Changelog: v0.56.7...v0.57.0
KHI v0.56.7
What's Changed
Bug Fixes 🐛
Other Changes 🛠
- refactor: remove redundant V2 suffix from Go and TypeScript codebases, docs, and skills by @kyasbal in #822
Full Changelog: v0.56.6...v0.56.7
KHI v0.56.6
What's Changed
Feature 🎉
Bug Fixes 🐛
Other Changes 🛠
- chore: fix typos in code comments and strings by @manumishra12 in #815
Full Changelog: v0.56.5...v0.56.6
KHI v0.56.5
KHI v0.56.4
What's Changed
Improvement 🎉
- feat: infer missing pod/binding resources and pod phase revisions from container log labels by @kyasbal in #817
- feat: implemented the YAML viewer shared component for KHI by @kyasbal in #818
Other Changes 🛠
Note: 0.56.3 is skipped for several reasons. Use 0.56.2 if you want to use a prior version.
Full Changelog: v0.56.2...v0.56.4
KHI v0.56.2
What's Changed
Bug Fixes 🐛
- feat(inspection): add missing log revision states and refactor GCP cluster/nodepool operation mappers by @kyasbal in #806
- feat(core,api): introduce inspection lifecycle context and gRPC connection pooling by @kyasbal in #807
- added RevisionStateK8sResourceExistingLogNotFound by @kyasbal in #809
- fixed pod phase mapper bug by @kyasbal in #811
- fix condition mapper can be not reflecting deletion time correctly by @kyasbal in #812
- supported multiple response flag on csm access log by @kyasbal in #814
Other Changes 🛠
- Added new sort policy for k8s resources by @kyasbal in #805
- build(deps): update Go and npm dependencies to resolve open Dependabot PRs by @kyasbal in #810
- show ??:??:?? when the given timestamp is a placeholder by @kyasbal in #813
Full Changelog: v0.56.1...v0.56.2
KHI v0.56.1
What's Changed
New feature 🎉
Bug Fixes 🐛
- Enhance GCP operation log visualization and handle missing start logs by @kyasbal in #802
- fix(web): report granular download progress and show initial progressbar by @kyasbal in #804
CI/CD ⚙️
- ci: enforce prettier formatting for .cloudbuild by @manumishra12 in #798
Full Changelog: v0.56.0...v0.56.1
KHI v0.56.0
KHI v0.56.0
.khi file format structure change
Previously .khi file format used JSON for storing its metadata and gzipped raw array buffer for long text part. This limits the maximum size of the logs due to the max string length accepted on V8.
This version changed .khi to use protocol buffer based file schema. It allows performant serialization/deserialization while we maintain file schema interface across backend and frontend.
Protocol buffer has limitation on the max size per single message, thus KHI concatenate multiple protos on simple KHI's container file format.
Comparison by file format update
| scenario | log volume | old format size | new format size | reduction ratio |
|---|---|---|---|---|
| basic scenario | 223464 logs | 128.2MB | 19.4MB | x 6.6 |
| larger scenario | 1386843 logs | 885.3MB | 144.4MB | x6.1 |
This is not only for the file size issue. KHI needs decompress string data from the file at the beginning of the load to perform filtering and consume a lot of memory(The larger scenario data with old format couldn't be loaded on my environment.) This allows frontend to open larger log data.
Note that even if we support larger log volume, still it's recommended to set appropriate filter to query. Larger logs takes longer time to filter and the inspection experience would be worse.
UI changes
More types of timelines
KHI was initially designed only for visualizing Kubernetes logs. Thus timeline layer count was fixed and it always has the structure APIVersion -> Kind -> Namespace -> Resource -> SubResource.
However, now we have a lot of types of visualization are placed with hierarchical relationships such as .status.conditions or .metadata.ownerReference. We recently added support for CSM TD resources or Managed airflow. These were needed to be placed on timeline with mapping their concept to kubernetes concept forcibly.
New change allows defining new timeline type for each parsers and the count of layers of timeline hierarchy is not limited.

With this change, Kubernetes resource hierarchy was changed to cluster name -> api version -> kind -> namespace -> resource -> subresource with aiming to support multi clusters.

New timeline filters
By the change of timeline types, KHI no longer guarantee given data contains namespace or kind timeline. It needed more widely applicable filtering mechanism.
CEL based filtering
The new filtering system is based on CEL based highly flexible filtering system. Now advanced user can input the filter directly. One of the example of this usage is to filter timelines by its manifest property.
The screenshot captures filtering timelines which has status.qosClass = Burstable. This allows us to find resources with more complex conditions.
Severity filtering
KHI hasn't supported severity based filtering. This was not from the architectural limit, but more like my own ideological policy. But now I supported it as there were many requests on it.
But note that severities in distributed system sometimes become misleading because each component decides its severity from its own perspective. Severity is not a universal criteria of logs.
Log body search and diff body search
Our log or diff components hasn't provided searching capability. It lead user to use in-browser search but it sometimes hit other elements not on the logs or the manifest.
Graph view integration on the dockable window
hevc.mov
Now KHI's graph view is integrated on the dockable window. It allows us to see the diagram along with the timeline.
What's Changed
Bug Fixes 🐛
- fix composer parsers to use GCPMainMessageFieldSet because log.MainMessageFieldSet is no longer used by default by @kyasbal in #792
- fixed CSM access log timeline style by @kyasbal in #796
- fix style override didn't reflect its status to preview by @kyasbal in #794
CI/CD ⚙️
- fix build script failure for releasing by @kyasbal in #790
- Simplified and optimized release workflows running on Cloud Build by @kyasbal in #797
Documentation 📝
- docs: fix typo in development guide (automativally → automatically) by @manumishra12 in #799
Other Changes 🛠
- Merge epic/file-schema-v6 into main by @kyasbal in #787
- improve cloud composer timeline styles by @kyasbal in #795
- docs: fix broken relative links in contributor/concept guides by @manumishra12 in #793
- Added timeline exclusion filter by @kyasbal in #800
- Added release note view by @kyasbal in #801
New Contributors
- @manumishra12 made their first contribution in #793
Full Changelog: v0.55.2...v0.56.0