diff --git a/.drone.yml b/.drone.yml index 54482bcaafc6..66a602db9a69 100644 --- a/.drone.yml +++ b/.drone.yml @@ -47,14 +47,6 @@ steps: - name: docker path: /var/run/docker.sock -- name: validate-cross-compilation - image: rancher/dapper:v0.6.0 - commands: - - dapper validate-cross-compilation - volumes: - - name: docker - path: /var/run/docker.sock - - name: fossa image: rancher/drone-fossa:latest failure: ignore diff --git a/.github/workflows/build-k3s.yaml b/.github/workflows/build-k3s.yaml index fde93e00d108..7d388de9060e 100644 --- a/.github/workflows/build-k3s.yaml +++ b/.github/workflows/build-k3s.yaml @@ -7,10 +7,6 @@ on: type: string description: 'Architecture to build' default: 'ubuntu-latest' - upload-repo: - type: boolean - required: false - default: false upload-image: type: boolean required: false @@ -34,22 +30,11 @@ jobs: - name: Build K3s image if: inputs.upload-image == true run: make package-image - - name: bundle repo - if: inputs.upload-repo == true - run: | - tar -czvf ../k3s-repo.tar.gz . - mv ../k3s-repo.tar.gz . - - name: "Upload K3s directory" - if: inputs.upload-repo == true - uses: actions/upload-artifact@v4 - with: - name: k3s-repo.tar.gz - path: k3s-repo.tar.gz - name: "Save K3s image" if: inputs.upload-image == true run: docker image save rancher/k3s -o ./dist/artifacts/k3s-image.tar - name: "Upload K3s Artifacts" - if: inputs.upload-repo == false && inputs.arch == 'ubuntu-latest' + if: inputs.arch == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: k3s @@ -59,4 +44,21 @@ jobs: uses: actions/upload-artifact@v4 with: name: k3s-arm64 - path: dist/artifacts/k3s* \ No newline at end of file + path: dist/artifacts/k3s* + build-windows: + name: Build (windows) + if: inputs.arch == 'ubuntu-latest' + runs-on: ${{ inputs.arch }} # defaults to ubuntu-latest, for arm64 use ubuntu-24.04-arm + timeout-minutes: 20 + steps: + - name: Checkout K3s + uses: actions/checkout@v4 + - name: Build K3s binary + run: | + DOCKER_BUILDKIT=1 SKIP_IMAGE=1 SKIP_AIRGAP=1 SKIP_VALIDATE=1 GOCOVER=1 GOOS=windows make + sha256sum dist/artifacts/k3s.exe | sed 's|dist/artifacts/||' > dist/artifacts/k3s.exe.sha256sum + - name: "Upload K3s Artifacts" + uses: actions/upload-artifact@v4 + with: + name: k3s-windows + path: dist/artifacts/k3s* diff --git a/.github/workflows/install.yaml b/.github/workflows/install.yaml index d9a4bf7b8a1d..b997908d8419 100644 --- a/.github/workflows/install.yaml +++ b/.github/workflows/install.yaml @@ -89,6 +89,14 @@ jobs: run: vagrant provision --provision-with=k3s-status - name: "k3s-procps" run: vagrant provision --provision-with=k3s-procps + - name: "k3s-mount-directory" + run: vagrant provision --provision-with=k3s-mount-directory + - name: "k3s-uninstall" + run: vagrant provision --provision-with=k3s-uninstall + - name: "k3s-check-mount" + run: vagrant provision --provision-with=k3s-check-mount + - name: "k3s-unmount-dir" + run: vagrant provision --provision-with=k3s-unmount-dir - name: Cleanup VM run: vagrant destroy -f - name: On Failure, launch debug session @@ -96,4 +104,30 @@ jobs: if: ${{ failure() }} with: ## If no one connects after 5 minutes, shut down server. - wait-timeout-minutes: 5 \ No newline at end of file + wait-timeout-minutes: 5 + test-windows: + name: "Smoke Test (windows)" + needs: build + runs-on: windows-2022 + timeout-minutes: 10 + steps: + - name: "Checkout" + uses: actions/checkout@v4 + with: {fetch-depth: 1} + - name: "Download k3s binary" + uses: actions/download-artifact@v4 + with: + name: k3s-windows + path: dist/artifacts/ + - name: "Run K3s" + timeout-minutes: 5 + run: | + $ErrorActionPreference = "Continue" + $PSNativeCommandUseErrorActionPreference = $true + $Server = Start-Job -ScriptBlock { ./dist/artifacts/k3s.exe server --token=token --embedded-registry --disable=metrics-server } + Start-Sleep -Seconds 15 + D:/var/lib/rancher/k3s/data/current/bin/k3s.exe kubectl get node -o wide + D:/var/lib/rancher/k3s/data/current/bin/k3s.exe kubectl get pod -A -o wide + Stop-Job -Job $Server + Receive-Job -Wait -Job $Server + Remove-Job -Job $Server diff --git a/.github/workflows/unitcoverage.yaml b/.github/workflows/unitcoverage.yaml index 33b42431ff15..0bd962a51a69 100644 --- a/.github/workflows/unitcoverage.yaml +++ b/.github/workflows/unitcoverage.yaml @@ -26,8 +26,8 @@ permissions: contents: read jobs: - test: - name: Unit Tests + test-unit-linux: + name: Unit Tests (linux) runs-on: ubuntu-24.04 timeout-minutes: 20 steps: @@ -38,8 +38,8 @@ jobs: - name: Install Go uses: ./.github/actions/setup-go - name: Run Unit Tests - run: | - go test -coverpkg=./... -coverprofile=coverage.out ./pkg/... -run Unit + run: | + go test -coverpkg ./pkg/... -coverprofile coverage.out ./pkg/... -run Unit go tool cover -func coverage.out - name: On Failure, Launch Debug Session if: ${{ failure() }} @@ -53,3 +53,25 @@ jobs: files: ./coverage.out flags: unittests # optional verbose: true # optional (default = false) + test-unit-windows: + name: Unit Tests (windows) + runs-on: windows-2022 + timeout-minutes: 20 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Install Go + uses: actions/setup-go@v5 + - name: Run Unit Tests + run: | + go test -coverpkg ./pkg/... -coverprofile coverage.out ./pkg/... -run Unit + go tool cover -func coverage.out + - name: Upload Results To Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./coverage.out + flags: unittests # optional + verbose: true # optional (default = false) diff --git a/.gitignore b/.gitignore index 8602fd5b52ca..db807294e18c 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,7 @@ /image/go_build_agent /image/main.squashfs /package/k3s -/package/data.tar.zst +/package/data-* /pkg/data/zz_generated_bindata.go __pycache__ /tests/.pytest_cache/ diff --git a/Dockerfile.dapper b/Dockerfile.dapper index 04a10361b424..8860cf63fad4 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -52,7 +52,7 @@ ENV SELINUX=${SELINUX} # Set Dapper configuration variables ENV DAPPER_RUN_ARGS="--privileged -v k3s-cache:/go/src/github.com/k3s-io/k3s/.cache -v trivy-cache:/root/.cache/trivy" \ - DAPPER_ENV="REPO TAG DRONE_TAG IMAGE_NAME SKIP_VALIDATE SKIP_IMAGE SKIP_AIRGAP AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID GITHUB_TOKEN GOLANG GOCOVER DEBUG" \ + DAPPER_ENV="REPO TAG DRONE_TAG IMAGE_NAME SKIP_VALIDATE SKIP_IMAGE SKIP_AIRGAP AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID GITHUB_TOKEN GOLANG GOCOVER GOOS DEBUG" \ DAPPER_SOURCE="/go/src/github.com/k3s-io/k3s/" \ DAPPER_OUTPUT="./bin ./dist ./build/out ./build/static ./pkg/static ./pkg/deploy" \ DAPPER_DOCKER_SOCKET=true \ diff --git a/Makefile b/Makefile index 620f89989425..64b48e5b5960 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ TARGETS := $(shell ls scripts | grep -v \\.sh) GO_FILES ?= $$(find . -name '*.go' | grep -v generated) +SHELL := /bin/bash .dapper: @@ -9,7 +10,11 @@ GO_FILES ?= $$(find . -name '*.go' | grep -v generated) @./.dapper.tmp -v @mv .dapper.tmp .dapper -$(TARGETS): .dapper +.PHONY: docker.sock +docker.sock: + while ! docker version 1>/dev/null; do sleep 1; done + +$(TARGETS): .dapper docker.sock ./.dapper $@ .PHONY: deps @@ -42,4 +47,4 @@ format: local: DOCKER_BUILDKIT=1 docker build \ --build-arg="REPO TAG GITHUB_TOKEN GOLANG GOCOVER DEBUG" \ - -t k3s-local -f Dockerfile.local --output=. . \ No newline at end of file + -t k3s-local -f Dockerfile.local --output=. . diff --git a/go.mod b/go.mod index 6d4681b4d33c..5bfa80c3a367 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/k3s-io/k3s -go 1.22.7 - -toolchain go1.22.9 +go 1.22.10 replace ( github.com/Microsoft/hcsshim => github.com/Microsoft/hcsshim v0.11.7 @@ -16,23 +14,24 @@ replace ( github.com/docker/docker => github.com/docker/docker v25.0.6+incompatible github.com/emicklei/go-restful/v3 => github.com/emicklei/go-restful/v3 v3.9.0 github.com/golang/protobuf => github.com/golang/protobuf v1.5.4 - github.com/googleapis/gax-go/v2 => github.com/googleapis/gax-go/v2 v2.12.0 + github.com/googleapis/gax-go/v2 => github.com/googleapis/gax-go/v2 v2.14.1 github.com/kubernetes-sigs/cri-tools => github.com/k3s-io/cri-tools v1.29.0-k3s1 github.com/open-policy-agent/opa => github.com/open-policy-agent/opa v0.59.0 // github.com/Microsoft/hcsshim using bad version v0.42.2 github.com/opencontainers/runc => github.com/k3s-io/runc v1.2.4-k3s1 github.com/opencontainers/selinux => github.com/opencontainers/selinux v1.11.0 github.com/prometheus/client_golang => github.com/prometheus/client_golang v1.18.0 github.com/prometheus/common => github.com/prometheus/common v0.45.0 - github.com/spegel-org/spegel => github.com/k3s-io/spegel v0.0.23-0.20240516234953-f3d2c4072314 + github.com/rancher/wrangler/v3 => github.com/rancher/wrangler/v3 v3.0.0-rc2 + github.com/spegel-org/spegel => github.com/k3s-io/spegel v0.0.30-k3s1.31 github.com/ugorji/go => github.com/ugorji/go v1.2.11 - go.etcd.io/etcd/api/v3 => github.com/k3s-io/etcd/api/v3 v3.5.16-k3s1 - go.etcd.io/etcd/client/pkg/v3 => github.com/k3s-io/etcd/client/pkg/v3 v3.5.16-k3s1 - go.etcd.io/etcd/client/v2 => github.com/k3s-io/etcd/client/v2 v2.305.16-k3s1 - go.etcd.io/etcd/client/v3 => github.com/k3s-io/etcd/client/v3 v3.5.16-k3s1 - go.etcd.io/etcd/etcdutl/v3 => github.com/k3s-io/etcd/etcdutl/v3 v3.5.16-k3s1 - go.etcd.io/etcd/pkg/v3 => github.com/k3s-io/etcd/pkg/v3 v3.5.16-k3s1 - go.etcd.io/etcd/raft/v3 => github.com/k3s-io/etcd/raft/v3 v3.5.16-k3s1 - go.etcd.io/etcd/server/v3 => github.com/k3s-io/etcd/server/v3 v3.5.16-k3s1 + go.etcd.io/etcd/api/v3 => github.com/k3s-io/etcd/api/v3 v3.5.18-k3s1 + go.etcd.io/etcd/client/pkg/v3 => github.com/k3s-io/etcd/client/pkg/v3 v3.5.18-k3s1 + go.etcd.io/etcd/client/v2 => github.com/k3s-io/etcd/client/v2 v2.305.18-k3s1 + go.etcd.io/etcd/client/v3 => github.com/k3s-io/etcd/client/v3 v3.5.18-k3s1 + go.etcd.io/etcd/etcdutl/v3 => github.com/k3s-io/etcd/etcdutl/v3 v3.5.18-k3s1 + go.etcd.io/etcd/pkg/v3 => github.com/k3s-io/etcd/pkg/v3 v3.5.18-k3s1 + go.etcd.io/etcd/raft/v3 => github.com/k3s-io/etcd/raft/v3 v3.5.18-k3s1 + go.etcd.io/etcd/server/v3 => github.com/k3s-io/etcd/server/v3 v3.5.18-k3s1 go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful => go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.44.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc => go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0 golang.org/x/crypto => golang.org/x/crypto v0.17.0 @@ -85,7 +84,7 @@ require ( github.com/cloudnativelabs/kube-router/v2 v2.0.0-00010101000000-000000000000 github.com/containerd/aufs v1.0.0 github.com/containerd/cgroups/v3 v3.0.3 - github.com/containerd/containerd v1.7.16 + github.com/containerd/containerd v1.7.25 github.com/containerd/fuse-overlayfs-snapshotter v1.0.8 github.com/containerd/stargz-snapshotter v0.15.1 github.com/containerd/zfs v1.1.0 @@ -104,58 +103,58 @@ require ( github.com/google/go-containerregistry v0.20.2 github.com/google/uuid v1.6.0 github.com/gorilla/mux v1.8.1 - github.com/gorilla/websocket v1.5.1 + github.com/gorilla/websocket v1.5.3 github.com/inetaf/tcpproxy v0.0.0-20240214030015-3ce58045626c github.com/ipfs/go-ds-leveldb v0.5.0 github.com/ipfs/go-log/v2 v2.5.1 github.com/joho/godotenv v1.5.1 github.com/json-iterator/go v1.1.12 - github.com/k3s-io/helm-controller v0.16.5 - github.com/k3s-io/kine v0.13.5 + github.com/k3s-io/helm-controller v0.16.6 + github.com/k3s-io/kine v0.13.9 github.com/klauspost/compress v1.17.11 github.com/kubernetes-sigs/cri-tools v0.0.0-00010101000000-000000000000 - github.com/libp2p/go-libp2p v0.33.2 - github.com/minio/minio-go/v7 v7.0.70 + github.com/libp2p/go-libp2p v0.38.2 + github.com/minio/minio-go/v7 v7.0.83 github.com/mwitkow/go-http-dialer v0.0.0-20161116154839-378f744fb2b8 github.com/natefinch/lumberjack v2.0.0+incompatible - github.com/onsi/ginkgo/v2 v2.19.0 - github.com/onsi/gomega v1.33.1 + github.com/onsi/ginkgo/v2 v2.22.2 + github.com/onsi/gomega v1.36.2 github.com/opencontainers/runc v1.1.12 github.com/opencontainers/selinux v1.11.0 github.com/otiai10/copy v1.7.0 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.20.5 - github.com/prometheus/common v0.55.0 + github.com/prometheus/common v0.61.0 github.com/rancher/dynamiclistener v0.6.0-rc1 - github.com/rancher/lasso v0.0.0-20240724174736-24ab3dbf26f0 + github.com/rancher/lasso v0.0.0-20250109193533-00757eec2dbd github.com/rancher/permissions v0.0.0-20240523180510-4001d3d637f7 github.com/rancher/remotedialer v0.4.1 github.com/rancher/wharfie v0.6.7 - github.com/rancher/wrangler/v3 v3.0.0-rc2 + github.com/rancher/wrangler/v3 v3.1.0 github.com/robfig/cron/v3 v3.0.1 github.com/rootless-containers/rootlesskit v1.0.1 github.com/sirupsen/logrus v1.9.3 github.com/spegel-org/spegel v1.0.18 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/urfave/cli v1.22.15 github.com/vishvananda/netlink v1.3.0 github.com/yl2chen/cidranger v1.0.2 - go.etcd.io/etcd/api/v3 v3.5.16 - go.etcd.io/etcd/client/pkg/v3 v3.5.16 - go.etcd.io/etcd/client/v3 v3.5.16 - go.etcd.io/etcd/etcdutl/v3 v3.5.13 - go.etcd.io/etcd/server/v3 v3.5.16 + go.etcd.io/etcd/api/v3 v3.5.18 + go.etcd.io/etcd/client/pkg/v3 v3.5.18 + go.etcd.io/etcd/client/v3 v3.5.18 + go.etcd.io/etcd/etcdutl/v3 v3.5.18 + go.etcd.io/etcd/server/v3 v3.5.18 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.27.0 - golang.org/x/mod v0.20.0 - golang.org/x/net v0.29.0 - golang.org/x/sync v0.8.0 - golang.org/x/sys v0.28.0 - google.golang.org/grpc v1.68.0 + golang.org/x/crypto v0.32.0 + golang.org/x/mod v0.22.0 + golang.org/x/net v0.34.0 + golang.org/x/sync v0.10.0 + golang.org/x/sys v0.29.0 + google.golang.org/grpc v1.70.0 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.30.9 - k8s.io/apimachinery v0.30.9 + k8s.io/api v0.31.5 + k8s.io/apimachinery v0.31.5 k8s.io/apiserver v0.30.9 k8s.io/cli-runtime v0.22.2 k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible @@ -163,7 +162,7 @@ require ( k8s.io/cluster-bootstrap v0.0.0 k8s.io/component-base v0.30.9 k8s.io/component-helpers v0.30.9 - k8s.io/cri-api v0.30.9 + k8s.io/cri-api v0.31.5 k8s.io/klog/v2 v2.130.1 k8s.io/kube-proxy v0.0.0 k8s.io/kubectl v0.25.0 @@ -173,7 +172,9 @@ require ( ) require ( - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/auth v0.13.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect dario.cat/mergo v1.0.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect @@ -182,6 +183,7 @@ require ( github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b // indirect github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect + github.com/Masterminds/semver/v3 v3.3.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/NYTimes/gziphandler v1.1.1 // indirect github.com/Rican7/retry v0.3.1 // indirect @@ -193,7 +195,6 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver v3.5.1+incompatible // indirect github.com/bronze1man/goStrongswanVici v0.0.0-20231128135937-211cef3b0b20 // indirect - github.com/canonical/go-dqlite v1.5.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect @@ -203,9 +204,9 @@ require ( github.com/containerd/btrfs/v2 v2.0.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/containerd/console v1.0.4 // indirect - github.com/containerd/containerd/api v1.8.0-rc.3 // indirect - github.com/containerd/continuity v0.4.3 // indirect - github.com/containerd/errdefs v0.3.0 // indirect + github.com/containerd/containerd/api v1.8.0 // indirect + github.com/containerd/continuity v0.4.4 // indirect + github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/fifo v1.1.0 // indirect github.com/containerd/go-cni v1.1.10 // indirect github.com/containerd/go-runc v1.1.0 // indirect @@ -216,7 +217,7 @@ require ( github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect github.com/containerd/ttrpc v1.2.5 // indirect github.com/containerd/typeurl v1.0.2 // indirect - github.com/containerd/typeurl/v2 v2.2.0 // indirect + github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containernetworking/cni v1.2.3 // indirect github.com/containernetworking/plugins v1.5.1 // indirect github.com/containers/ocicrypt v1.2.0 // indirect @@ -227,7 +228,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/daviddengcn/go-colortext v1.0.0 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/cli v27.1.2+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect @@ -237,11 +238,11 @@ require ( github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/elastic/gosigar v0.14.2 // indirect + github.com/elastic/gosigar v0.14.3 // indirect github.com/emicklei/go-restful v2.16.0+incompatible // indirect github.com/emicklei/go-restful/v3 v3.12.1 // indirect github.com/euank/go-kmsg-parser v2.0.0+incompatible // indirect - github.com/evanphx/json-patch v5.6.0+incompatible // indirect + github.com/evanphx/json-patch v5.9.0+incompatible // indirect github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect github.com/fatih/camelcase v1.0.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -250,13 +251,14 @@ require ( github.com/fvbommel/sortorder v1.1.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-errors/errors v1.4.2 // indirect + github.com/go-ini/ini v1.67.0 // indirect github.com/go-jose/go-jose/v4 v4.0.2 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/goccy/go-json v0.10.2 // indirect + github.com/goccy/go-json v0.10.4 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -270,38 +272,37 @@ require ( github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/gopacket v1.1.19 // indirect - github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect - github.com/google/s2a-go v0.1.7 // indirect + github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect + github.com/google/s2a-go v0.1.8 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect + github.com/googleapis/gax-go/v2 v2.14.1 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect github.com/hanwen/go-fuse/v2 v2.5.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-version v1.7.0 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect - github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/arc/v2 v2.0.7 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/huin/goupnp v1.3.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/intel/goresctrl v0.7.0 // indirect - github.com/ipfs/boxo v0.10.0 // indirect + github.com/ipfs/boxo v0.27.0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect - github.com/ipfs/go-log v1.0.5 // indirect - github.com/ipld/go-ipld-prime v0.20.0 // indirect + github.com/ipld/go-ipld-prime v0.21.0 // indirect github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.7.1 // indirect + github.com/jackc/pgx/v5 v5.7.2 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect @@ -310,21 +311,21 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/josharian/native v1.1.0 // indirect github.com/karrick/godirwalk v1.17.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/koron/go-ssdp v0.0.4 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/libopenstorage/openstorage v1.0.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-cidranger v1.1.0 // indirect - github.com/libp2p/go-flow-metrics v0.1.0 // indirect + github.com/libp2p/go-flow-metrics v0.2.0 // indirect github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect - github.com/libp2p/go-libp2p-kad-dht v0.25.2 // indirect - github.com/libp2p/go-libp2p-kbucket v0.6.3 // indirect + github.com/libp2p/go-libp2p-kad-dht v0.28.2 // indirect + github.com/libp2p/go-libp2p-kbucket v0.6.4 // indirect github.com/libp2p/go-libp2p-record v0.2.0 // indirect - github.com/libp2p/go-libp2p-routing-helpers v0.7.2 // indirect + github.com/libp2p/go-libp2p-routing-helpers v0.7.4 // indirect github.com/libp2p/go-msgio v0.3.0 // indirect github.com/libp2p/go-nat v0.2.0 // indirect - github.com/libp2p/go-netroute v0.2.1 // indirect + github.com/libp2p/go-netroute v0.2.2 // indirect github.com/libp2p/go-reuseport v0.4.0 // indirect github.com/libp2p/go-yamux/v4 v4.0.1 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -337,7 +338,7 @@ require ( github.com/mdlayher/genetlink v1.3.2 // indirect github.com/mdlayher/netlink v1.7.2 // indirect github.com/mdlayher/socket v0.4.1 // indirect - github.com/miekg/dns v1.1.58 // indirect + github.com/miekg/dns v1.1.62 // indirect github.com/miekg/pkcs11 v1.1.1 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect @@ -367,13 +368,13 @@ require ( github.com/mrunalp/fileutils v0.5.1 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect - github.com/multiformats/go-multiaddr v0.12.3 // indirect - github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect + github.com/multiformats/go-multiaddr v0.14.0 // indirect + github.com/multiformats/go-multiaddr-dns v0.4.1 // indirect github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect github.com/multiformats/go-multibase v0.2.0 // indirect github.com/multiformats/go-multicodec v0.9.0 // indirect github.com/multiformats/go-multihash v0.2.3 // indirect - github.com/multiformats/go-multistream v0.5.0 // indirect + github.com/multiformats/go-multistream v0.6.0 // indirect github.com/multiformats/go-varint v0.0.7 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect @@ -387,29 +388,45 @@ require ( github.com/opencontainers/image-spec v1.1.0 // indirect github.com/opencontainers/runtime-spec v1.2.0 // indirect github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pierrec/lz4 v2.6.0+incompatible // indirect + github.com/pion/datachannel v1.5.10 // indirect + github.com/pion/dtls/v2 v2.2.12 // indirect + github.com/pion/ice/v2 v2.3.37 // indirect + github.com/pion/interceptor v0.1.37 // indirect + github.com/pion/logging v0.2.2 // indirect + github.com/pion/mdns v0.0.12 // indirect + github.com/pion/randutil v0.1.0 // indirect + github.com/pion/rtcp v1.2.15 // indirect + github.com/pion/rtp v1.8.10 // indirect + github.com/pion/sctp v1.8.35 // indirect + github.com/pion/sdp/v3 v3.0.9 // indirect + github.com/pion/srtp/v2 v2.0.20 // indirect + github.com/pion/stun v0.6.1 // indirect + github.com/pion/transport/v2 v2.2.10 // indirect + github.com/pion/transport/v3 v3.0.7 // indirect + github.com/pion/turn/v2 v2.1.6 // indirect + github.com/pion/webrtc/v3 v3.3.5 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/pquerna/cachecontrol v0.1.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect - github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/quic-go v0.42.0 // indirect - github.com/quic-go/webtransport-go v0.6.0 // indirect + github.com/quic-go/qpack v0.5.1 // indirect + github.com/quic-go/quic-go v0.48.2 // indirect + github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect - github.com/rs/xid v1.5.0 // indirect + github.com/rs/xid v1.6.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/seccomp/libseccomp-golang v0.10.0 // indirect github.com/shengdoushi/base58 v1.0.0 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cobra v1.8.0 // indirect + github.com/spf13/afero v1.12.0 // indirect + github.com/spf13/cobra v1.8.1 // indirect github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6 // indirect github.com/stoewer/go-strcase v1.3.0 // indirect github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect @@ -421,59 +438,58 @@ require ( github.com/vbatts/tar-split v0.11.5 // indirect github.com/vishvananda/netns v0.0.4 // indirect github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect + github.com/wlynxg/anet v0.0.5 // indirect github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect go.etcd.io/bbolt v1.3.11 // indirect - go.etcd.io/etcd/client/v2 v2.305.16 // indirect - go.etcd.io/etcd/pkg/v3 v3.5.16 // indirect - go.etcd.io/etcd/raft/v3 v3.5.16 // indirect + go.etcd.io/etcd/client/v2 v2.305.18 // indirect + go.etcd.io/etcd/pkg/v3 v3.5.18 // indirect + go.etcd.io/etcd/raft/v3 v3.5.18 // indirect go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.42.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect - go.opentelemetry.io/otel v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect - go.opentelemetry.io/otel/sdk v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/sdk v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect - go.uber.org/dig v1.17.1 // indirect - go.uber.org/fx v1.20.1 // indirect - go.uber.org/mock v0.4.0 // indirect + go.uber.org/dig v1.18.0 // indirect + go.uber.org/fx v1.23.0 // indirect + go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect - golang.org/x/oauth2 v0.22.0 // indirect - golang.org/x/term v0.24.0 // indirect - golang.org/x/text v0.18.0 // indirect - golang.org/x/time v0.6.0 // indirect - golang.org/x/tools v0.24.0 // indirect + golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 // indirect + golang.org/x/oauth2 v0.25.0 // indirect + golang.org/x/term v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.8.0 // indirect + golang.org/x/tools v0.28.0 // indirect golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect golang.zx2c4.com/wireguard/wgctrl v0.0.0-20230429144221-925a1e7659e6 // indirect - gonum.org/v1/gonum v0.13.0 // indirect - google.golang.org/api v0.169.0 // indirect - google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/protobuf v1.34.2 // indirect + gonum.org/v1/gonum v0.15.0 // indirect + google.golang.org/api v0.215.0 // indirect + google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/gcfg.v1 v1.2.3 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiextensions-apiserver v0.30.9 // indirect - k8s.io/code-generator v0.30.9 // indirect + k8s.io/apiextensions-apiserver v0.31.1 // indirect + k8s.io/code-generator v0.31.1 // indirect k8s.io/controller-manager v0.25.4 // indirect k8s.io/csi-translation-lib v0.0.0 // indirect k8s.io/dynamic-resource-allocation v0.0.0 // indirect k8s.io/endpointslice v0.0.0 // indirect - k8s.io/gengo v0.0.0-20240228010128-51d4e06bde70 // indirect + k8s.io/gengo v0.0.0-20240826214909-a7b603a56eb7 // indirect k8s.io/gengo/v2 v2.0.0-20240826214909-a7b603a56eb7 // indirect k8s.io/kms v0.0.0 // indirect k8s.io/kube-aggregator v0.30.9 // indirect @@ -485,7 +501,7 @@ require ( k8s.io/metrics v0.0.0 // indirect k8s.io/mount-utils v0.30.9 // indirect k8s.io/pod-security-admission v0.0.0 // indirect - lukechampine.com/blake3 v1.2.1 // indirect + lukechampine.com/blake3 v1.3.0 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/knftables v0.0.17 // indirect diff --git a/go.sum b/go.sum index e6e60d295be1..d631e18d5077 100644 --- a/go.sum +++ b/go.sum @@ -41,6 +41,7 @@ cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVqux cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go v0.112.2/go.mod h1:iEqjp//KquGIJV/m+Pk3xecgKNhV+ry+vVTsy4TbDms= cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= @@ -53,6 +54,15 @@ cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1N cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/auth v0.2.1/go.mod h1:khQRBNrvNoHiHhV1iu2x8fSnlNbCaVHilznW5MAI5GY= +cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w= +cloud.google.com/go/auth v0.9.4/go.mod h1:SHia8n6//Ya940F1rLimhJCjjx7KE17t0ctFEci3HkA= +cloud.google.com/go/auth v0.12.1/go.mod h1:BFMu+TNpF3DmvfBO9ClqTR/SiqVIm7LukKF9mbendF4= +cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= +cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= +cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= +cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= @@ -96,8 +106,11 @@ cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= @@ -158,6 +171,7 @@ cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+ cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= +cloud.google.com/go/longrunning v0.5.6/go.mod h1:vUaDrWYOMKRuhiv6JBnn49YxCPz2Ayn9GqyjaBT8/mA= cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= @@ -214,12 +228,14 @@ cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjp cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.10.3/go.mod h1:GW0vC1qvPtd3pgtypCv4k4U8B7EdgK9/QEF2aJEUovs= cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= @@ -265,6 +281,8 @@ github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5 github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= @@ -333,8 +351,6 @@ github.com/bronze1man/goStrongswanVici v0.0.0-20231128135937-211cef3b0b20/go.mod github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q= -github.com/canonical/go-dqlite v1.5.1 h1:1YjtIrFsC1A3XlgsX38ARAiKhvkZS63PqsEd8z3T4yU= -github.com/canonical/go-dqlite v1.5.1/go.mod h1:wp00vfMvPYgNCyxcPdHB5XExmDoCGoPUGymloAQT17Y= github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -361,8 +377,9 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50 h1:DBmgJDC9dTfkVyGgipamEh2BpGYxScCH1TOF1LL1cXc= github.com/cncf/xds/go v0.0.0-20240318125728-8a4994d93e50/go.mod h1:5e1+Vvlzido69INQaVO6d87Qn543Xr6nooe9Kz7oBFM= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/container-storage-interface/spec v1.8.0 h1:D0vhF3PLIZwlwZEf2eNbpujGCNwspwTYf2idJRJx4xI= @@ -384,14 +401,16 @@ github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkX github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd/api v1.7.19/go.mod h1:fwGavl3LNwAV5ilJ0sbrABL44AQxmNjDRcwheXDb6Ig= -github.com/containerd/containerd/api v1.8.0-rc.3 h1:q9MyeXmuAGEyKmUGYvvFftNX1RQhfTLsAvYK+SQHQso= -github.com/containerd/containerd/api v1.8.0-rc.3/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc= +github.com/containerd/containerd/api v1.8.0 h1:hVTNJKR8fMc/2Tiw60ZRijntNMd1U+JVMyTRdsD2bS0= +github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc= github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= -github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= +github.com/containerd/continuity v0.4.4 h1:/fNVfTJ7wIl/YPMHjf+5H32uFhl63JucB34PlCpMKII= +github.com/containerd/continuity v0.4.4/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= @@ -425,8 +444,8 @@ github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQ github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= -github.com/containerd/typeurl/v2 v2.2.0 h1:6NBDbQzr7I5LHgp34xAXYF5DOTQDn05X58lsPEmzLso= -github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g= +github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= +github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= github.com/containerd/zfs v1.1.0 h1:n7OZ7jZumLIqNJqXrEc/paBM840mORnmGdJDmAmJZHM= github.com/containerd/zfs v1.1.0/go.mod h1:oZF9wBnrnQjpWLaPKEinrx3TQ9a+W/RJO7Zb41d8YLE= github.com/containernetworking/cni v1.1.2/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw= @@ -489,8 +508,8 @@ github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/badger/v3 v3.2103.5/go.mod h1:4MPiseMeDQ3FNCYwRbbcBOGJLf5jsE0PPFzRiKjtcdw= @@ -528,8 +547,8 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= -github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= -github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/elastic/gosigar v0.14.3 h1:xwkKwPia+hSfg9GqrCUKYdId102m9qTJIIr7egmK/uo= +github.com/elastic/gosigar v0.14.3/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/emicklei/go-restful v2.16.0+incompatible h1:rgqiKNjTnFQA6kkhFe16D8epTksy9HQ1MyrbDXSdYhM= github.com/emicklei/go-restful v2.16.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= @@ -540,15 +559,16 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/erikdubbelboer/gspt v0.0.0-20190125194910-e68493906b83 h1:ngHdSomn2MyugZYKHiycad2xERwIrmMlET7A0lC0UU4= github.com/erikdubbelboer/gspt v0.0.0-20190125194910-e68493906b83/go.mod h1:v6o7m/E9bfvm79dE1iFiF+3T7zLBnrjYjkWMa1J+Hv0= github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= -github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= +github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= @@ -571,8 +591,9 @@ github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHqu github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= -github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= @@ -599,6 +620,7 @@ github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmn github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= github.com/go-jose/go-jose/v4 v4.0.2 h1:R3l3kkBds16bO7ZFAEEcofK0MkrAJt3jlJznWZG0nvk= @@ -649,8 +671,8 @@ github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaL github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= +github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -663,7 +685,6 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= @@ -736,6 +757,7 @@ github.com/google/go-containerregistry v0.20.2 h1:B1wPJ1SN/S7pB+ZAimcciVD+r+yV/l github.com/google/go-containerregistry v0.20.2/go.mod h1:z38EKdKh4h7IP2gSfUUqEvalZBqs6AoLeWfUy34nQC8= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/go-pkcs11 v0.3.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -764,14 +786,15 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k= -github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -789,11 +812,13 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/ github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= +github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= +github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= +github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -803,8 +828,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -819,8 +844,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= github.com/hanwen/go-fuse/v2 v2.4.0/go.mod h1:xKwi1cF7nXAOBCXujD5ie0ZKsxc8GGSA1rlMJc+8IJs= github.com/hanwen/go-fuse/v2 v2.5.1 h1:OQBE8zVemSocRxA4OaFJbjJ5hlpCmIWbGr7r0M4uoQQ= github.com/hanwen/go-fuse/v2 v2.5.1/go.mod h1:xKwi1cF7nXAOBCXujD5ie0ZKsxc8GGSA1rlMJc+8IJs= @@ -853,10 +878,10 @@ github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw= -github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/arc/v2 v2.0.7 h1:QxkVTxwColcduO+LP7eJO56r2hFiG8zEbfAAzRv52KQ= +github.com/hashicorp/golang-lru/arc/v2 v2.0.7/go.mod h1:Pe7gBlGdc8clY5LJ0LpJXMt5AmgmWNH1g+oFFVUHOEc= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= @@ -884,8 +909,10 @@ github.com/inetaf/tcpproxy v0.0.0-20240214030015-3ce58045626c/go.mod h1:Di7LXRyU github.com/intel/goresctrl v0.3.0/go.mod h1:fdz3mD85cmP9sHD8JUlrNWAxvwM86CrbmVXltEKd7zk= github.com/intel/goresctrl v0.7.0 h1:x6RclP6LiJc24t9mf47BRbjf06B8oVisZMBv31x3rKc= github.com/intel/goresctrl v0.7.0/go.mod h1:T3ZZnuHSNouwELB5wvOoUJaB7l/4Rm23rJy/wuWJlr0= -github.com/ipfs/boxo v0.10.0 h1:tdDAxq8jrsbRkYoF+5Rcqyeb91hgWe2hp7iLu7ORZLY= -github.com/ipfs/boxo v0.10.0/go.mod h1:Fg+BnfxZ0RPzR0nOodzdIq3A7KgoWAOWsEIImrIQdBM= +github.com/ipfs/boxo v0.27.0 h1:8zu0zQrCXSUMn/0vnXy6oUppscoxstK7hQqiGFwUcjY= +github.com/ipfs/boxo v0.27.0/go.mod h1:qEIRrGNr0bitDedTCzyzBHxzNWqYmyuHgK8LG9Q83EM= +github.com/ipfs/go-block-format v0.2.0 h1:ZqrkxBA2ICbDRbK8KJs/u0O3dlp6gmAuuXUJNiW1Ycs= +github.com/ipfs/go-block-format v0.2.0/go.mod h1:+jpL11nFx5A/SPpsoBn6Bzkra/zaArfSmsknbPMYgzM= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= @@ -898,23 +925,22 @@ github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupV github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo= github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= -github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= -github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= -github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= -github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= +github.com/ipfs/go-ipfs-util v0.0.3 h1:2RFdGez6bu2ZlZdI+rWfIdbQb1KudQp3VGwPtdNCmE0= +github.com/ipfs/go-ipfs-util v0.0.3/go.mod h1:LHzG1a0Ig4G+iZ26UUOMjHd+lfM84LZCrn17xAKWBvs= github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= -github.com/ipld/go-ipld-prime v0.20.0 h1:Ud3VwE9ClxpO2LkCYP7vWPc0Fo+dYdYzgxUJZ3uRG4g= -github.com/ipld/go-ipld-prime v0.20.0/go.mod h1:PzqZ/ZR981eKbgdr3y2DJYeD/8bgMawdGVlJDE8kK+M= +github.com/ipfs/go-test v0.0.4 h1:DKT66T6GBB6PsDFLoO56QZPrOmzJkqU1FZH5C9ySkew= +github.com/ipfs/go-test v0.0.4/go.mod h1:qhIM1EluEfElKKM6fnWxGn822/z9knUGM1+I/OAQNKI= +github.com/ipld/go-ipld-prime v0.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH9C2E= +github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ= github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa h1:s+4MhCQ6YrzisK6hFJUX53drDT4UsSW3DEhKn0ifuHw= github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.7.1 h1:x7SYsPBYDkHDksogeSmZZ5xzThcTgRz++I5E+ePFUcs= -github.com/jackc/pgx/v5 v5.7.1/go.mod h1:e7O26IywZZ+naJtWWos6i6fvWK+29etgITqrqHLfoZA= +github.com/jackc/pgx/v5 v5.7.2 h1:mLoDLV6sonKlvjIEsV56SkWNCnuNv531l94GaIzO+XI= +github.com/jackc/pgx/v5 v5.7.2/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= @@ -954,26 +980,26 @@ github.com/k3s-io/cri-dockerd v0.3.12-k3s1.30-3 h1:lmvoMmpiprwTdQFW5p3f+Y1ZRnx2Y github.com/k3s-io/cri-dockerd v0.3.12-k3s1.30-3/go.mod h1:L7HNeF+iZZ/btgefGZI5v7oB1TQgpFyWvbhmFzfsWAY= github.com/k3s-io/cri-tools v1.29.0-k3s1 h1:16IXZ5lbPCmZM8FkgSMAPkhI4O2wVGExe3qEZbisFT0= github.com/k3s-io/cri-tools v1.29.0-k3s1/go.mod h1:fZeWlv+qq4gZ005I13j4JcvgFb6ZobVTtON3PqM5JVc= -github.com/k3s-io/etcd/api/v3 v3.5.16-k3s1 h1:RNExemPFr4S+VqJ2jXVf0Y9iXaps0pTeklSN735z0Mw= -github.com/k3s-io/etcd/api/v3 v3.5.16-k3s1/go.mod h1:1P4SlIP/VwkDmGo3OlOD7faPeP8KDIFhqvciH5EfN28= -github.com/k3s-io/etcd/client/pkg/v3 v3.5.16-k3s1 h1:wEmVFnZ+h3v5ECRmX6jf4SeIykDQei+DRnBczM23YQA= -github.com/k3s-io/etcd/client/pkg/v3 v3.5.16-k3s1/go.mod h1:V8acl8pcEK0Y2g19YlOV9m9ssUe6MgiDSobSoaBAM0E= -github.com/k3s-io/etcd/client/v2 v2.305.16-k3s1 h1:f7qWAqVhxrMdBt0coehUYfP0Cix7clL2ko/XCqvWols= -github.com/k3s-io/etcd/client/v2 v2.305.16-k3s1/go.mod h1:h9YxWCzcdvZENbfzBTFCnoNumr2ax3F19sKMqHFmXHE= -github.com/k3s-io/etcd/client/v3 v3.5.16-k3s1 h1:ON2Cd0Fx+qQ53GS6qK6Mr9fh7MFCShZfw+rsrLZ6j5M= -github.com/k3s-io/etcd/client/v3 v3.5.16-k3s1/go.mod h1:X+rExSGkyqxvu276cr2OwPLBaeqFu1cIl4vmRjAD/50= -github.com/k3s-io/etcd/etcdutl/v3 v3.5.16-k3s1 h1:qUuDUhfhOZ3D6/XsW04jV514+DhV7R669+/+3n9i7VY= -github.com/k3s-io/etcd/etcdutl/v3 v3.5.16-k3s1/go.mod h1:X22QojXcHZNS3TPAitpcYW7rwTvnmchFwAKkSSz0Ncw= -github.com/k3s-io/etcd/pkg/v3 v3.5.16-k3s1 h1:4nDx3la68jehJfqWPs1Yx1clPW7938pKQXrVxp2OgyA= -github.com/k3s-io/etcd/pkg/v3 v3.5.16-k3s1/go.mod h1:+lutCZHG5MBBFI/U4eYT5yL7sJfnexsoM20Y0t2uNuY= -github.com/k3s-io/etcd/raft/v3 v3.5.16-k3s1 h1:nD/YzAeIbEcSkXAQFRwAs/2zc2vXAkKmQnDKf6UDCxY= -github.com/k3s-io/etcd/raft/v3 v3.5.16-k3s1/go.mod h1:P4UP14AxofMJ/54boWilabqqWoW9eLodl6I5GdGzazI= -github.com/k3s-io/etcd/server/v3 v3.5.16-k3s1 h1:9c0DChFw6WRz6r+eCuVLBltZcRwT6h1l79biTPuAGR0= -github.com/k3s-io/etcd/server/v3 v3.5.16-k3s1/go.mod h1:ynhyZZpdDp1Gq49jkUg5mfkDWZwXnn3eIqCqtJnrD/s= -github.com/k3s-io/helm-controller v0.16.5 h1:SsUHfksQXNwePkswv4a970EGD2h0Exsf6t3IdXhpXRo= -github.com/k3s-io/helm-controller v0.16.5/go.mod h1:AcSxEhOIUgeVvBTnJOAwcezBZXtYew/RhKwO5xp3RlM= -github.com/k3s-io/kine v0.13.5 h1:bVTcxCHJVUqeyz0mJenO+WFHkxtgD2aRwLt1JcJ0pq8= -github.com/k3s-io/kine v0.13.5/go.mod h1:OIG+kPc9cU+NDHnVm+aR0PyZYExdZWU+vlJynhH4haU= +github.com/k3s-io/etcd/api/v3 v3.5.18-k3s1 h1:VCVN5BltorEP72gKnf+346X+3SoLRhc1vLmB1XViAbI= +github.com/k3s-io/etcd/api/v3 v3.5.18-k3s1/go.mod h1:uY03Ob2H50077J7Qq0DeehjM/A9S8PhVfbQ1mSaMopU= +github.com/k3s-io/etcd/client/pkg/v3 v3.5.18-k3s1 h1:sz+MGVwhBWFCgVtIRDsWfDKYi28V8zZL/yiwUQqghuY= +github.com/k3s-io/etcd/client/pkg/v3 v3.5.18-k3s1/go.mod h1:BxVf2o5wXG9ZJV+/Cu7QNUiJYk4A29sAhoI5tIRsCu4= +github.com/k3s-io/etcd/client/v2 v2.305.18-k3s1 h1:5MqoMBVHcYtci7AnAWhAGlpv0tpdGjmUzTKz4AQdP1A= +github.com/k3s-io/etcd/client/v2 v2.305.18-k3s1/go.mod h1:JikXfwJymsNv633PzkAb5xnVZmROgNWr4E68YCEz4jo= +github.com/k3s-io/etcd/client/v3 v3.5.18-k3s1 h1:4V0hwSU3k6yfmaLPTCUopHz4pHJQWYFEjDbWveYEO4w= +github.com/k3s-io/etcd/client/v3 v3.5.18-k3s1/go.mod h1:kmemwOsPU9broExyhYsBxX4spCTDX3yLgPMWtpBXG6E= +github.com/k3s-io/etcd/etcdutl/v3 v3.5.18-k3s1 h1:jSoW/HJaipmWMLv7ViEFdIF2KNsDrg1t1khVxrUOv1k= +github.com/k3s-io/etcd/etcdutl/v3 v3.5.18-k3s1/go.mod h1:2R27zhWnQMPl7MaoyGxHgG+6DOyXgEUxMrpcgwWFEiQ= +github.com/k3s-io/etcd/pkg/v3 v3.5.18-k3s1 h1:dtIzhSUbviliTc7sriA9nhRDtr0Gt2pUf+6508g53Ac= +github.com/k3s-io/etcd/pkg/v3 v3.5.18-k3s1/go.mod h1:gb4CDXuN/OgzUgj+VmUFumLYQ2FUMDC6r/plLIjHPI8= +github.com/k3s-io/etcd/raft/v3 v3.5.18-k3s1 h1:CnlB21GpOGN/dINcjLizWk5qkI56h/33bpSv5/xEGCQ= +github.com/k3s-io/etcd/raft/v3 v3.5.18-k3s1/go.mod h1:XBaZHTJt3nLnpS8hMDR55Sxrq76cEC4xWYMBYSY3jcs= +github.com/k3s-io/etcd/server/v3 v3.5.18-k3s1 h1:YHhvwef4h6F53c3BeVSROhXrka/CdFSeInY+s7m67yw= +github.com/k3s-io/etcd/server/v3 v3.5.18-k3s1/go.mod h1:waeL2uw6TdXniXaus105tiK1aSbblIBi21uk8y7D6Ng= +github.com/k3s-io/helm-controller v0.16.6 h1:w/cdunYPTmatAMrYlf/qbmuatrKjfpC122ISn5QfIpA= +github.com/k3s-io/helm-controller v0.16.6/go.mod h1:Zy6dK6PIepVPOH2wM3sg00RsJLAk3FkXIJl+rWeHC3Y= +github.com/k3s-io/kine v0.13.9 h1:Dcobn5rXfl0tGCTPJzLRsowxAnK/4hhLzRGuPXhRJVQ= +github.com/k3s-io/kine v0.13.9/go.mod h1:eBfR4kXgSkB4yIL+S3bF1+z5cvgYz8wbXrwANeL/Qok= github.com/k3s-io/klog/v2 v2.120.1-k3s1 h1:7twAHPFpZA21KdMnMNnj68STQMPldAxF2Zsaol57dxw= github.com/k3s-io/klog/v2 v2.120.1-k3s1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= github.com/k3s-io/kube-router/v2 v2.2.1 h1:LrU6l4khFt67+QCIvgok9B/C9JY/U2/TaF9TCVUw0vw= @@ -1036,8 +1062,8 @@ github.com/k3s-io/kubernetes/staging/src/k8s.io/pod-security-admission v1.30.9-k github.com/k3s-io/kubernetes/staging/src/k8s.io/pod-security-admission v1.30.9-k3s1/go.mod h1:TkJPz7+fWPDnOlud9WxO+KEu1KMBxQ6i9xsWryJd0l8= github.com/k3s-io/runc v1.2.4-k3s1 h1:wCqlmxJiVUsZvdNsSUUm7Ng0kCK2wAgyBt4lcp2lLP8= github.com/k3s-io/runc v1.2.4-k3s1/go.mod h1:nSxcWUydXrsBZVYNSkTjoQ/N6rcyTtn+1SD5D4+kRIM= -github.com/k3s-io/spegel v0.0.23-0.20240516234953-f3d2c4072314 h1:TrZb/yM0OtBuifPXlKaOfcxpJqzakA8+KsoO4c69ZLM= -github.com/k3s-io/spegel v0.0.23-0.20240516234953-f3d2c4072314/go.mod h1:bMHfSjj1+Zf5VITCZe/wLjuni6rYAj/DjPU/kIVnhfA= +github.com/k3s-io/spegel v0.0.30-k3s1.31 h1:ZFDMwJ/WJux1+eL8VFmK/zsrTdtw4ApUQtRbtVvFWB8= +github.com/k3s-io/spegel v0.0.30-k3s1.31/go.mod h1:ZmsNeffliGQQpXzVrnMYz2rMZ4UwBJVWvAbvq0qJ3aE= github.com/karrick/godirwalk v1.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwSWoI= github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= @@ -1056,8 +1082,8 @@ github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90 github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= -github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= @@ -1089,28 +1115,28 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= -github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= -github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.33.2 h1:vCdwnFxoGOXMKmaGHlDSnL4bM3fQeW8pgIa9DECnb40= -github.com/libp2p/go-libp2p v0.33.2/go.mod h1:zTeppLuCvUIkT118pFVzA8xzP/p2dJYOMApCkFh0Yww= +github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw= +github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc= +github.com/libp2p/go-libp2p v0.38.2 h1:9SZQDOCi82A25An4kx30lEtr6kGTxrtoaDkbs5xrK5k= +github.com/libp2p/go-libp2p v0.38.2/go.mod h1:QWV4zGL3O9nXKdHirIC59DoRcZ446dfkjbOJ55NEWFo= github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= -github.com/libp2p/go-libp2p-kad-dht v0.25.2 h1:FOIk9gHoe4YRWXTu8SY9Z1d0RILol0TrtApsMDPjAVQ= -github.com/libp2p/go-libp2p-kad-dht v0.25.2/go.mod h1:6za56ncRHYXX4Nc2vn8z7CZK0P4QiMcrn77acKLM2Oo= -github.com/libp2p/go-libp2p-kbucket v0.6.3 h1:p507271wWzpy2f1XxPzCQG9NiN6R6lHL9GiSErbQQo0= -github.com/libp2p/go-libp2p-kbucket v0.6.3/go.mod h1:RCseT7AH6eJWxxk2ol03xtP9pEHetYSPXOaJnOiD8i0= +github.com/libp2p/go-libp2p-kad-dht v0.28.2 h1:/VivUl/Ru0tVgkWNhDDBy8pK6q+gRdI+z8VfqmSUJWo= +github.com/libp2p/go-libp2p-kad-dht v0.28.2/go.mod h1:sUR/qh4p/5+YFXBtwOiCmIBeBA2YD94ttmL+Xk8+pTE= +github.com/libp2p/go-libp2p-kbucket v0.6.4 h1:OjfiYxU42TKQSB8t8WYd8MKhYhMJeO2If+NiuKfb6iQ= +github.com/libp2p/go-libp2p-kbucket v0.6.4/go.mod h1:jp6w82sczYaBsAypt5ayACcRJi0lgsba7o4TzJKEfWA= github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0= github.com/libp2p/go-libp2p-record v0.2.0/go.mod h1:I+3zMkvvg5m2OcSdoL0KPljyJyvNDFGKX7QdlpYUcwk= -github.com/libp2p/go-libp2p-routing-helpers v0.7.2 h1:xJMFyhQ3Iuqnk9Q2dYE1eUTzsah7NLw3Qs2zjUV78T0= -github.com/libp2p/go-libp2p-routing-helpers v0.7.2/go.mod h1:cN4mJAD/7zfPKXBcs9ze31JGYAZgzdABEm+q/hkswb8= +github.com/libp2p/go-libp2p-routing-helpers v0.7.4 h1:6LqS1Bzn5CfDJ4tzvP9uwh42IB7TJLNFJA6dEeGBv84= +github.com/libp2p/go-libp2p-routing-helpers v0.7.4/go.mod h1:we5WDj9tbolBXOuF1hGOkR+r7Uh1408tQbAKaT5n1LE= github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= -github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= -github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= +github.com/libp2p/go-netroute v0.2.2 h1:Dejd8cQ47Qx2kRABg6lPwknU7+nBnFRpko45/fFPuZ8= +github.com/libp2p/go-netroute v0.2.2/go.mod h1:Rntq6jUAH0l9Gg17w5bFGhcC9a+vk4KNXs6s7IljKYE= github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= @@ -1161,10 +1187,9 @@ github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8Ku github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= -github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= +github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= +github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mikioh/ipaddr v0.0.0-20190404000644-d465c8ab6721 h1:RlZweED6sbSArvlE924+mUcZuXKLBHA35U7LN621Bws= @@ -1182,8 +1207,8 @@ github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= -github.com/minio/minio-go/v7 v7.0.70 h1:1u9NtMgfK1U42kUxcsl5v0yj6TEOPR497OAQxpJnn2g= -github.com/minio/minio-go/v7 v7.0.70/go.mod h1:4yBA8v80xGA30cfM3fz0DKYMXunWl/AV/6tWEs9ryzo= +github.com/minio/minio-go/v7 v7.0.83 h1:W4Kokksvlz3OKf3OqIlzDNKd4MERlC2oN8YptwJ0+GA= +github.com/minio/minio-go/v7 v7.0.83/go.mod h1:57YXpvc5l3rjPdhqNrDsvVlY0qPI6UTk1bflAe+9doY= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= @@ -1252,11 +1277,10 @@ github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYg github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= -github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.12.3 h1:hVBXvPRcKG0w80VinQ23P5t7czWgg65BmIvQKjDydU8= -github.com/multiformats/go-multiaddr v0.12.3/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= -github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= -github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= +github.com/multiformats/go-multiaddr v0.14.0 h1:bfrHrJhrRuh/NXH5mCnemjpbGjzRw/b+tJFOD41g2tU= +github.com/multiformats/go-multiaddr v0.14.0/go.mod h1:6EkVAxtznq2yC3QT5CM1UTAwG0GTP3EWAIcjHuzQ+r4= +github.com/multiformats/go-multiaddr-dns v0.4.1 h1:whi/uCLbDS3mSEUMb1MsoT4uzUeZB0N32yzufqS0i5M= +github.com/multiformats/go-multiaddr-dns v0.4.1/go.mod h1:7hfthtB4E4pQwirrz+J0CcDUfbWzTqEzVyYKKIKpgkc= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= @@ -1266,9 +1290,8 @@ github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI1 github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= -github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE= -github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA= -github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-multistream v0.6.0 h1:ZaHKbsL404720283o4c/IHQXiS6gb8qAN5EIJ4PN5EA= +github.com/multiformats/go-multistream v0.6.0/go.mod h1:MOyoG5otO24cHIg8kf9QW2/NozURlkP/rvi2FQJyCPg= github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= @@ -1302,8 +1325,9 @@ github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a github.com/networkplumbing/go-nft v0.2.0/go.mod h1:HnnM+tYvlGAsMU7yoYwXEVLLiDW9gdMmb5HoGcwpuQs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= +github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1329,8 +1353,8 @@ github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7 github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= github.com/onsi/ginkgo/v2 v2.13.2/go.mod h1:XStQ8QcGwLyF4HdfcZB8SFOS/MWCgDuXMSBe6zrvLgM= github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= -github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= -github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= +github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= +github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= @@ -1353,8 +1377,8 @@ github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3ev github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKiT6zk= -github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= -github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= +github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= +github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/open-policy-agent/opa v0.59.0/go.mod h1:rdJSkEc4oQ+0074/3Fsgno5bkPsYxTjU5aLNmMujIvI= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -1378,8 +1402,6 @@ github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go. github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/otiai10/copy v1.7.0 h1:hVoPiN+t+7d2nzzwMiDHPSOogsWAStewq3TwU05+clE= github.com/otiai10/copy v1.7.0/go.mod h1:rmRl6QPdJj6EiUqXQ/4Nn2lLXoNQjFCQbbNrxgc/t3U= @@ -1405,6 +1427,48 @@ github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A= github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pion/datachannel v1.5.10 h1:ly0Q26K1i6ZkGf42W7D4hQYR90pZwzFOjTq5AuCKk4o= +github.com/pion/datachannel v1.5.10/go.mod h1:p/jJfC9arb29W7WrxyKbepTU20CFgyx5oLo8Rs4Py/M= +github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s= +github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk= +github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE= +github.com/pion/ice/v2 v2.3.37 h1:ObIdaNDu1rCo7hObhs34YSBcO7fjslJMZV0ux+uZWh0= +github.com/pion/ice/v2 v2.3.37/go.mod h1:mBF7lnigdqgtB+YHkaY/Y6s6tsyRyo4u4rPGRuOjUBQ= +github.com/pion/interceptor v0.1.37 h1:aRA8Zpab/wE7/c0O3fh1PqY0AJI3fCSEM5lRWJVorwI= +github.com/pion/interceptor v0.1.37/go.mod h1:JzxbJ4umVTlZAf+/utHzNesY8tmRkM2lVmkS82TTj8Y= +github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= +github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= +github.com/pion/mdns v0.0.12 h1:CiMYlY+O0azojWDmxdNr7ADGrnZ+V6Ilfner+6mSVK8= +github.com/pion/mdns v0.0.12/go.mod h1:VExJjv8to/6Wqm1FXK+Ii/Z9tsVk/F5sD/N70cnYFbk= +github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= +github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8= +github.com/pion/rtcp v1.2.12/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4= +github.com/pion/rtcp v1.2.15 h1:LZQi2JbdipLOj4eBjK4wlVoQWfrZbh3Q6eHtWtJBZBo= +github.com/pion/rtcp v1.2.15/go.mod h1:jlGuAjHMEXwMUHK78RgX0UmEJFV4zUKOFHR7OP+D3D0= +github.com/pion/rtp v1.8.3/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= +github.com/pion/rtp v1.8.10 h1:puphjdbjPB+L+NFaVuZ5h6bt1g5q4kFIoI+r5q/g0CU= +github.com/pion/rtp v1.8.10/go.mod h1:8uMBJj32Pa1wwx8Fuv/AsFhn8jsgw+3rUC2PfoBZ8p4= +github.com/pion/sctp v1.8.35 h1:qwtKvNK1Wc5tHMIYgTDJhfZk7vATGVHhXbUDfHbYwzA= +github.com/pion/sctp v1.8.35/go.mod h1:EcXP8zCYVTRy3W9xtOF7wJm1L1aXfKRQzaM33SjQlzg= +github.com/pion/sdp/v3 v3.0.9 h1:pX++dCHoHUwq43kuwf3PyJfHlwIj4hXA7Vrifiq0IJY= +github.com/pion/sdp/v3 v3.0.9/go.mod h1:B5xmvENq5IXJimIO4zfp6LAe1fD9N+kFv+V/1lOdz8M= +github.com/pion/srtp/v2 v2.0.20 h1:HNNny4s+OUmG280ETrCdgFndp4ufx3/uy85EawYEhTk= +github.com/pion/srtp/v2 v2.0.20/go.mod h1:0KJQjA99A6/a0DOVTu1PhDSw0CXF2jTkqOoMg3ODqdA= +github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= +github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8= +github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g= +github.com/pion/transport/v2 v2.2.3/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= +github.com/pion/transport/v2 v2.2.4/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= +github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= +github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= +github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0= +github.com/pion/transport/v3 v3.0.7 h1:iRbMH05BzSNwhILHoBoAPxoB9xQgOaJk+591KC9P1o0= +github.com/pion/transport/v3 v3.0.7/go.mod h1:YleKiTZ4vqNxVwh77Z0zytYi7rXHl7j6uPLGhhz9rwo= +github.com/pion/turn/v2 v2.1.3/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= +github.com/pion/turn/v2 v2.1.6 h1:Xr2niVsiPTB0FPtt+yAWKFUkU1eotQbGgpTIld4x1Gc= +github.com/pion/turn/v2 v2.1.6/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= +github.com/pion/webrtc/v3 v3.3.5 h1:ZsSzaMz/i9nblPdiAkZoP+E6Kmjw+jnyq3bEmU3EtRg= +github.com/pion/webrtc/v3 v3.3.5/go.mod h1:liNa+E1iwyzyXqNUwvoMRNQ10x8h8FOeJKL8RkIbamE= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -1440,16 +1504,16 @@ github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/ github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= -github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM= -github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= -github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY= -github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= +github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= +github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= +github.com/quic-go/quic-go v0.48.2 h1:wsKXZPeGWpMpCGSWqOcqpW2wZYic/8T3aqiOID0/KWE= +github.com/quic-go/quic-go v0.48.2/go.mod h1:yBgs3rWBOADpga7F+jJsb6Ybg1LSYiQvwWlLX+/6HMs= +github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 h1:4WFk6u3sOT6pLa1kQ50ZVdm8BQFgJNA117cepZxtLIg= +github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66/go.mod h1:Vp72IJajgeOL6ddqrAhmp7IM9zbTcgkQxD/YdxrVwMw= github.com/rancher/dynamiclistener v0.6.0-rc1 h1:Emwf9o7PMLdQNv4lvFx7xJKxDuDa4Y69GvVEGU9U9Js= github.com/rancher/dynamiclistener v0.6.0-rc1/go.mod h1:BIPgJ8xFSUyuTyGvRMVt++S1qjD3+7Ptvq1TXl6hcTM= -github.com/rancher/lasso v0.0.0-20240724174736-24ab3dbf26f0 h1:rM56SuQHkXyzPqldBDMdBZ8H4tOzyfbKxMlGyKnTQF8= -github.com/rancher/lasso v0.0.0-20240724174736-24ab3dbf26f0/go.mod h1:A/y3BLQkxZXYD60MNDRwAG9WGxXfvd6Z6gWR/a8wPw8= +github.com/rancher/lasso v0.0.0-20250109193533-00757eec2dbd h1:W4hWtKB8A2SSJlxkphvzwA+RkiOrgHg9Gytc78S0pvk= +github.com/rancher/lasso v0.0.0-20250109193533-00757eec2dbd/go.mod h1:IxgTBO55lziYhTEETyVKiT8/B5Rg92qYiRmcIIYoPgI= github.com/rancher/permissions v0.0.0-20240523180510-4001d3d637f7 h1:0Kg2SGoMeU1ll4xPi4DE0+qNHLFO/U5MwtK0WrIdK+o= github.com/rancher/permissions v0.0.0-20240523180510-4001d3d637f7/go.mod h1:fsbs0YOsGn1ofPD5p+BuI4qDhbMbSJtTegKt6Ucna+c= github.com/rancher/remotedialer v0.4.1 h1:jwOf2kPRjBBpSFofv1OuZHWaYHeC9Eb6/XgDvbkoTgc= @@ -1470,12 +1534,13 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rootless-containers/rootlesskit v1.0.1 h1:jepqW1txFSowKSMAEkVhWH3Oa1TCY9S400MVYe/6Iro= github.com/rootless-containers/rootlesskit v1.0.1/go.mod h1:t2UAiYagxrJ+wmpFAUIZPcqsm4k2B7ve6g7lILKbloc= -github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -1543,8 +1608,8 @@ github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY52 github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= @@ -1552,8 +1617,9 @@ github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSW github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -1583,9 +1649,11 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -1631,6 +1699,9 @@ github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSD github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= +github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= +github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU= +github.com/wlynxg/anet v0.0.5/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= @@ -1690,8 +1761,9 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1: go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0/go.mod h1:rdENBZMT2OE6Ne/KLwpiXudnAsbdrdBaqBvTN8M8BgA= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= go.opentelemetry.io/contrib/propagators/b3 v1.19.0 h1:ulz44cpm6V5oAeg5Aw9HyqGFMS6XM7untlMEhD7YzzA= go.opentelemetry.io/contrib/propagators/b3 v1.19.0/go.mod h1:OzCmE2IVS+asTI+odXQstRGVfXQ4bXv9nMBRK0nNyqQ= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= @@ -1702,21 +1774,22 @@ go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znn go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= go.opentelemetry.io/otel v1.23.0/go.mod h1:YCycw9ZeKhcJFrb34iVSkyT0iczq/zYDtZYFufObyB0= go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0/go.mod h1:GijYcYmNpX1KazD5JmWGsi4P7dDTTTnfv1UbGn84MnU= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0/go.mod h1:vNUq47TGFioo+ffTSnKNdob241vePmtNZnAODKapKd0= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 h1:FFeLy03iVTXP6ffeN2iXrxfGsZGCjVx0/4KlizjyBwU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0/go.mod h1:TMu73/k1CP8nBUpDLc71Wj/Kf7ZS9FK5b53VapRsP9o= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03ymgYhPKmeXGk5Zu+cIZOlVzd9Zv7QIiyItjFBU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= go.opentelemetry.io/otel/metric v1.18.0/go.mod h1:nNSpsVDjWGfb7chbRLUNW+PBNdcSTHD4Uu5pfFMOI0k= go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= @@ -1724,14 +1797,16 @@ go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzu go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= go.opentelemetry.io/otel/metric v1.23.0/go.mod h1:MqUW2X2a6Q8RN96E2/nqNoT+z9BSms20Jb7Bbp+HiTo= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/otel/trace v1.18.0/go.mod h1:T2+SGJGuYZY3bjj5rgh/hN7KIrlpWC5nS8Mjvzckz+0= go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= @@ -1740,8 +1815,9 @@ go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+ go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= go.opentelemetry.io/otel/trace v1.23.0/go.mod h1:GSGTbIClEsuZrGIzoEHqsVfxgn5UkggkflQwDScNUsk= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= @@ -1751,21 +1827,19 @@ go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274 go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= -go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= -go.uber.org/dig v1.17.1 h1:Tga8Lz8PcYNsWsyHMZ1Vm0OQOUaJNDyvPImgbAu9YSc= -go.uber.org/dig v1.17.1/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= -go.uber.org/fx v1.20.1 h1:zVwVQGS8zYvhh9Xxcu4w1M6ESyeMzebzj2NbSayZ4Mk= -go.uber.org/fx v1.20.1/go.mod h1:iSYNbHf2y55acNCwCXKx7LbWb5WG1Bnue5RDXz1OREg= +go.uber.org/dig v1.18.0 h1:imUL1UiY0Mg4bqbFfsRQO5G4CGRBec/ZujWTvSVp3pw= +go.uber.org/dig v1.18.0/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= +go.uber.org/fx v1.23.0 h1:lIr/gYWQGfTwGcSXWXu4vP5Ws6iqnNEIY+F/aFzCKTg= +go.uber.org/fx v1.23.0/go.mod h1:o/D9n+2mLP6v1EG+qsdT1O8wKopYAsqZasju97SDFCU= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= +go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= @@ -1774,7 +1848,6 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= @@ -1801,8 +1874,8 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67 h1:1UoZQm6f0P/ZO0w1Ri+f+ifG/gXhegadRdwBIXEFWDo= +golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1851,8 +1924,9 @@ golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= -golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1894,8 +1968,12 @@ golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCA golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= -golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= +golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1918,18 +1996,22 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1951,8 +2033,11 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1963,8 +2048,8 @@ golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2049,8 +2134,9 @@ golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58 golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= -golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= -golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= +golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2068,8 +2154,8 @@ gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -gonum.org/v1/gonum v0.13.0 h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM= -gonum.org/v1/gonum v0.13.0/go.mod h1:/WPYRckkfWrhWefxyYTfrTtQR0KH4iyHNuzxqXAKyAU= +gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= +gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -2139,8 +2225,13 @@ google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7I google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw= google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= google.golang.org/api v0.166.0/go.mod h1:4FcBc686KFi7QI/U51/2GKKevfZMpM17sCdibqe/bSA= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.167.0/go.mod h1:4FcBc686KFi7QI/U51/2GKKevfZMpM17sCdibqe/bSA= google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/api v0.170.0/go.mod h1:/xql9M2btF85xac/VAm4PsLMTLVGUOpq4BE9R8jyNy8= +google.golang.org/api v0.177.0/go.mod h1:srbhue4MLjkjbkux5p3dw/ocYOSZTaIEvf7bCOnFQDw= +google.golang.org/api v0.211.0/go.mod h1:XOloB4MXFH4UTlQSGuNUxw0UT74qdENK8d6JNsXKLi0= +google.golang.org/api v0.215.0 h1:jdYF4qnyczlEz2ReWIsosNLDuzXyvFHJtI5gcr0J7t0= +google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2166,10 +2257,14 @@ google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac/go. google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= google.golang.org/genproto/googleapis/api v0.0.0-20240205150955-31a09d347014/go.mod h1:rbHMSEDyoYX62nRVLOCc4Qt1HbsdytAYoVwgjiOhF3I= google.golang.org/genproto/googleapis/api v0.0.0-20240221002015-b0ce06bbee7c/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s= google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= +google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6/go.mod h1:10yRODfgim2/T8csjQsMPgZOMvtytXKTDRzH6HRGzRw= +google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697/go.mod h1:+D9ySVjN8nY8YCVjc5O7PZDIdZporIDY3KaGfJunh88= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= google.golang.org/genproto/googleapis/bytestream v0.0.0-20231030173426-d783a09b4405/go.mod h1:GRUCuLdzVqZte8+Dl/D4N25yLzcGqqWaYkeVOwulFqw= google.golang.org/genproto/googleapis/bytestream v0.0.0-20231212172506-995d672761c0/go.mod h1:guYXGPwC6jwxgWKW5Y405fKWOFNwlvUlUnzyp9i0uqo= @@ -2177,6 +2272,9 @@ google.golang.org/genproto/googleapis/bytestream v0.0.0-20240116215550-a9fa1716b google.golang.org/genproto/googleapis/bytestream v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:SCz6T5xjNXM4QFPRwxHcfChp7V+9DcXR3ay2TkHR8Tg= google.golang.org/genproto/googleapis/bytestream v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:om8Bj876Z0v9ei+RD1LnEWig7vpHQ371PUqsgjmLQEA= google.golang.org/genproto/googleapis/bytestream v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:vh/N7795ftP0AkN1w8XKqN4w1OdUKXW5Eummda+ofv8= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240311132316-a219d84964c2/go.mod h1:vh/N7795ftP0AkN1w8XKqN4w1OdUKXW5Eummda+ofv8= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240429193739-8cf5692501f6/go.mod h1:ULqtoQMxDLNRfW+pJbKA68wtIy1OiYjdIsJs3PMpzh8= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20241206012308-a4fef0638583/go.mod h1:qUsLYwbwz5ostUWtuFuXPlHmSJodC5NI/88ZlHj4M1o= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= @@ -2200,10 +2298,19 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240221002015-b0ce06bbee7c/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20240228201840-1f18d85a4ec2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/genproto/googleapis/rpc v0.0.0-20240228224816-df926f6c8641/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241206012308-a4fef0638583/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -2219,8 +2326,12 @@ google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2234,8 +2345,6 @@ gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= @@ -2274,8 +2383,8 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20240228010128-51d4e06bde70 h1:D9H6wq7PAmub2g4XUrekNWMFVI0JIz7s0F64HBPsPOw= -k8s.io/gengo v0.0.0-20240228010128-51d4e06bde70/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20240826214909-a7b603a56eb7 h1:HCbtr1pVu/ElMcTTs18KdMtH5y6f7PQvrjh1QZj3qCI= +k8s.io/gengo v0.0.0-20240826214909-a7b603a56eb7/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8= k8s.io/gengo/v2 v2.0.0-20240826214909-a7b603a56eb7 h1:cErOOTkQ3JW19o4lo91fFurouhP8NcoBvb7CkvhZZpk= k8s.io/gengo/v2 v2.0.0-20240826214909-a7b603a56eb7/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU= @@ -2288,8 +2397,8 @@ k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 h1:b2FmK8YH+QEwq/Sy2uAEhmqL5nPfGYbJOcaqjeYYZoA= k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= -lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= +lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= diff --git a/manifests/local-storage.yaml b/manifests/local-storage.yaml index 2ca24a369f34..afd58af459ca 100644 --- a/manifests/local-storage.yaml +++ b/manifests/local-storage.yaml @@ -65,9 +65,11 @@ spec: - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "NoSchedule" + nodeSelector: + kubernetes.io/os: linux containers: - name: local-path-provisioner - image: "%{SYSTEM_DEFAULT_REGISTRY}%rancher/local-path-provisioner:v0.0.30" + image: "%{SYSTEM_DEFAULT_REGISTRY}%rancher/local-path-provisioner:v0.0.31" imagePullPolicy: IfNotPresent command: - local-path-provisioner diff --git a/manifests/metrics-server/metrics-server-deployment.yaml b/manifests/metrics-server/metrics-server-deployment.yaml index ccddb6b21d43..5357469c1e25 100644 --- a/manifests/metrics-server/metrics-server-deployment.yaml +++ b/manifests/metrics-server/metrics-server-deployment.yaml @@ -38,6 +38,8 @@ spec: - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "NoSchedule" + nodeSelector: + kubernetes.io/os: linux volumes: # mount in tmp so we can safely use from-scratch images and/or read-only containers - name: tmp-dir diff --git a/package/Dockerfile b/package/Dockerfile index 193d6ce32c17..51780f7dd4ce 100644 --- a/package/Dockerfile +++ b/package/Dockerfile @@ -1,8 +1,8 @@ FROM alpine:3.20 as base RUN apk add -U ca-certificates zstd tzdata -COPY build/out/data.tar.zst / +COPY build/out/data-linux.tar.zst / RUN mkdir -p /image/etc/ssl/certs /image/run /image/var/run /image/tmp /image/lib/modules /image/lib/firmware && \ - zstdcat -d /data.tar.zst | tar -xa -C /image && \ + zstdcat -d /data-linux.tar.zst | tar -xa -C /image && \ echo "root:x:0:0:root:/:/bin/sh" > /image/etc/passwd && \ echo "root:x:0:" > /image/etc/group && \ cp /etc/ssl/certs/ca-certificates.crt /image/etc/ssl/certs/ca-certificates.crt diff --git a/pkg/agent/config/config.go b/pkg/agent/config/config.go index adaafba280c5..55d1f5ccb794 100644 --- a/pkg/agent/config/config.go +++ b/pkg/agent/config/config.go @@ -22,7 +22,6 @@ import ( "strings" "time" - "github.com/k3s-io/k3s/pkg/agent/containerd" "github.com/k3s-io/k3s/pkg/agent/proxy" agentutil "github.com/k3s-io/k3s/pkg/agent/util" "github.com/k3s-io/k3s/pkg/cli/cmds" @@ -632,51 +631,23 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N nodeConfig.AgentConfig.KubeConfigKubelet = kubeconfigKubelet nodeConfig.AgentConfig.KubeConfigKubeProxy = kubeconfigKubeproxy nodeConfig.AgentConfig.KubeConfigK3sController = kubeconfigK3sController - if envInfo.Rootless { - nodeConfig.AgentConfig.RootDir = filepath.Join(envInfo.DataDir, "agent", "kubelet") - } nodeConfig.AgentConfig.Snapshotter = envInfo.Snapshotter nodeConfig.AgentConfig.IPSECPSK = controlConfig.IPSECPSK nodeConfig.Containerd.Config = filepath.Join(envInfo.DataDir, "agent", "etc", "containerd", "config.toml") nodeConfig.Containerd.Root = filepath.Join(envInfo.DataDir, "agent", "containerd") nodeConfig.CRIDockerd.Root = filepath.Join(envInfo.DataDir, "agent", "cri-dockerd") - if !nodeConfig.Docker { - if nodeConfig.ImageServiceEndpoint != "" { - nodeConfig.AgentConfig.ImageServiceSocket = nodeConfig.ImageServiceEndpoint - } else if nodeConfig.ContainerRuntimeEndpoint == "" { - switch nodeConfig.AgentConfig.Snapshotter { - case "overlayfs": - if err := containerd.OverlaySupported(nodeConfig.Containerd.Root); err != nil { - return nil, errors.Wrapf(err, "\"overlayfs\" snapshotter cannot be enabled for %q, try using \"fuse-overlayfs\" or \"native\"", - nodeConfig.Containerd.Root) - } - case "fuse-overlayfs": - if err := containerd.FuseoverlayfsSupported(nodeConfig.Containerd.Root); err != nil { - return nil, errors.Wrapf(err, "\"fuse-overlayfs\" snapshotter cannot be enabled for %q, try using \"native\"", - nodeConfig.Containerd.Root) - } - case "stargz": - if err := containerd.StargzSupported(nodeConfig.Containerd.Root); err != nil { - return nil, errors.Wrapf(err, "\"stargz\" snapshotter cannot be enabled for %q, try using \"overlayfs\" or \"native\"", - nodeConfig.Containerd.Root) - } - nodeConfig.AgentConfig.ImageServiceSocket = "/run/containerd-stargz-grpc/containerd-stargz-grpc.sock" - } - } else { - nodeConfig.AgentConfig.ImageServiceSocket = nodeConfig.ContainerRuntimeEndpoint - } - } nodeConfig.Containerd.Opt = filepath.Join(envInfo.DataDir, "agent", "containerd") nodeConfig.Containerd.Log = filepath.Join(envInfo.DataDir, "agent", "containerd", "containerd.log") nodeConfig.Containerd.Registry = filepath.Join(envInfo.DataDir, "agent", "etc", "containerd", "certs.d") nodeConfig.Containerd.NoDefault = envInfo.ContainerdNoDefault nodeConfig.Containerd.NonrootDevices = envInfo.ContainerdNonrootDevices nodeConfig.Containerd.Debug = envInfo.Debug - applyContainerdStateAndAddress(nodeConfig) - applyCRIDockerdAddress(nodeConfig) - applyContainerdQoSClassConfigFileIfPresent(envInfo, &nodeConfig.Containerd) nodeConfig.Containerd.Template = filepath.Join(envInfo.DataDir, "agent", "etc", "containerd", "config.toml.tmpl") + if envInfo.Rootless { + nodeConfig.AgentConfig.RootDir = filepath.Join(envInfo.DataDir, "agent", "kubelet") + } + if envInfo.BindAddress != "" { nodeConfig.AgentConfig.ListenAddress = envInfo.BindAddress } else { @@ -732,13 +703,26 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N } } - if nodeConfig.Docker { + if nodeConfig.ImageServiceEndpoint != "" { + nodeConfig.AgentConfig.ImageServiceSocket = nodeConfig.ImageServiceEndpoint + } + + if nodeConfig.ContainerRuntimeEndpoint != "" { + nodeConfig.AgentConfig.RuntimeSocket = nodeConfig.ContainerRuntimeEndpoint + } else if nodeConfig.Docker { + if err := applyCRIDockerdOSSpecificConfig(nodeConfig); err != nil { + return nil, err + } nodeConfig.AgentConfig.CNIPlugin = true nodeConfig.AgentConfig.RuntimeSocket = nodeConfig.CRIDockerd.Address - } else if nodeConfig.ContainerRuntimeEndpoint == "" { - nodeConfig.AgentConfig.RuntimeSocket = nodeConfig.Containerd.Address } else { - nodeConfig.AgentConfig.RuntimeSocket = nodeConfig.ContainerRuntimeEndpoint + if err := applyContainerdOSSpecificConfig(nodeConfig); err != nil { + return nil, err + } + if err := applyContainerdQoSClassConfigFileIfPresent(envInfo, &nodeConfig.Containerd); err != nil { + return nil, err + } + nodeConfig.AgentConfig.RuntimeSocket = nodeConfig.Containerd.Address } if controlConfig.ClusterIPRange != nil { diff --git a/pkg/agent/config/config_linux.go b/pkg/agent/config/config_linux.go index 04746bb6ea58..4059d5228127 100644 --- a/pkg/agent/config/config_linux.go +++ b/pkg/agent/config/config_linux.go @@ -4,25 +4,47 @@ package config import ( - "errors" "os" "path/filepath" + "github.com/k3s-io/k3s/pkg/agent/containerd" "github.com/k3s-io/k3s/pkg/cli/cmds" "github.com/k3s-io/k3s/pkg/daemons/config" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) -func applyContainerdStateAndAddress(nodeConfig *config.Node) { +// applyContainerdOSSpecificConfig sets linux-specific containerd config +func applyContainerdOSSpecificConfig(nodeConfig *config.Node) error { nodeConfig.Containerd.State = "/run/k3s/containerd" nodeConfig.Containerd.Address = filepath.Join(nodeConfig.Containerd.State, "containerd.sock") -} -func applyCRIDockerdAddress(nodeConfig *config.Node) { - nodeConfig.CRIDockerd.Address = "unix:///run/k3s/cri-dockerd/cri-dockerd.sock" + // validate that the selected snapshotter supports the filesystem at the root path. + // for stargz, also overrides the image service endpoint path. + switch nodeConfig.AgentConfig.Snapshotter { + case "overlayfs": + if err := containerd.OverlaySupported(nodeConfig.Containerd.Root); err != nil { + return errors.Wrapf(err, "\"overlayfs\" snapshotter cannot be enabled for %q, try using \"fuse-overlayfs\" or \"native\"", + nodeConfig.Containerd.Root) + } + case "fuse-overlayfs": + if err := containerd.FuseoverlayfsSupported(nodeConfig.Containerd.Root); err != nil { + return errors.Wrapf(err, "\"fuse-overlayfs\" snapshotter cannot be enabled for %q, try using \"native\"", + nodeConfig.Containerd.Root) + } + case "stargz": + if err := containerd.StargzSupported(nodeConfig.Containerd.Root); err != nil { + return errors.Wrapf(err, "\"stargz\" snapshotter cannot be enabled for %q, try using \"overlayfs\" or \"native\"", + nodeConfig.Containerd.Root) + } + nodeConfig.AgentConfig.ImageServiceSocket = "/run/containerd-stargz-grpc/containerd-stargz-grpc.sock" + } + + return nil } -func applyContainerdQoSClassConfigFileIfPresent(envInfo *cmds.Agent, containerdConfig *config.Containerd) { +// applyContainerdQoSClassConfigFileIfPresent sets linux-specific qos config +func applyContainerdQoSClassConfigFileIfPresent(envInfo *cmds.Agent, containerdConfig *config.Containerd) error { containerdConfigDir := filepath.Join(envInfo.DataDir, "agent", "etc", "containerd") blockioPath := filepath.Join(containerdConfigDir, "blockio_config.yaml") @@ -44,6 +66,14 @@ func applyContainerdQoSClassConfigFileIfPresent(envInfo *cmds.Agent, containerdC containerdConfig.RDTConfig = rdtPath } } + + return nil +} + +// applyCRIDockerdOSSpecificConfig sets linux-specific cri-dockerd config +func applyCRIDockerdOSSpecificConfig(nodeConfig *config.Node) error { + nodeConfig.CRIDockerd.Address = "unix:///run/k3s/cri-dockerd/cri-dockerd.sock" + return nil } // configureACL will configure an Access Control List for the specified file. diff --git a/pkg/agent/config/config_windows.go b/pkg/agent/config/config_windows.go index 10f6973d4e3b..a926f483b5bc 100644 --- a/pkg/agent/config/config_windows.go +++ b/pkg/agent/config/config_windows.go @@ -15,17 +15,25 @@ import ( "golang.org/x/sys/windows" ) -func applyContainerdStateAndAddress(nodeConfig *config.Node) { +// applyContainerdOSSpecificConfig sets windows-specific containerd config +func applyContainerdOSSpecificConfig(nodeConfig *config.Node) error { + nodeConfig.AgentConfig.Snapshotter = "windows" nodeConfig.Containerd.State = filepath.Join(nodeConfig.Containerd.Root, "state") nodeConfig.Containerd.Address = "npipe:////./pipe/containerd-containerd" + nodeConfig.DefaultRuntime = "runhcs-wcow-process" + return nil } -func applyCRIDockerdAddress(nodeConfig *config.Node) { - nodeConfig.CRIDockerd.Address = "npipe:////.pipe/cri-dockerd" +// applyContainerdQoSClassConfigFileIfPresent sets windows-specific qos config +func applyContainerdQoSClassConfigFileIfPresent(envInfo *cmds.Agent, containerdConfig *config.Containerd) error { + // QoS-class resource management not supported on windows. + return nil } -func applyContainerdQoSClassConfigFileIfPresent(envInfo *cmds.Agent, containerdConfig *config.Containerd) { - // QoS-class resource management not supported on windows. +// applyCRIDockerdOSSpecificConfig sets windows-specific cri-dockerd config +func applyCRIDockerdOSSpecificConfig(nodeConfig *config.Node) error { + nodeConfig.CRIDockerd.Address = "npipe:////.pipe/cri-dockerd" + return nil } // configureACL will configure an Access Control List for the specified file, diff --git a/pkg/agent/containerd/config.go b/pkg/agent/containerd/config.go index 9b01ac06f88e..6eb752de49fa 100644 --- a/pkg/agent/containerd/config.go +++ b/pkg/agent/containerd/config.go @@ -53,7 +53,7 @@ func writeContainerdHosts(cfg *config.Node, containerdConfig templates.Container // Write out new templates for host, config := range hosts { - hostDir := filepath.Join(cfg.Containerd.Registry, host) + hostDir := filepath.Join(cfg.Containerd.Registry, hostDirectory(host)) hostsFile := filepath.Join(hostDir, "hosts.toml") hostsTemplate, err := templates.ParseHostsTemplateFromConfig(templates.HostsTomlTemplate, config) if err != nil { diff --git a/pkg/agent/containerd/config_linux.go b/pkg/agent/containerd/config_linux.go index 79f95e8d1474..fcf3b98b228e 100644 --- a/pkg/agent/containerd/config_linux.go +++ b/pkg/agent/containerd/config_linux.go @@ -27,6 +27,12 @@ const ( runtimesPath = "/usr/local/nvidia/toolkit:/opt/kwasm/bin" ) +// hostDirectory returns the name of the host dir for a given registry. +// This is a no-op on linux, as all possible host:port strings are valid paths. +func hostDirectory(host string) string { + return host +} + func getContainerdArgs(cfg *config.Node) []string { args := []string{ "containerd", diff --git a/pkg/agent/containerd/config_test.go b/pkg/agent/containerd/config_test.go index 98a948a22435..5c5066a68b0f 100644 --- a/pkg/agent/containerd/config_test.go +++ b/pkg/agent/containerd/config_test.go @@ -1500,7 +1500,7 @@ func Test_UnitGetHostConfigs(t *testing.T) { for host, config := range got { hostsTemplate, err := templates.ParseHostsTemplateFromConfig(templates.HostsTomlTemplate, config) assert.NoError(t, err, "ParseHostTemplateFromConfig for %s", host) - t.Logf("%s/hosts.d/%s/hosts.toml\n%s", tempDir, host, hostsTemplate) + t.Logf("%s/hosts.d/%s/hosts.toml\n%s", tempDir, hostDirectory(host), hostsTemplate) } // Confirm that the main containerd config.toml renders properly diff --git a/pkg/agent/containerd/config_windows.go b/pkg/agent/containerd/config_windows.go index 4172ad315e8f..9d10fc2378d2 100644 --- a/pkg/agent/containerd/config_windows.go +++ b/pkg/agent/containerd/config_windows.go @@ -4,6 +4,8 @@ package containerd import ( + "net" + "github.com/containerd/containerd" "github.com/k3s-io/k3s/pkg/agent/templates" "github.com/k3s-io/k3s/pkg/daemons/config" @@ -13,6 +15,16 @@ import ( "k8s.io/kubernetes/pkg/kubelet/util" ) +// hostDirectory returns the name of the host dir for a given registry. +// Colons are not allowed in windows paths, so convert `:port` to `_port_`. +// Ref: https://github.com/containerd/containerd/blob/v1.7.25/remotes/docker/config/hosts.go#L291-L298 +func hostDirectory(host string) string { + if host, port, err := net.SplitHostPort(host); err == nil && port != "" { + return host + "_" + port + "_" + } + return host +} + func getContainerdArgs(cfg *config.Node) []string { args := []string{ "containerd", @@ -31,8 +43,6 @@ func SetupContainerdConfig(cfg *config.Node) error { containerdConfig := templates.ContainerdConfig{ NodeConfig: cfg, DisableCgroup: true, - SystemdCgroup: false, - IsRunningInUserNS: false, PrivateRegistryConfig: cfg.AgentConfig.Registry, NoDefaultEndpoint: cfg.Containerd.NoDefault, } diff --git a/pkg/agent/netpol/netpol_windows.go b/pkg/agent/netpol/netpol_windows.go index 72aa41be62b1..8c15f5fec974 100644 --- a/pkg/agent/netpol/netpol_windows.go +++ b/pkg/agent/netpol/netpol_windows.go @@ -4,8 +4,10 @@ import ( "context" daemonconfig "github.com/k3s-io/k3s/pkg/daemons/config" + "github.com/sirupsen/logrus" ) func Run(ctx context.Context, nodeConfig *daemonconfig.Node) error { - panic("Netpol is not supported on windows ensure to pass --disable-network-policy") + logrus.Warnf("Skipping network policy controller start, netpol is not supported on windows") + return nil } diff --git a/pkg/agent/templates/templates.go b/pkg/agent/templates/templates.go index 9a66b9007472..9193a7f06322 100644 --- a/pkg/agent/templates/templates.go +++ b/pkg/agent/templates/templates.go @@ -42,6 +42,111 @@ type HostConfig struct { Endpoints []RegistryEndpoint } +const ContainerdConfigTemplate = ` +{{- /* */ -}} +# File generated by {{ .Program }}. DO NOT EDIT. Use config.toml.tmpl instead. +version = 2 +root = {{ printf "%q" .NodeConfig.Containerd.Root }} +state = {{ printf "%q" .NodeConfig.Containerd.State }} + +[plugins."io.containerd.internal.v1.opt"] + path = {{ printf "%q" .NodeConfig.Containerd.Opt }} + +[plugins."io.containerd.grpc.v1.cri"] + stream_server_address = "127.0.0.1" + stream_server_port = "10010" + enable_selinux = {{ .NodeConfig.SELinux }} + enable_unprivileged_ports = {{ .EnableUnprivileged }} + enable_unprivileged_icmp = {{ .EnableUnprivileged }} + device_ownership_from_security_context = {{ .NonrootDevices }} + +{{- if .DisableCgroup}} + disable_cgroup = true +{{end}} +{{- if .IsRunningInUserNS }} + disable_apparmor = true + restrict_oom_score_adj = true +{{end}} + +{{- if .NodeConfig.AgentConfig.PauseImage }} + sandbox_image = "{{ .NodeConfig.AgentConfig.PauseImage }}" +{{end}} + +{{- if .NodeConfig.AgentConfig.Snapshotter }} +[plugins."io.containerd.grpc.v1.cri".containerd] + snapshotter = "{{ .NodeConfig.AgentConfig.Snapshotter }}" + disable_snapshot_annotations = {{ if eq .NodeConfig.AgentConfig.Snapshotter "stargz" }}false{{else}}true{{end}} + {{ if .NodeConfig.DefaultRuntime }}default_runtime_name = "{{ .NodeConfig.DefaultRuntime }}"{{end}} +{{ if eq .NodeConfig.AgentConfig.Snapshotter "stargz" }} +{{ if .NodeConfig.AgentConfig.ImageServiceSocket }} +[plugins."io.containerd.snapshotter.v1.stargz"] +cri_keychain_image_service_path = "{{ .NodeConfig.AgentConfig.ImageServiceSocket }}" +[plugins."io.containerd.snapshotter.v1.stargz".cri_keychain] +enable_keychain = true +{{end}} + +[plugins."io.containerd.snapshotter.v1.stargz".registry] + config_path = {{ printf "%q" .NodeConfig.Containerd.Registry }} + +{{ if .PrivateRegistryConfig }} +{{range $k, $v := .PrivateRegistryConfig.Configs }} +{{ if $v.Auth }} +[plugins."io.containerd.snapshotter.v1.stargz".registry.configs."{{$k}}".auth] + {{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}} + {{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}} + {{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}} + {{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}} +{{end}} +{{end}} +{{end}} +{{end}} +{{end}} + +{{- if not .NodeConfig.NoFlannel }} +[plugins."io.containerd.grpc.v1.cri".cni] + bin_dir = {{ printf "%q" .NodeConfig.AgentConfig.CNIBinDir }} + conf_dir = {{ printf "%q" .NodeConfig.AgentConfig.CNIConfDir }} +{{end}} + +{{- if or .NodeConfig.Containerd.BlockIOConfig .NodeConfig.Containerd.RDTConfig }} +[plugins."io.containerd.service.v1.tasks-service"] + {{ if .NodeConfig.Containerd.BlockIOConfig }}blockio_config_file = {{ printf "%q" .NodeConfig.Containerd.BlockIOConfig }}{{end}} + {{ if .NodeConfig.Containerd.RDTConfig }}rdt_config_file = {{ printf "%q" .NodeConfig.Containerd.RDTConfig }}{{end}} +{{end}} + +[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] + runtime_type = "io.containerd.runc.v2" + +[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] + SystemdCgroup = {{ .SystemdCgroup }} + +[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runhcs-wcow-process] + runtime_type = "io.containerd.runhcs.v1" + +[plugins."io.containerd.grpc.v1.cri".registry] + config_path = {{ printf "%q" .NodeConfig.Containerd.Registry }} + +{{ if .PrivateRegistryConfig }} +{{range $k, $v := .PrivateRegistryConfig.Configs }} +{{ if $v.Auth }} +[plugins."io.containerd.grpc.v1.cri".registry.configs."{{$k}}".auth] + {{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}} + {{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}} + {{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}} + {{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}} +{{end}} +{{end}} +{{end}} + +{{range $k, $v := .ExtraRuntimes}} +[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."{{$k}}"] + runtime_type = "{{$v.RuntimeType}}" +[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."{{$k}}".options] + BinaryName = "{{$v.BinaryName}}" + SystemdCgroup = {{ $.SystemdCgroup }} +{{end}} +` + var HostsTomlHeader = "# File generated by " + version.Program + ". DO NOT EDIT.\n" const HostsTomlTemplate = ` diff --git a/pkg/agent/templates/templates_linux.go b/pkg/agent/templates/templates_linux.go index dffce1737ccb..b3950a23a9c4 100644 --- a/pkg/agent/templates/templates_linux.go +++ b/pkg/agent/templates/templates_linux.go @@ -6,105 +6,6 @@ import ( "text/template" ) -const ContainerdConfigTemplate = ` -{{- /* */ -}} -# File generated by {{ .Program }}. DO NOT EDIT. Use config.toml.tmpl instead. -version = 2 - -[plugins."io.containerd.internal.v1.opt"] - path = "{{ .NodeConfig.Containerd.Opt }}" -[plugins."io.containerd.grpc.v1.cri"] - stream_server_address = "127.0.0.1" - stream_server_port = "10010" - enable_selinux = {{ .NodeConfig.SELinux }} - enable_unprivileged_ports = {{ .EnableUnprivileged }} - enable_unprivileged_icmp = {{ .EnableUnprivileged }} - device_ownership_from_security_context = {{ .NonrootDevices }} - -{{- if .DisableCgroup}} - disable_cgroup = true -{{end}} -{{- if .IsRunningInUserNS }} - disable_apparmor = true - restrict_oom_score_adj = true -{{end}} - -{{- if .NodeConfig.AgentConfig.PauseImage }} - sandbox_image = "{{ .NodeConfig.AgentConfig.PauseImage }}" -{{end}} - -{{- if .NodeConfig.AgentConfig.Snapshotter }} -[plugins."io.containerd.grpc.v1.cri".containerd] - snapshotter = "{{ .NodeConfig.AgentConfig.Snapshotter }}" - disable_snapshot_annotations = {{ if eq .NodeConfig.AgentConfig.Snapshotter "stargz" }}false{{else}}true{{end}} - {{ if .NodeConfig.DefaultRuntime }}default_runtime_name = "{{ .NodeConfig.DefaultRuntime }}"{{end}} -{{ if eq .NodeConfig.AgentConfig.Snapshotter "stargz" }} -{{ if .NodeConfig.AgentConfig.ImageServiceSocket }} -[plugins."io.containerd.snapshotter.v1.stargz"] -cri_keychain_image_service_path = "{{ .NodeConfig.AgentConfig.ImageServiceSocket }}" -[plugins."io.containerd.snapshotter.v1.stargz".cri_keychain] -enable_keychain = true -{{end}} - -[plugins."io.containerd.snapshotter.v1.stargz".registry] - config_path = "{{ .NodeConfig.Containerd.Registry }}" - -{{ if .PrivateRegistryConfig }} -{{range $k, $v := .PrivateRegistryConfig.Configs }} -{{ if $v.Auth }} -[plugins."io.containerd.snapshotter.v1.stargz".registry.configs."{{$k}}".auth] - {{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}} - {{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}} - {{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}} - {{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}} -{{end}} -{{end}} -{{end}} -{{end}} -{{end}} - -{{- if not .NodeConfig.NoFlannel }} -[plugins."io.containerd.grpc.v1.cri".cni] - bin_dir = "{{ .NodeConfig.AgentConfig.CNIBinDir }}" - conf_dir = "{{ .NodeConfig.AgentConfig.CNIConfDir }}" -{{end}} - -{{- if or .NodeConfig.Containerd.BlockIOConfig .NodeConfig.Containerd.RDTConfig }} -[plugins."io.containerd.service.v1.tasks-service"] - {{ if .NodeConfig.Containerd.BlockIOConfig }}blockio_config_file = "{{ .NodeConfig.Containerd.BlockIOConfig }}"{{end}} - {{ if .NodeConfig.Containerd.RDTConfig }}rdt_config_file = "{{ .NodeConfig.Containerd.RDTConfig }}"{{end}} -{{end}} - -[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] - runtime_type = "io.containerd.runc.v2" - -[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] - SystemdCgroup = {{ .SystemdCgroup }} - -[plugins."io.containerd.grpc.v1.cri".registry] - config_path = "{{ .NodeConfig.Containerd.Registry }}" - -{{ if .PrivateRegistryConfig }} -{{range $k, $v := .PrivateRegistryConfig.Configs }} -{{ if $v.Auth }} -[plugins."io.containerd.grpc.v1.cri".registry.configs."{{$k}}".auth] - {{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}} - {{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}} - {{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}} - {{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}} -{{end}} -{{end}} -{{end}} - -{{range $k, $v := .ExtraRuntimes}} -[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."{{$k}}"] - runtime_type = "{{$v.RuntimeType}}" -[plugins."io.containerd.grpc.v1.cri".containerd.runtimes."{{$k}}".options] - BinaryName = "{{$v.BinaryName}}" - SystemdCgroup = {{ $.SystemdCgroup }} -{{end}} -` - // Linux config templates do not need fixups var templateFuncs = template.FuncMap{ "deschemify": func(s string) string { diff --git a/pkg/agent/templates/templates_windows.go b/pkg/agent/templates/templates_windows.go index 5cccd7e43d08..4bd82dacfbc8 100644 --- a/pkg/agent/templates/templates_windows.go +++ b/pkg/agent/templates/templates_windows.go @@ -9,140 +9,6 @@ import ( "text/template" ) -const ContainerdConfigTemplate = ` -{{- /* */ -}} -# File generated by {{ .Program }}. DO NOT EDIT. Use config.toml.tmpl instead. -version = 2 -root = {{ printf "%q" .NodeConfig.Containerd.Root }} -state = {{ printf "%q" .NodeConfig.Containerd.State }} -plugin_dir = "" -disabled_plugins = [] -required_plugins = [] -oom_score = 0 - -[grpc] - address = "{{ deschemify .NodeConfig.Containerd.Address }}" - tcp_address = "" - tcp_tls_cert = "" - tcp_tls_key = "" - uid = 0 - gid = 0 - max_recv_message_size = 16777216 - max_send_message_size = 16777216 - -[ttrpc] - address = "" - uid = 0 - gid = 0 - -[debug] - address = "" - uid = 0 - gid = 0 - level = "" - -[metrics] - address = "" - grpc_histogram = false - -[cgroup] - path = "" - -[timeouts] - "io.containerd.timeout.shim.cleanup" = "5s" - "io.containerd.timeout.shim.load" = "5s" - "io.containerd.timeout.shim.shutdown" = "3s" - "io.containerd.timeout.task.state" = "2s" - -[plugins] - [plugins."io.containerd.gc.v1.scheduler"] - pause_threshold = 0.02 - deletion_threshold = 0 - mutation_threshold = 100 - schedule_delay = "0s" - startup_delay = "100ms" - [plugins."io.containerd.grpc.v1.cri"] - disable_tcp_service = true - stream_server_address = "127.0.0.1" - stream_server_port = "0" - stream_idle_timeout = "4h0m0s" - enable_selinux = false - selinux_category_range = 0 - sandbox_image = "{{ .NodeConfig.AgentConfig.PauseImage }}" - stats_collect_period = 10 - systemd_cgroup = false - enable_tls_streaming = false - max_container_log_line_size = 16384 - disable_cgroup = false - disable_apparmor = false - restrict_oom_score_adj = false - max_concurrent_downloads = 3 - disable_proc_mount = false - unset_seccomp_profile = "" - tolerate_missing_hugetlb_controller = false - disable_hugetlb_controller = false - ignore_image_defined_volumes = false - [plugins."io.containerd.grpc.v1.cri".containerd] - snapshotter = "windows" - default_runtime_name = "runhcs-wcow-process" - no_pivot = false - disable_snapshot_annotations = false - discard_unpacked_layers = false - [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime] - runtime_type = "" - runtime_engine = "" - runtime_root = "" - privileged_without_host_devices = false - base_runtime_spec = "" - [plugins."io.containerd.grpc.v1.cri".containerd.untrusted_workload_runtime] - runtime_type = "" - runtime_engine = "" - runtime_root = "" - privileged_without_host_devices = false - base_runtime_spec = "" - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runhcs-wcow-process] - runtime_type = "io.containerd.runhcs.v1" - runtime_engine = "" - runtime_root = "" - privileged_without_host_devices = false - base_runtime_spec = "" - [plugins."io.containerd.grpc.v1.cri".cni] - bin_dir = {{ printf "%q" .NodeConfig.AgentConfig.CNIBinDir }} - conf_dir = {{ printf "%q" .NodeConfig.AgentConfig.CNIConfDir }} - max_conf_num = 1 - conf_template = "" - [plugins."io.containerd.grpc.v1.cri".registry] - config_path = {{ printf "%q" .NodeConfig.Containerd.Registry }} - - {{ if .PrivateRegistryConfig }} - {{range $k, $v := .PrivateRegistryConfig.Configs }} - {{ if $v.Auth }} - [plugins."io.containerd.grpc.v1.cri".registry.configs.auth."{{$k}}"] - {{ if $v.Auth.Username }}username = {{ printf "%q" $v.Auth.Username }}{{end}} - {{ if $v.Auth.Password }}password = {{ printf "%q" $v.Auth.Password }}{{end}} - {{ if $v.Auth.Auth }}auth = {{ printf "%q" $v.Auth.Auth }}{{end}} - {{ if $v.Auth.IdentityToken }}identitytoken = {{ printf "%q" $v.Auth.IdentityToken }}{{end}} - {{end}} - {{end}} - {{end}} - [plugins."io.containerd.grpc.v1.cri".image_decryption] - key_model = "" - [plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming] - tls_cert_file = "" - tls_key_file = "" - [plugins."io.containerd.internal.v1.opt"] - path = {{ printf "%q" .NodeConfig.Containerd.Opt }} - [plugins."io.containerd.internal.v1.restart"] - interval = "10s" - [plugins."io.containerd.metadata.v1.bolt"] - content_sharing_policy = "shared" - [plugins."io.containerd.runtime.v2.task"] - platforms = ["windows/amd64", "linux/amd64"] - [plugins."io.containerd.service.v1.diff-service"] - default = ["windows", "windows-lcow"] -` - // Windows config templates need named pipe addresses fixed up var templateFuncs = template.FuncMap{ "deschemify": func(s string) string { diff --git a/pkg/cli/agent/agent.go b/pkg/cli/agent/agent.go index d42beee7d550..86bc3797baf4 100644 --- a/pkg/cli/agent/agent.go +++ b/pkg/cli/agent/agent.go @@ -6,7 +6,6 @@ import ( "fmt" "os" "path/filepath" - "runtime" "github.com/gorilla/mux" "github.com/k3s-io/k3s/pkg/agent" @@ -19,8 +18,10 @@ import ( "github.com/k3s-io/k3s/pkg/profile" "github.com/k3s-io/k3s/pkg/spegel" "github.com/k3s-io/k3s/pkg/util" + "github.com/k3s-io/k3s/pkg/util/permissions" "github.com/k3s-io/k3s/pkg/version" "github.com/k3s-io/k3s/pkg/vpn" + "github.com/pkg/errors" "github.com/rancher/wrangler/v3/pkg/signals" "github.com/sirupsen/logrus" "github.com/urfave/cli" @@ -45,8 +46,10 @@ func Run(ctx *cli.Context) error { return err } - if runtime.GOOS != "windows" && os.Getuid() != 0 && !cmds.AgentConfig.Rootless { - return fmt.Errorf("agent must be run as root, or with --rootless") + if !cmds.AgentConfig.Rootless { + if err := permissions.IsPrivileged(); err != nil { + return errors.Wrap(err, "agent requires additional privilege if not run with --rootless") + } } if cmds.AgentConfig.TokenFile != "" { diff --git a/pkg/cli/cmds/agent.go b/pkg/cli/cmds/agent.go index a86b0c1c05cd..46091a3aa8cd 100644 --- a/pkg/cli/cmds/agent.go +++ b/pkg/cli/cmds/agent.go @@ -158,7 +158,7 @@ var ( Name: "pause-image", Usage: "(agent/runtime) Customized pause image for containerd or docker sandbox", Destination: &AgentConfig.PauseImage, - Value: DefaultPauseImage, + Value: "rancher/mirrored-pause:3.6", } SnapshotterFlag = &cli.StringFlag{ Name: "snapshotter", diff --git a/pkg/cli/cmds/const_linux.go b/pkg/cli/cmds/const_linux.go index 3f95e93fad63..71e8745f14d2 100644 --- a/pkg/cli/cmds/const_linux.go +++ b/pkg/cli/cmds/const_linux.go @@ -3,6 +3,5 @@ package cmds const ( - DefaultPauseImage = "rancher/mirrored-pause:3.6" DefaultSnapshotter = "overlayfs" ) diff --git a/pkg/cli/cmds/const_windows.go b/pkg/cli/cmds/const_windows.go index f8f59c52e294..2d05392cdd42 100644 --- a/pkg/cli/cmds/const_windows.go +++ b/pkg/cli/cmds/const_windows.go @@ -4,6 +4,5 @@ package cmds const ( - DefaultPauseImage = "mcr.microsoft.com/oss/kubernetes/pause:1.4.0" - DefaultSnapshotter = "native" + DefaultSnapshotter = "windows" ) diff --git a/pkg/cli/cmds/etcd_snapshot.go b/pkg/cli/cmds/etcd_snapshot.go index 378b394f0a83..12c678d9463a 100644 --- a/pkg/cli/cmds/etcd_snapshot.go +++ b/pkg/cli/cmds/etcd_snapshot.go @@ -34,7 +34,7 @@ var EtcdSnapshotFlags = []cli.Flag{ }, &cli.StringFlag{ Name: "dir,etcd-snapshot-dir", - Usage: "(db) Directory to save etcd on-demand snapshot. (default: ${data-dir}/db/snapshots)", + Usage: "(db) Directory to save etcd on-demand snapshot. (default: ${data-dir}/server/db/snapshots)", Destination: &ServerConfig.EtcdSnapshotDir, }, &cli.StringFlag{ @@ -87,6 +87,12 @@ var EtcdSnapshotFlags = []cli.Flag{ EnvVar: "AWS_SECRET_ACCESS_KEY", Destination: &ServerConfig.EtcdS3SecretKey, }, + &cli.StringFlag{ + Name: "s3-session-token,etcd-s3-session-token", + Usage: "(db) S3 session token", + EnvVar: "AWS_SESSION_TOKEN", + Destination: &ServerConfig.EtcdS3SessionToken, + }, &cli.StringFlag{ Name: "s3-bucket,etcd-s3-bucket", Usage: "(db) S3 bucket name", diff --git a/pkg/cli/cmds/server.go b/pkg/cli/cmds/server.go index 23d2b8029fe5..ebc1424a4682 100644 --- a/pkg/cli/cmds/server.go +++ b/pkg/cli/cmds/server.go @@ -101,6 +101,7 @@ type Server struct { EtcdS3SkipSSLVerify bool EtcdS3AccessKey string EtcdS3SecretKey string + EtcdS3SessionToken string EtcdS3BucketName string EtcdS3Region string EtcdS3Folder string @@ -397,7 +398,7 @@ var ServerFlags = []cli.Flag{ }, &cli.StringFlag{ Name: "etcd-snapshot-dir", - Usage: "(db) Directory to save db snapshots. (default: ${data-dir}/db/snapshots)", + Usage: "(db) Directory to save db snapshots. (default: ${data-dir}/server/db/snapshots)", Destination: &ServerConfig.EtcdSnapshotDir, }, &cli.BoolFlag{ @@ -438,6 +439,12 @@ var ServerFlags = []cli.Flag{ EnvVar: "AWS_SECRET_ACCESS_KEY", Destination: &ServerConfig.EtcdS3SecretKey, }, + &cli.StringFlag{ + Name: "etcd-s3-session-token", + Usage: "(db) S3 session token", + EnvVar: "AWS_SESSION_TOKEN", + Destination: &ServerConfig.EtcdS3SessionToken, + }, &cli.StringFlag{ Name: "etcd-s3-bucket", Usage: "(db) S3 bucket name", diff --git a/pkg/cli/server/server.go b/pkg/cli/server/server.go index fa8e14ee061e..4664caf6561e 100644 --- a/pkg/cli/server/server.go +++ b/pkg/cli/server/server.go @@ -26,6 +26,7 @@ import ( "github.com/k3s-io/k3s/pkg/server" "github.com/k3s-io/k3s/pkg/spegel" "github.com/k3s-io/k3s/pkg/util" + "github.com/k3s-io/k3s/pkg/util/permissions" "github.com/k3s-io/k3s/pkg/version" "github.com/k3s-io/k3s/pkg/vpn" "github.com/pkg/errors" @@ -72,8 +73,10 @@ func run(app *cli.Context, cfg *cmds.Server, leaderControllers server.CustomCont return err } - if !cfg.DisableAgent && os.Getuid() != 0 && !cfg.Rootless { - return fmt.Errorf("server must run as root, or with --rootless and/or --disable-agent") + if !cfg.DisableAgent && !cfg.Rootless { + if err := permissions.IsPrivileged(); err != nil { + return errors.Wrap(err, "server requires additional privilege when not run with --rootless and/or --disable-agent") + } } if cfg.Rootless { @@ -197,6 +200,7 @@ func run(app *cli.Context, cfg *cmds.Server, leaderControllers server.CustomCont Proxy: cfg.EtcdS3Proxy, Region: cfg.EtcdS3Region, SecretKey: cfg.EtcdS3SecretKey, + SessionToken: cfg.EtcdS3SessionToken, SkipSSLVerify: cfg.EtcdS3SkipSSLVerify, Timeout: metav1.Duration{Duration: cfg.EtcdS3Timeout}, } diff --git a/pkg/clientaccess/token.go b/pkg/clientaccess/token.go index 2995d67507d7..c7b22cedae1a 100644 --- a/pkg/clientaccess/token.go +++ b/pkg/clientaccess/token.go @@ -48,6 +48,9 @@ var ( // ClientOption is a callback to mutate the http client prior to use type ClientOption func(*http.Client) +// RequestOption is a callback to mutate the http request prior to use +type RequestOption func(*http.Request) + // Info contains fields that track parsed parts of a cluster join token type Info struct { *kubeadm.BootstrapTokenString @@ -240,7 +243,7 @@ func parseToken(token string) (*Info, error) { // If the CA bundle is not empty but does not contain any valid certs, it validates using // an empty CA bundle (which will always fail). // If valid cert+key paths can be loaded from the provided paths, they are used for client cert auth. -func GetHTTPClient(cacerts []byte, certFile, keyFile string, option ...ClientOption) *http.Client { +func GetHTTPClient(cacerts []byte, certFile, keyFile string, options ...any) *http.Client { if len(cacerts) == 0 { return defaultClient } @@ -265,8 +268,10 @@ func GetHTTPClient(cacerts []byte, certFile, keyFile string, option ...ClientOpt }, } - for _, o := range option { - o(client) + for _, o := range options { + if clientOption, ok := o.(ClientOption); ok { + clientOption(client) + } } return client } @@ -278,8 +283,14 @@ func WithTimeout(d time.Duration) ClientOption { } } +func WithHeader(k, v string) RequestOption { + return func(r *http.Request) { + r.Header.Add(k, v) + } +} + // Get makes a request to a subpath of info's BaseURL -func (i *Info) Get(path string, option ...ClientOption) ([]byte, error) { +func (i *Info) Get(path string, options ...any) ([]byte, error) { u, err := url.Parse(i.BaseURL) if err != nil { return nil, err @@ -290,11 +301,12 @@ func (i *Info) Get(path string, option ...ClientOption) ([]byte, error) { } p.Scheme = u.Scheme p.Host = u.Host - return get(p.String(), GetHTTPClient(i.CACerts, i.CertFile, i.KeyFile, option...), i.Username, i.Password, i.Token()) + client := GetHTTPClient(i.CACerts, i.CertFile, i.KeyFile, options...) + return get(p.String(), client, i.Username, i.Password, i.Token(), options...) } // Put makes a request to a subpath of info's BaseURL -func (i *Info) Put(path string, body []byte, option ...ClientOption) error { +func (i *Info) Put(path string, body []byte, options ...any) error { u, err := url.Parse(i.BaseURL) if err != nil { return err @@ -305,11 +317,12 @@ func (i *Info) Put(path string, body []byte, option ...ClientOption) error { } p.Scheme = u.Scheme p.Host = u.Host - return put(p.String(), body, GetHTTPClient(i.CACerts, i.CertFile, i.KeyFile, option...), i.Username, i.Password, i.Token()) + client := GetHTTPClient(i.CACerts, i.CertFile, i.KeyFile, options...) + return put(p.String(), body, client, i.Username, i.Password, i.Token(), options...) } // Post makes a request to a subpath of info's BaseURL -func (i *Info) Post(path string, body []byte, option ...ClientOption) ([]byte, error) { +func (i *Info) Post(path string, body []byte, options ...any) ([]byte, error) { u, err := url.Parse(i.BaseURL) if err != nil { return nil, err @@ -320,7 +333,8 @@ func (i *Info) Post(path string, body []byte, option ...ClientOption) ([]byte, e } p.Scheme = u.Scheme p.Host = u.Host - return post(p.String(), body, GetHTTPClient(i.CACerts, i.CertFile, i.KeyFile, option...), i.Username, i.Password, i.Token()) + client := GetHTTPClient(i.CACerts, i.CertFile, i.KeyFile, options...) + return post(p.String(), body, client, i.Username, i.Password, i.Token(), options...) } // setServer sets the BaseURL and CACerts fields of the Info by connecting to the server @@ -402,7 +416,7 @@ func getCACerts(u url.URL) ([]byte, error) { // get makes a request to a url using a provided client and credentials, // returning the response body. -func get(u string, client *http.Client, username, password, token string) ([]byte, error) { +func get(u string, client *http.Client, username, password, token string, options ...any) ([]byte, error) { req, err := http.NewRequest(http.MethodGet, u, nil) if err != nil { return nil, err @@ -414,6 +428,12 @@ func get(u string, client *http.Client, username, password, token string) ([]byt req.SetBasicAuth(username, password) } + for _, o := range options { + if requestOption, ok := o.(RequestOption); ok { + requestOption(req) + } + } + resp, err := client.Do(req) if err != nil { return nil, err @@ -424,7 +444,7 @@ func get(u string, client *http.Client, username, password, token string) ([]byt // put makes a request to a url using a provided client and credentials, // only an error is returned -func put(u string, body []byte, client *http.Client, username, password, token string) error { +func put(u string, body []byte, client *http.Client, username, password, token string, options ...any) error { req, err := http.NewRequest(http.MethodPut, u, bytes.NewBuffer(body)) if err != nil { return err @@ -436,6 +456,12 @@ func put(u string, body []byte, client *http.Client, username, password, token s req.SetBasicAuth(username, password) } + for _, o := range options { + if requestOption, ok := o.(RequestOption); ok { + requestOption(req) + } + } + resp, err := client.Do(req) if err != nil { return err @@ -447,7 +473,7 @@ func put(u string, body []byte, client *http.Client, username, password, token s // post makes a request to a url using a provided client and credentials, // returning the response body and error. -func post(u string, body []byte, client *http.Client, username, password, token string) ([]byte, error) { +func post(u string, body []byte, client *http.Client, username, password, token string, options ...any) ([]byte, error) { req, err := http.NewRequest(http.MethodPost, u, bytes.NewBuffer(body)) if err != nil { return nil, err @@ -459,6 +485,12 @@ func post(u string, body []byte, client *http.Client, username, password, token req.SetBasicAuth(username, password) } + for _, o := range options { + if requestOption, ok := o.(RequestOption); ok { + requestOption(req) + } + } + resp, err := client.Do(req) if err != nil { return nil, err diff --git a/pkg/clientaccess/token_linux_test.go b/pkg/clientaccess/token_linux_test.go new file mode 100644 index 000000000000..9334e89bb16a --- /dev/null +++ b/pkg/clientaccess/token_linux_test.go @@ -0,0 +1,61 @@ +//go:build linux +// +build linux + +package clientaccess + +import ( + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +// Test_UnitTrustedCA confirms that tokens are validated when the server uses a cert (self-signed or otherwise) +// that is trusted by the OS CA bundle. This test must be run first, since it mucks with the system root certs. +// NOTE: +// This tests only works on Linux, where we can override the default CA bundle with the SSL_CERT_FILE env var. +// On other operating systems, the default CA bundle is loaded via OS-specific crypto APIs. +func Test_UnitTrustedCA(t *testing.T) { + assert := assert.New(t) + server := newTLSServer(t, defaultUsername, defaultPassword, false) + defer server.Close() + digest, _ := hashCA(getServerCA(server)) + + testInfo := &Info{ + CACerts: getServerCA(server), + BaseURL: server.URL, + Username: defaultUsername, + Password: defaultPassword, + caHash: digest, + } + + testCases := []struct { + token string + expected string + }{ + {defaultPassword, ""}, + {testInfo.String(), testInfo.Username}, + } + + // Point OS CA bundle at this test's CA cert to simulate a trusted CA cert. + // Note that this only works if the OS CA bundle has not yet been loaded in this process, + // as it is cached for the duration of the process lifetime. + // Ref: https://github.com/golang/go/issues/41888 + path := t.TempDir() + "/ca.crt" + writeServerCA(server, path) + os.Setenv("SSL_CERT_FILE", path) + + for _, testCase := range testCases { + info, err := ParseAndValidateToken(server.URL, testCase.token) + if assert.NoError(err, testCase) { + assert.Nil(info.CACerts, testCase) + assert.Equal(testCase.expected, info.Username, testCase.token) + } + + info, err = ParseAndValidateToken(server.URL, testCase.token, WithUser("agent")) + if assert.NoError(err, testCase) { + assert.Nil(info.CACerts, testCase) + assert.Equal("agent", info.Username, testCase) + } + } +} diff --git a/pkg/clientaccess/token_test.go b/pkg/clientaccess/token_test.go index f004f1bc2a93..fd392223df1b 100644 --- a/pkg/clientaccess/token_test.go +++ b/pkg/clientaccess/token_test.go @@ -24,60 +24,6 @@ var ( defaultToken = "abcdef.0123456789abcdef" ) -// Test_UnitTrustedCA confirms that tokens are validated when the server uses a cert (self-signed or otherwise) -// that is trusted by the OS CA bundle. This test must be run first, since it mucks with the system root certs. -func Test_UnitTrustedCA(t *testing.T) { - assert := assert.New(t) - server := newTLSServer(t, defaultUsername, defaultPassword, false) - defer server.Close() - digest, _ := hashCA(getServerCA(server)) - - testInfo := &Info{ - CACerts: getServerCA(server), - BaseURL: server.URL, - Username: defaultUsername, - Password: defaultPassword, - caHash: digest, - } - - testCases := []struct { - token string - expected string - }{ - {defaultPassword, ""}, - {testInfo.String(), testInfo.Username}, - } - - // Point OS CA bundle at this test's CA cert to simulate a trusted CA cert. - // Note that this only works if the OS CA bundle has not yet been loaded in this process, - // as it is cached for the duration of the process lifetime. - // Ref: https://github.com/golang/go/issues/41888 - path := t.TempDir() + "/ca.crt" - writeServerCA(server, path) - os.Setenv("SSL_CERT_FILE", path) - - for _, testCase := range testCases { - info, err := ParseAndValidateToken(server.URL, testCase.token) - if assert.NoError(err, testCase) { - assert.Nil(info.CACerts, testCase) - assert.Equal(testCase.expected, info.Username, testCase.token) - } - - info, err = ParseAndValidateToken(server.URL, testCase.token, WithUser("agent")) - if assert.NoError(err, testCase) { - assert.Nil(info.CACerts, testCase) - assert.Equal("agent", info.Username, testCase) - } - } - - // Confirm that the cert is actually trusted by the OS CA bundle by making a request - // with empty cert pool - testInfo.CACerts = nil - res, err := testInfo.Get("/v1-k3s/server-bootstrap") - assert.NoError(err) - assert.NotEmpty(res) -} - // Test_UnitUntrustedCA confirms that tokens are validated when the server uses a self-signed cert // that is NOT trusted by the OS CA bundle. func Test_UnitUntrustedCA(t *testing.T) { diff --git a/pkg/cloudprovider/servicelb.go b/pkg/cloudprovider/servicelb.go index 3e8a8fa4d618..6c063c65f4e8 100644 --- a/pkg/cloudprovider/servicelb.go +++ b/pkg/cloudprovider/servicelb.go @@ -54,7 +54,7 @@ const ( ) var ( - DefaultLBImage = "rancher/klipper-lb:v0.4.9" + DefaultLBImage = "rancher/klipper-lb:v0.4.10" ) func (k *k3s) Register(ctx context.Context, diff --git a/pkg/daemons/agent/agent_windows_test.go b/pkg/daemons/agent/agent_windows_test.go deleted file mode 100644 index 597ce9fd1077..000000000000 --- a/pkg/daemons/agent/agent_windows_test.go +++ /dev/null @@ -1,47 +0,0 @@ -//go:build windows -// +build windows - -package agent - -import ( - "testing" - - "github.com/k3s-io/k3s/pkg/daemons/config" -) - -func TestCheckRuntimeEndpoint(t *testing.T) { - type args struct { - cfg *config.Agent - } - tests := []struct { - name string - args args - want string - }{ - { - name: "Runtime endpoint unaltered", - args: args{ - cfg: &config.Agent{RuntimeSocket: "npipe:////./pipe/containerd-containerd"}, - }, - want: "npipe:////./pipe/containerd-containerd", - }, - { - name: "Runtime endpoint altered", - args: args{ - cfg: &config.Agent{RuntimeSocket: "//./pipe/containerd-containerd"}, - }, - want: "npipe:////./pipe/containerd-containerd", - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - argsMap := map[string]string{} - if argsMap["container-runtime-endpoint"] != tt.want { - got := argsMap["container-runtime-endpoint"] - t.Errorf("error, input was " + tt.args.cfg.RuntimeSocket + " should be " + tt.want + ", but got " + got) - } - }) - - } -} diff --git a/pkg/daemons/config/types.go b/pkg/daemons/config/types.go index 23a2f21a1244..5e7f67b70f74 100644 --- a/pkg/daemons/config/types.go +++ b/pkg/daemons/config/types.go @@ -72,6 +72,7 @@ type EtcdS3 struct { Proxy string `json:"proxy,omitempty"` Region string `json:"region,omitempty"` SecretKey string `json:"secretKey,omitempty"` + SessionToken string `json:"sessionToken,omitempty"` Insecure bool `json:"insecure,omitempty"` SkipSSLVerify bool `json:"skipSSLVerify,omitempty"` Timeout metav1.Duration `json:"timeout,omitempty"` diff --git a/pkg/datadir/datadir.go b/pkg/datadir/datadir.go index c205619cabe1..a7776af44ffc 100644 --- a/pkg/datadir/datadir.go +++ b/pkg/datadir/datadir.go @@ -1,9 +1,9 @@ package datadir import ( - "os" "path/filepath" + "github.com/k3s-io/k3s/pkg/util/permissions" "github.com/k3s-io/k3s/pkg/version" "github.com/pkg/errors" "github.com/rancher/wrangler/v3/pkg/resolvehome" @@ -22,7 +22,7 @@ func Resolve(dataDir string) (string, error) { func LocalHome(dataDir string, forceLocal bool) (string, error) { if dataDir == "" { - if os.Getuid() == 0 && !forceLocal { + if permissions.IsPrivileged() == nil && !forceLocal { dataDir = DefaultDataDir } else { dataDir = DefaultHomeDataDir diff --git a/pkg/deploy/zz_generated_bindata.go b/pkg/deploy/zz_generated_bindata.go index 88e76a47311f..c5f99621ba46 100644 --- a/pkg/deploy/zz_generated_bindata.go +++ b/pkg/deploy/zz_generated_bindata.go @@ -132,7 +132,7 @@ func corednsYaml() (*asset, error) { return a, nil } -var _localStorageYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x5f\x6f\xdb\x36\x10\x7f\xd7\xa7\xb8\x69\xcb\xcb\x50\xca\x0e\x0a\x2c\x03\xdf\xbc\xd8\x69\x03\x38\xb6\x61\xbb\x1d\x8a\xa2\x30\x68\xe9\x6c\xb3\xa1\x48\x82\xa4\xdc\x6a\x59\xbe\xfb\x40\x52\x76\xe4\x24\x4d\x6c\x6c\xd3\x8b\xa0\xe3\xdd\xef\x8e\xf7\xbb\x3f\x62\x9a\x7f\x44\x63\xb9\x92\x14\xb6\xe7\xc9\x2d\x97\x05\x85\x19\x9a\x2d\xcf\xb1\x97\xe7\xaa\x92\x2e\x29\xd1\xb1\x82\x39\x46\x13\x00\xc9\x4a\xa4\x20\x54\xce\x04\xd1\xcc\x6d\x88\x36\x6a\xcb\xbd\x3d\x1a\x62\xa3\x1d\x61\x8d\x61\x54\xb7\x9a\xe5\x48\xe1\xb6\x5a\x22\xb1\xb5\x75\x58\x26\x84\x90\xa4\xed\xd9\x2c\x59\x9e\xb1\xca\x6d\x94\xe1\x7f\x31\xc7\x95\xcc\x6e\x7f\xb7\x19\x57\x9d\x7d\x4c\x97\xa2\xb2\x0e\xcd\x54\x09\x3c\x3e\x20\xe3\xb5\x4d\x25\xd0\xd2\x84\x00\xd3\xfc\x9d\x51\x95\xb6\x14\x3e\xa7\xe9\x97\x04\xc0\xa0\x55\x95\xc9\x31\x48\xa4\x2a\xd0\xa6\x6f\x20\xd5\x3e\x2c\xeb\x50\xba\xad\x12\x55\x89\xb9\x60\xbc\x0c\x27\xb9\x92\x2b\xbe\x2e\x99\x8e\x7a\xaa\xb0\x1d\xa1\xd6\x01\x6a\x8b\x66\x19\x60\xd6\xe8\xfc\xa1\xe0\x36\xbc\xbf\x31\x97\x6f\xd2\x2f\xaf\xbb\x47\x59\x68\xc5\xa5\x7b\x36\x84\xbd\xbf\x43\x5f\xbf\x1e\x05\xbc\x45\x8f\x7a\x60\x98\x1b\x64\x0e\x03\xe8\xf3\xf1\x59\xa7\x0c\x5b\x63\x43\xc3\x53\xd0\xe6\x3c\x17\xcc\x5a\xb4\xc7\x65\xe0\x5f\x91\xfe\x07\x97\x05\x97\xeb\xe3\xb9\x5f\x72\x59\x24\xbe\x00\xa6\xb8\xf2\xca\xbb\xeb\xbd\xe0\x38\x01\x78\x5a\x6c\xc7\x94\x98\xad\x96\x5f\x31\x77\xa1\xca\x9e\x6d\xa1\xff\xab\x71\x98\xd6\xf6\x21\x5d\x7d\xd4\x42\xd5\x25\x9e\xd0\xb3\x3f\x76\x65\x35\xe6\x34\xd0\x1e\x75\xdf\x73\xcf\x79\x3d\xe4\x25\x77\x14\xba\x09\x80\x75\x86\x39\x5c\xd7\x5e\x0b\xc0\xd5\x1a\x29\x4c\x95\x10\x5c\xae\x3f\xe8\x82\x39\x0c\x72\xd3\x96\x44\x55\x80\x92\x7d\xff\x20\xd9\x96\x71\xc1\x96\x02\x29\x9c\x7b\x38\x14\x98\x3b\x65\xa2\x4e\xe9\xab\x66\xc8\x96\x28\xec\xce\x88\x69\xfd\xc2\x35\x1c\x96\x5a\xec\x5d\xb4\xef\xef\x1f\x71\x80\xf4\x1a\x16\xc0\xee\xf6\xfe\xd1\x86\x2b\xc3\x5d\x7d\xe9\x8b\x7d\x14\x92\x99\xc6\x24\x11\x3f\x33\x48\x6e\xb8\xe3\x39\x13\x69\xa3\x6f\x0f\xb8\x1f\x9d\x46\x7c\x48\xa5\x12\x68\x42\x61\xb6\x22\x06\x20\x70\x8b\x35\x85\xf4\xb2\xf1\xd7\x2b\x0a\x25\xed\x58\x8a\x3a\x6d\x69\x01\x28\xed\xad\x95\xa1\x90\x0e\xbe\x73\xeb\x6c\xfa\x0c\x48\x88\xdc\x17\x6f\xe6\x49\x37\x12\x1d\x86\xde\xcb\x95\x74\x46\x09\xa2\x05\x93\x78\x02\x2e\x00\xae\x56\x98\x3b\x0a\xe9\x48\xcd\xf2\x0d\x16\x95\xc0\x53\x1c\x97\xcc\xb7\xdc\x7f\xe5\xd1\x5f\x83\x71\x89\x66\x9f\x41\xf2\x5a\x1f\xc4\x87\x97\x6c\xed\x09\x3e\xbb\x9b\x7d\x9a\xcd\x07\x37\x8b\xfe\xe0\xaa\xf7\x61\x38\x5f\x4c\x07\xef\xae\x67\xf3\xe9\xa7\xfb\x33\xc3\x64\xbe\x41\xd3\x79\x1e\x89\x6e\xbb\x59\x37\x7b\xdb\x4d\x0f\x21\x27\x95\x10\x13\x25\x78\x5e\x53\xb8\x5e\x8d\x94\x9b\x18\xb4\xb8\xa7\xdc\x47\x5c\x96\x4c\x16\x0f\x84\x93\xd7\x42\x25\x60\x1d\x33\xae\xf5\x4d\x48\xdc\x50\x2d\x51\x07\x5d\xde\x89\xd2\xe6\x95\x7d\xb5\x4a\xee\x35\xe2\x7e\xb9\xf1\xd5\x67\xdb\xbe\x63\xb2\xa2\x05\x89\x4a\xad\xdc\x97\x5e\x7f\xc2\xdc\x86\x1e\x38\xd8\x6b\xa0\xdc\x3e\x05\x9b\x8c\xfb\x8b\x51\xef\x66\x30\x9b\xf4\x2e\x07\x2d\xb0\x2d\x13\x15\x5e\x19\x55\xd2\x03\x76\x57\x1c\x45\xd1\x0c\xef\x27\xf2\xe8\x7b\xd7\xe5\xd9\x7e\x86\x25\xed\x5b\x9d\x70\xa1\x28\xbf\x61\xfa\xd0\xdb\x93\x92\x69\xf2\xfb\x78\x0e\x1f\xae\xcb\x87\x89\x3c\x8b\xf2\x30\x39\x5e\x9c\xc9\x7e\x41\x49\xa9\x5c\xbb\xeb\x0b\x5c\xb1\x4a\xb8\x8f\x21\xd6\x79\x18\xaf\x69\xb0\x88\xa5\xd5\x5e\xc1\x8f\x7a\x89\x5b\xd2\x18\x93\x70\x4c\x21\x75\xa6\xc2\x34\x69\xd7\x29\x34\x75\xec\x0d\x5a\x81\xc4\xd4\x34\xeb\xf6\x46\x15\x48\xe1\x4f\xc6\xdd\x95\x32\x57\xdc\x58\x77\xa9\xa4\xad\x4a\x34\x89\x89\xff\x45\xbb\x9a\xee\xa3\x40\x87\x21\x31\xcd\x0e\xdd\x65\x34\x79\xf4\x8f\xf9\xe2\x6a\xda\xd7\xef\x0f\xb6\xd2\xce\xb0\x55\xca\x14\xfe\x26\x21\x21\x77\x0d\x75\x61\xc4\xf8\x02\xb9\x61\x3a\xa5\x9f\x1b\xe9\xdd\x9e\xd8\x70\x9e\xd2\x74\xd7\xd9\x93\xde\xfc\xfd\xe2\x6a\x3c\x5d\x8c\xc6\xa3\xc5\xf0\x7a\x36\x1f\xf4\x17\xa3\x71\x7f\x30\x4b\xdf\x3c\xd8\xf8\xe8\x6c\x4a\x3f\xa7\x67\x77\x3b\xbb\xe1\xf8\xb2\x37\x5c\xcc\xe6\xe3\x69\xef\xdd\x20\xa0\xdc\x9f\x85\x3f\x21\xff\xdc\x37\xef\xf8\x7d\x1f\xf6\x9b\xf3\x7f\x1f\x4d\xb0\x3f\xff\xd4\x59\x72\xd9\xb1\x9b\xc8\x25\x3a\x20\x58\xc5\xd5\x75\x5b\x70\x03\xa4\x84\xee\xc5\xc5\x05\x10\x0d\xe9\x2f\x77\x1f\xc7\xc3\x45\xff\x7a\x7a\x1f\x99\xcf\x37\xa5\x2a\xe0\xa2\xdb\x6d\x1f\x75\xb2\x2c\x0d\x6b\x90\x99\x42\x7d\x93\x47\x38\x32\x25\x10\xb3\x7a\x0c\xbf\x41\xa1\xd1\x4c\x54\x91\xd5\xac\x14\x7b\x98\x47\x24\x7a\x51\xe4\x79\xa2\x8a\x67\x37\x6e\xa4\x36\xa2\x11\xdd\x28\xb5\xd7\xea\x8f\x47\xf4\x23\x23\x38\x6d\x2c\x97\xdc\x18\x65\xb0\x20\x82\x2f\x0d\x33\x35\x59\x56\xb6\x5e\xaa\xef\xf4\x3c\x7b\xfb\x5b\x76\x7e\xec\x5c\xfe\x27\x00\x00\xff\xff\x8c\xfd\xcb\xef\x1a\x0d\x00\x00") +var _localStorageYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x5f\x6f\xdb\x36\x10\x7f\xd7\xa7\xb8\x69\xcb\xcb\x50\xca\x09\x0a\x2c\x03\xdf\xbc\xd8\x69\x03\x38\xb6\x61\xbb\x1d\x8a\xa2\x30\x68\xe9\x6c\xb3\xa1\x48\x82\xa4\xdc\x68\x59\xbe\xfb\x40\x52\x76\xe4\xfc\xb5\xb1\x8d\x2f\x82\x8e\x77\xbf\x3b\xde\xfd\x78\x47\xa6\xf9\x67\x34\x96\x2b\x49\x61\x73\x96\xdc\x70\x59\x50\x98\xa2\xd9\xf0\x1c\xbb\x79\xae\x2a\xe9\x92\x12\x1d\x2b\x98\x63\x34\x01\x90\xac\x44\x0a\x42\xe5\x4c\x10\xcd\xdc\x9a\x68\xa3\x36\xdc\xdb\xa3\x21\x36\xda\x11\xd6\x18\x46\x75\xab\x59\x8e\x14\x6e\xaa\x05\x12\x5b\x5b\x87\x65\x42\x08\x49\xda\x9e\xcd\x82\xe5\x19\xab\xdc\x5a\x19\xfe\x17\x73\x5c\xc9\xec\xe6\x77\x9b\x71\xd5\xd9\xc5\x74\x21\x2a\xeb\xd0\x4c\x94\xc0\xc3\x03\x32\x5e\xdb\x54\x02\x2d\x4d\x08\x30\xcd\x3f\x18\x55\x69\x4b\xe1\x6b\x9a\x7e\x4b\x00\x0c\x5a\x55\x99\x1c\x83\x44\xaa\x02\x6d\xfa\x0e\x52\xed\xc3\xb2\x0e\xa5\xdb\x28\x51\x95\x98\x0b\xc6\xcb\xb0\x93\x2b\xb9\xe4\xab\x92\xe9\xa8\xa7\x0a\xdb\x11\x6a\x15\xa0\x36\x68\x16\x01\x66\x85\xce\x6f\x0a\x6e\xc3\xf7\x07\x73\xf9\x3a\xfd\xf6\xb6\x7b\x94\x85\x56\x5c\xba\x67\x43\xd8\xf9\xdb\xf7\xf5\xeb\x41\xc0\x1b\xf4\xa8\x7b\x86\xb9\x41\xe6\x30\x80\x3e\x1f\x9f\x75\xca\xb0\x15\x36\x65\x78\x0a\xda\xec\xe7\x82\x59\x8b\xf6\xb0\x0c\xfc\xab\xa2\xff\xc1\x65\xc1\xe5\xea\xf0\xda\x2f\xb8\x2c\x12\x4f\x80\x09\x2e\xbd\xf2\xf6\x78\xaf\x38\x4e\x00\x9e\x92\xed\x10\x8a\xd9\x6a\xf1\x1d\x73\x17\x58\xf6\xec\x15\xfa\xbf\x2e\x0e\xd3\xda\x3e\xa4\xab\x87\x5a\xa8\xba\xc4\x23\xee\xec\xcb\xae\xac\xc6\x9c\x86\xb2\x47\xdd\x8f\xdc\xd7\xbc\x1e\xf0\x92\x3b\x0a\xa7\x09\x80\x75\x86\x39\x5c\xd5\x5e\x0b\xc0\xd5\x1a\x29\x4c\x94\x10\x5c\xae\x3e\xe9\x82\x39\x0c\x72\xd3\x96\x44\x55\x80\x92\xdd\x7e\x92\x6c\xc3\xb8\x60\x0b\x81\x14\xce\x3c\x1c\x0a\xcc\x9d\x32\x51\xa7\xf4\xac\x19\xb0\x05\x0a\xbb\x35\x62\x5a\xbf\x72\x0c\x87\xa5\x16\x3b\x17\xed\xf3\xfb\x25\xf6\x90\xde\xc2\x02\xd8\x9e\xde\x2f\x6d\xb8\x32\xdc\xd5\x17\x9e\xec\xc3\x90\xcc\x34\x26\x89\xf8\x9e\x41\x72\xc3\x1d\xcf\x99\x48\x1b\x7d\xbb\x57\xfb\xe1\x71\x85\x0f\xa9\x54\x02\x4d\x20\x66\x2b\x62\x00\x02\x37\x58\x53\x48\x2f\x1a\x7f\xdd\xa2\x50\xd2\x8e\xa4\xa8\xd3\x96\x16\x80\xd2\xde\x5a\x19\x0a\x69\xff\x96\x5b\x67\xd3\x67\x40\x42\xe4\x9e\xbc\x99\x2f\xba\x91\xe8\x30\xdc\xbd\x5c\x49\x67\x94\x20\x5a\x30\x89\x47\xe0\x02\xe0\x72\x89\xb9\xa3\x90\x0e\xd5\x34\x5f\x63\x51\x09\x3c\xc6\x71\xc9\xfc\x95\xfb\xaf\x3c\x7a\x2f\xd3\x3d\x42\xf9\xb5\xef\x51\x59\x0a\x82\xcb\xea\xb6\xd9\xf7\x47\x67\x5c\xa2\xd9\x65\x9d\xbc\x75\x77\xe2\xe2\x25\x5b\x79\x52\x9c\xdc\x4d\xbf\x4c\x67\xfd\xeb\x79\xaf\x7f\xd9\xfd\x34\x98\xcd\x27\xfd\x0f\x57\xd3\xd9\xe4\xcb\xfd\x89\x61\x32\x5f\xa3\xe9\x3c\x8f\x44\x37\xa7\xd9\x69\xf6\xfe\x2c\xdd\x87\x1c\x57\x42\x8c\x95\xe0\x79\x4d\xe1\x6a\x39\x54\x6e\x6c\xd0\xe2\x8e\x26\x3e\xe2\xb2\x64\xb2\x78\x38\x20\x79\x2b\x54\x02\xd6\x31\xe3\x5a\xff\x84\xc4\xa9\xd6\x12\x75\xd0\xe5\x9d\x28\x6d\x3e\xd9\x77\xab\xe4\x4e\x23\xce\xa4\x6b\xcf\x58\xdb\xf6\x1d\x93\x15\x2d\x48\x54\x6a\xd5\xab\xf4\xfa\x63\xe6\xd6\x74\xcf\xc1\x4e\x03\xe5\xe6\x29\xd8\x78\xd4\x9b\x0f\xbb\xd7\xfd\xe9\xb8\x7b\xd1\x6f\x81\x6d\x98\xa8\xf0\xd2\xa8\x92\xee\x31\x62\xc9\x51\x14\x4d\xc3\x7f\x22\x8f\xbe\xb7\x9d\x21\xdb\xf5\xbd\xa4\x7d\xaa\x23\x0e\x14\xe5\xd7\x4c\xef\x7b\x7b\x42\x99\x26\xbf\x8f\x7b\xf7\xfe\x88\x7d\xe8\xe2\xd3\x28\x0f\xdd\xe6\xd5\x3e\xee\x87\x9a\x94\xca\xb5\x3b\x45\x81\x4b\x56\x09\xf7\x39\xc4\x3a\x0b\x2d\x39\x0d\x16\x91\x5a\xed\xb1\xfd\xe8\xfe\x71\x4b\x1a\x63\x12\xb6\x29\xa4\xce\x54\x98\x26\x6d\x9e\x42\xc3\x63\x6f\xd0\x0a\x24\xa6\xa6\x19\xd1\xd7\xaa\x40\x0a\x7f\x32\xee\x2e\x95\xb9\xe4\xc6\xba\x0b\x25\x6d\x55\xa2\x49\x4c\x7c\x4b\x6d\x39\xdd\x43\x81\x0e\x43\x62\x9a\xb9\xbb\xcd\x68\xf2\xe8\x5d\xfa\xea\x38\xdb\xf1\xf7\x85\x49\xb6\x35\x6c\x51\x99\xc2\xdf\x24\x24\xe4\xae\x29\x5d\x68\x4b\x9e\x20\xd7\x4c\xa7\xf4\x6b\x23\xbd\xdb\x15\x36\xec\xa7\x34\xdd\xde\xec\x71\x77\xf6\x71\x7e\x39\x9a\xcc\x87\xa3\xe1\x7c\x70\x35\x9d\xf5\x7b\xf3\xe1\xa8\xd7\x9f\xa6\xef\x1e\x6c\x7c\x74\x36\xa5\x5f\xd3\x93\xbb\xad\xdd\x60\x74\xd1\x1d\xcc\xa7\xb3\xd1\xa4\xfb\xa1\x1f\x50\xee\x4f\xc2\xeb\xc9\xaf\xfb\xe6\x1b\xff\xef\xc3\x4c\x74\xfe\xc5\xd2\x04\xfb\xf3\x4f\x9d\x05\x97\x1d\xbb\x8e\xb5\x44\x07\x04\xab\x38\xee\x6e\x0a\x6e\x80\x94\x70\x7a\x7e\x7e\x0e\x44\x43\xfa\xcb\xdd\xe7\xd1\x60\xde\xbb\x9a\xdc\xc7\xca\xe7\xeb\x52\x15\x70\x7e\x7a\xda\xde\xea\x64\x59\x1a\x46\x27\x33\x85\xfa\x21\x0f\x70\x64\x4a\x20\x66\xf9\x18\x7e\x8d\x42\xa3\x19\xab\x22\xab\x59\x29\x76\x30\x8f\x8a\xe8\x45\xb1\xce\x63\x55\x3c\x3b\xa5\x63\x69\x23\x1a\xd1\x8d\x52\x7b\x14\xbf\xdc\xa2\x1f\x19\xc1\x71\x6d\xb9\xe4\xc6\x28\x83\x05\x11\x7c\x61\x98\xa9\xc9\xa2\xb2\xf5\x42\xdd\xd2\xb3\xec\xfd\x6f\xd9\xc1\x7d\xf9\x9f\x00\x00\x00\xff\xff\xf7\xfa\x34\x39\x4e\x0d\x00\x00") func localStorageYamlBytes() ([]byte, error) { return bindataRead( @@ -232,7 +232,7 @@ func metricsServerMetricsApiserviceYaml() (*asset, error) { return a, nil } -var _metricsServerMetricsServerDeploymentYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x4f\x6f\xdb\xc8\x0f\xbd\xfb\x53\x10\xfe\x21\xb7\x9f\xe2\x3f\xdd\xb4\x85\x80\x1c\x0c\x5b\xad\x0b\x24\xa9\x61\x39\xbb\xc8\xc9\x98\x8c\xe8\x78\x90\xd1\xcc\x2c\x49\xb9\xd5\x16\xfd\xee\x8b\xb1\x52\x45\x4a\x93\xa2\x8b\xdd\xea\xa0\x03\xf9\xf8\xf8\xf4\x86\x23\x26\x49\x32\x50\xc1\xfc\x8e\xc4\xc6\xbb\x14\x0e\x93\xc1\xbd\x71\x45\x0a\x39\xd2\xc1\x68\x9c\x69\xed\x2b\x27\x83\x12\x45\x15\x4a\x54\x3a\x00\x70\xaa\xc4\x14\x4a\x14\x32\x9a\x13\x46\x3a\x20\x3d\x84\x39\x28\x8d\x29\xdc\x57\xb7\x98\x70\xcd\x82\xe5\xe0\x69\x07\x15\x02\x8f\xda\x36\x0b\x0c\xd6\xd7\x25\xfe\xab\x16\x00\x56\xdd\xa2\xe5\x58\x09\x70\xff\x96\x13\x15\xc2\x77\xe5\x1c\x50\x47\x04\xe1\xc1\x44\x29\x4b\xc3\xe2\xa9\xbe\x30\xa5\x91\x14\xc6\x03\x00\x16\x52\x82\x77\x75\xc3\x23\x75\xc0\x14\xd6\xde\x5a\xe3\xee\xae\x43\xa1\x04\x8f\x71\xea\x46\x1a\x28\x40\xa9\x3e\x5f\x3b\x75\x50\xc6\xaa\x5b\x8b\x29\x4c\x22\x1d\x5a\xd4\xe2\xa9\xc1\x94\x4a\xf4\xfe\xa2\xa3\xf3\x65\xa5\x00\x82\x65\xb0\x2d\x7d\xd7\x99\xf8\xbc\xe0\x4e\x7c\x6c\xaf\xc1\x8f\x5a\x00\x7c\x33\x24\x3e\x81\x8c\x27\x23\xf5\xdc\x2a\xe6\xab\x23\xff\xb0\x71\x37\x71\xbe\xc0\x44\x93\x11\xa3\x95\x1d\x3e\xe0\xb9\x37\x1e\x57\x2f\x0b\x12\x6f\x91\x94\x18\xef\x3a\xaa\x12\xb8\xc7\x3a\x85\xe1\xfc\x81\x75\x56\x14\xde\xf1\x47\x67\xeb\x61\x8b\x01\xf0\x21\x56\x7a\x4a\x61\x98\x7d\x36\x2c\x3c\xfc\x8e\xe0\xa8\x8d\xbc\xc5\xd3\x38\x0f\xe4\x50\x90\x4f\x8d\x1f\x69\xef\x84\xbc\x4d\x82\x55\x0e\x7f\x92\x13\x00\x77\x3b\xd4\x92\xc2\xf0\xca\xe7\x7a\x8f\x45\x65\xf1\xe7\x5b\x96\x8a\x05\xe9\xbf\xe8\x75\xf0\xb6\x2a\xb1\xb5\xeb\x7f\x50\x46\x8f\xc1\x38\x90\x32\x00\x7b\xf8\x84\xa0\x95\x03\x56\x3b\xb4\x35\x54\x8c\xb0\x23\x5f\x26\xac\x29\xce\x18\x98\x52\xdd\x21\x83\x72\xc5\xc8\x13\x10\xaa\x22\xf1\xce\xd6\x10\x4d\x51\xc6\x21\xf1\xe0\xdb\x27\x35\x93\x24\x65\x48\x0a\x43\xad\x3a\x2c\x83\xd4\x0b\x43\x29\x7c\xf9\xfa\x10\x7c\xac\x4d\x9f\x14\x3f\x7b\xea\xd0\x88\x48\x61\x78\xf2\x25\xbf\xc9\x37\xd9\xe5\x76\x91\xbd\x9b\x5d\x5f\x6c\xb6\xeb\xec\xfd\x87\x7c\xb3\xbe\xf9\x7a\x42\xca\xe9\x3d\xd2\xa8\x34\x44\x9e\xb0\x48\xfa\x54\xe9\x61\x7c\xfa\xe6\x74\xfa\x68\x9a\xa2\xbb\xde\x0c\x25\x89\x46\x92\xa8\xfc\x7c\x24\x65\xe8\x65\x18\x75\x45\x98\x04\x4f\x72\x3e\x19\x4f\xcf\xc6\xbd\x6c\x3c\x39\x8b\x92\x04\xc2\x1d\x52\x6c\xad\x8a\x82\x90\x39\x89\x97\x9e\xcf\x4f\xbe\xac\xd6\xd9\xbb\x6c\xbd\xce\x16\xdb\xd9\x62\xb1\xce\xf2\x7c\xbb\xb9\x59\x65\xf9\xd7\x93\x67\x79\x2a\xc6\xe6\x9a\xb0\x28\xa9\xf8\xd8\xb6\x07\x6c\xbe\x2c\x21\x64\x6f\xab\x78\x19\xce\x27\x67\xdc\x43\x88\xe5\x44\x9b\xb0\x47\x4a\xb8\x32\x82\x7c\xbe\xb9\xc8\xb7\xd9\x7c\xb1\xcc\xe2\x3b\x9f\x6d\xff\xf8\xb0\x59\x6e\x67\x59\xbe\x9d\x9e\xbd\xde\xbe\x9f\x5f\x6e\xf3\xe5\xec\xd5\xdb\xdf\xfe\xff\x88\x5b\xff\x14\xea\x09\xdb\x64\xfa\xf6\x1b\x6e\x7a\xf6\xfa\x25\xb6\x17\x51\x1d\xb6\xf9\x72\x36\x5f\xce\xa6\xe3\xed\xea\xe3\xc5\xcd\xe4\xd5\xf8\xec\x39\xb2\xef\x40\xad\x0b\xd1\x9c\x8a\x34\x76\xce\x38\x06\xff\xac\x90\xa5\x17\x03\xd0\xa1\x4a\x61\x32\x1e\x97\xbd\x68\x89\xa5\xa7\x3a\x85\x37\xe3\x4b\xd3\x26\xe2\x51\xf4\xa6\xa6\x99\xda\xbd\x48\xe0\x4e\x75\x3b\xdf\x2b\x4f\x12\xb9\xbb\x23\x13\x7f\x8f\x5e\xbc\xf6\x36\x85\xcd\x7c\xd5\x51\xac\x0a\xe3\x90\x79\x45\xfe\x16\xbb\x12\x23\xfd\x7b\x94\xbe\xea\xa0\x64\x9f\xc2\x28\x56\xd5\x7f\xf5\x33\xc7\xa6\x4f\x35\x01\xb0\xde\x63\x54\xbb\xdc\x6c\x56\x79\x27\x63\x9c\x11\xa3\xec\x02\xad\xaa\x73\xd4\xde\x15\xdc\x6c\xb0\x96\x10\xc9\xf8\xa2\x4d\x4d\x3b\x29\x31\x25\xfa\x4a\xda\xdc\xa4\x93\xe3\x4a\x6b\x64\xde\xec\x09\x79\xef\x6d\xd1\xcf\xee\x94\xb1\x15\x61\x27\xfb\xaa\xcd\x5a\x73\xc0\x7f\xec\x44\x2c\xfa\x05\x46\xbc\xfe\x81\x13\x93\xf1\x2f\xb7\xe2\xf8\xeb\x89\xab\xd4\x3b\xc1\xcf\xd2\x9f\x66\x55\xc4\x2d\xb7\xf6\x5e\xde\x19\x8b\xcd\x86\x4d\x41\xa8\xc2\x2e\xac\x72\x33\xbe\xf2\x2e\xc2\x9e\x4f\x5e\x33\xd2\xf1\x06\x74\x3f\x47\x59\xeb\x3f\xad\xc8\x1c\x8c\xc5\x3b\xcc\x58\x2b\x7b\x5c\xbc\x29\xec\x94\xe5\x47\x8e\x66\xbf\x5c\xc6\xa5\xf2\xcc\xcd\x78\xba\x0c\xa0\x59\x3f\xab\xe6\xc8\xe2\x7f\xf6\xef\x00\x00\x00\xff\xff\x73\x53\x17\xa1\x34\x0a\x00\x00") +var _metricsServerMetricsServerDeploymentYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x55\x41\x6f\xdb\x38\x13\xbd\xfb\x57\x0c\xfc\x21\xb7\x4f\x89\xed\x6e\xda\x42\x40\x0e\x86\xad\xd6\x05\x92\xd4\xb0\x9c\x5d\xe4\x64\x30\xd4\x38\x26\x42\x91\xdc\x99\x91\x1b\x6d\xd1\xff\xbe\xa0\x95\x2a\x52\x9a\x14\x59\xec\x56\x07\x1f\x66\xde\xbc\x79\x7e\x1c\x72\x92\x24\x19\xa8\x60\x7e\x47\x62\xe3\x5d\x0a\xfb\xf1\xe0\xce\xb8\x22\x85\x1c\x69\x6f\x34\x4e\xb5\xf6\x95\x93\x41\x89\xa2\x0a\x25\x2a\x1d\x00\x38\x55\x62\x0a\x25\x0a\x19\xcd\x09\x23\xed\x91\x1e\xc2\x1c\x94\xc6\x14\xee\xaa\x1b\x4c\xb8\x66\xc1\x72\xf0\xb4\x83\x0a\x81\x4f\xda\x36\x73\x0c\xd6\xd7\x25\xfe\xab\x16\x00\x56\xdd\xa0\xe5\x58\x09\x70\xf7\x9e\x13\x15\xc2\x0f\xe5\x1c\x50\x47\x04\xe1\xde\x44\x29\x0b\xc3\xe2\xa9\x3e\x37\xa5\x91\x14\x46\x03\x00\x16\x52\x82\xb7\x75\xc3\x23\x75\xc0\x14\x56\xde\x5a\xe3\x6e\xaf\x42\xa1\x04\x0f\x71\xea\x46\x1a\x28\x40\xa9\xee\xaf\x9c\xda\x2b\x63\xd5\x8d\xc5\x14\xc6\x91\x0e\x2d\x6a\xf1\xd4\x60\x4a\x25\x7a\x77\xde\xd1\xf9\xb2\x52\x00\xc1\x32\xd8\x96\xbe\xeb\x4c\xfc\x5e\x70\x27\x7e\xb6\xd7\xe0\x67\x2d\x00\xbe\x1b\x12\xbf\x40\xc6\x93\x91\x7a\x66\x15\xf3\xe5\x81\x7f\xd8\xb8\x9b\x38\x5f\x60\xa2\xc9\x88\xd1\xca\x0e\x1f\xf0\xdc\x1b\x8f\xcb\x97\x05\x89\xb7\x48\x4a\x8c\x77\x1d\x55\x09\xdc\x61\x9d\xc2\x70\xf6\xc0\x3a\x2d\x0a\xef\xf8\xb3\xb3\xf5\xb0\xc5\x00\xf8\x10\x2b\x3d\xa5\x30\xcc\xee\x0d\x0b\x0f\x7f\x20\x38\x68\x23\x6f\xf1\x38\xce\x03\x39\x14\xe4\x63\xe3\x4f\xb4\x77\x42\xde\x26\xc1\x2a\x87\xaf\xe4\x04\xc0\xed\x16\xb5\xa4\x30\xbc\xf4\xb9\xde\x61\x51\x59\x7c\x7d\xcb\x52\xb1\x20\xfd\x17\xbd\x62\x87\xbc\x37\x3b\x87\x93\xec\x75\xf3\x9c\x82\x35\xae\xba\x7f\xc8\xef\xbd\xad\x4a\x6c\x2d\xfe\x1f\x94\xf1\x5c\xc0\x38\x90\x32\x00\x7b\xf8\x82\xa0\x95\x03\x56\x5b\xb4\x35\x54\x8c\xb0\x25\x5f\x26\xac\x29\xce\x25\x98\x52\xdd\x22\x83\x72\xc5\x89\x27\x20\x54\x45\xe2\x9d\xad\x21\x1a\xa9\x8c\x43\xe2\xc1\x77\x1b\x9a\xe9\x93\x32\x24\x85\xa1\x56\x1e\x96\x41\xea\xb9\xa1\x14\xbe\x7e\x7b\x08\x3e\xd6\xa6\x4f\x8a\x9f\x9d\x14\x68\x44\xa4\x30\x3c\xfa\x9a\x5f\xe7\xeb\xec\x62\x33\xcf\x3e\x4c\xaf\xce\xd7\x9b\x55\xf6\xf1\x53\xbe\x5e\x5d\x7f\x3b\x22\xe5\xf4\x0e\xe9\xa4\x34\x44\x9e\xb0\x48\xfa\x54\xe9\x7e\x74\xfc\xee\x78\xf2\x68\xb4\xa2\xdb\xde\xdc\x25\x89\x46\x92\xa8\xfc\xec\x44\xca\xd0\xcb\x30\xea\x8a\x30\x09\x9e\xe4\x6c\x3c\x9a\x9c\x8e\x7a\xd9\xe8\xbf\x45\x49\x02\xe1\x16\x29\xb6\x56\x45\x41\xc8\x9c\xc4\x87\x82\xcf\x8e\xbe\x2e\x57\xd9\x87\x6c\xb5\xca\xe6\x9b\xe9\x7c\xbe\xca\xf2\x7c\xb3\xbe\x5e\x66\xf9\xb7\xa3\x67\x79\x2a\xc6\xe6\x6a\xb1\x28\xa9\xf8\xd0\xb6\x07\x6c\xfe\x59\x42\xc8\xde\x56\xf1\x02\x9d\x8d\x4f\xb9\x87\x10\xcb\x89\x36\x61\x87\x94\x70\x65\x04\xf9\x6c\x7d\x9e\x6f\xb2\xd9\x7c\x91\xc5\xdf\x7c\xba\xf9\xe3\xd3\x7a\xb1\x99\x66\xf9\x66\x72\xfa\x76\xf3\x71\x76\xb1\xc9\x17\xd3\x37\xef\x7f\xfb\xff\x23\x6e\xf5\x2a\xd4\x13\xb6\xf1\xe4\xfd\x77\xdc\xe4\xf4\xed\x4b\x6c\x2f\xa2\x3a\x6c\xb3\xc5\x74\xb6\x98\x4e\x46\x9b\xe5\xe7\xf3\xeb\xf1\x9b\xd1\xe9\x73\x64\x3f\x80\x5a\x17\xa2\x39\x15\x69\xec\x9c\x71\x0c\xfe\x59\x21\x4b\x2f\x06\xa0\x43\x95\xc2\x78\x34\x2a\x7b\xd1\x12\x4b\x4f\x75\x0a\xef\x46\x17\xa6\x4d\xc4\xa3\xe8\x4d\x4d\x33\xb5\x3b\x91\xc0\x9d\xea\x76\xbe\x97\x9e\x24\x72\x77\x47\x26\x3e\xa9\x5e\xbc\xf6\x36\x85\xf5\x6c\xd9\x51\xac\x0a\xe3\x90\x79\x49\xfe\x06\xbb\x12\x23\xfd\x47\x94\xbe\xea\xa0\x64\x97\xc2\x49\xac\xaa\xff\xea\x67\x0e\x4d\x9f\x6a\x02\x60\xbd\xc3\xa8\x76\xb1\x5e\x2f\xf3\x4e\xc6\x38\x23\x46\xd9\x39\x5a\x55\xe7\xa8\xbd\x2b\xb8\xd9\x7a\x2d\x21\x92\xf1\x45\x9b\x9a\x74\x52\x62\x4a\xf4\x95\xb4\xb9\x71\x27\xc7\x95\xd6\xc8\xbc\xde\x11\xf2\xce\xdb\xa2\x9f\xdd\x2a\x63\x2b\xc2\x4e\xf6\x4d\x9b\xb5\x66\x8f\xff\xd8\x89\x58\xf4\x0b\x8c\x78\xfb\x13\x27\xc6\xa3\x5f\x6e\xc5\xe1\xe9\x89\xeb\xd7\x3b\xc1\x7b\xe9\x4f\xb3\x2a\xe2\x66\x5c\x79\x2f\x1f\x8c\xc5\x66\x2b\xa7\x20\x54\x61\x17\x56\xb9\x29\x5f\x7a\x17\x61\xcf\x27\xaf\x18\xe9\x70\x03\xba\x7f\x47\x59\xeb\xbf\x2c\xc9\xec\x8d\xc5\x5b\xcc\x58\x2b\x7b\x58\xd6\x29\x6c\x95\xe5\x47\x8e\x66\xbf\x5c\xc4\xa5\xf2\xcc\xcd\x78\xba\x0c\xa0\x59\x3f\xcb\xe6\xc8\xe2\x3b\xfb\x77\x00\x00\x00\xff\xff\xf2\x89\x3e\x71\x68\x0a\x00\x00") func metricsServerMetricsServerDeploymentYamlBytes() ([]byte, error) { return bindataRead( diff --git a/pkg/etcd/etcd_test.go b/pkg/etcd/etcd_linux_test.go similarity index 99% rename from pkg/etcd/etcd_test.go rename to pkg/etcd/etcd_linux_test.go index 52f5d6d4615f..737342ff69aa 100644 --- a/pkg/etcd/etcd_test.go +++ b/pkg/etcd/etcd_linux_test.go @@ -1,3 +1,6 @@ +//go:build linux +// +build linux + package etcd import ( @@ -80,7 +83,6 @@ func generateTestHandler() http.Handler { func Test_UnitETCD_IsInitialized(t *testing.T) { type args struct { - ctx context.Context config *config.Control } tests := []struct { @@ -94,7 +96,6 @@ func Test_UnitETCD_IsInitialized(t *testing.T) { { name: "directory exists", args: args{ - ctx: context.TODO(), config: generateTestConfig(), }, setup: func(cnf *config.Control) error { @@ -113,7 +114,6 @@ func Test_UnitETCD_IsInitialized(t *testing.T) { { name: "directory does not exist", args: args{ - ctx: context.TODO(), config: generateTestConfig(), }, setup: func(cnf *config.Control) error { @@ -160,7 +160,6 @@ func Test_UnitETCD_IsInitialized(t *testing.T) { func Test_UnitETCD_Register(t *testing.T) { type args struct { - ctx context.Context config *config.Control handler http.Handler } @@ -174,7 +173,6 @@ func Test_UnitETCD_Register(t *testing.T) { { name: "standard config", args: args{ - ctx: context.TODO(), config: generateTestConfig(), handler: generateTestHandler(), }, @@ -189,7 +187,6 @@ func Test_UnitETCD_Register(t *testing.T) { { name: "with a tombstone file created", args: args{ - ctx: context.TODO(), config: generateTestConfig(), handler: generateTestHandler(), }, diff --git a/pkg/etcd/s3/config_secret.go b/pkg/etcd/s3/config_secret.go index 0b81e94b41f8..81380873cca8 100644 --- a/pkg/etcd/s3/config_secret.go +++ b/pkg/etcd/s3/config_secret.go @@ -44,14 +44,15 @@ func (c *Controller) getConfigFromSecret(secretName string) (*config.EtcdS3, err } etcdS3 := &config.EtcdS3{ - AccessKey: string(secret.Data["etcd-s3-access-key"]), - Bucket: string(secret.Data["etcd-s3-bucket"]), - Endpoint: defaultEtcdS3.Endpoint, - Folder: string(secret.Data["etcd-s3-folder"]), - Proxy: string(secret.Data["etcd-s3-proxy"]), - Region: defaultEtcdS3.Region, - SecretKey: string(secret.Data["etcd-s3-secret-key"]), - Timeout: *defaultEtcdS3.Timeout.DeepCopy(), + AccessKey: string(secret.Data["etcd-s3-access-key"]), + Bucket: string(secret.Data["etcd-s3-bucket"]), + Endpoint: defaultEtcdS3.Endpoint, + Folder: string(secret.Data["etcd-s3-folder"]), + Proxy: string(secret.Data["etcd-s3-proxy"]), + Region: defaultEtcdS3.Region, + SecretKey: string(secret.Data["etcd-s3-secret-key"]), + SessionToken: string(secret.Data["etcd-s3-session-token"]), + Timeout: *defaultEtcdS3.Timeout.DeepCopy(), } // Set endpoint from secret if set diff --git a/pkg/etcd/s3/s3.go b/pkg/etcd/s3/s3.go index 39ffecd2bc2e..6660da9cb211 100644 --- a/pkg/etcd/s3/s3.go +++ b/pkg/etcd/s3/s3.go @@ -168,6 +168,12 @@ func (c *Controller) GetClient(ctx context.Context, etcdS3 *config.EtcdS3) (*Cli } tr := http.DefaultTransport.(*http.Transport).Clone() + // Set this value so that the underlying transport round-tripper + // doesn't try to auto decode the body of objects with + // content-encoding set to `gzip`. + // Ref: https://github.com/minio/minio-go/pull/752 + tr.DisableCompression = true + // You can either disable SSL verification or use a custom CA bundle, // it doesn't make sense to do both - if verification is disabled, // the CA is not checked! @@ -199,14 +205,21 @@ func (c *Controller) GetClient(ctx context.Context, etcdS3 *config.EtcdS3) (*Cli tr.Proxy = http.ProxyURL(u) } - var creds *credentials.Credentials - if len(etcdS3.AccessKey) == 0 && len(etcdS3.SecretKey) == 0 { - creds = credentials.NewIAM("") // for running on ec2 instance - if _, err := creds.Get(); err != nil { - return nil, errors.Wrap(err, "failed to get IAM credentials") - } - } else { - creds = credentials.NewStaticV4(etcdS3.AccessKey, etcdS3.SecretKey, "") + creds := credentials.NewChainCredentials([]credentials.Provider{ + &credentials.Static{ + Value: credentials.Value{ + AccessKeyID: etcdS3.AccessKey, + SecretAccessKey: etcdS3.SecretKey, + SessionToken: etcdS3.SessionToken, + SignerType: credentials.SignatureV4, + }, + }, + &credentials.FileAWSCredentials{}, + &credentials.IAM{}, + }) + + if _, err := creds.Get(); err != nil { + return nil, errors.Wrap(err, "failed to get credentials") } opt := minio.Options{ diff --git a/pkg/etcd/snapshot/types.go b/pkg/etcd/snapshot/types.go index 00e93cc6d8ca..970fe336efdc 100644 --- a/pkg/etcd/snapshot/types.go +++ b/pkg/etcd/snapshot/types.go @@ -47,6 +47,7 @@ type S3Config struct { // Mask these fields in the embedded struct to avoid serializing their values in the snapshotFile record AccessKey string `json:"accessKey,omitempty"` ConfigSecret string `json:"configSecret,omitempty"` + SessionToken string `json:"sessionToken,omitempty"` Proxy string `json:"proxy,omitempty"` SecretKey string `json:"secretKey,omitempty"` Timeout metav1.Duration `json:"timeout,omitempty"` diff --git a/pkg/server/server.go b/pkg/server/server.go index 81958e1dc748..152855467051 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -26,6 +26,7 @@ import ( "github.com/k3s-io/k3s/pkg/server/handlers" "github.com/k3s-io/k3s/pkg/static" "github.com/k3s-io/k3s/pkg/util" + "github.com/k3s-io/k3s/pkg/util/permissions" "github.com/k3s-io/k3s/pkg/version" "github.com/pkg/errors" "github.com/rancher/wrangler/v3/pkg/apply" @@ -330,7 +331,7 @@ func addrTypesPrioTemplate(flannelExternal bool) string { func HomeKubeConfig(write, rootless bool) (string, error) { if write { - if os.Getuid() == 0 && !rootless { + if permissions.IsPrivileged() == nil && !rootless { return datadir.GlobalConfig, nil } return resolvehome.Resolve(datadir.HomeConfig) diff --git a/pkg/spegel/bootstrap.go b/pkg/spegel/bootstrap.go index b88e4040dfe5..7f79ef747ff3 100644 --- a/pkg/spegel/bootstrap.go +++ b/pkg/spegel/bootstrap.go @@ -2,7 +2,7 @@ package spegel import ( "context" - "math/rand" + "encoding/json" "os" "path/filepath" "strings" @@ -17,6 +17,7 @@ import ( "github.com/rancher/wrangler/v3/pkg/merr" "github.com/sirupsen/logrus" "github.com/spegel-org/spegel/pkg/routing" + "golang.org/x/sync/errgroup" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" @@ -39,13 +40,20 @@ func NewSelfBootstrapper() routing.Bootstrapper { return &selfBootstrapper{} } -func (s *selfBootstrapper) Run(_ context.Context, id string) error { +func (s *selfBootstrapper) Run(ctx context.Context, id string) error { s.id = id - return nil + return waitForDone(ctx) } -func (s *selfBootstrapper) Get() (*peer.AddrInfo, error) { - return peer.AddrInfoFromString(s.id) +func (s *selfBootstrapper) Get(ctx context.Context) ([]peer.AddrInfo, error) { + if s.id == "" { + return nil, errors.New("p2p peer not ready") + } + self, err := peer.AddrInfoFromString(s.id) + if err != nil { + return nil, err + } + return []peer.AddrInfo{*self}, nil } type agentBootstrapper struct { @@ -53,6 +61,8 @@ type agentBootstrapper struct { token string clientCert string clientKey string + kubeConfig string + info *clientaccess.Info } // NewAgentBootstrapper returns a p2p bootstrapper that retrieves a peer address from its server @@ -60,79 +70,104 @@ func NewAgentBootstrapper(server, token, dataDir string) routing.Bootstrapper { return &agentBootstrapper{ clientCert: filepath.Join(dataDir, "agent", "client-kubelet.crt"), clientKey: filepath.Join(dataDir, "agent", "client-kubelet.key"), + kubeConfig: filepath.Join(dataDir, "agent", "kubelet.kubeconfig"), server: server, token: token, } } -func (c *agentBootstrapper) Run(_ context.Context, _ string) error { - return nil +func (c *agentBootstrapper) Run(ctx context.Context, id string) error { + if c.server != "" && c.token != "" { + withCert := clientaccess.WithClientCertificate(c.clientCert, c.clientKey) + info, err := clientaccess.ParseAndValidateToken(c.server, c.token, withCert) + if err != nil { + return errors.Wrap(err, "failed to validate join token") + } + c.info = info + } + + client, err := util.GetClientSet(c.kubeConfig) + if err != nil { + return errors.Wrap(err, "failed to create kubernetes client") + } + nodes := client.CoreV1().Nodes() + + go wait.PollUntilContextCancel(ctx, 1*time.Second, true, func(ctx context.Context) (bool, error) { + nodeName := os.Getenv("NODE_NAME") + if nodeName == "" { + return false, nil + } + node, err := nodes.Get(ctx, nodeName, metav1.GetOptions{}) + if err != nil { + logrus.Debugf("Failed to update P2P address annotations and labels: %v", err) + return false, nil + } + + if node.Annotations == nil { + node.Annotations = map[string]string{} + } + node.Annotations[P2pAddressAnnotation] = id + if node.Labels == nil { + node.Labels = map[string]string{} + } + node.Labels[P2pEnabledLabel] = "true" + + if _, err = nodes.Update(ctx, node, metav1.UpdateOptions{}); err != nil { + logrus.Debugf("Failed to update P2P address annotations and labels: %v", err) + return false, nil + } + logrus.Infof("Node P2P address annotations and labels added: %s", id) + return true, nil + }) + return waitForDone(ctx) } -func (c *agentBootstrapper) Get() (*peer.AddrInfo, error) { +func (c *agentBootstrapper) Get(ctx context.Context) ([]peer.AddrInfo, error) { if c.server == "" || c.token == "" { return nil, errors.New("cannot get addresses without server and token") } - withCert := clientaccess.WithClientCertificate(c.clientCert, c.clientKey) - info, err := clientaccess.ParseAndValidateToken(c.server, c.token, withCert) - if err != nil { - return nil, err + if c.info == nil { + return nil, errors.New("client not ready") } - addr, err := info.Get("/v1-" + version.Program + "/p2p") + addr, err := c.info.Get("/v1-"+version.Program+"/p2p", clientaccess.WithHeader("Accept", "application/json")) if err != nil { return nil, err } - addrInfo, err := peer.AddrInfoFromString(string(addr)) - return addrInfo, err + // If the response cannot be decoded as a JSON list of addresses, fall back + // to using it as a legacy single-address response. + addrs := []string{} + if err := json.Unmarshal(addr, &addrs); err != nil { + addrs = append(addrs, string(addr)) + } + + addrInfos := []peer.AddrInfo{} + for _, addr := range addrs { + if addrInfo, err := peer.AddrInfoFromString(addr); err == nil { + addrInfos = append(addrInfos, *addrInfo) + } + } + return addrInfos, nil } type serverBootstrapper struct { controlConfig *config.Control } -// NewServerBootstrapper returns a p2p bootstrapper that returns an address from a random other cluster member. +// NewServerBootstrapper returns a p2p bootstrapper that returns an address from the Kubernetes node list func NewServerBootstrapper(controlConfig *config.Control) routing.Bootstrapper { return &serverBootstrapper{ controlConfig: controlConfig, } } -func (s *serverBootstrapper) Run(_ context.Context, id string) error { - s.controlConfig.Runtime.ClusterControllerStarts["spegel-p2p"] = func(ctx context.Context) { - nodes := s.controlConfig.Runtime.Core.Core().V1().Node() - _ = wait.PollUntilContextCancel(ctx, 1*time.Second, true, func(ctx context.Context) (bool, error) { - nodeName := os.Getenv("NODE_NAME") - if nodeName == "" { - return false, nil - } - node, err := nodes.Get(nodeName, metav1.GetOptions{}) - if err != nil { - return false, nil - } - - if node.Annotations == nil { - node.Annotations = map[string]string{} - } - node.Annotations[P2pAddressAnnotation] = id - if node.Labels == nil { - node.Labels = map[string]string{} - } - node.Labels[P2pEnabledLabel] = "true" - - if _, err = nodes.Update(node); err != nil { - return false, nil - } - logrus.Infof("Node P2P address annotations and labels added: %s", id) - return true, nil - }) - } - return nil +func (s *serverBootstrapper) Run(ctx context.Context, _ string) error { + return waitForDone(ctx) } -func (s *serverBootstrapper) Get() (addrInfo *peer.AddrInfo, err error) { +func (s *serverBootstrapper) Get(ctx context.Context) ([]peer.AddrInfo, error) { if s.controlConfig.Runtime.Core == nil { return nil, util.ErrCoreNotReady } @@ -146,8 +181,9 @@ func (s *serverBootstrapper) Get() (addrInfo *peer.AddrInfo, err error) { if err != nil { return nil, err } - for _, i := range rand.Perm(len(nodeList.Items)) { - node := nodeList.Items[i] + + addrs := []peer.AddrInfo{} + for _, node := range nodeList.Items { if node.Name == nodeName { // don't return our own address continue @@ -159,12 +195,12 @@ func (s *serverBootstrapper) Get() (addrInfo *peer.AddrInfo, err error) { if val, ok := node.Annotations[P2pAddressAnnotation]; ok { for _, addr := range strings.Split(val, ",") { if info, err := peer.AddrInfoFromString(addr); err == nil { - return info, nil + addrs = append(addrs, *info) } } } } - return nil, errors.New("no ready p2p peers found") + return addrs, nil } type chainingBootstrapper struct { @@ -172,6 +208,7 @@ type chainingBootstrapper struct { } // NewChainingBootstrapper returns a p2p bootstrapper that passes through to a list of bootstrappers. +// Addressess are returned from all boostrappers that return successfully. func NewChainingBootstrapper(bootstrappers ...routing.Bootstrapper) routing.Bootstrapper { return &chainingBootstrapper{ bootstrappers: bootstrappers, @@ -179,23 +216,38 @@ func NewChainingBootstrapper(bootstrappers ...routing.Bootstrapper) routing.Boot } func (c *chainingBootstrapper) Run(ctx context.Context, id string) error { + eg, ctx := errgroup.WithContext(ctx) + for i := range c.bootstrappers { + b := c.bootstrappers[i] + eg.Go(func() error { + return b.Run(ctx, id) + }) + } + return eg.Wait() +} + +func (c *chainingBootstrapper) Get(ctx context.Context) ([]peer.AddrInfo, error) { errs := merr.Errors{} - for _, b := range c.bootstrappers { - if err := b.Run(ctx, id); err != nil { + addrs := []peer.AddrInfo{} + for i := range c.bootstrappers { + b := c.bootstrappers[i] + as, err := b.Get(ctx) + if err != nil { errs = append(errs, err) + } else { + addrs = append(addrs, as...) } } - return merr.NewErrors(errs...) + if len(addrs) == 0 { + return nil, merr.NewErrors(errs...) + } + return addrs, nil } -func (c *chainingBootstrapper) Get() (*peer.AddrInfo, error) { - errs := merr.Errors{} - for _, b := range c.bootstrappers { - addr, err := b.Get() - if err == nil { - return addr, nil - } - errs = append(errs, err) +func waitForDone(ctx context.Context) error { + <-ctx.Done() + if err := ctx.Err(); err != nil && !errors.Is(err, context.Canceled) { + return err } - return nil, merr.NewErrors(errs...) + return nil } diff --git a/pkg/spegel/spegel.go b/pkg/spegel/spegel.go index aacdadca84c7..5e10333d44af 100644 --- a/pkg/spegel/spegel.go +++ b/pkg/spegel/spegel.go @@ -2,6 +2,7 @@ package spegel import ( "context" + "encoding/json" "fmt" "log" "net" @@ -131,7 +132,7 @@ func (c *Config) Start(ctx context.Context, nodeConfig *config.Node) error { if logrus.IsLevelEnabled(logrus.DebugLevel) { level = ipfslog.LevelDebug stdlog := log.New(logrus.StandardLogger().Writer(), "spegel ", log.LstdFlags) - logger := stdr.NewWithOptions(stdlog, stdr.Options{Verbosity: ptr.To(10)}) + logger := stdr.NewWithOptions(stdlog, stdr.Options{Verbosity: ptr.To(7)}) ctx = logr.NewContext(ctx, logger) } ipfslog.SetAllLoggers(level) @@ -197,7 +198,7 @@ func (c *Config) Start(ctx context.Context, nodeConfig *config.Node) error { } router, err := routing.NewP2PRouter(ctx, routerAddr, c.Bootstrapper, c.RegistryPort, opts...) if err != nil { - return errors.Wrap(err, "failed to create p2p router") + return errors.Wrap(err, "failed to create P2P router") } go router.Run(ctx) @@ -216,13 +217,10 @@ func (c *Config) Start(ctx context.Context, nodeConfig *config.Node) error { registry.WithLogger(logr.FromContextOrDiscard(ctx)), } reg := registry.NewRegistry(ociClient, router, registryOpts...) - regSvr := reg.Server(":" + c.RegistryPort) - - // Close router on shutdown - go func() { - <-ctx.Done() - router.Close() - }() + regSvr, err := reg.Server(":" + c.RegistryPort) + if err != nil { + return errors.Wrap(err, "failed to create embedded registry server") + } // Track images available in containerd and publish via p2p router go state.Track(ctx, ociClient, router, resolveLatestTag) @@ -232,29 +230,52 @@ func (c *Config) Start(ctx context.Context, nodeConfig *config.Node) error { return err } mRouter.PathPrefix("/v2").Handler(regSvr.Handler) - mRouter.PathPrefix("/v1-" + version.Program + "/p2p").Handler(c.peerInfo()) + mRouter.PathPrefix("/v1-{program}/p2p").Handler(c.peerInfo()) // Wait up to 5 seconds for the p2p network to find peers. This will return // immediately if the node is bootstrapping from itself. - _ = wait.PollUntilContextTimeout(ctx, time.Second, resolveTimeout, true, func(_ context.Context) (bool, error) { - return router.Ready() - }) - + if err := wait.PollUntilContextTimeout(ctx, time.Second, resolveTimeout, true, func(_ context.Context) (bool, error) { + ready, _ := router.Ready(ctx) + return ready, nil + }); err != nil { + logrus.Warnf("Failed to wait for P2P mesh to become ready, will retry in the background: %v", err) + } return nil } // peerInfo sends a peer address retrieved from the bootstrapper via HTTP func (c *Config) peerInfo() http.HandlerFunc { return http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) { + info, err := c.Bootstrapper.Get(req.Context()) + if err != nil || len(info) == 0 { + http.Error(resp, err.Error(), http.StatusInternalServerError) + return + } + + addrs := []string{} + for _, ai := range info { + for _, ma := range ai.Addrs { + addrs = append(addrs, fmt.Sprintf("%s/p2p/%s", ma, ai.ID)) + } + } + client, _, _ := net.SplitHostPort(req.RemoteAddr) - info, err := c.Bootstrapper.Get() - if err != nil { - http.Error(resp, "Internal Error", http.StatusInternalServerError) + if req.Header.Get("Accept") == "application/json" { + b, err := json.Marshal(addrs) + if err != nil { + http.Error(resp, err.Error(), http.StatusInternalServerError) + return + } + logrus.Debugf("Serving p2p peer addrs %v to client at %s", addrs, client) + resp.Header().Set("Content-Type", "application/json") + resp.WriteHeader(http.StatusOK) + resp.Write(b) return } - logrus.Debugf("Serving p2p peer addr %s to client at %s", info, client) - resp.WriteHeader(http.StatusOK) + + logrus.Debugf("Serving p2p peer addr %v to client at %s", addrs[0], client) resp.Header().Set("Content-Type", "text/plain") - fmt.Fprintf(resp, "%s/p2p/%s", info.Addrs[0].String(), info.ID.String()) + resp.WriteHeader(http.StatusOK) + resp.Write([]byte(addrs[0])) }) } diff --git a/pkg/util/permissions/permissions_others.go b/pkg/util/permissions/permissions_others.go new file mode 100644 index 000000000000..3d43c323244a --- /dev/null +++ b/pkg/util/permissions/permissions_others.go @@ -0,0 +1,18 @@ +//go:build !windows +// +build !windows + +package permissions + +import ( + "fmt" + "os" +) + +// IsPrivileged returns an error if the process is not running as root. +// Ref: https://github.com/kubernetes/kubernetes/pull/96616 +func IsPrivileged() error { + if os.Getuid() != 0 { + return fmt.Errorf("not running as root") + } + return nil +} diff --git a/pkg/util/permissions/permissions_windows.go b/pkg/util/permissions/permissions_windows.go new file mode 100644 index 000000000000..76d79f7821da --- /dev/null +++ b/pkg/util/permissions/permissions_windows.go @@ -0,0 +1,47 @@ +//go:build windows +// +build windows + +package permissions + +import ( + "fmt" + + "github.com/pkg/errors" + "golang.org/x/sys/windows" +) + +// IsPrivileged returns an error if the the process is not running as a member of the BUILTIN\Administrators group. +// Ref: https://github.com/kubernetes/kubernetes/pull/96616 +func IsPrivileged() error { + var sid *windows.SID + + // Although this looks scary, it is directly copied from the + // official windows documentation. The Go API for this is a + // direct wrap around the official C++ API. + // Ref: https://docs.microsoft.com/en-us/windows/desktop/api/securitybaseapi/nf-securitybaseapi-checktokenmembership + err := windows.AllocateAndInitializeSid( + &windows.SECURITY_NT_AUTHORITY, + 2, + windows.SECURITY_BUILTIN_DOMAIN_RID, + windows.DOMAIN_ALIAS_RID_ADMINS, + 0, 0, 0, 0, 0, 0, + &sid) + if err != nil { + return errors.Wrap(err, "failed to create Windows SID") + } + defer windows.FreeSid(sid) + + // Ref: https://github.com/golang/go/issues/28804#issuecomment-438838144 + token := windows.Token(0) + + member, err := token.IsMember(sid) + if err != nil { + return errors.Wrap(err, "failed to check group membership") + } + + if !member { + return fmt.Errorf("not running as member of BUILTIN\\Administrators group") + } + + return nil +} diff --git a/pkg/util/services/services_test.go b/pkg/util/services/services_test.go index 3df66b40352b..fb169cce2337 100644 --- a/pkg/util/services/services_test.go +++ b/pkg/util/services/services_test.go @@ -1,6 +1,7 @@ package services import ( + "path/filepath" "reflect" "testing" @@ -9,6 +10,9 @@ import ( ) func Test_UnitFilesForServices(t *testing.T) { + dataDir := filepath.Join(t.TempDir(), "k3s") + serverDir := filepath.Join(dataDir, "server") + agentDir := filepath.Join(dataDir, "agent") type args struct { controlConfig config.Control services []string @@ -25,7 +29,7 @@ func Test_UnitFilesForServices(t *testing.T) { args: args{ services: All, controlConfig: config.Control{ - DataDir: "/var/lib/rancher/k3s/server", + DataDir: serverDir, Runtime: &config.ControlRuntime{}, }, }, @@ -35,62 +39,62 @@ func Test_UnitFilesForServices(t *testing.T) { }, want: map[string][]string{ "admin": []string{ - "/var/lib/rancher/k3s/server/tls/client-admin.crt", - "/var/lib/rancher/k3s/server/tls/client-admin.key", + filepath.Join(serverDir, "tls", "client-admin.crt"), + filepath.Join(serverDir, "tls", "client-admin.key"), }, "api-server": []string{ - "/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt", - "/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key", - "/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt", - "/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key", + filepath.Join(serverDir, "tls", "client-kube-apiserver.crt"), + filepath.Join(serverDir, "tls", "client-kube-apiserver.key"), + filepath.Join(serverDir, "tls", "serving-kube-apiserver.crt"), + filepath.Join(serverDir, "tls", "serving-kube-apiserver.key"), }, "auth-proxy": []string{ - "/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt", - "/var/lib/rancher/k3s/server/tls/client-auth-proxy.key", + filepath.Join(serverDir, "tls", "client-auth-proxy.crt"), + filepath.Join(serverDir, "tls", "client-auth-proxy.key"), }, "cloud-controller": []string{ - "/var/lib/rancher/k3s/server/tls/client-k3s-cloud-controller.crt", - "/var/lib/rancher/k3s/server/tls/client-k3s-cloud-controller.key", + filepath.Join(serverDir, "tls", "client-k3s-cloud-controller.crt"), + filepath.Join(serverDir, "tls", "client-k3s-cloud-controller.key"), }, "controller-manager": []string{ - "/var/lib/rancher/k3s/server/tls/client-controller.crt", - "/var/lib/rancher/k3s/server/tls/client-controller.key", + filepath.Join(serverDir, "tls", "client-controller.crt"), + filepath.Join(serverDir, "tls", "client-controller.key"), }, "etcd": []string{ - "/var/lib/rancher/k3s/server/tls/etcd/client.crt", - "/var/lib/rancher/k3s/server/tls/etcd/client.key", - "/var/lib/rancher/k3s/server/tls/etcd/server-client.crt", - "/var/lib/rancher/k3s/server/tls/etcd/server-client.key", - "/var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt", - "/var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key", + filepath.Join(serverDir, "tls", "etcd", "client.crt"), + filepath.Join(serverDir, "tls", "etcd", "client.key"), + filepath.Join(serverDir, "tls", "etcd", "server-client.crt"), + filepath.Join(serverDir, "tls", "etcd", "server-client.key"), + filepath.Join(serverDir, "tls", "etcd", "peer-server-client.crt"), + filepath.Join(serverDir, "tls", "etcd", "peer-server-client.key"), }, "k3s-controller": []string{ - "/var/lib/rancher/k3s/server/tls/client-k3s-controller.crt", - "/var/lib/rancher/k3s/server/tls/client-k3s-controller.key", - "/var/lib/rancher/k3s/agent/client-k3s-controller.crt", - "/var/lib/rancher/k3s/agent/client-k3s-controller.key", + filepath.Join(serverDir, "tls", "client-k3s-controller.crt"), + filepath.Join(serverDir, "tls", "client-k3s-controller.key"), + filepath.Join(agentDir, "client-k3s-controller.crt"), + filepath.Join(agentDir, "client-k3s-controller.key"), }, "kube-proxy": []string{ - "/var/lib/rancher/k3s/server/tls/client-kube-proxy.crt", - "/var/lib/rancher/k3s/server/tls/client-kube-proxy.key", - "/var/lib/rancher/k3s/agent/client-kube-proxy.crt", - "/var/lib/rancher/k3s/agent/client-kube-proxy.key", + filepath.Join(serverDir, "tls", "client-kube-proxy.crt"), + filepath.Join(serverDir, "tls", "client-kube-proxy.key"), + filepath.Join(agentDir, "client-kube-proxy.crt"), + filepath.Join(agentDir, "client-kube-proxy.key"), }, "kubelet": []string{ - "/var/lib/rancher/k3s/server/tls/client-kubelet.key", - "/var/lib/rancher/k3s/server/tls/serving-kubelet.key", - "/var/lib/rancher/k3s/agent/client-kubelet.crt", - "/var/lib/rancher/k3s/agent/client-kubelet.key", - "/var/lib/rancher/k3s/agent/serving-kubelet.crt", - "/var/lib/rancher/k3s/agent/serving-kubelet.key", + filepath.Join(serverDir, "tls", "client-kubelet.key"), + filepath.Join(serverDir, "tls", "serving-kubelet.key"), + filepath.Join(agentDir, "client-kubelet.crt"), + filepath.Join(agentDir, "client-kubelet.key"), + filepath.Join(agentDir, "serving-kubelet.crt"), + filepath.Join(agentDir, "serving-kubelet.key"), }, "scheduler": []string{ - "/var/lib/rancher/k3s/server/tls/client-scheduler.crt", - "/var/lib/rancher/k3s/server/tls/client-scheduler.key", + filepath.Join(serverDir, "tls", "client-scheduler.crt"), + filepath.Join(serverDir, "tls", "client-scheduler.key"), }, "supervisor": []string{ - "/var/lib/rancher/k3s/server/tls/client-supervisor.crt", - "/var/lib/rancher/k3s/server/tls/client-supervisor.key", + filepath.Join(serverDir, "tls", "client-supervisor.crt"), + filepath.Join(serverDir, "tls", "client-supervisor.key"), }, }, }, @@ -99,7 +103,7 @@ func Test_UnitFilesForServices(t *testing.T) { args: args{ services: Server, controlConfig: config.Control{ - DataDir: "/var/lib/rancher/k3s/server", + DataDir: serverDir, Runtime: &config.ControlRuntime{}, }, }, @@ -109,42 +113,42 @@ func Test_UnitFilesForServices(t *testing.T) { }, want: map[string][]string{ "admin": []string{ - "/var/lib/rancher/k3s/server/tls/client-admin.crt", - "/var/lib/rancher/k3s/server/tls/client-admin.key", + filepath.Join(serverDir, "tls", "client-admin.crt"), + filepath.Join(serverDir, "tls", "client-admin.key"), }, "api-server": []string{ - "/var/lib/rancher/k3s/server/tls/client-kube-apiserver.crt", - "/var/lib/rancher/k3s/server/tls/client-kube-apiserver.key", - "/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.crt", - "/var/lib/rancher/k3s/server/tls/serving-kube-apiserver.key", + filepath.Join(serverDir, "tls", "client-kube-apiserver.crt"), + filepath.Join(serverDir, "tls", "client-kube-apiserver.key"), + filepath.Join(serverDir, "tls", "serving-kube-apiserver.crt"), + filepath.Join(serverDir, "tls", "serving-kube-apiserver.key"), }, "auth-proxy": []string{ - "/var/lib/rancher/k3s/server/tls/client-auth-proxy.crt", - "/var/lib/rancher/k3s/server/tls/client-auth-proxy.key", + filepath.Join(serverDir, "tls", "client-auth-proxy.crt"), + filepath.Join(serverDir, "tls", "client-auth-proxy.key"), }, "cloud-controller": []string{ - "/var/lib/rancher/k3s/server/tls/client-k3s-cloud-controller.crt", - "/var/lib/rancher/k3s/server/tls/client-k3s-cloud-controller.key", + filepath.Join(serverDir, "tls", "client-k3s-cloud-controller.crt"), + filepath.Join(serverDir, "tls", "client-k3s-cloud-controller.key"), }, "controller-manager": []string{ - "/var/lib/rancher/k3s/server/tls/client-controller.crt", - "/var/lib/rancher/k3s/server/tls/client-controller.key", + filepath.Join(serverDir, "tls", "client-controller.crt"), + filepath.Join(serverDir, "tls", "client-controller.key"), }, "etcd": []string{ - "/var/lib/rancher/k3s/server/tls/etcd/client.crt", - "/var/lib/rancher/k3s/server/tls/etcd/client.key", - "/var/lib/rancher/k3s/server/tls/etcd/server-client.crt", - "/var/lib/rancher/k3s/server/tls/etcd/server-client.key", - "/var/lib/rancher/k3s/server/tls/etcd/peer-server-client.crt", - "/var/lib/rancher/k3s/server/tls/etcd/peer-server-client.key", + filepath.Join(serverDir, "tls", "etcd", "client.crt"), + filepath.Join(serverDir, "tls", "etcd", "client.key"), + filepath.Join(serverDir, "tls", "etcd", "server-client.crt"), + filepath.Join(serverDir, "tls", "etcd", "server-client.key"), + filepath.Join(serverDir, "tls", "etcd", "peer-server-client.crt"), + filepath.Join(serverDir, "tls", "etcd", "peer-server-client.key"), }, "scheduler": []string{ - "/var/lib/rancher/k3s/server/tls/client-scheduler.crt", - "/var/lib/rancher/k3s/server/tls/client-scheduler.key", + filepath.Join(serverDir, "tls", "client-scheduler.crt"), + filepath.Join(serverDir, "tls", "client-scheduler.key"), }, "supervisor": []string{ - "/var/lib/rancher/k3s/server/tls/client-supervisor.crt", - "/var/lib/rancher/k3s/server/tls/client-supervisor.key", + filepath.Join(serverDir, "tls", "client-supervisor.crt"), + filepath.Join(serverDir, "tls", "client-supervisor.key"), }, }, }, @@ -153,7 +157,7 @@ func Test_UnitFilesForServices(t *testing.T) { args: args{ services: Agent, controlConfig: config.Control{ - DataDir: "/var/lib/rancher/k3s/server", + DataDir: serverDir, Runtime: &config.ControlRuntime{}, }, }, @@ -163,24 +167,24 @@ func Test_UnitFilesForServices(t *testing.T) { }, want: map[string][]string{ "k3s-controller": []string{ - "/var/lib/rancher/k3s/server/tls/client-k3s-controller.crt", - "/var/lib/rancher/k3s/server/tls/client-k3s-controller.key", - "/var/lib/rancher/k3s/agent/client-k3s-controller.crt", - "/var/lib/rancher/k3s/agent/client-k3s-controller.key", + filepath.Join(serverDir, "tls", "client-k3s-controller.crt"), + filepath.Join(serverDir, "tls", "client-k3s-controller.key"), + filepath.Join(agentDir, "client-k3s-controller.crt"), + filepath.Join(agentDir, "client-k3s-controller.key"), }, "kube-proxy": []string{ - "/var/lib/rancher/k3s/server/tls/client-kube-proxy.crt", - "/var/lib/rancher/k3s/server/tls/client-kube-proxy.key", - "/var/lib/rancher/k3s/agent/client-kube-proxy.crt", - "/var/lib/rancher/k3s/agent/client-kube-proxy.key", + filepath.Join(serverDir, "tls", "client-kube-proxy.crt"), + filepath.Join(serverDir, "tls", "client-kube-proxy.key"), + filepath.Join(agentDir, "client-kube-proxy.crt"), + filepath.Join(agentDir, "client-kube-proxy.key"), }, "kubelet": []string{ - "/var/lib/rancher/k3s/server/tls/client-kubelet.key", - "/var/lib/rancher/k3s/server/tls/serving-kubelet.key", - "/var/lib/rancher/k3s/agent/client-kubelet.crt", - "/var/lib/rancher/k3s/agent/client-kubelet.key", - "/var/lib/rancher/k3s/agent/serving-kubelet.crt", - "/var/lib/rancher/k3s/agent/serving-kubelet.key", + filepath.Join(serverDir, "tls", "client-kubelet.key"), + filepath.Join(serverDir, "tls", "serving-kubelet.key"), + filepath.Join(agentDir, "client-kubelet.crt"), + filepath.Join(agentDir, "client-kubelet.key"), + filepath.Join(agentDir, "serving-kubelet.crt"), + filepath.Join(agentDir, "serving-kubelet.key"), }, }, }, @@ -189,7 +193,7 @@ func Test_UnitFilesForServices(t *testing.T) { args: args{ services: []string{CertificateAuthority}, controlConfig: config.Control{ - DataDir: "/var/lib/rancher/k3s/server", + DataDir: serverDir, Runtime: &config.ControlRuntime{}, }, }, @@ -199,16 +203,16 @@ func Test_UnitFilesForServices(t *testing.T) { }, want: map[string][]string{ "certificate-authority": []string{ - "/var/lib/rancher/k3s/server/tls/server-ca.crt", - "/var/lib/rancher/k3s/server/tls/server-ca.key", - "/var/lib/rancher/k3s/server/tls/client-ca.crt", - "/var/lib/rancher/k3s/server/tls/client-ca.key", - "/var/lib/rancher/k3s/server/tls/request-header-ca.crt", - "/var/lib/rancher/k3s/server/tls/request-header-ca.key", - "/var/lib/rancher/k3s/server/tls/etcd/peer-ca.crt", - "/var/lib/rancher/k3s/server/tls/etcd/peer-ca.key", - "/var/lib/rancher/k3s/server/tls/etcd/server-ca.crt", - "/var/lib/rancher/k3s/server/tls/etcd/server-ca.key", + filepath.Join(serverDir, "tls", "server-ca.crt"), + filepath.Join(serverDir, "tls", "server-ca.key"), + filepath.Join(serverDir, "tls", "client-ca.crt"), + filepath.Join(serverDir, "tls", "client-ca.key"), + filepath.Join(serverDir, "tls", "request-header-ca.crt"), + filepath.Join(serverDir, "tls", "request-header-ca.key"), + filepath.Join(serverDir, "tls", "etcd", "peer-ca.crt"), + filepath.Join(serverDir, "tls", "etcd", "peer-ca.key"), + filepath.Join(serverDir, "tls", "etcd", "server-ca.crt"), + filepath.Join(serverDir, "tls", "etcd", "server-ca.key"), }, }, }, @@ -217,7 +221,7 @@ func Test_UnitFilesForServices(t *testing.T) { args: args{ services: []string{"foo"}, controlConfig: config.Control{ - DataDir: "/var/lib/rancher/k3s/server", + DataDir: serverDir, Runtime: &config.ControlRuntime{}, }, }, diff --git a/scripts/airgap/image-list.txt b/scripts/airgap/image-list.txt index 75a2fc30d7fe..815a2412db52 100644 --- a/scripts/airgap/image-list.txt +++ b/scripts/airgap/image-list.txt @@ -1,6 +1,6 @@ -docker.io/rancher/klipper-helm:v0.9.3-build20241008 -docker.io/rancher/klipper-lb:v0.4.9 -docker.io/rancher/local-path-provisioner:v0.0.30 +docker.io/rancher/klipper-helm:v0.9.4-build20250113 +docker.io/rancher/klipper-lb:v0.4.10 +docker.io/rancher/local-path-provisioner:v0.0.31 docker.io/rancher/mirrored-coredns-coredns:1.12.0 docker.io/rancher/mirrored-library-busybox:1.36.1 docker.io/rancher/mirrored-library-traefik:2.11.18 diff --git a/scripts/build b/scripts/build index c799bb2a4c38..92f60679eeca 100755 --- a/scripts/build +++ b/scripts/build @@ -60,29 +60,42 @@ else LDFLAGS="-w -s" fi -STATIC=" - -extldflags '-static -lm -ldl -lz -lpthread' -" -TAGS="ctrd apparmor seccomp netcgo osusergo providerless urfave_cli_no_docs" -RUNC_TAGS="apparmor seccomp" -RUNC_STATIC="static" +STATIC="" +TAGS="ctrd netcgo osusergo providerless urfave_cli_no_docs sqlite_omit_load_extension" +RUNC_STATIC="" +RUNC_TAGS="" -if [ ${OS} = windows ]; then - TAGS="ctrd netcgo osusergo providerless" -fi +case ${OS} in + linux) + TAGS="$TAGS apparmor seccomp" + RUNC_TAGS="$RUNC_TAGS apparmor seccomp" -if [ "$SELINUX" = "true" ]; then - TAGS="$TAGS selinux" - RUNC_TAGS="$RUNC_TAGS selinux" -fi + if [ "$STATIC_BUILD" == "true" ]; then + STATIC=$'\n-extldflags \'-static -lm -ldl -lz -lpthread\'\n' + TAGS="static_build libsqlite3 $TAGS" + RUNC_STATIC="static" + fi + if [ "$SELINUX" = "true" ]; then + TAGS="$TAGS selinux" + RUNC_TAGS="$RUNC_TAGS selinux" + fi + ;; + windows) + TAGS="$TAGS no_cri_dockerd" -if [ "$STATIC_BUILD" != "true" ]; then - STATIC=" -" - RUNC_STATIC="" -else - TAGS="static_build libsqlite3 $TAGS" -fi + if [ "$STATIC_BUILD" == "true" ]; then + STATIC=$'\n-extldflags \'-static -lpthread\'\n' + TAGS="static_build $TAGS" + fi + + export CXX="x86_64-w64-mingw32-g++" + export CC="x86_64-w64-mingw32-gcc" + ;; + *) + echo "[ERROR] unrecognized opertaing system: ${OS}" + exit 1 + ;; +esac if [ -n "${GOCOVER}" ]; then BLDFLAGS="-cover" diff --git a/scripts/package b/scripts/package index ca2123657e39..68d464ed16e3 100755 --- a/scripts/package +++ b/scripts/package @@ -8,6 +8,7 @@ if [ ! -e ../bin/containerd ]; then fi ./package-cli + if [ -z "$SKIP_IMAGE" ]; then ./package-image fi diff --git a/scripts/package-airgap b/scripts/package-airgap index 911357181a26..ce27ae680e98 100755 --- a/scripts/package-airgap +++ b/scripts/package-airgap @@ -5,6 +5,10 @@ cd $(dirname $0)/.. . ./scripts/version.sh +if [ "${OS}" != "linux" ]; then + exit +fi + airgap_image_file='scripts/airgap/image-list.txt' images=$(cat "${airgap_image_file}") xargs -n1 docker pull <<< "${images}" diff --git a/scripts/package-cli b/scripts/package-cli index c790f04aab41..f38e10d0748c 100755 --- a/scripts/package-cli +++ b/scripts/package-cli @@ -54,11 +54,11 @@ mkdir -p ./etc set -x ) -tar cvf ./build/out/data.tar ./bin ./etc -zstd --no-progress -T0 -16 -f --long=25 --rm ./build/out/data.tar -o ./build/out/data.tar.zst -HASH=$(sha256sum ./build/out/data.tar.zst | awk '{print $1}') +tar cvf ./build/out/data-${OS}.tar ./bin ./etc +zstd --no-progress -T0 -16 -f --long=25 --rm ./build/out/data-${OS}.tar -o ./build/out/data-${OS}.tar.zst +HASH=$(sha256sum ./build/out/data-${OS}.tar.zst | awk '{print $1}') -cp ./build/out/data.tar.zst ./build/data/${HASH}.tar.zst +cp ./build/out/data-${OS}.tar.zst ./build/data/${HASH}.tar.zst BIN_SUFFIX="-${ARCH}" if [ ${ARCH} = amd64 ]; then diff --git a/scripts/package-image b/scripts/package-image index 823511d4d4a7..9ae43e58b76f 100755 --- a/scripts/package-image +++ b/scripts/package-image @@ -5,6 +5,10 @@ cd $(dirname $0)/.. . ./scripts/version.sh +if [ "${OS}" != "linux" ]; then + exit +fi + TAG=${TAG:-${VERSION_TAG}${SUFFIX}} REPO=${REPO:-rancher} IMAGE_NAME=${IMAGE_NAME:-k3s} diff --git a/scripts/validate-cross-compilation b/scripts/validate-cross-compilation deleted file mode 100755 index fb858cca8815..000000000000 --- a/scripts/validate-cross-compilation +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -set -e -x - -cd $(dirname $0)/.. - -. ./scripts/version.sh - -GO=${GO-go} - -PKG="github.com/k3s-io/k3s" -PKG_CONTAINERD="github.com/containerd/containerd" -PKG_K3S_CONTAINERD="github.com/k3s-io/containerd" -PKG_CRICTL="github.com/kubernetes-sigs/cri-tools/pkg" -PKG_K8S_BASE="k8s.io/component-base" -PKG_K8S_CLIENT="k8s.io/client-go/pkg" - -buildDate=$(date -u '+%Y-%m-%dT%H:%M:%SZ') - -VERSIONFLAGS=" - -X ${PKG}/pkg/version.Version=${VERSION} - -X ${PKG}/pkg/version.GitCommit=${COMMIT:0:8} - - -X ${PKG_K8S_CLIENT}/version.gitVersion=${VERSION} - -X ${PKG_K8S_CLIENT}/version.gitCommit=${COMMIT} - -X ${PKG_K8S_CLIENT}/version.gitTreeState=${TREE_STATE} - -X ${PKG_K8S_CLIENT}/version.buildDate=${buildDate} - - -X ${PKG_K8S_BASE}/version.gitVersion=${VERSION} - -X ${PKG_K8S_BASE}/version.gitCommit=${COMMIT} - -X ${PKG_K8S_BASE}/version.gitTreeState=${TREE_STATE} - -X ${PKG_K8S_BASE}/version.buildDate=${buildDate} - - -X ${PKG_CRICTL}/version.Version=${VERSION_CRICTL} - - -X ${PKG_CONTAINERD}/version.Version=${VERSION_CONTAINERD} - -X ${PKG_CONTAINERD}/version.Package=${PKG_K3S_CONTAINERD} - - -X ${PKG_CONTAINERD}/version.Version=${VERSION_CONTAINERD} - -X ${PKG_CONTAINERD}/version.Package=${PKG_K3S_CONTAINERD} -" - -LDFLAGS=" - -w -s" - -STATIC="" - -TAGS="netcgo osusergo providerless" - -mkdir -p bin - -# Sanity check for downstream dependencies -echo 'Validate K3s cross-compilation on Windows x86_64' -GOOS=windows CGO_ENABLED=1 CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc \ - "${GO}" build -tags "${TAGS}" -ldflags "${VERSIONFLAGS} ${LDFLAGS} ${STATIC}" -o bin/k3s.exe ./cmd/server/main.go - -if [ "${KEEP_WINDOWS_BIN}" != 'true' ]; then - rm -rf bin/k3s.exe -fi diff --git a/tests/e2e/amd64_resource_files/wasm-workloads.yaml b/tests/e2e/amd64_resource_files/wasm-workloads.yaml index 5e19fd281cb1..de9da99c49c2 100644 --- a/tests/e2e/amd64_resource_files/wasm-workloads.yaml +++ b/tests/e2e/amd64_resource_files/wasm-workloads.yaml @@ -55,7 +55,7 @@ spec: memory: 128Mi --- # create a traefik middleware -apiVersion: traefik.containo.us/v1alpha1 +apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: strip-prefix @@ -104,7 +104,6 @@ metadata: namespace: default annotations: ingress.kubernetes.io/ssl-redirect: "false" - kubernetes.io/ingress.class: traefik traefik.ingress.kubernetes.io/router.middlewares: default-strip-prefix@kubernetescrd spec: rules: diff --git a/tests/e2e/testutils.go b/tests/e2e/testutils.go index 4b01e493bb9f..3b621e833b51 100644 --- a/tests/e2e/testutils.go +++ b/tests/e2e/testutils.go @@ -348,12 +348,11 @@ func FetchIngressIP(kubeconfig string) ([]string, error) { if err != nil { return nil, err } - ingressIP := strings.Trim(res, " ") - ingressIPs := strings.Split(ingressIP, " ") - if len(ingressIPs) == 0 { - return nil, errors.New("no ingress IP found") + res = strings.TrimSpace(res) + if res == "" { + return nil, errors.New("no ingress IPs found") } - return ingressIPs, nil + return strings.Split(res, " "), nil } func (v VagrantNode) FetchNodeExternalIP() (string, error) {