Skip to content

Commit

Permalink
Renaming stable channel to standard channel
Browse files Browse the repository at this point in the history
  • Loading branch information
robscott committed Jun 7, 2022
1 parent e743aa8 commit eab8b94
Show file tree
Hide file tree
Showing 17 changed files with 198 additions and 53 deletions.
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ apis/generated/** linguist-generated=true
apis/**/generated.pb.go linguist-generated=true
apis/**/generated.proto linguist-generated=true
config/crd/experimental/** linguist-generated=true
config/crd/stable/** linguist-generated=true
config/crd/standard/** linguist-generated=true
pkg/client/** linguist-generated=true

14 changes: 7 additions & 7 deletions config/crd/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
resources:
- stable/gateway.networking.k8s.io_gatewayclasses.yaml
- stable/gateway.networking.k8s.io_gateways.yaml
- stable/gateway.networking.k8s.io_httproutes.yaml
- stable/gateway.networking.k8s.io_referencegrants.yaml
- stable/gateway.networking.k8s.io_tcproutes.yaml
- stable/gateway.networking.k8s.io_tlsroutes.yaml
- stable/gateway.networking.k8s.io_udproutes.yaml
- standard/gateway.networking.k8s.io_gatewayclasses.yaml
- standard/gateway.networking.k8s.io_gateways.yaml
- standard/gateway.networking.k8s.io_httproutes.yaml
- standard/gateway.networking.k8s.io_referencegrants.yaml
- standard/gateway.networking.k8s.io_tcproutes.yaml
- standard/gateway.networking.k8s.io_tlsroutes.yaml
- standard/gateway.networking.k8s.io_udproutes.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

145 changes: 145 additions & 0 deletions config/crd/standard/gateway.networking.k8s.io_referencepolicies.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 10 additions & 10 deletions hack/build-install-yaml.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ cat << EOF >> release/experimental-install.yaml
#
EOF

cat hack/boilerplate/boilerplate.sh.txt > release/stable-install.yaml
sed -i "s/YEAR/$thisyear/g" release/stable-install.yaml
cat << EOF >> release/stable-install.yaml
cat hack/boilerplate/boilerplate.sh.txt > release/standard-install.yaml
sed -i "s/YEAR/$thisyear/g" release/standard-install.yaml
cat << EOF >> release/standard-install.yaml
#
# Gateway API Stable channel install
# Gateway API Standard channel install
#
EOF

Expand All @@ -48,13 +48,13 @@ do
cat $file >> release/experimental-install.yaml
done

for file in `ls config/webhook/*.yaml config/crd/stable/*.yaml`
for file in `ls config/webhook/*.yaml config/crd/standard/*.yaml`
do
echo "---" >> release/stable-install.yaml
echo "#" >> release/stable-install.yaml
echo "# $file" >> release/stable-install.yaml
echo "#" >> release/stable-install.yaml
cat $file >> release/stable-install.yaml
echo "---" >> release/standard-install.yaml
echo "#" >> release/standard-install.yaml
echo "# $file" >> release/standard-install.yaml
echo "#" >> release/standard-install.yaml
cat $file >> release/standard-install.yaml
done

echo "Generated:" release/*-install.yaml
2 changes: 1 addition & 1 deletion hack/verify-examples-kind.sh
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ for check in {1..10}; do
echo "Webhook not ready yet, will check again in 5 seconds"
done

for CHANNEL in experimental stable; do
for CHANNEL in experimental standard; do
##### Test v1alpha2 CRD apply and that invalid examples are invalid.
# Install CRDs
kubectl apply -f "config/crd/${CHANNEL}" || res=$?
Expand Down
4 changes: 2 additions & 2 deletions pkg/generator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ func main() {
log.Fatalf("no objects in the roots")
}

channels := []string{"stable", "experimental"}
channels := []string{"standard", "experimental"}
for _, channel := range channels {
for groupKind := range kubeKinds {
log.Printf("generating %s CRD for %v\n", channel, groupKind)
Expand Down Expand Up @@ -126,7 +126,7 @@ func main() {
func channelTweaks(channel string, props map[string]apiext.JSONSchemaProps) map[string]apiext.JSONSchemaProps {
for name := range props {
jsonProps, _ := props[name]
if channel == "stable" && strings.Contains(jsonProps.Description, "<gateway:experimental>") {
if channel == "standard" && strings.Contains(jsonProps.Description, "<gateway:experimental>") {
delete(props, name)
continue
}
Expand Down
30 changes: 15 additions & 15 deletions site-src/concepts/versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,21 @@ documentation](https://kubernetes.io/docs/reference/using-api/#api-versioning).
![Lifecycle of New Gateway API Resources](/images/lifecycle-new-resources.png)
<!-- Source: https://docs.google.com/presentation/d/1sfZTV-vlisDUIie_iK_B2HqKia_querT6m6T2_vbAk0/edit -->

### Release Channels (e.g. Experimental, Stable)
Gateway API provides 2 release channels: an Experimental one and a Stable one.
### Release Channels (e.g. Experimental, Standard)
Gateway API provides 2 release channels: an Experimental one and a Standard one.

The Stable release channel includes:
The Standard release channel includes:

* Resources that have graduated to beta
* All fields that have graduated to stable and are no longer considered
* All fields that have graduated to standard and are no longer considered
experimental

The Experimental release channel includes everything in the Stable release
The Experimental release channel includes everything in the Standard release
channel, plus:

* Alpha API resources
* New fields that are considered experimental and have not yet graduated to the
stable channel
standard channel

![Release Channel Overlap](/images/release-channel-overlap.png)
<!-- Source: https://docs.google.com/presentation/d/1sfZTV-vlisDUIie_iK_B2HqKia_querT6m6T2_vbAk0/edit -->
Expand All @@ -49,7 +49,7 @@ Unfortunately, CRDs do not have a similar concept yet.
Instead of trying to recreate feature gates in this project, we've introduced
release channels. Starting in v0.5.0, all new fields and features will start in
the Experimental release channel. From that point, these may graduate to the
Stable release channel or be dropped from the API entirely. See
Standard release channel or be dropped from the API entirely. See
[GEP-922](/geps/gep-922) for a more detailed discussion of this approach to new
fields and features.

Expand All @@ -62,7 +62,7 @@ and channel:

```
gateway.networking.k8s.io/bundle-version: v0.4.0
gateway.networking.k8s.io/channel: stable|experimental
gateway.networking.k8s.io/channel: standard|experimental
```

## What can Change
Expand All @@ -81,7 +81,7 @@ change across API versions.
* Making required fields optional
* Removal of experimental fields
* Removal of experimental resources
* Graduation of fields or resources from experimental to stable track
* Graduation of fields or resources from experimental to standard track
* Introduction of a new **API version**, which may also include:
* Renamed fields
* Anything else that is valid in a new Kubernetes API version
Expand Down Expand Up @@ -118,18 +118,18 @@ A resource to graduate from beta to GA must meet the following criteria:

### Fields

#### Experimental -> Stable
#### Experimental -> Standard
As described above, field level stability is layered on top of beta and GA
resources (no fields in alpha resources can be considered stable). The
requirements for a field to graduate from experimental to stable depend on the
resources (no fields in alpha resources can be considered standard). The
requirements for a field to graduate from experimental to standard depend on the
API version of the resource it is a part of. For a field to be considered
stable, it needs to meet the same criteria of the resource it is contained in.
standard, it needs to meet the same criteria of the resource it is contained in.

If a resource has graduated to beta, an experimental field must meet all of the
beta graduation criteria before graduating to stable. Similarly, if a resource
beta graduation criteria before graduating to standard. Similarly, if a resource
has graduated to GA, a field must meet all of the beta and GA graduation
criteria. There is one slight variation here, instead of 6 months of soak time
as a beta API, a field graduating to stable requires 6 months of soak time as an
as a beta API, a field graduating to standard requires 6 months of soak time as an
experimental field.

## Out of Scope
Expand Down
2 changes: 1 addition & 1 deletion site-src/geps/gep-820.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ not well understood.
## Introduction

As the API moves towards `v1alpha2`, the maintainers intend to make the API
stable and forward compatible for the foreseeable future. To that end,
standard and forward compatible for the foreseeable future. To that end,
maintainers intend to minimize (eliminate if possible) breaking changes post
`v1alpha2`. This GEP is part of that initiative.

Expand Down
Loading

0 comments on commit eab8b94

Please sign in to comment.