Skip to content

Commit a6e88b3

Browse files
committed
Update test plan
Signed-off-by: Jian Zeng <[email protected]>
1 parent 33ff07a commit a6e88b3

File tree

1 file changed

+78
-68
lines changed
  • keps/sig-node/3288-separate-stdout-from-stderr

1 file changed

+78
-68
lines changed

keps/sig-node/3288-separate-stdout-from-stderr/README.md

Lines changed: 78 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ tags, and then generate with `hack/update-toc.sh`.
9191
- [Changes of kubelet](#changes-of-kubelet)
9292
- [Changes of kubectl](#changes-of-kubectl)
9393
- [Test Plan](#test-plan)
94+
- [Prerequisite testing updates](#prerequisite-testing-updates)
95+
- [Unit tests](#unit-tests)
96+
- [Integration tests](#integration-tests)
97+
- [e2e tests](#e2e-tests)
9498
- [Graduation Criteria](#graduation-criteria)
9599
- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy)
96100
- [Version Skew Strategy](#version-skew-strategy)
@@ -151,7 +155,9 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
151155

152156
## Summary
153157

154-
This proposal makes it easier for users to view certain log stream of a container,
158+
Currently, kubelet actually [has the potential](https://github.com/kubernetes/kubernetes/blob/69cabe778bccfc5f4fa9b6788c9def005e7d959d/pkg/kubelet/kuberuntime/logs/logs.go#L281)
159+
to return certain log stream of a container, but this ability is not exposed to the user.
160+
This proposal enables users to view certain log stream of a container,
155161
and aims to extend kubelet and api-server with the ability to return certain
156162
container log stream.
157163

@@ -165,7 +171,6 @@ retrieve certain log stream of a container, so it is great to implement this lon
165171

166172
### Goals
167173

168-
- Enable kubelet to filter log stream of a container
169174
- Enable api-server to return certain log stream of a container
170175
- Enable users to fetch certain log stream of a container
171176

@@ -203,17 +208,6 @@ This might be a good place to talk about core concepts and how they relate.
203208

204209
### Risks and Mitigations
205210

206-
<!--
207-
What are the risks of this proposal, and how do we mitigate? Think broadly.
208-
For example, consider both security and how this will impact the larger
209-
Kubernetes ecosystem.
210-
211-
How will security be reviewed, and by whom?
212-
213-
How will UX be reviewed, and by whom?
214-
215-
Consider including folks who also work outside the SIG or subproject.
216-
-->
217211

218212
## Design Details
219213

@@ -338,6 +332,62 @@ when drafting this test plan.
338332
[testing-guidelines]: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
339333
-->
340334

335+
[x] I/we understand the owners of the involved components may require updates to
336+
existing tests to make this code solid enough prior to committing the changes necessary
337+
to implement this enhancement.
338+
339+
##### Prerequisite testing updates
340+
341+
<!--
342+
Based on reviewers feedback describe what additional tests need to be added prior
343+
implementing this enhancement to ensure the enhancements have also solid foundations.
344+
-->
345+
346+
##### Unit tests
347+
348+
<!--
349+
In principle every added code should have complete unit test coverage, so providing
350+
the exact set of tests will not bring additional value.
351+
However, if complete unit test coverage is not possible, explain the reason of it
352+
together with explanation why this is acceptable.
353+
-->
354+
355+
<!--
356+
Additionally, for Alpha try to enumerate the core package you will be touching
357+
to implement this enhancement and provide the current unit coverage for those
358+
in the form of:
359+
- <package>: <date> - <current test coverage>
360+
The data can be easily read from:
361+
https://testgrid.k8s.io/sig-testing-canaries#ci-kubernetes-coverage-unit
362+
This can inform certain test coverage improvements that we want to do before
363+
extending the production code to implement this enhancement.
364+
-->
365+
366+
- `<package>`: `<date>` - `<test coverage>`
367+
368+
##### Integration tests
369+
370+
<!--
371+
This question should be filled when targeting a release.
372+
For Alpha, describe what tests will be added to ensure proper quality of the enhancement.
373+
For Beta and GA, add links to added tests together with links to k8s-triage for those tests:
374+
https://storage.googleapis.com/k8s-triage/index.html
375+
-->
376+
377+
- <test>: <link to test coverage>
378+
379+
##### e2e tests
380+
381+
<!--
382+
This question should be filled when targeting a release.
383+
For Alpha, describe what tests will be added to ensure proper quality of the enhancement.
384+
For Beta and GA, add links to added tests together with links to k8s-triage for those tests:
385+
https://storage.googleapis.com/k8s-triage/index.html
386+
We expect no non-infra related flakes in the last month as a GA graduation criteria.
387+
-->
388+
389+
- <test>: <link to test coverage>
390+
341391
### Graduation Criteria
342392

343393
<!--
@@ -416,7 +466,11 @@ enhancement:
416466
cluster required to make on upgrade, in order to make use of the enhancement?
417467
-->
418468

419-
TBD
469+
There is no extra work required for users to maintain previous behavior, the changes
470+
caused by this enhancement are backwards compatible.
471+
472+
To make use of the enhancement, users will need to update the `kube-apiserver` and `kubelet`
473+
to at least `v1.25` and turn on feature gate `SplitStdoutAndStderr` in both components.
420474

421475
### Version Skew Strategy
422476

@@ -481,7 +535,7 @@ well as the [existing list] of feature gates.
481535
- Feature gate name: SplitStdoutAndStderr
482536
- Components depending on the feature gate: kubelet, kube-apiserver
483537
- [x] Other
484-
- Describe the mechanism:
538+
- Describe the mechanism: query parameter
485539
- Will enabling / disabling the feature require downtime of the control
486540
plane?
487541
- No.
@@ -491,24 +545,11 @@ well as the [existing list] of feature gates.
491545

492546
###### Does enabling the feature change any default behavior?
493547

494-
<!--
495-
Any change of default behavior may be surprising to users or break existing
496-
automations, so be extremely careful here.
497-
-->
498-
No. This change is backward compatible.
548+
No. If the query parameter `stream` in the url of fetching logs from kube-apiserver is empty or not set,
549+
combined stdout and stderr is returned.
499550

500551
###### Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)?
501552

502-
<!--
503-
Describe the consequences on existing workloads (e.g., if this is a runtime
504-
feature, can it break the existing applications?).
505-
506-
Feature gates are typically disabled by setting the flag to `false` and
507-
restarting the component. No other changes should be necessary to disable the
508-
feature.
509-
510-
NOTE: Also set `disable-supported` to `true` or `false` in `kep.yaml`.
511-
-->
512553
Yes.
513554

514555
###### What happens if we reenable the feature if it was previously rolled back?
@@ -662,6 +703,7 @@ and creating new ones, as well as about cluster-level services (e.g. DNS):
662703
- Impact of its outage on the feature:
663704
- Impact of its degraded performance or high-error rates on the feature:
664705
-->
706+
No.
665707

666708
### Scalability
667709

@@ -677,44 +719,19 @@ previous answers based on experience in the field.
677719

678720
###### Will enabling / using this feature result in any new API calls?
679721

680-
<!--
681-
Describe them, providing:
682-
- API call type (e.g. PATCH pods)
683-
- estimated throughput
684-
- originating component(s) (e.g. Kubelet, Feature-X-controller)
685-
Focusing mostly on:
686-
- components listing and/or watching resources they didn't before
687-
- API calls that may be triggered by changes of some Kubernetes resources
688-
(e.g. update of object X triggers new updates of object Y)
689-
- periodic API calls to reconcile state (e.g. periodic fetching state,
690-
heartbeats, leader election, etc.)
691-
-->
722+
No.
692723

693724
###### Will enabling / using this feature result in introducing new API types?
694725

695-
<!--
696-
Describe them, providing:
697-
- API type
698-
- Supported number of objects per cluster
699-
- Supported number of objects per namespace (for namespace-scoped objects)
700-
-->
726+
No.
701727

702728
###### Will enabling / using this feature result in any new calls to the cloud provider?
703729

704-
<!--
705-
Describe them, providing:
706-
- Which API(s):
707-
- Estimated increase:
708-
-->
730+
No.
709731

710732
###### Will enabling / using this feature result in increasing size or count of the existing API objects?
711733

712-
<!--
713-
Describe them, providing:
714-
- API type(s):
715-
- Estimated increase in size: (e.g., new annotation of size 32B)
716-
- Estimated amount of new objects: (e.g., new Object X for every existing Pod)
717-
-->
734+
No.
718735

719736
###### Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs?
720737

@@ -726,18 +743,11 @@ Think about adding additional work or introducing new steps in between
726743
727744
[existing SLIs/SLOs]: https://git.k8s.io/community/sig-scalability/slos/slos.md#kubernetes-slisslos
728745
-->
746+
No.
729747

730748
###### Will enabling / using this feature result in non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components?
731749

732-
<!--
733-
Things to keep in mind include: additional in-memory state, additional
734-
non-trivial computations, excessive access to disks (including increased log
735-
volume), significant amount of data sent and/or received over network, etc.
736-
This through this both in small and large cases, again with respect to the
737-
[supported limits].
738-
739-
[supported limits]: https://git.k8s.io/community//sig-scalability/configs-and-limits/thresholds.md
740-
-->
750+
No.
741751

742752
### Troubleshooting
743753

0 commit comments

Comments
 (0)