Skip to content

Commit e289df7

Browse files
committed
update to new format, and add test plan
1 parent 82addef commit e289df7

File tree

2 files changed

+75
-48
lines changed

2 files changed

+75
-48
lines changed

keps/sig-instrumentation/0034-distributed-tracing-kep.md renamed to keps/sig-instrumentation/0034-apiserver-tracing/README.md

Lines changed: 44 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,7 @@
1-
---
2-
title: Tracing API Server Requests
3-
authors:
4-
- "@Monkeyanator"
5-
- "@dashpole"
6-
- "@logicalhan"
7-
editor: "@dashpole"
8-
owning-sig: sig-instrumentation
9-
participating-sigs:
10-
- sig-architecture
11-
- sig-api-machinery
12-
- sig-scalability
13-
reviewers:
14-
- "@logicalhan"
15-
- "@caesarxuchao"
16-
approvers:
17-
- "@brancz"
18-
- "@lavalamp"
19-
creation-date: 2018-12-04
20-
last-updated: 2020-09-30
21-
status: implementable
22-
---
23-
24-
# Tracing API Server Requests
25-
26-
## Table of Contents
1+
# KEP-0034: APIServer Tracing
272

283
<!-- toc -->
4+
- [Release Signoff Checklist](#release-signoff-checklist)
295
- [Summary](#summary)
306
- [Motivation](#motivation)
317
- [Definitions](#definitions)
@@ -37,17 +13,33 @@ status: implementable
3713
- [Running the OpenTelemetry Collector](#running-the-opentelemetry-collector)
3814
- [APIServer Configuration and EgressSelectors](#apiserver-configuration-and-egressselectors)
3915
- [Controlling use of the OpenTelemetry library](#controlling-use-of-the-opentelemetry-library)
16+
- [Test Plan](#test-plan)
4017
- [Graduation requirements](#graduation-requirements)
18+
- [Production Readiness Survey](#production-readiness-survey)
19+
- [Implementation History](#implementation-history)
4120
- [Alternatives considered](#alternatives-considered)
4221
- [Introducing a new EgressSelector type](#introducing-a-new-egressselector-type)
4322
- [Other OpenTelemetry Exporters](#other-opentelemetry-exporters)
44-
- [Production Readiness Survey](#production-readiness-survey)
45-
- [Implementation History](#implementation-history)
4623
<!-- /toc -->
4724

25+
## Release Signoff Checklist
26+
27+
Items marked with (R) are required *prior to targeting to a milestone / release*.
28+
29+
- [X] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
30+
- [X] (R) KEP approvers have approved the KEP status as `implementable`
31+
- [X] (R) Design details are appropriately documented
32+
- [X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
33+
- [X] (R) Graduation criteria is in place
34+
- [x] (R) Production readiness review completed
35+
- [ ] Production readiness review approved
36+
- [X] "Implementation History" section is up-to-date for milestone
37+
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
38+
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
39+
4840
## Summary
4941

50-
This Kubernetes Enhancement Proposal (KEP) proposes enhancing the API Server to allow tracing requests.
42+
This Kubernetes Enhancement Proposal (KEP) proposes enhancing the API Server to allow tracing requests. For this, it proposes using OpenTelemetry libraries, and exports in the OpenTelemetry format.
5143

5244
## Motivation
5345

@@ -134,34 +126,24 @@ type ServiceReference struct {
134126

135127
As the community found in the [Metrics Stability Framework KEP](https://github.com/kubernetes/enhancements/blob/master/keps/sig-instrumentation/20190404-kubernetes-control-plane-metrics-stability.md#kubernetes-control-plane-metrics-stability), having control over how the client libraries are used in kubernetes can enable maintainers to enforce policy and make broad improvements to the quality of telemetry. To enable future improvements to tracing, we will restrict the direct use of the OpenTelemetry library within the kubernetes code base, and provide wrapped versions of functions we wish to expose in a utility library.
136128

129+
### Test Plan
130+
131+
We will e2e test this feature by deploying an OpenTelemetry Collector on the master, and configure it to export traces using the [stdout exporter](https://github.com/open-telemetry/opentelemetry-go/tree/master/exporters/stdout), which logs the spans in json format. We can then verify that the logs contain our expected traces when making calls to the API Server.
132+
137133
## Graduation requirements
138134

139135
Alpha
140136

141137
- [] Implement tracing of incoming and outgoing http/grpc requests in the kube-apiserver
142-
- [] E2e testing of apiserver tracing
143-
- [] User-facing documentation
138+
- [] Tests are in testgrid and linked in KEP
144139

145140
Beta
146141

147-
- [] Tracing 100% of requests does not break scalability tests.
142+
- [] Tracing 100% of requests does not break scalability tests (this does not necessarily mean trace backends can handle all the data).
148143
- [] OpenTelemetry reaches GA
149-
- [] Publish documentation on examples of how to use the OT Collector with kubernetes
150-
151-
152-
## Alternatives considered
153-
154-
### Introducing a new EgressSelector type
155-
156-
Instead of a configuration file to choose between a url on the `Master` network, or a service on the `Cluster` network, we considered introducing a new `OpenTelemetry` egress type, which could be configured separately. However, we aren't actually introducing a new destination for traffic, so it is more conventional to make use of existing egress types. We will also likely want to add additional configuration for the OpenTelemetry client in the future.
157-
158-
### Other OpenTelemetry Exporters
159-
160-
This KEP suggests that we utilize the OpenTelemetry exporter format in all components. Alternative options include:
161-
162-
1. Add configuration for many exporters in-tree by vendoring multiple "supported" exporters. These exporters are the only compatible backends for tracing in kubernetes.
163-
a. This places the kubernetes community in the position of curating supported tracing backends
164-
2. Support *both* a curated set of in-tree exporters, and the collector exporter
144+
- [] Publish examples of how to use the OT Collector with kubernetes
145+
- [] Allow time for feedback
146+
- [] Collect feedback from users
165147

166148
## Production Readiness Survey
167149

@@ -229,3 +211,17 @@ This KEP suggests that we utilize the OpenTelemetry exporter format in all compo
229211
* [Instrumentation of Kubernetes components for 1/24/2019 community demo](https://github.com/kubernetes/kubernetes/compare/master...dashpole:tracing)
230212
* KEP merged as provisional on 1/8/2020, including controller tracing
231213
* KEP scoped down to only API Server traces on 5/1/2020
214+
215+
## Alternatives considered
216+
217+
### Introducing a new EgressSelector type
218+
219+
Instead of a configuration file to choose between a url on the `Master` network, or a service on the `Cluster` network, we considered introducing a new `OpenTelemetry` egress type, which could be configured separately. However, we aren't actually introducing a new destination for traffic, so it is more conventional to make use of existing egress types. We will also likely want to add additional configuration for the OpenTelemetry client in the future.
220+
221+
### Other OpenTelemetry Exporters
222+
223+
This KEP suggests that we utilize the OpenTelemetry exporter format in all components. Alternative options include:
224+
225+
1. Add configuration for many exporters in-tree by vendoring multiple "supported" exporters. These exporters are the only compatible backends for tracing in kubernetes.
226+
a. This places the kubernetes community in the position of curating supported tracing backends
227+
2. Support *both* a curated set of in-tree exporters, and the collector exporter
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
title: APIServer Tracing
2+
kep-number: 0034
3+
authors:
4+
- "@Monkeyanator"
5+
- "@dashpole"
6+
- "@logicalhan"
7+
owning-sig: sig-instrumentation
8+
participating-sigs:
9+
- sig-architecture
10+
- sig-api-machinery
11+
- sig-scalability
12+
status: implementable
13+
creation-date: 2018-12-04
14+
reviewers:
15+
- "@logicalhan"
16+
- "@caesarxuchao"
17+
approvers:
18+
- "@brancz"
19+
- "@lavalamp"
20+
prr-approvers:
21+
- "@wojtek-t"
22+
see-also:
23+
replaces:
24+
stage: alpha
25+
latest-milestone: "v1.20"
26+
milestone:
27+
alpha: "v1.20"
28+
feature-gates:
29+
- name: APIServerTracing
30+
disable-supported: true
31+
metrics:

0 commit comments

Comments
 (0)