Skip to content

Commit e53dae2

Browse files
authored
Merge pull request kubernetes#3912 from LiorLieberman/add-followup-work
Remove kubernetes.io/grpc and add followup work
2 parents ea5255c + 349f8a0 commit e53dae2

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kep-number: 3726
2+
stable:
3+
approver: "@johnbelamaric"

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

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,16 @@ 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'
149147

150148
### Risks and Mitigations
151149

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

@@ -168,21 +166,18 @@ type ServicePort struct {
168166
...
169167
...
170168

171-
// Used as a hint for implementations to
172-
// configure the protocol used between the
173-
// implementation and the application it exposes.
169+
// The application protocol for this port.
170+
// This is used as a hint for implementations to offer richer behavior for protocols that they understand.
174171
// This field follows standard Kubernetes label syntax.
175172
// Valid values are either:
176173
//
177174
// * Un-prefixed protocol names - reserved for IANA standard service names (as per
178175
// RFC-6335 and https://www.iana.org/assignments/service-names).
179176
//
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
177+
// * Kubernetes-defined prefixed names:
178+
// * 'kubernetes.io/h2c' - HTTP/2 over cleartext as described in https://www.rfc-editor.org/rfc/rfc7540
184179
//
185-
// * Other protocols should use prefixed names such as
180+
// * Other protocols should use implementation-defined prefixed names such as
186181
// mycompany.com/my-custom-protocol.
187182
// +optional
188183
AppProtocol *string
@@ -200,18 +195,21 @@ In order to be included in the collection, a new protocol must:
200195
201196
<<[UNRESOLVED sig-network ]>>
202197
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).
198+
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).
204199
205200
The proposed followup work might address this problem also when we turn the field into a list
206201
207202
<<[/UNRESOLVED]>>
208203
209204
210205
### 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.
206+
- 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.
212207
213208
It is likely to be an API change but design details TBD.
214209
210+
- 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.
211+
We need to look at combination of `appProtocol: kubernetes.io/raw` and the different supported port protocols (TCP, UDP, SCTP).
212+
215213
### Documentation change
216214
217215
[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 +280,7 @@ N/A
282280
283281
## Drawbacks
284282
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.
283+
* 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.
286284
287285
288286
## Alternatives

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
title: KEP Template
1+
title: standard-application-protocols
22
kep-number: 3726
33
authors:
44
- "@LiorLieberman"
55
owning-sig: sig-network
66

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

0 commit comments

Comments
 (0)