Skip to content

Commit 241fb97

Browse files
Merge pull request #18713 from hakman/gs-assets-via-vfs
vfs: Download cloud storage assets via VFS
2 parents f936f50 + 243c541 commit 241fb97

940 files changed

Lines changed: 18 additions & 494777 deletions

File tree

Some content is hidden

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

Makefile

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,11 @@ KOPS_CHANNELS_TAG=$(IMAGE_TAG)
8181

8282
CGO_ENABLED=0
8383
export CGO_ENABLED
84-
# disable_grpc_modules removes the unused GCS gRPC transport and its envoy/xds proto chain from
85-
# cloud.google.com/go/storage. It is safe because kOps only uses the GCS HTTP JSON API.
86-
# It saves ~12MB.
8784
# grpcnotrace removes golang.org/x/net/trace from google.golang.org/grpc. It is safe because kOps
8885
# does not use gRPC's x/net/trace integration. In binaries with no other text/template usage, it
8986
# restores linker dead-code elimination disabled by x/net/trace's use of text/template and saves
9087
# ~21MB in the dns-controller and channels images.
91-
BUILDTAGS=disable_grpc_modules,grpcnotrace
88+
BUILDTAGS=grpcnotrace
9289
BUILDFLAGS=-trimpath -buildvcs=false -tags=${BUILDTAGS}
9390

9491

go.mod

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ godebug default=go1.26
77

88
require (
99
cloud.google.com/go/compute/metadata v0.9.0
10-
cloud.google.com/go/storage v1.62.3
1110
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0
1211
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1
1312
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/authorization/armauthorization/v3 v3.0.0-beta.2
@@ -98,19 +97,12 @@ require (
9897
)
9998

10099
require (
101-
cel.dev/expr v0.25.1 // indirect
102-
cloud.google.com/go v0.123.0 // indirect
103100
cloud.google.com/go/auth v0.19.0 // indirect
104101
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
105-
cloud.google.com/go/iam v1.7.0 // indirect
106-
cloud.google.com/go/monitoring v1.24.3 // indirect
107102
dario.cat/mergo v1.0.1 // indirect
108103
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect
109104
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
110105
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 // indirect
111-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
112-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect
113-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect
114106
github.com/MakeNowJust/heredoc v1.0.0 // indirect
115107
github.com/Masterminds/goutils v1.1.1 // indirect
116108
github.com/Masterminds/semver/v3 v3.4.0 // indirect
@@ -139,16 +131,13 @@ require (
139131
github.com/charmbracelet/x/ansi v0.10.1 // indirect
140132
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
141133
github.com/charmbracelet/x/term v0.2.1 // indirect
142-
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect
143134
github.com/containerd/stargz-snapshotter/estargz v0.18.1 // indirect
144135
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
145136
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
146137
github.com/docker/cli v29.2.1+incompatible // indirect
147138
github.com/docker/distribution v2.8.3+incompatible // indirect
148139
github.com/docker/docker-credential-helpers v0.9.3 // indirect
149140
github.com/emicklei/go-restful/v3 v3.13.0 // indirect
150-
github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect
151-
github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
152141
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
153142
github.com/evanphx/json-patch v5.9.11+incompatible // indirect
154143
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
@@ -211,7 +200,6 @@ require (
211200
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
212201
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
213202
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
214-
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
215203
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
216204
github.com/prometheus/client_model v0.6.2 // indirect
217205
github.com/prometheus/common v0.67.5 // indirect
@@ -225,17 +213,13 @@ require (
225213
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
226214
github.com/spf13/afero v1.15.0 // indirect
227215
github.com/spf13/cast v1.10.0 // indirect
228-
github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
229216
github.com/subosito/gotenv v1.6.0 // indirect
230217
github.com/vbatts/tar-split v0.12.2 // indirect
231218
github.com/x448/float16 v0.8.4 // indirect
232219
github.com/xlab/treeprint v1.2.0 // indirect
233220
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
234221
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
235-
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect
236-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect
237222
go.opentelemetry.io/otel/metric v1.43.0 // indirect
238-
go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
239223
go.yaml.in/yaml/v2 v2.4.3 // indirect
240224
go.yaml.in/yaml/v3 v3.0.4 // indirect
241225
golang.org/x/mod v0.40.0 // indirect
@@ -244,7 +228,6 @@ require (
244228
golang.org/x/time v0.15.0 // indirect
245229
golang.org/x/tools v0.49.0 // indirect
246230
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
247-
google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect
248231
google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect
249232
google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect
250233
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect

go.sum

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,9 @@
1-
cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
2-
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
3-
cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=
4-
cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=
51
cloud.google.com/go/auth v0.19.0 h1:DGYwtbcsGsT1ywuxsIoWi1u/vlks0moIblQHgSDgQkQ=
62
cloud.google.com/go/auth v0.19.0/go.mod h1:2Aph7BT2KnaSFOM0JDPyiYgNh6PL9vGMiP8CUIXZ+IY=
73
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
84
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
95
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
106
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
11-
cloud.google.com/go/iam v1.7.0 h1:JD3zh0C6LHl16aCn5Akff0+GELdp1+4hmh6ndoFLl8U=
12-
cloud.google.com/go/iam v1.7.0/go.mod h1:tetWZW1PD/m6vcuY2Zj/aU0eCHNPuxedbnbRTyKXvdY=
13-
cloud.google.com/go/logging v1.13.2 h1:qqlHCBvieJT9Cdq4QqYx1KPadCQ2noD4FK02eNqHAjA=
14-
cloud.google.com/go/logging v1.13.2/go.mod h1:zaybliM3yun1J8mU2dVQ1/qDzjbOqEijZCn6hSBtKak=
15-
cloud.google.com/go/longrunning v0.9.0 h1:0EzbDEGsAvOZNbqXopgniY0w0a1phvu5IdUFq8grmqY=
16-
cloud.google.com/go/longrunning v0.9.0/go.mod h1:pkTz846W7bF4o2SzdWJ40Hu0Re+UoNT6Q5t+igIcb8E=
17-
cloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=
18-
cloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=
19-
cloud.google.com/go/storage v1.62.3 h1:SZq1t23NCI+e96dH77Dg3PEfsNNEjqO8zE5AnD8gVD0=
20-
cloud.google.com/go/storage v1.62.3/go.mod h1:cpYz/kRVZ+UQAF1uHeea10/9ewcRbxGoGNKsS9daSXA=
21-
cloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U=
22-
cloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s=
237
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
248
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
259
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 h1:JXg2dwJUmPB9JmtVmdEB16APJ7jurfbY5jnfXpJoRMc=
@@ -56,14 +40,6 @@ github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJ
5640
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=
5741
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 h1:XRzhVemXdgvJqCH0sFfrBUTnUJSBrBf7++ypk+twtRs=
5842
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=
59-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=
60-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
61-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=
62-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=
63-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0 h1:7t/qx5Ost0s0wbA/VDrByOooURhp+ikYwv20i9Y07TQ=
64-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA=
65-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=
66-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=
6743
github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
6844
github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
6945
github.com/MakeNowJust/heredoc/v2 v2.0.1 h1:rlCHh70XXXv7toz95ajQWOWQnN4WNLt0TdpZYIR/J6A=
@@ -166,8 +142,6 @@ github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0G
166142
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
167143
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
168144
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
169-
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w=
170-
github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI=
171145
github.com/containerd/stargz-snapshotter/estargz v0.18.1 h1:cy2/lpgBXDA3cDKSyEfNOFMA/c10O1axL69EU7iirO8=
172146
github.com/containerd/stargz-snapshotter/estargz v0.18.1/go.mod h1:ALIEqa7B6oVDsrF37GkGN20SuvG/pIMm7FwP7ZmRb0Q=
173147
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
@@ -191,14 +165,6 @@ github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqI
191165
github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
192166
github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
193167
github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
194-
github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=
195-
github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=
196-
github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g=
197-
github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98=
198-
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=
199-
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=
200-
github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4=
201-
github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
202168
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
203169
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
204170
github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
@@ -286,8 +252,6 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
286252
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
287253
github.com/google/logger v1.1.1 h1:+6Z2geNxc9G+4D4oDO9njjjn2d0wN5d7uOo0vOIW1NQ=
288254
github.com/google/logger v1.1.1/go.mod h1:BkeJZ+1FhQ+/d087r4dzojEg1u2ZX+ZqG1jTUrLM+zQ=
289-
github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
290-
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
291255
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc=
292256
github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=
293257
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
@@ -405,8 +369,6 @@ github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmd
405369
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
406370
github.com/pkg/sftp v1.13.10 h1:+5FbKNTe5Z9aspU88DPIKJ9z2KZoaGCu6Sr6kKR/5mU=
407371
github.com/pkg/sftp v1.13.10/go.mod h1:bJ1a7uDhrX/4OII+agvy28lzRvQrmIQuaHrcI1HbeGA=
408-
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
409-
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
410372
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
411373
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
412374
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -456,8 +418,6 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
456418
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
457419
github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
458420
github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
459-
github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=
460-
github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=
461421
github.com/spotinst/spotinst-sdk-go v1.372.0 h1:B4/+HK3D2Fe0821DOmw5RO4Lrzo2gi7oa6QWWjr5/7A=
462422
github.com/spotinst/spotinst-sdk-go v1.372.0/go.mod h1:Tn4/eb0SFY6IXmxz71CClujvbD/PuT+EO6Ta8v6AML4=
463423
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -489,18 +449,12 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
489449
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
490450
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
491451
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
492-
go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE=
493-
go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk=
494-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM=
495-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0/go.mod h1:KDgtbWKTQs4bM+VPUr6WlL9m/WXcmkCcBlIzqxPGzmI=
496452
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 h1:CqXxU8VOmDefoh0+ztfGaymYbhdB/tT3zs79QaZTNGY=
497453
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0/go.mod h1:BuhAPThV8PBHBvg8ZzZ/Ok3idOdhWIodywz2xEcRbJo=
498454
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
499455
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
500456
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k=
501457
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A=
502-
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0 h1:TC+BewnDpeiAmcscXbGMfxkO+mwYUwE/VySwvw88PfA=
503-
go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0/go.mod h1:J/ZyF4vfPwsSr9xJSPyQ4LqtcTPULFR64KwTikGLe+A=
504458
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
505459
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
506460
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=

upup/pkg/fi/http.go

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ import (
2525
"net/url"
2626
"os"
2727
"path/filepath"
28-
"strings"
2928
"time"
3029

31-
"cloud.google.com/go/storage"
3230
"k8s.io/klog/v2"
3331
"k8s.io/kops/util/pkg/hashing"
3432
"k8s.io/kops/util/pkg/vfs"
@@ -103,49 +101,18 @@ func downloadURLToWriter(ctx context.Context, desturl string, dest io.Writer, ha
103101
writer := io.MultiWriter(dest, hasher)
104102

105103
switch u.Scheme {
106-
case "gs":
107-
bucketName := u.Host
108-
objectName := strings.TrimPrefix(u.Path, "/")
109-
110-
client, err := storage.NewClient(ctx)
111-
if err != nil {
112-
return nil, fmt.Errorf("Failed to create client %q: %v", desturl, err)
113-
}
114-
defer client.Close()
115-
116-
reader, err := client.Bucket(bucketName).Object(objectName).NewReader(ctx)
117-
if err != nil {
118-
return nil, fmt.Errorf("Failed to open reader on object %q: %v", desturl, err)
119-
}
120-
defer reader.Close()
121-
122-
if _, err := io.Copy(writer, reader); err != nil {
123-
return nil, fmt.Errorf("error downloading HTTP content from %q: %v", desturl, err)
124-
}
125-
case "s3":
126-
// vfs resolves the bucket region and signs the request with the ambient AWS credentials.
127-
p, err := vfs.Context.BuildVfsPath(desturl)
128-
if err != nil {
129-
return nil, fmt.Errorf("building path for %q: %w", desturl, err)
130-
}
131-
s3Path, ok := p.(*vfs.S3Path)
132-
if !ok {
133-
return nil, fmt.Errorf("unexpected path type %T for %q", p, desturl)
134-
}
135-
if _, err := s3Path.WriteToWithContext(ctx, writer); err != nil {
136-
return nil, fmt.Errorf("error downloading content from %q: %w", desturl, err)
137-
}
138-
case "azureblob":
139-
// vfs authenticates with the ambient Azure credentials, such as the instance managed identity.
104+
case "gs", "s3", "azureblob":
105+
// vfs resolves the bucket and signs the request with the ambient cloud credentials,
106+
// such as the instance identity.
140107
p, err := vfs.Context.BuildVfsPath(desturl)
141108
if err != nil {
142109
return nil, fmt.Errorf("building path for %q: %w", desturl, err)
143110
}
144-
blobPath, ok := p.(*vfs.AzureBlobPath)
111+
cloudPath, ok := p.(vfs.WriterToWithContext)
145112
if !ok {
146-
return nil, fmt.Errorf("unexpected path type %T for %q", p, desturl)
113+
return nil, fmt.Errorf("path type %T for %q does not implement WriteToWithContext", p, desturl)
147114
}
148-
if _, err := blobPath.WriteToWithContext(ctx, writer); err != nil {
115+
if _, err := cloudPath.WriteToWithContext(ctx, writer); err != nil {
149116
return nil, fmt.Errorf("error downloading content from %q: %w", desturl, err)
150117
}
151118
default:

util/pkg/vfs/gsfs.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ func (p *GSPath) ReadFile(ctx context.Context) ([]byte, error) {
249249
var b bytes.Buffer
250250
done, err := RetryWithBackoff(gcsReadBackoff, func() (bool, error) {
251251
b.Reset()
252-
_, err := p.WriteTo(&b)
252+
_, err := p.WriteToWithContext(ctx, &b)
253253
if err != nil {
254254
if os.IsNotExist(err) {
255255
// Not recoverable
@@ -273,7 +273,11 @@ func (p *GSPath) ReadFile(ctx context.Context) ([]byte, error) {
273273
// WriteTo implements io.WriterTo::WriteTo
274274
func (p *GSPath) WriteTo(out io.Writer) (int64, error) {
275275
ctx := context.TODO()
276+
return p.WriteToWithContext(ctx, out)
277+
}
276278

279+
// WriteToWithContext implements io.WriterTo, but adds a context
280+
func (p *GSPath) WriteToWithContext(ctx context.Context, out io.Writer) (int64, error) {
277281
klog.V(4).Infof("Reading file %q", p)
278282

279283
client, err := p.getStorageClient(ctx)

util/pkg/vfs/vfs.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ type TerraformPath interface {
8484
RenderTerraform(writer *terraformWriter.TerraformWriter, name string, data io.Reader, acl ACL) error
8585
}
8686

87+
// WriterToWithContext is implemented by Paths that can stream their contents
88+
// to a writer with a caller-provided context.
89+
type WriterToWithContext interface {
90+
WriteToWithContext(ctx context.Context, out io.Writer) (int64, error)
91+
}
92+
8793
type HasHash interface {
8894
// Returns the hash of the file contents, with the preferred hash algorithm
8995
PreferredHash() (*hashing.Hash, error)

vendor/cel.dev/expr/.bazelversion

Lines changed: 0 additions & 2 deletions
This file was deleted.

vendor/cel.dev/expr/.gitattributes

Lines changed: 0 additions & 2 deletions
This file was deleted.

vendor/cel.dev/expr/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)