Skip to content

Commit b8dfba3

Browse files
committed
Bump GWAPI CRDs to v1.4.1 OSSM 3.3.1 and Istio v1.28.5
1 parent eddf661 commit b8dfba3

14 files changed

Lines changed: 1505 additions & 49 deletions

cmd/ingress-operator/start.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ const (
3535
defaultTrustedCABundle = "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"
3636
defaultGatewayAPIOperatorCatalog = "redhat-operators"
3737
defaultGatewayAPIOperatorChannel = "stable"
38-
defaultGatewayAPIOperatorVersion = "servicemeshoperator3.v3.2.0"
39-
defaultIstioVersion = "v1.27.3"
38+
defaultGatewayAPIOperatorVersion = "servicemeshoperator3.v3.3.1"
39+
defaultIstioVersion = "v1.28.5"
4040
)
4141

4242
type StartOptions struct {

hack/gatewayapi-conformance.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@ go mod vendor
5858
# Also, GRPCRouteListenerHostnameMatching tests are taking longer than 150s to converge to passing.
5959
sed -i -e '/MaxTimeToConsistency:/ s/30/360/' conformance/utils/config/timeout.go
6060

61-
SUPPORTED_FEATURES="Gateway,GRPCRoute,HTTPRoute,ReferenceGrant,GatewayPort8080,HTTPRouteQueryParamMatching,HTTPRouteMethodMatching,HTTPRouteResponseHeaderModification,HTTPRoutePortRedirect,HTTPRouteSchemeRedirect,HTTPRoutePathRedirect,HTTPRouteHostRewrite,HTTPRoutePathRewrite,HTTPRouteRequestMirror,HTTPRouteRequestMultipleMirrors,HTTPRouteBackendProtocolH2C,HTTPRouteBackendProtocolWebSocket,HTTPRouteRequestPercentageMirror,HTTPRouteBackendRequestHeaderModification"
61+
SUPPORTED_FEATURES="BackendTLSPolicy,BackendTLSPolicySANValidation,GRPCRoute,Gateway,GatewayAddressEmpty,GatewayHTTPListenerIsolation,GatewayInfrastructurePropagation,GatewayPort8080,HTTPRoute,HTTPRouteBackendProtocolH2C,HTTPRouteBackendProtocolWebSocket,HTTPRouteBackendRequestHeaderModification,HTTPRouteBackendTimeout,HTTPRouteCORS,HTTPRouteDestinationPortMatching,HTTPRouteHostRewrite,HTTPRouteMethodMatching,HTTPRouteNamedRouteRule,HTTPRouteParentRefPort,HTTPRoutePathRedirect,HTTPRoutePathRewrite,HTTPRoutePortRedirect,HTTPRouteQueryParamMatching,HTTPRouteRequestMirror,HTTPRouteRequestMultipleMirrors,HTTPRouteRequestPercentageMirror,HTTPRouteRequestTimeout,HTTPRouteResponseHeaderModification,HTTPRouteSchemeRedirect,ReferenceGrant"
62+
# skipping BackendTLSPolicyConflictResolution confornance test because upstream istio is not supporting this at the moment: https://github.com/istio/istio/blob/ba49f7398a8542c3612788e9bd0371c079e44165/tests/integration/pilot/gateway_conformance_test.go#L67
63+
SKIPPED_TESTS="HTTPRouteCORSAllowCredentialsBehavior,GatewayStaticAddresses,BackendTLSPolicyConflictResolution"
6264

6365
echo "Start Gateway API Conformance Testing"
64-
go test ./conformance -v -timeout 60m -run TestConformance -args "--supported-features=${SUPPORTED_FEATURES}" "--gateway-class=${GATEWAYCLASS_NAME}"
66+
go test ./conformance -v -timeout 60m -run TestConformance -args "--gateway-class=conformance" "--report-output=openshift.yaml" "--organization=Red Hat" "--project=Openshift Service Mesh" "--version=3.3.1" "--url=https://www.redhat.com/en/technologies/cloud-computing/openshift/container-platform" "--conformance-profiles=GATEWAY-HTTP,GATEWAY-GRPC" "--supported-features=${SUPPORTED_FEATURES}" "--skip-tests=${SKIPPED_TESTS}"
67+
cat conformance/openshift.yaml

manifests/02-deployment-ibm-cloud-managed.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ spec:
5959
- name: GATEWAY_API_OPERATOR_CHANNEL
6060
value: stable
6161
- name: GATEWAY_API_OPERATOR_VERSION
62-
value: servicemeshoperator3.v3.2.0
62+
value: servicemeshoperator3.v3.3.1
6363
- name: ISTIO_VERSION
64-
value: v1.27.3
64+
value: v1.28.5
6565
image: openshift/origin-cluster-ingress-operator:latest
6666
imagePullPolicy: IfNotPresent
6767
name: ingress-operator

manifests/02-deployment.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ spec:
8888
- name: GATEWAY_API_OPERATOR_CHANNEL
8989
value: stable
9090
- name: GATEWAY_API_OPERATOR_VERSION
91-
value: servicemeshoperator3.v3.2.0
91+
value: servicemeshoperator3.v3.3.1
9292
- name: ISTIO_VERSION
93-
value: v1.27.3
93+
value: v1.28.5
9494
resources:
9595
requests:
9696
cpu: 10m

pkg/manifests/assets/gateway-api/gateway.networking.k8s.io_backendtlspolicies.yaml

Lines changed: 1333 additions & 0 deletions
Large diffs are not rendered by default.

pkg/manifests/assets/gateway-api/gateway.networking.k8s.io_gatewayclasses.yaml

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ kind: CustomResourceDefinition
33
metadata:
44
annotations:
55
api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328
6-
gateway.networking.k8s.io/bundle-version: v1.3.0
6+
gateway.networking.k8s.io/bundle-version: v1.4.1
77
gateway.networking.k8s.io/channel: standard
8-
creationTimestamp: null
98
name: gatewayclasses.gateway.networking.k8s.io
109
spec:
1110
group: gateway.networking.k8s.io
@@ -237,6 +236,25 @@ spec:
237236
x-kubernetes-list-map-keys:
238237
- type
239238
x-kubernetes-list-type: map
239+
supportedFeatures:
240+
description: |-
241+
SupportedFeatures is the set of features the GatewayClass support.
242+
It MUST be sorted in ascending alphabetical order by the Name key.
243+
items:
244+
properties:
245+
name:
246+
description: |-
247+
FeatureName is used to describe distinct features that are covered by
248+
conformance tests.
249+
type: string
250+
required:
251+
- name
252+
type: object
253+
maxItems: 64
254+
type: array
255+
x-kubernetes-list-map-keys:
256+
- name
257+
x-kubernetes-list-type: map
240258
type: object
241259
required:
242260
- spec
@@ -462,6 +480,25 @@ spec:
462480
x-kubernetes-list-map-keys:
463481
- type
464482
x-kubernetes-list-type: map
483+
supportedFeatures:
484+
description: |-
485+
SupportedFeatures is the set of features the GatewayClass support.
486+
It MUST be sorted in ascending alphabetical order by the Name key.
487+
items:
488+
properties:
489+
name:
490+
description: |-
491+
FeatureName is used to describe distinct features that are covered by
492+
conformance tests.
493+
type: string
494+
required:
495+
- name
496+
type: object
497+
maxItems: 64
498+
type: array
499+
x-kubernetes-list-map-keys:
500+
- name
501+
x-kubernetes-list-type: map
465502
type: object
466503
required:
467504
- spec
@@ -476,3 +513,4 @@ status:
476513
plural: ""
477514
conditions: null
478515
storedVersions: null
516+

pkg/manifests/assets/gateway-api/gateway.networking.k8s.io_gateways.yaml

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ kind: CustomResourceDefinition
33
metadata:
44
annotations:
55
api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328
6-
gateway.networking.k8s.io/bundle-version: v1.3.0
6+
gateway.networking.k8s.io/bundle-version: v1.4.1
77
gateway.networking.k8s.io/channel: standard
8-
creationTimestamp: null
98
name: gateways.gateway.networking.k8s.io
109
spec:
1110
group: gateway.networking.k8s.io
@@ -65,7 +64,7 @@ spec:
6564
Addresses requested for this Gateway. This is optional and behavior can
6665
depend on the implementation. If a value is set in the spec and the
6766
requested address is invalid or unavailable, the implementation MUST
68-
indicate this in the associated entry in GatewayStatus.Addresses.
67+
indicate this in an associated entry in GatewayStatus.Conditions.
6968
7069
The Addresses field represents a request for the address(es) on the
7170
"outside of the Gateway", that traffic bound for this Gateway will use.
@@ -120,19 +119,22 @@ spec:
120119
type: string
121120
type: object
122121
x-kubernetes-validations:
123-
- message: Hostname value must only contain valid characters (matching
124-
^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
125-
rule: 'self.type == ''Hostname'' ? self.value.matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"""):
122+
- message: Hostname value must be empty or contain only valid characters
123+
(matching ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
124+
rule: 'self.type == ''Hostname'' ? (!has(self.value) || self.value.matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$""")):
126125
true'
127126
maxItems: 16
128127
type: array
128+
x-kubernetes-list-type: atomic
129129
x-kubernetes-validations:
130130
- message: IPAddress values must be unique
131-
rule: 'self.all(a1, a1.type == ''IPAddress'' ? self.exists_one(a2,
132-
a2.type == a1.type && a2.value == a1.value) : true )'
131+
rule: 'self.all(a1, a1.type == ''IPAddress'' && has(a1.value) ?
132+
self.exists_one(a2, a2.type == a1.type && has(a2.value) && a2.value
133+
== a1.value) : true )'
133134
- message: Hostname values must be unique
134-
rule: 'self.all(a1, a1.type == ''Hostname'' ? self.exists_one(a2,
135-
a2.type == a1.type && a2.value == a1.value) : true )'
135+
rule: 'self.all(a1, a1.type == ''Hostname'' && has(a1.value) ?
136+
self.exists_one(a2, a2.type == a1.type && has(a2.value) && a2.value
137+
== a1.value) : true )'
136138
gatewayClassName:
137139
description: |-
138140
GatewayClassName used for this Gateway. This is the name of a
@@ -488,6 +490,7 @@ spec:
488490
type: object
489491
maxItems: 8
490492
type: array
493+
x-kubernetes-list-type: atomic
491494
namespaces:
492495
default:
493496
from: Same
@@ -655,7 +658,7 @@ spec:
655658
the Protocol field is "HTTPS" or "TLS". It is invalid to set this field
656659
if the Protocol field is "HTTP", "TCP", or "UDP".
657660
658-
The association of SNIs to Certificate defined in GatewayTLSConfig is
661+
The association of SNIs to Certificate defined in ListenerTLSConfig is
659662
defined based on the Hostname field for this listener.
660663
661664
The GatewayClass MUST use the longest matching SNI out of all
@@ -742,6 +745,7 @@ spec:
742745
type: object
743746
maxItems: 64
744747
type: array
748+
x-kubernetes-list-type: atomic
745749
mode:
746750
default: Terminate
747751
description: |-
@@ -894,6 +898,7 @@ spec:
894898
true'
895899
maxItems: 16
896900
type: array
901+
x-kubernetes-list-type: atomic
897902
conditions:
898903
default:
899904
- lastTransitionTime: "1970-01-01T00:00:00Z"
@@ -1107,6 +1112,7 @@ spec:
11071112
type: object
11081113
maxItems: 8
11091114
type: array
1115+
x-kubernetes-list-type: atomic
11101116
required:
11111117
- attachedRoutes
11121118
- conditions
@@ -1171,7 +1177,7 @@ spec:
11711177
Addresses requested for this Gateway. This is optional and behavior can
11721178
depend on the implementation. If a value is set in the spec and the
11731179
requested address is invalid or unavailable, the implementation MUST
1174-
indicate this in the associated entry in GatewayStatus.Addresses.
1180+
indicate this in an associated entry in GatewayStatus.Conditions.
11751181
11761182
The Addresses field represents a request for the address(es) on the
11771183
"outside of the Gateway", that traffic bound for this Gateway will use.
@@ -1226,19 +1232,22 @@ spec:
12261232
type: string
12271233
type: object
12281234
x-kubernetes-validations:
1229-
- message: Hostname value must only contain valid characters (matching
1230-
^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
1231-
rule: 'self.type == ''Hostname'' ? self.value.matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"""):
1235+
- message: Hostname value must be empty or contain only valid characters
1236+
(matching ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
1237+
rule: 'self.type == ''Hostname'' ? (!has(self.value) || self.value.matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$""")):
12321238
true'
12331239
maxItems: 16
12341240
type: array
1241+
x-kubernetes-list-type: atomic
12351242
x-kubernetes-validations:
12361243
- message: IPAddress values must be unique
1237-
rule: 'self.all(a1, a1.type == ''IPAddress'' ? self.exists_one(a2,
1238-
a2.type == a1.type && a2.value == a1.value) : true )'
1244+
rule: 'self.all(a1, a1.type == ''IPAddress'' && has(a1.value) ?
1245+
self.exists_one(a2, a2.type == a1.type && has(a2.value) && a2.value
1246+
== a1.value) : true )'
12391247
- message: Hostname values must be unique
1240-
rule: 'self.all(a1, a1.type == ''Hostname'' ? self.exists_one(a2,
1241-
a2.type == a1.type && a2.value == a1.value) : true )'
1248+
rule: 'self.all(a1, a1.type == ''Hostname'' && has(a1.value) ?
1249+
self.exists_one(a2, a2.type == a1.type && has(a2.value) && a2.value
1250+
== a1.value) : true )'
12421251
gatewayClassName:
12431252
description: |-
12441253
GatewayClassName used for this Gateway. This is the name of a
@@ -1594,6 +1603,7 @@ spec:
15941603
type: object
15951604
maxItems: 8
15961605
type: array
1606+
x-kubernetes-list-type: atomic
15971607
namespaces:
15981608
default:
15991609
from: Same
@@ -1761,7 +1771,7 @@ spec:
17611771
the Protocol field is "HTTPS" or "TLS". It is invalid to set this field
17621772
if the Protocol field is "HTTP", "TCP", or "UDP".
17631773
1764-
The association of SNIs to Certificate defined in GatewayTLSConfig is
1774+
The association of SNIs to Certificate defined in ListenerTLSConfig is
17651775
defined based on the Hostname field for this listener.
17661776
17671777
The GatewayClass MUST use the longest matching SNI out of all
@@ -1848,6 +1858,7 @@ spec:
18481858
type: object
18491859
maxItems: 64
18501860
type: array
1861+
x-kubernetes-list-type: atomic
18511862
mode:
18521863
default: Terminate
18531864
description: |-
@@ -2000,6 +2011,7 @@ spec:
20002011
true'
20012012
maxItems: 16
20022013
type: array
2014+
x-kubernetes-list-type: atomic
20032015
conditions:
20042016
default:
20052017
- lastTransitionTime: "1970-01-01T00:00:00Z"
@@ -2213,6 +2225,7 @@ spec:
22132225
type: object
22142226
maxItems: 8
22152227
type: array
2228+
x-kubernetes-list-type: atomic
22162229
required:
22172230
- attachedRoutes
22182231
- conditions
@@ -2238,3 +2251,4 @@ status:
22382251
plural: ""
22392252
conditions: null
22402253
storedVersions: null
2254+

pkg/manifests/assets/gateway-api/gateway.networking.k8s.io_grpcroutes.yaml

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ kind: CustomResourceDefinition
33
metadata:
44
annotations:
55
api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/3328
6-
gateway.networking.k8s.io/bundle-version: v1.3.0
6+
gateway.networking.k8s.io/bundle-version: v1.4.1
77
gateway.networking.k8s.io/channel: standard
8-
creationTimestamp: null
98
name: grpcroutes.gateway.networking.k8s.io
109
spec:
1110
group: gateway.networking.k8s.io
@@ -151,6 +150,7 @@ spec:
151150
type: string
152151
maxItems: 16
153152
type: array
153+
x-kubernetes-list-type: atomic
154154
parentRefs:
155155
description: |-
156156
ParentRefs references the resources (usually Gateways) that a Route wants
@@ -334,6 +334,7 @@ spec:
334334
type: object
335335
maxItems: 32
336336
type: array
337+
x-kubernetes-list-type: atomic
337338
x-kubernetes-validations:
338339
- message: sectionName must be specified when parentRefs includes
339340
2 or more references to the same parent
@@ -937,6 +938,7 @@ spec:
937938
rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')'
938939
maxItems: 16
939940
type: array
941+
x-kubernetes-list-type: atomic
940942
x-kubernetes-validations:
941943
- message: RequestHeaderModifier filter cannot be repeated
942944
rule: self.filter(f, f.type == 'RequestHeaderModifier').size()
@@ -1033,6 +1035,7 @@ spec:
10331035
? has(self.port) : true'
10341036
maxItems: 16
10351037
type: array
1038+
x-kubernetes-list-type: atomic
10361039
filters:
10371040
description: |-
10381041
Filters define the filters that are applied to requests that match
@@ -1583,6 +1586,7 @@ spec:
15831586
rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')'
15841587
maxItems: 16
15851588
type: array
1589+
x-kubernetes-list-type: atomic
15861590
x-kubernetes-validations:
15871591
- message: RequestHeaderModifier filter cannot be repeated
15881592
rule: self.filter(f, f.type == 'RequestHeaderModifier').size()
@@ -1760,9 +1764,20 @@ spec:
17601764
type: object
17611765
maxItems: 64
17621766
type: array
1767+
x-kubernetes-list-type: atomic
1768+
name:
1769+
description: |-
1770+
Name is the name of the route rule. This name MUST be unique within a Route if it is set.
1771+
1772+
Support: Extended
1773+
maxLength: 253
1774+
minLength: 1
1775+
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
1776+
type: string
17631777
type: object
17641778
maxItems: 16
17651779
type: array
1780+
x-kubernetes-list-type: atomic
17661781
x-kubernetes-validations:
17671782
- message: While 16 rules and 64 matches per rule are allowed, the
17681783
total number of matches across all rules in a route must be less
@@ -2030,14 +2045,18 @@ spec:
20302045
- name
20312046
type: object
20322047
required:
2048+
- conditions
20332049
- controllerName
20342050
- parentRef
20352051
type: object
20362052
maxItems: 32
20372053
type: array
2054+
x-kubernetes-list-type: atomic
20382055
required:
20392056
- parents
20402057
type: object
2058+
required:
2059+
- spec
20412060
type: object
20422061
served: true
20432062
storage: true
@@ -2049,3 +2068,4 @@ status:
20492068
plural: ""
20502069
conditions: null
20512070
storedVersions: null
2071+

0 commit comments

Comments
 (0)