On behalf of Kubernetes SIG Network, we are excited to announce the release of v1.2!
This release includes the graduation of 3 features to the standard channel and the introduction of 4 new features to the experimental channel, along with several improvements in many project areas.
GRPCRoute
and ReferenceGrant
v1alpha2
removal
As per a previous deprecation notice, in this version, both Experimental
and Standard channel CRDs will no longer serve the v1alpha2
versions
of GRPCRoute
and ReferenceGrant
.
Before upgrading to Gateway API v1.2, you'll want to confirm that any
implementations of Gateway API have been upgraded to support the v1
API
version of these resources instead of the v1alpha2
API version. Note that
even if you've been using v1
in your YAML manifests, a controller may still be
using v1alpha2
which would cause it to fail during this upgrade.
Once you've confirmed that the implementations you're relying on have upgraded
to v1, it's time to install the v1.2 CRDs. In most cases, this will work without
any additional effort.
If you ran into issues installing these CRDs, it likely means that you havev1alpha2
in the storedVersions
of one or both of these CRDs. This field is
used to indicate which API versions have ever been used to persist one of these
resources. Unfortunately, this field is not automatically pruned. To check these
values, you can run the following commands:
kubectl get crd grpcroutes.gateway.networking.k8s.io -ojsonpath="{.status.storedVersions}"
kubectl get crd referencegrants.gateway.networking.k8s.io -ojsonpath="{.status.storedVersions}"
If either of these return a list that includes "v1alpha2", it means that we need
to manually remove that version from storedVersions
.
Before doing that, it would be good to ensure that all your ReferenceGrants and
GRPCRoutes have been updated to the latest storage version:
crds=("GRPCRoutes" "ReferenceGrants")
for crd in "${crds[@]}"; do
output=$(kubectl get "${crd}" -A -o json)
echo "$output" | jq -c '.items[]' | while IFS= read -r resource; do
namespace=$(echo "$resource" | jq -r '.metadata.namespace')
name=$(echo "$resource" | jq -r '.metadata.name')
kubectl patch "${crd}" "${name}" -n "${namespace}" --type='json' -p='[{"op": "replace", "path": "/metadata/annotations/migration-time", "value": "'"$(date +%Y-%m-%dT%H:%M:%S)"'" }]'
done
done
Now that all your ReferenceGrant and GRPCRoute resources have been updated to
use the latest storage version, you can patch the ReferenceGrant and GRPCRoute
CRDs:
kubectl patch customresourcedefinitions referencegrants.gateway.networking.k8s.io --subresource='status' --type='merge' -p '{"status":{"storedVersions":["v1beta1"]}}'
kubectl patch customresourcedefinitions grpcroutes.gateway.networking.k8s.io --subresource='status' --type='merge' -p '{"status":{"storedVersions":["v1"]}}'
With these steps complete, upgrading to the latest GRPCRoute and ReferenceGrant
should work well now.
The Experimental supportedFeatures
field in GatewayClass status
has changed
from being a list of strings to being a list of objects/structs with a name
field.
This is to allow adding in extra information to each entry at a later date.
Relevant PRs:
There was one small change since RC2 - the Gateway Infrastructure conformance
test has been marked as provisional as we're not sure that the same-namespace
requirement imposed by this test is necessary. #3373
This was our first release using a new release
cycle that is
meant to make Gateway API releases more frequent and predictable.
There are now four phases:
For all the detail about this, please see the Release Cycle
docs.
Relevant PRs:
Standard Channel Additions and ChangesThe Standard channel is Gateway API's set of maximally-stable install files.
Only features with the best testing and support are added to the standard
channel. This channel should be considered GA or stable, and future changes will
be fully backwards compatible.
GEP-1867 added aninfrastructure
stanza to Gateway objects that is intended to carry
infrastructure configuration specific to that Gateway object.
GEP-1762 adds a section forlabels
and annotations
to this stanza that specifies labels and annotations
to be annotated to all resources created to fulfill that Gateway request.
This feature can be used to affect the labels and annotations created on
LoadBalancer Services by in-cluster implementations to fulfill the Gateway
contract or by Cloud Load Balancing resources created by Cloud Providers.
This feature has graduated to Standard and is now considered GA or Stable.
This feature's name for conformance tests and GatewayClass status reporting isGatewayInfrastructurePropagation
.
This feature's status is Extended, meaning that it is optional for
implementations to support. If you're using Experimental Channel, you can refer
to the supportedFeatures
field in the status
of any GatewayClass.
Relevant PRs:
The HTTPRoute Timeouts
field on Route Rules has graduated to Standard and is
now considered GA or Stable.
This field allows you to configure overall Request Timeouts as well as Backend
Request Timeouts. For more information, refer to GEP
1742.
The relevant feature names this for conformance tests and GatewayClass status
reporting are:
HTTPRouteRequestTimeout
for httproute.spec.rules[].timeouts.request
HTTPRouteBackendTimeout
for httproute.spec.rules[].timeouts.backendRequest
This feature's status is Extended, meaning that it is optional for
implementations to support. If you're using Experimental Channel, you can refer
to the supportedFeatures
field in the status
of any GatewayClass.
Relevant PRs:
The previous coordinated work across both Gateway API and upstream Kubernetes
which defined 3 new values for the AppProtocol field on Service Ports has
graduated to Standard and is now considered GA or Stable.
The values are:
kubernetes.io/h2c
- HTTP/2 over cleartext as described inkubernetes.io/ws
- WebSocket over cleartext as described inkubernetes.io/wss
- WebSocket over TLS as described inThese can now be used with Gateway API to describe the protocol to use for
connections to Kubernetes Services. For more information, refer to GEP
1911.
The relevant feature names this for conformance tests and GatewayClass status
reporting are:
HTTPRouteBackendProtocolH2C
for H2C support, whenservice.spec.ports[].appProtocol
is kubernetes.io/h2c
.HTTPRouteBackendProtocolWebSocket
for Websocket support, whenservice.spec.ports[].appProtocol
is kubernetes.io/ws
orkubernetes.io/wss
.This feature's status is Extended, meaning that it is optional for
implementations to support. If you're using Experimental Channel, you can refer
to the supportedFeatures
field in the status
of any GatewayClass.
Relevant PRs:
The Experimental Channel is Gateway API's channel for testing out changes and
gaining confidence with them before allowing them to go to Standard.
This channel may include features that are changed or removed later!
HTTPRoute Retry supportGEP-1731 described how to add
configuration of retries on HTTPRoute objects, and in this release, this change
has moved to Experimental.
Please see the GEP reference document or the API reference for the details.
This feature has graduated to Experimental amd should now be used for testing
and verification purposes only. Experimental features may be changed or removed
in a future version.
This feature does not currently have a feature name defined.
This feature's status is Extended, meaning that it is optional for
implementations to support.
As there is no feature name or conformance tests available for this feature as
yet, please see your implementation's documentation to see if it is supported.
Relevant PRs:
retry
stanza within HTTPRouteRule to configure retrying unsuccessfulThe existing Request Mirroring feature has been enhanced by allowing users to
specify a percentage of requests they'd like mirrored. These changes are
described in GEP-3171.
Please see the GEP reference document or the API reference for the details.
This feature has graduated to Experimental amd should now be used for testing
and verification purposes only. Experimental features may be changed or removed
in a future version.
This feature does not currently have a feature name defined.
This feature's status is Extended, meaning that it is optional for
implementations to support.
As there is no feature name or conformance tests available for this feature as
yet, please see your implementation's documentation to see if it is supported.
Relevant PRs:
Some changes have been made to Gateway API's support for configuring TLS
connections between the Gateway and backends.
Gateway has a new Experimental field that contains configuration for the client
certificate Gateways should use when connecting to Backends.
The existing BackendTLSPolicy object has had additions as well:
See GEP-3155 for all the
details.
This feature has graduated to Experimental amd should now be used for testing
and verification purposes only. Experimental features may be changed or removed
in a future version.
This feature does not currently have a feature name defined.
This feature's status is Extended, meaning that it is optional for
implementations to support.
As there is no feature name or conformance tests available for this feature as
yet, please see your implementation's documentation to see if it is supported.
Relevant PRs:
All Route Rule types (GRPCRouteRule, HTTPRouteRule, TCPRouteRule, TLSRouteRule
and UDPRouteRule) have had a new, optional name
field to support referencing
individual rules by name.
This name, if present, may be used in status
and logging to indicate which
route rule is being referenced in messages in a more readable way than an array
index.
This feature has graduated to Experimental amd should now be used for testing
and verification purposes only. Experimental features may be changed or removed
in a future version.
This feature does not currently have a feature name defined.
This feature's status is Extended, meaning that it is optional for
implementations to support.
As there is no feature name or conformance tests available for this feature as
yet, please see your implementation's documentation to see if it is supported.
Relevant PRs:
In this release timeframe, Gateway API has been working on building our
contributor pool and promoting more contributors up our contributor ladder.
Congratulations to @mlavacca on being promoted into the core Gateway API
maintainer team!
Thanks to @keithmattix for all your work as one of the GAMMA leads, and
congratulations to @mikemorris on being promoted into the GAMMA lead team.
We've added two new GEP Reviewers: @kflynn and @arkodg
Also promoted in the conformance team:
Last but most certainly not least, @guicassolato has become a reviewer forgwctl
.
Congratulations to everyone on the promotions, and thanks for your continued
contributions to the Gateway API community!
Relevant PRs:
gwctl
In this release, gwctl is moving to a separate repo:
kubernetes-sigs/gwctl. This will
enable a more flexible and independent release process. Significant new updates
are coming to gwctl, follow the new repo for the latest updates on that project.
Although these changes won't be part of Gateway API v1.2 and will instead be
part of the separate gwctl release, we're noting them as they were merged while
the project was part of this repo:
--for
flag) by @gauravkghildiyal ingwctl describe httproute <NAME>
now includes more details byPrint
inPrintTable
by @deszhou inRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4