Skip to content

Commit fbba0d2

Browse files
committed
Bump to OSSM 3.0 for Gateway API support
With OSSM 3, the Maistra Istio Operator is replaced with new operator based on the upstream Sail Operator, and the ServiceMeshControlPlane CRD is replaced by the Istio CRD. Vendor the sail-operator API: go mod edit -replace github.com/imdario/mergo=github.com/imdario/[email protected] go get github.com/istio-ecosystem/sail-operator/api/v1 go mod tidy go mod vendor Note that vendoring sail-operator requires the mergo override. OSSM 3.0 is based on Istio 1.24, which supports Gateway API v1.2.1. Copy in the updated Gateway API CRDs: curl --silent --output-dir pkg/manifests/assets/gateway-api/ --remote-name 'https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/refs/heads/main/config/crd/standard/gateway.networking.k8s.io_{gatewayclasses,gateways,grpcroutes,httproutes,referencegrants}.yaml' Update the conformance tests to reflect the features that Istio 1.24 supports. Update the gatewayclass controller to create a subscription for the OSSM 3 Operator (which is in a separate channel from the OSSM 2 operator) and to create an Istio CR instead of a ServiceMeshControlPlane CR. Update client initialization, RBAC, and tests that used the Maistra APIs from OSSM 2 to use the sail-operator API for OSSM 3. * go.mod: Vendor the sail-operator.io API, and gump sigs.k8s.io/gateway-api. * go.sum: * vendor/*: Regenerate. * hack/gatewayapi-conformance.sh (SUPPORTED_FEATURES): Update for Istio 1.24. * manifests/00-cluster-role.yaml: Allow access to the istios.sailoperator.io resource instead of the servicemeshcontrolplanes.maistra.io resource. * pkg/manifests/assets/gateway-api/*: Update to Gateway API v1.2.1. * pkg/manifests/manifests.go (GRPCRouteCRDAsset, GRPCRouteCRD): * pkg/manifests/manifests_test.go (TestManifests): Add GRPCRoute, which is now stable in Gateway API v1.2.1 and supported in Istio 1.24. * pkg/operator/client/client.go (init): Register the Sail API types instead of the Maistra API types. * pkg/operator/controller/gateway-service-dns/controller.go (Reconcile): Use the service's labels instead of the service's label selector. OSSM 3.0 seems to set a label whereas OSSM 2.y set the label selector. * pkg/operator/controller/gateway-service-dns/controller_test.go (Test_Reconcile): Update expectations for service labels and selectors. * pkg/operator/controller/gatewayapi/controller_test.go (Test_Reconcile): Expect grpcroutes.gateway.networking.k8s.io to be created. * pkg/operator/controller/gatewayapi/crds.go (managedCRDs): Add GRPCRouteCRD. * pkg/operator/controller/gatewayclass/controller.go (NewUnmanaged): Use ServiceMeshOperatorSubscriptionName instead of ServiceMeshSubscriptionName. (reconciler): Rename startSMCPWatch to startIstioWatch. (Reconcile): Use ensureIstio instead of ensureServiceMeshControlPlane. Use IstioName instead of ServiceMeshControlPlaneName. Watch istios instead of servicemeshcontrolplanes. * pkg/operator/controller/gatewayclass/servicemeshcontrolplane.go: Rename... * pkg/operator/controller/gatewayclass/istio.go: ...to this. (ensureServiceMeshControlPlane): Rename... (ensureIstio): To this. (desiredServiceMeshControlPlane): Rename... (desiredIstio): ...to this. (currentServiceMeshControlPlane): Rename... (currentIstio): ...to this. (createServiceMeshControlPlane): Rename... (createIstio): ...to this. (smcpCmpOpts): Rename... (istioCmpOpts): ...to this. Remove unneeded AllowUnexported rule. (updateServiceMeshControlPlane): Rename... (updateIstio): ...to this. (serviceMeshControlPlaneChanged): Rename... (istioChanged): ...to this. * pkg/operator/controller/gatewayclass/subscription.go (desiredSubscription): Update to use ServiceMeshOperatorSubscriptionName intead of ServiceMeshSubscriptionName. Change the subscription from "servicemeshoperator", for OSSM 2, to "servicemeshoperator3", for OSSM 3. For now, install a recent nightly build. * pkg/operator/controller/names.go (ServiceMeshControlPlaneName): Rename... (IstioName): ...to this. Remove the namespace as the Istio CR is cluster-scoped. (ServiceMeshSubscriptionName): Rename... (ServiceMeshOperatorSubscriptionName): ...to this. Update the name to reflect that it is a subscription for "servicemeshoperator3" (OSSM 3). * test/e2e/gateway_api_test.go (expectedSubscriptionName): Update const to reference the OSSM 3 subscription. (testGatewayAPIIstioInstallation): Update to check the Istio CR instead of the ServiceMeshControlPlane CR. Clean up some log messages and comments. * test/e2e/util_gatewayapi_test.go (openshiftIstioOperatorDeploymentName): Update to reference the OSSM 3 operator deployment. (openshiftSMCPName): Rename const... (openshiftIstioName): ...to this. (updateIngressOperatorRole): Delete unused function. (assertSMCP): Rename... (assertIstio): ...to this. Update to use the Istio CR. Clean up some log messages. (deleteExistingSMCP): Rename... (deleteExistingIstio): ...to this. Update to use the Istio CR. Delete an unnecessary nil check, and clean up some log messages and comments.
1 parent 69cadab commit fbba0d2

File tree

589 files changed

+64270
-35121
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

589 files changed

+64270
-35121
lines changed

go.mod

Lines changed: 41 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -15,42 +15,42 @@ require (
1515
github.com/aws/aws-sdk-go v1.38.49
1616
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
1717
github.com/florianl/go-nfqueue v1.3.2
18-
github.com/fsnotify/fsnotify v1.7.0
18+
github.com/fsnotify/fsnotify v1.8.0
1919
github.com/go-logr/logr v1.4.2
2020
github.com/go-logr/zapr v1.3.0
2121
github.com/google/go-cmp v0.6.0
2222
github.com/google/gopacket v1.1.19
23+
github.com/istio-ecosystem/sail-operator v0.0.0-20250304072258-8ee7b99803d4
2324
github.com/jongio/azidext/go/azidext v0.4.0
24-
github.com/maistra/istio-operator v0.0.0-20240712143246-fd7dfc8af831
25-
github.com/openshift/api v3.9.1-0.20190924102528-32369d4db2ad+incompatible
25+
github.com/openshift/api v0.0.0-20241218103150-27316471eb72
2626
github.com/openshift/client-go v0.0.0-20240405120947-c67c8325cdd8
2727
github.com/openshift/library-go v0.0.0-20240419113445-f1541d628746
2828
github.com/operator-framework/api v0.15.0
2929
github.com/pkg/errors v0.9.1
30-
github.com/prometheus/client_golang v1.19.1
31-
github.com/prometheus/common v0.55.0
30+
github.com/prometheus/client_golang v1.20.5
31+
github.com/prometheus/common v0.62.0
3232
github.com/spf13/cobra v1.8.1
33-
github.com/stretchr/testify v1.9.0
33+
github.com/stretchr/testify v1.10.0
3434
github.com/summerwind/h2spec v0.0.0-20200804131034-70ac22940108
3535
github.com/tcnksm/go-httpstat v0.2.1-0.20191008022543-e866bb274419
3636
go.uber.org/zap v1.27.0
37-
golang.org/x/time v0.7.0
37+
golang.org/x/time v0.9.0
3838
google.golang.org/api v0.126.0
39-
google.golang.org/grpc v1.65.0
39+
google.golang.org/grpc v1.70.0
4040
gopkg.in/fsnotify.v1 v1.4.7
4141
gopkg.in/yaml.v2 v2.4.0
4242
k8s.io/api v0.32.1
4343
k8s.io/apiextensions-apiserver v0.32.1
4444
k8s.io/apimachinery v0.32.1
4545
k8s.io/apiserver v0.32.1
46-
k8s.io/client-go v12.0.0+incompatible
47-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
46+
k8s.io/client-go v0.32.1
47+
k8s.io/utils v0.0.0-20241210054802-24370beab758
4848
sigs.k8s.io/controller-runtime v0.20.1
49-
sigs.k8s.io/gateway-api v1.0.0
49+
sigs.k8s.io/gateway-api v1.2.1
5050
)
5151

5252
require (
53-
cloud.google.com/go/compute/metadata v0.3.0 // indirect
53+
cloud.google.com/go/compute/metadata v0.5.2 // indirect
5454
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect
5555
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
5656
github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect
@@ -63,47 +63,47 @@ require (
6363
github.com/beorn7/perks v1.0.1 // indirect
6464
github.com/blang/semver/v4 v4.0.0 // indirect
6565
github.com/cespare/xxhash/v2 v2.3.0 // indirect
66-
github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b // indirect
67-
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
68-
github.com/envoyproxy/protoc-gen-validate v1.0.4 // indirect
69-
github.com/evanphx/json-patch v5.7.0+incompatible // indirect
66+
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect
67+
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
68+
github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect
69+
github.com/evanphx/json-patch v5.9.0+incompatible // indirect
7070
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
71-
github.com/fatih/color v1.16.0 // indirect
71+
github.com/fatih/color v1.18.0 // indirect
7272
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
7373
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
7474
github.com/go-openapi/errors v0.21.0 // indirect
7575
github.com/go-openapi/jsonpointer v0.21.0 // indirect
76-
github.com/go-openapi/jsonreference v0.20.2 // indirect
76+
github.com/go-openapi/jsonreference v0.21.0 // indirect
7777
github.com/go-openapi/strfmt v0.22.1 // indirect
7878
github.com/go-openapi/swag v0.23.0 // indirect
7979
github.com/go-playground/locales v0.14.1 // indirect
8080
github.com/go-playground/universal-translator v0.18.1 // indirect
8181
github.com/go-playground/validator/v10 v10.19.0 // indirect
82-
github.com/goccy/go-yaml v1.8.8 // indirect
8382
github.com/gogo/protobuf v1.3.2 // indirect
8483
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
8584
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
8685
github.com/golang/protobuf v1.5.4 // indirect
8786
github.com/google/btree v1.1.3 // indirect
88-
github.com/google/gnostic-models v0.6.8 // indirect
87+
github.com/google/gnostic-models v0.6.9 // indirect
8988
github.com/google/gofuzz v1.2.0 // indirect
9089
github.com/google/s2a-go v0.1.4 // indirect
9190
github.com/google/uuid v1.6.0 // indirect
9291
github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
9392
github.com/googleapis/gax-go/v2 v2.10.0 // indirect
94-
github.com/gorilla/websocket v1.5.0 // indirect
93+
github.com/gorilla/websocket v1.5.3 // indirect
9594
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
9695
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
97-
github.com/imdario/mergo v0.3.16 // indirect
96+
github.com/imdario/mergo v1.0.0 // indirect
9897
github.com/inconshreveable/mousetrap v1.1.0 // indirect
9998
github.com/jmespath/go-jmespath v0.4.0 // indirect
10099
github.com/josharian/intern v1.0.0 // indirect
101100
github.com/josharian/native v1.0.0 // indirect
102101
github.com/json-iterator/go v1.1.12 // indirect
102+
github.com/klauspost/compress v1.17.11 // indirect
103103
github.com/kylelemons/godebug v1.1.0 // indirect
104104
github.com/leodido/go-urn v1.4.0 // indirect
105-
github.com/mailru/easyjson v0.7.7 // indirect
106-
github.com/mattn/go-colorable v0.1.13 // indirect
105+
github.com/mailru/easyjson v0.9.0 // indirect
106+
github.com/mattn/go-colorable v0.1.14 // indirect
107107
github.com/mattn/go-isatty v0.0.20 // indirect
108108
github.com/mdlayher/netlink v1.6.0 // indirect
109109
github.com/mdlayher/socket v0.1.1 // indirect
@@ -114,7 +114,6 @@ require (
114114
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
115115
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
116116
github.com/oklog/ulid v1.3.1 // indirect
117-
github.com/operator-framework/operator-sdk v0.18.0 // indirect
118117
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
119118
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
120119
github.com/prometheus/client_model v0.6.1 // indirect
@@ -125,38 +124,33 @@ require (
125124
github.com/x448/float16 v0.8.4 // indirect
126125
go.mongodb.org/mongo-driver v1.14.0 // indirect
127126
go.opencensus.io v0.24.0 // indirect
128-
go.opentelemetry.io/otel v1.28.0 // indirect
129-
go.opentelemetry.io/otel/trace v1.28.0 // indirect
127+
go.opentelemetry.io/otel v1.34.0 // indirect
128+
go.opentelemetry.io/otel/trace v1.34.0 // indirect
130129
go.uber.org/multierr v1.11.0 // indirect
131-
golang.org/x/crypto v0.28.0 // indirect
132-
golang.org/x/net v0.30.0 // indirect
133-
golang.org/x/oauth2 v0.23.0 // indirect
134-
golang.org/x/sync v0.8.0 // indirect
135-
golang.org/x/sys v0.26.0 // indirect
136-
golang.org/x/term v0.25.0 // indirect
137-
golang.org/x/text v0.19.0 // indirect
138-
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
130+
golang.org/x/crypto v0.32.0 // indirect
131+
golang.org/x/net v0.34.0 // indirect
132+
golang.org/x/oauth2 v0.25.0 // indirect
133+
golang.org/x/sync v0.10.0 // indirect
134+
golang.org/x/sys v0.29.0 // indirect
135+
golang.org/x/term v0.28.0 // indirect
136+
golang.org/x/text v0.21.0 // indirect
139137
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
140138
google.golang.org/appengine v1.6.8 // indirect
141-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 // indirect
142-
google.golang.org/protobuf v1.35.1 // indirect
139+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250122153221-138b5a5a4fd4 // indirect
140+
google.golang.org/protobuf v1.36.4 // indirect
143141
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
144142
gopkg.in/inf.v0 v0.9.1 // indirect
145143
gopkg.in/yaml.v3 v3.0.1 // indirect
146144
k8s.io/component-base v0.32.1 // indirect
147145
k8s.io/klog/v2 v2.130.1 // indirect
148146
k8s.io/kube-aggregator v0.29.0 // indirect
149-
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
150-
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
147+
k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 // indirect
148+
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
151149
sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 // indirect
152-
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
150+
sigs.k8s.io/structured-merge-diff/v4 v4.5.0 // indirect
153151
sigs.k8s.io/yaml v1.4.0 // indirect
154152
)
155153

156-
// These replace stanzas are necessary to import maistra/istio-operator and
157-
// github.com/operator-framework/operator-sdk.
158-
replace (
159-
bitbucket.org/ww/goautoneg => github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d
160-
github.com/openshift/api => github.com/openshift/api v0.0.0-20241218103150-27316471eb72
161-
k8s.io/client-go => k8s.io/client-go v0.32.1
162-
)
154+
// This replace stanza is necessary to import
155+
// github.com/istio-ecosystem/sail-operator/api/v1.
156+
replace github.com/imdario/mergo => github.com/imdario/mergo v0.3.5

0 commit comments

Comments
 (0)