Skip to content

Commit 90ba94b

Browse files
committed
rename k8s.io/tcp to k8s.io/raw and move it to followup work
1 parent 07272ad commit 90ba94b

File tree

2 files changed

+29
-29
lines changed

2 files changed

+29
-29
lines changed

keps/sig-network/3726-standard-application-protocols/README.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ tags, and then generate with `hack/update-toc.sh`.
5050
<!--
5151
**ACTION REQUIRED:** In order to merge code into a release, there must be an
5252
issue in [kubernetes/enhancements] referencing this KEP and targeting a release
53-
milestone **before the [Enhancement Freeze](https://git.k8s.io/sig-release/releases)
53+
milestone **before the [Enhancement Freeze](https://git.kubernetes.io/sig-release/releases)
5454
of the targeted release**.
5555
5656
For enhancements that make changes to code or processes/procedures in core
@@ -83,9 +83,9 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
8383
-->
8484

8585
[kubernetes.io]: https://kubernetes.io/
86-
[kubernetes/enhancements]: https://git.k8s.io/enhancements
87-
[kubernetes/kubernetes]: https://git.k8s.io/kubernetes
88-
[kubernetes/website]: https://git.k8s.io/website
86+
[kubernetes/enhancements]: https://git.kubernetes.io/enhancements
87+
[kubernetes/kubernetes]: https://git.kubernetes.io/kubernetes
88+
[kubernetes/website]: https://git.kubernetes.io/website
8989

9090
## Summary
9191

@@ -139,18 +139,17 @@ The [documentation](https://kubernetes.io/docs/concepts/services-networking/serv
139139

140140
This KEP proposes to declare standard Kubernetes protocol names for common protocols that are not IANA standard service names.
141141

142-
Those common protocols will be well defined strings prefixed with ‘k8s.io’.
143-
`k8s.io/h2c` as an example.
142+
Those common protocols will be well defined strings prefixed with ‘kubernetes.io’.
143+
`kubernetes.io/h2c` as an example.
144144

145145
### New Standard Protocols
146-
- 'k8s.io/http2'
147-
- 'k8s.io/grpc'
148-
- 'k8s.io/tcp'
146+
- 'kubernetes.io/h2c'
147+
- 'kubernetes.io/grpc'
149148

150149
### Risks and Mitigations
151150

152151
There are no real “risks”, primary concerns are:
153-
1. End users will not migrate to `k8s.io/<>` values
152+
1. End users will not migrate to `kubernetes.io/<>` values
154153
2. It will take long time to implementations align with the new standards
155154
3. We have no easy way to monitor who is aligned and who is not
156155

@@ -168,21 +167,19 @@ type ServicePort struct {
168167
...
169168
...
170169

171-
// Used as a hint for implementations to
172-
// configure the protocol used between the
173-
// implementation and the application it exposes.
174-
// This field follows standard Kubernetes label syntax.
175-
// Valid values are either:
176-
//
177-
// * Un-prefixed protocol names - reserved for IANA standard service names (as per
178-
// RFC-6335 and https://www.iana.org/assignments/service-names).
179-
//
180-
// * Kubernetes standard names:
181-
// * 'k8s.io/http2' - http2 over cleartext, aka 'h2c'. https://www.rfc-editor.org/rfc/rfc7540
182-
// * 'k8s.io/grpc' - grpc traffic - see https://github.com/grpc/grpc/blob/v1.51.1/doc/PROTOCOL-HTTP2.md
183-
// * 'k8s.io/tcp' - plain tcp traffic
184-
//
185-
// * Other protocols should use prefixed names such as
170+
// The application protocol for this port.
171+
// This is used as a hint for implementations to offer richer behavior for protocols that they understand.
172+
// This field follows standard Kubernetes label syntax.
173+
// Valid values are either:
174+
//
175+
// * Un-prefixed protocol names - reserved for IANA standard service names (as per
176+
// RFC-6335 and https://www.iana.org/assignments/service-names).
177+
//
178+
// * Kubernetes-defined prefixed names:
179+
// * 'kubernetes.io/h2c' - HTTP/2 over cleartext as described in https://www.rfc-editor.org/rfc/rfc7540
180+
// * 'kubernetes.io/grpc' - gRPC over HTTP/2 as described in https://github.com/grpc/grpc/blob/v1.51.1/doc/PROTOCOL-HTTP2.md
181+
//
182+
// * Other protocols should use implementation-defined prefixed names such as
186183
// mycompany.com/my-custom-protocol.
187184
// +optional
188185
AppProtocol *string
@@ -200,18 +197,21 @@ In order to be included in the collection, a new protocol must:
200197
201198
<<[UNRESOLVED sig-network ]>>
202199
203-
if we require two implementations to support a protocol before we include it in the standard collection (i.e k8s.io prefixed collection) we create a situation where we force them to support their own domain prefixed values and k8s.io-prefixed values, have their users migrate to the k8s.io values once they are included, and also the k8s.io ones might end up not be quite the same definition as the implementation specific ones (as we see in the GKE & Istio example).
200+
if we require two implementations to support a protocol before we include it in the standard collection (i.e kubernetes.io prefixed collection) we create a situation where we force them to support their own domain prefixed values and kubernetes.io-prefixed values, have their users migrate to the kubernetes.io values once they are included, and also the kubernetes.io ones might end up not be quite the same definition as the implementation specific ones (as we see in the GKE & Istio example).
204201
205202
The proposed followup work might address this problem also when we turn the field into a list
206203
207204
<<[/UNRESOLVED]>>
208205
209206
210207
### Followup work
211-
To support implementations interoperability with different domain prefixed protocols (or a mix domain prefixed and non prefixed protocol) for the same port we need to turn `AppProtocol` to a list.
208+
- To support implementations interoperability with different domain prefixed protocols (or a mix domain prefixed and non prefixed protocol) for the same port we need to turn `AppProtocol` to a list.
212209
213210
It is likely to be an API change but design details TBD.
214211
212+
- Some implementations are trying to guess the application protocol in absence of `appProtocol`. We should consider adding a new protocol like `kubernetes.io/raw` to the collection that would instructs implementations to process requests as raw.
213+
We need to look at combination of `appProtocol: kubernetes.io/raw` and the different supported port protocols (TCP, UDP, SCTP).
214+
215215
### Documentation change
216216
217217
[kubernetes website](https://github.com/kubernetes/website/blob/main/content/en/docs/concepts/services-networking/service.md#application-protocol) will be changed accordingly
@@ -282,7 +282,7 @@ N/A
282282
283283
## Drawbacks
284284
285-
* The collection of the standard protocols can become stale fairly quick when new protocols are implemented before we decide to declare them as part of k8s.io common collection. That can lead to a the current state again where implementations already implement support without a prefix (although they should not) OR with a domain prefix.
285+
* The collection of the standard protocols can become stale fairly quick when new protocols are implemented before we decide to declare them as part of kubernetes.io common collection. That can lead to a the current state again where implementations already implement support without a prefix (although they should not) OR with a domain prefix.
286286
287287
288288
## Alternatives

keps/sig-network/3726-standard-application-protocols/kep.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ authors:
44
- "@LiorLieberman"
55
owning-sig: sig-network
66

7-
status: provisional
7+
status: implementable
88
creation-date: 2023-01-11
99
reviewers:
1010
- "@aojea"

0 commit comments

Comments
 (0)