From a8382564e644692d099ae7a03bb06864d85d373f Mon Sep 17 00:00:00 2001 From: Chris Kim <30601846+Oats87@users.noreply.github.com> Date: Thu, 18 Nov 2021 17:07:00 -0800 Subject: [PATCH] [release-1.20] Bump Kubernetes to v1.20.13-k3s1 (#4532) * Update to v1.20.13 * Bump sonobuoy and golang * Change test timeout to 60m * Bump containerd to v1.14.12-k3s1 Signed-off-by: Chris Kim --- Dockerfile.dapper | 2 +- Dockerfile.test.dapper | 4 +- Dockerfile.test.mod.dapper | 2 +- go.mod | 60 +++---- go.sum | 106 ++++++------ scripts/test-helpers | 2 +- .../containerd/containerd/.travis.yml | 2 +- .../containerd/containerd/Vagrantfile | 2 +- .../containerd/containerd/images/image.go | 55 ++++++ .../containerd/remotes/docker/fetcher.go | 4 + .../remotes/docker/schema1/converter.go | 9 +- .../containerd/containerd/version/version.go | 2 +- .../apiserver/pkg/server/httplog/httplog.go | 27 ++- vendor/k8s.io/client-go/pkg/version/base.go | 6 +- vendor/k8s.io/cloud-provider/go.sum | 4 +- vendor/k8s.io/component-base/version/base.go | 6 +- vendor/k8s.io/csi-translation-lib/go.sum | 2 +- .../kube-openapi/pkg/handler/handler.go | 121 ++++++++----- vendor/k8s.io/kubectl/pkg/cmd/cp/BUILD | 6 +- vendor/k8s.io/kubectl/pkg/cmd/cp/cp.go | 160 ++++++----------- vendor/k8s.io/kubectl/pkg/cmd/cp/filespec.go | 161 ++++++++++++++++++ .../endpointslicemirroring_controller.go | 11 +- .../pkg/kubelet/kuberuntime/logs/logs.go | 1 + .../kubernetes/pkg/volume/csi/csi_mounter.go | 3 +- .../kubernetes/pkg/volume/util/hostutil/BUILD | 2 + .../pkg/volume/util/hostutil/fake_hostutil.go | 2 +- .../volume/util/hostutil/hostutil_linux.go | 13 +- .../kubernetes/pkg/volume/util/subpath/BUILD | 2 - .../pkg/volume/util/subpath/subpath_linux.go | 26 ++- .../mount-utils/mount_helper_windows.go | 10 +- vendor/modules.txt | 110 ++++++------ 31 files changed, 579 insertions(+), 344 deletions(-) create mode 100644 vendor/k8s.io/kubectl/pkg/cmd/cp/filespec.go diff --git a/Dockerfile.dapper b/Dockerfile.dapper index a74ccd0d66b2..a7cd82111a93 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -1,4 +1,4 @@ -ARG GOLANG=golang:1.15.14-alpine3.13 +ARG GOLANG=golang:1.15.15-alpine3.13 FROM ${GOLANG} ARG http_proxy=$http_proxy diff --git a/Dockerfile.test.dapper b/Dockerfile.test.dapper index c55a0d0e59eb..bdc5cf9e2546 100644 --- a/Dockerfile.test.dapper +++ b/Dockerfile.test.dapper @@ -1,9 +1,9 @@ -ARG GOLANG=golang:1.15.14-alpine3.13 +ARG GOLANG=golang:1.15.15-alpine3.13 FROM ${GOLANG} RUN apk -U --no-cache add bash git gcc musl-dev docker curl jq coreutils python3 openssl py3-pip -ENV SONOBUOY_VERSION 0.20.0 +ENV SONOBUOY_VERSION 0.55.0 RUN OS=linux; \ ARCH=$(go env GOARCH); \ diff --git a/Dockerfile.test.mod.dapper b/Dockerfile.test.mod.dapper index a01a0ee6fb4f..46c13aba9a6d 100644 --- a/Dockerfile.test.mod.dapper +++ b/Dockerfile.test.mod.dapper @@ -1,4 +1,4 @@ -ARG GOLANG=golang:1.15.14-alpine3.13 +ARG GOLANG=golang:1.15.15-alpine3.13 FROM ${GOLANG} RUN apk -U --no-cache add bash jq diff --git a/go.mod b/go.mod index b324873426a7..dbdc8c4602a1 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ replace ( github.com/containerd/btrfs => github.com/containerd/btrfs v1.0.0 github.com/containerd/cgroups => github.com/containerd/cgroups v1.0.1 github.com/containerd/console => github.com/containerd/console v1.0.2 - github.com/containerd/containerd => github.com/k3s-io/containerd v1.4.11-k3s1 // k3s-release/1.4 + github.com/containerd/containerd => github.com/k3s-io/containerd v1.4.12-k3s1 // k3s-release/1.4 github.com/containerd/continuity => github.com/k3s-io/continuity v0.0.0-20210309170710-f93269e0d5c1 github.com/containerd/cri => github.com/k3s-io/cri v1.4.0-k3s.7 // k3s-release/1.4 github.com/containerd/fifo => github.com/containerd/fifo v1.0.0 @@ -37,34 +37,34 @@ replace ( google.golang.org/genproto => google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63 google.golang.org/grpc => google.golang.org/grpc v1.27.1 gopkg.in/square/go-jose.v2 => gopkg.in/square/go-jose.v2 v2.2.2 - k8s.io/api => github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.12-k3s1 - k8s.io/apiextensions-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.12-k3s1 - k8s.io/apimachinery => github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.12-k3s1 - k8s.io/apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.12-k3s1 - k8s.io/cli-runtime => github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.12-k3s1 - k8s.io/client-go => github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.12-k3s1 - k8s.io/cloud-provider => github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.12-k3s1 - k8s.io/cluster-bootstrap => github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.12-k3s1 - k8s.io/code-generator => github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.12-k3s1 - k8s.io/component-base => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.12-k3s1 - k8s.io/component-helpers => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.12-k3s1 - k8s.io/controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.12-k3s1 - k8s.io/cri-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.12-k3s1 - k8s.io/csi-translation-lib => github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.12-k3s1 - k8s.io/kube-aggregator => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.12-k3s1 - k8s.io/kube-controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.12-k3s1 - k8s.io/kube-proxy => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.12-k3s1 - k8s.io/kube-scheduler => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.12-k3s1 - k8s.io/kubectl => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.12-k3s1 - k8s.io/kubelet => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.12-k3s1 - k8s.io/kubernetes => github.com/k3s-io/kubernetes v1.20.12-k3s1 - k8s.io/legacy-cloud-providers => github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.12-k3s1 - k8s.io/metrics => github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.12-k3s1 - k8s.io/mount-utils => github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.12-k3s1 - k8s.io/node-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/node-api v1.20.12-k3s1 - k8s.io/sample-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-apiserver v1.20.12-k3s1 - k8s.io/sample-cli-plugin => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.20.12-k3s1 - k8s.io/sample-controller => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-controller v1.20.12-k3s1 + k8s.io/api => github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.13-k3s1 + k8s.io/apiextensions-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.13-k3s1 + k8s.io/apimachinery => github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.13-k3s1 + k8s.io/apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.13-k3s1 + k8s.io/cli-runtime => github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.13-k3s1 + k8s.io/client-go => github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.13-k3s1 + k8s.io/cloud-provider => github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.13-k3s1 + k8s.io/cluster-bootstrap => github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.13-k3s1 + k8s.io/code-generator => github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.13-k3s1 + k8s.io/component-base => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.13-k3s1 + k8s.io/component-helpers => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.13-k3s1 + k8s.io/controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.13-k3s1 + k8s.io/cri-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.13-k3s1 + k8s.io/csi-translation-lib => github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.13-k3s1 + k8s.io/kube-aggregator => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.13-k3s1 + k8s.io/kube-controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.13-k3s1 + k8s.io/kube-proxy => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.13-k3s1 + k8s.io/kube-scheduler => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.13-k3s1 + k8s.io/kubectl => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.13-k3s1 + k8s.io/kubelet => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.13-k3s1 + k8s.io/kubernetes => github.com/k3s-io/kubernetes v1.20.13-k3s1 + k8s.io/legacy-cloud-providers => github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.13-k3s1 + k8s.io/metrics => github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.13-k3s1 + k8s.io/mount-utils => github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.13-k3s1 + k8s.io/node-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/node-api v1.20.13-k3s1 + k8s.io/sample-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-apiserver v1.20.13-k3s1 + k8s.io/sample-cli-plugin => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.20.13-k3s1 + k8s.io/sample-controller => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-controller v1.20.13-k3s1 mvdan.cc/unparam => mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34 ) @@ -130,7 +130,7 @@ require ( k8s.io/cri-api v1.20.11 k8s.io/klog v1.0.0 k8s.io/kubectl v1.20.11 - k8s.io/kubernetes v1.20.12 + k8s.io/kubernetes v1.20.13 k8s.io/utils v0.0.0-20201110183641-67b214c5f920 sigs.k8s.io/yaml v1.2.0 ) diff --git a/go.sum b/go.sum index c8ff0409a7aa..902ece606c98 100644 --- a/go.sum +++ b/go.sum @@ -515,8 +515,8 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/k3s-io/containerd v1.4.11-k3s1 h1:nSUL3uWxoe1tZy3+bWii9wEBXCvt/+6X8zijx2wSKq0= -github.com/k3s-io/containerd v1.4.11-k3s1/go.mod h1:g3v4rA/cI6WVYoSAYfUfAnrUSzEgbSZnu7uF1ZzkTmY= +github.com/k3s-io/containerd v1.4.12-k3s1 h1:WVr0W45uXTIDujMtqsfEigIVuEwhW9E8WjV/06/j03w= +github.com/k3s-io/containerd v1.4.12-k3s1/go.mod h1:g3v4rA/cI6WVYoSAYfUfAnrUSzEgbSZnu7uF1ZzkTmY= github.com/k3s-io/continuity v0.0.0-20210309170710-f93269e0d5c1 h1:KEz2rd9IDbrQT8w6RibEYlwfTXiu0P6hQDE+6O4IJdI= github.com/k3s-io/continuity v0.0.0-20210309170710-f93269e0d5c1/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= github.com/k3s-io/cri v1.4.0-k3s.7 h1:1ycdF3dMDJMW/k/UxDC6eMsyGSMZ/p0AoUBVdJvNGQs= @@ -529,55 +529,55 @@ github.com/k3s-io/helm-controller v0.10.8 h1:O7zoqUBp3W+6+nRCUWNiAoQMzOX6xw9IsBD github.com/k3s-io/helm-controller v0.10.8/go.mod h1:nZP8FH3KZrNNUf5r+SwwiMR63HS6lxdHdpHijgPfF74= github.com/k3s-io/kine v0.6.2 h1:1aJTPfB8HG4exqMKFVE5H0z4bepF05tJHtYNXotWXa4= github.com/k3s-io/kine v0.6.2/go.mod h1:rzCs93+rQHZGOiewMd84PDrER92QeZ6eeHbWkfEy4+w= -github.com/k3s-io/kubernetes v1.20.12-k3s1 h1:OfgMBbJEaXYS01zwbuYHk8iMZ44DBQLpXNSeIbr9+Zo= -github.com/k3s-io/kubernetes v1.20.12-k3s1/go.mod h1:ITbWRVYhYMeehJRseDAcHSwdk1+LoOL7p35hjnBQfMs= -github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.12-k3s1 h1:XHymw+lrmb6ebSzNSLfYth4Syc8jb/ZwCAQ6J6f6tl4= -github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.12-k3s1/go.mod h1:xNowlOuuxKUg8x7bAoYYuGvd/oPMqgQSZoKuThrP7LU= -github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.12-k3s1 h1:5Qb3gDQrckyfujvX6NhcfpEZ6oAyEe7xluK2HkqKS9E= -github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.12-k3s1/go.mod h1:v5n7fiAAqfhYfEdJUOj2wGfkaCgh01sXEbyywzNKoKg= -github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.12-k3s1 h1:VqeNds3rfLEuDEWqC0LoIhmfixpwpCd+Y31AOr6h7QQ= -github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.12-k3s1/go.mod h1:r7IzR0ecRkY6OYKfUBdp9zYhUuiYGsHPAENkIieNGPw= -github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.12-k3s1 h1:L3LkcFcxBMTXqjgpeNy3DO8hCmy32nczeME6QhuUMZw= -github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.12-k3s1/go.mod h1:wk4OHth9bxv4IsyouIofKl2JTx+sDDgmP+t9F7uANJM= -github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.12-k3s1 h1:ELHhwwnmK+XrCFJrW0M7kgnPl2bWp43kEIXOtNu6awM= -github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.12-k3s1/go.mod h1:kPb+ka+sGOmvAi1kC58fTaEMPE0AjkPq90tnjzaiteA= -github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.12-k3s1 h1:8Pk+CiyVBoem3j3AI8Jm7kVlORzcnTa3qnC0rwhzoGo= -github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.12-k3s1/go.mod h1:nzvMdnLq7ywRrzASzLV7EFKhudpng1G38F5XbVixASU= -github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.12-k3s1 h1:J9ClCMwwgDu7NUNn7KlkTLzt8KcGOthxGRqo3z3i1ec= -github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.12-k3s1/go.mod h1:PHIzADQFbVKfpb2K1IxHnNelXeeDHkXOR5Iz1E7OuUk= -github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.12-k3s1 h1:YiFLw0BPSXgopa1nxxXT6v8lMstDmEtpYYbWP6fJbtY= -github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.12-k3s1/go.mod h1:spaI5+5c+1VReIDh7pGGs8ngDc3IoHwmTF8X+fTrP08= -github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.12-k3s1 h1:a72+UcnPQJXQ6ckGIijKnOMQG7A3+yn6mIPkOJ+0iFk= -github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.12-k3s1/go.mod h1:SgRR0UcHncuceZiE79ODY+f7z7UyCA2NeBlH1awpTxs= -github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.12-k3s1 h1:Dok0pVYIm36AAG9ltrn1L8QpxNSkip50rWMwLyTsx/8= -github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.12-k3s1/go.mod h1:8GInE8yyzLYFslW12FRnTl/9YkmR9f/GGzCYu8ANHCQ= -github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.12-k3s1 h1:t2M0vmd3EqeqGHLmuFJkBjY/sxfwIpiIoUlSsqk56+A= -github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.12-k3s1/go.mod h1:pw+OH968rZrCvNZo0Eer3HGuPtKWS0dYbGot9aZ64Y4= -github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.12-k3s1 h1:lCOersJiF9df3DJKYDZjwV+4VSJNEhXy94Qwos788hk= -github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.12-k3s1/go.mod h1:9QKLqDYjrnFJFS+rSO1jIH00jff39O2VGuZFkAUZPuM= -github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.12-k3s1 h1:DNQQ2JzPl7UOeYqkTa1DChsbKb5t5LGVInTjreLzddc= -github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.12-k3s1/go.mod h1:sUn/5gFGVe5vHOybvFlICWkiG5KV78bQ3YnW+6K+jJY= -github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.12-k3s1 h1:YX/6XxT05uj5FXFS3i7yeAlF4khHb9BXePM3xJVn+4U= -github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.12-k3s1/go.mod h1:Zicsc4aFIp+w3G/peRJVi5s2aJEZ9jQfGiG7ozhTXM4= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.12-k3s1 h1:2RLxp7tgkMD3mbX4wKCM847Ma63onxG3GEDfks/xgy4= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.12-k3s1/go.mod h1:0ZXEFh6vOiSN3hhfiJSSJIPS5kHtFOAr1qUQbscxRgM= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.12-k3s1 h1:mlbXEwVMyvFRwAZ3GzgSC3Bv6iVowJ2xLCYAJZP7pBg= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.12-k3s1/go.mod h1:wwy8f7/wn8nH5uZq1RrbJmZoYRoFicaqndxs8vbsALA= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.12-k3s1 h1:/qXiJYQymo2LAnzQo/Xk6KRntJovs73W97EvaNE+jwM= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.12-k3s1/go.mod h1:PWMBqO9xuXWJS8REJ8QWiouJzbiOwVVVT81ZTwYb2Nk= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.12-k3s1 h1:aME+j4lgMzD7+k8QwjJsWBGbU6S1xp9vS7QstY7+oaY= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.12-k3s1/go.mod h1:KGBnJPnA0KkPNM8DFYa7IrEslOHOKUqewL+USqnG6fo= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.12-k3s1 h1:2u9Amisc6BlZBcfhAywFWL4sjzWZloO7hO4twaphNKg= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.12-k3s1/go.mod h1:34qOOg9yrR23GRMMunyDE4ngDYnz6Q7/T607q/qWnfM= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.12-k3s1 h1:Wm5YQ94g2UnARWxZcuK2TQ8b7wGmeh/z8Boa0rNHRs4= -github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.12-k3s1/go.mod h1:avdvE67Z3Ewhy/mUZjo9ek8a5SYYQzVcL/cnYiU7tlo= -github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.12-k3s1 h1:CUcvfNkPyXRnoWxfk2wYhVRDeLSSpIQH32AwOjYrd84= -github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.12-k3s1/go.mod h1:Ar3mk1+4I10WJg8SwpYKlK7hzsa9BPd8W0Stzxr90Q0= -github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.12-k3s1 h1:SSfOdjkPEZ6aq+NxgliIWapPdNWJcvH5Cm+eVBnt8Lw= -github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.12-k3s1/go.mod h1:0Lx45qGvZm3dwobUa3Tib+i4yj3b5CbNRLvbLX4e1bw= -github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.12-k3s1 h1:/rwe6c6M+v6l7otTkgdY1DojbK22tTI4uV8CiZAvAL8= -github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.12-k3s1/go.mod h1:mFeSjsWvLj55xUpwltalvolz49izW7J0N5RfoIHrKKY= -github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-apiserver v1.20.12-k3s1/go.mod h1:bbMx+Jiwi0GviI8UoqNJ5fpjNfCYBbu8plusmJAVvck= +github.com/k3s-io/kubernetes v1.20.13-k3s1 h1:kn3GTlLa7hrblmTJ6iOdsRgS88t02TMSp/YBYtT0q20= +github.com/k3s-io/kubernetes v1.20.13-k3s1/go.mod h1:maNGHPCYK0JpF3C4gI2AOAX0OlPCYsseIEd+wewVkuA= +github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.13-k3s1 h1:znQvDrLztn1H2tZeSPuTSnVCMNqAmQ5cBZYxTTqDhiY= +github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.13-k3s1/go.mod h1:xNowlOuuxKUg8x7bAoYYuGvd/oPMqgQSZoKuThrP7LU= +github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.13-k3s1 h1:Na+HA/CsNbNOE1M0q1VjGos730lbQr0Rv3UWheHTZf0= +github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.13-k3s1/go.mod h1:VJtpimoJzMqv1QycUs4bQJLuvHpE9gDbPsyll2i8YjU= +github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.13-k3s1 h1:nf15la90rPy3C6x1OBdLZiUHp/1O4cZ1aY+KrcLUWSM= +github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.13-k3s1/go.mod h1:E3eXKx8mC+y5i+n18YJZ7jNgneHTIPTmbviL3TfSaxc= +github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.13-k3s1 h1:w8gmauv6SOSxwdYx3gHwAuiylWkeoVX+pY7Bndn1GA0= +github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.13-k3s1/go.mod h1:NhDMNNUojgO9nCeJzHX8YjZEAZqW9JMUU/S/ZDBdZ10= +github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.13-k3s1 h1:0Kz1PtSStIw5o9cMm+EotFbca2gIUn8y6a/EgHP/3e0= +github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.13-k3s1/go.mod h1:9UDRf1+mqtjJUnm2kDAg1HWfpUjysps5gNYMPwwzCOI= +github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.13-k3s1 h1:6IR70sH4TrAOD+nVCnHHIsFQJdYltpwtIePdhf/4e1M= +github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.13-k3s1/go.mod h1:nzvMdnLq7ywRrzASzLV7EFKhudpng1G38F5XbVixASU= +github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.13-k3s1 h1:JouNYxyjs61wo8JfiwIGtfxJ3t74yZtkRvW7TjVAW6w= +github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.13-k3s1/go.mod h1:PHIzADQFbVKfpb2K1IxHnNelXeeDHkXOR5Iz1E7OuUk= +github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.13-k3s1 h1:lXwyv1no3wiqTxHDUx1I0VcPixa0NlTH04iB759a0ZA= +github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.13-k3s1/go.mod h1:spaI5+5c+1VReIDh7pGGs8ngDc3IoHwmTF8X+fTrP08= +github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.13-k3s1 h1:hQNJ+3SRdH3kPOlIvrVH6ESp0dVFPZEYVcWHxnfJsUI= +github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.13-k3s1/go.mod h1:y82mrMRkgq5PTj83SpgLtK69lENvKkeqijq4UghEQZ4= +github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.13-k3s1 h1:tX5HwrJc/MzbhbJ1wbnB7K99j/Y1bKFXmJZ1hGHk4b4= +github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.13-k3s1/go.mod h1:8GInE8yyzLYFslW12FRnTl/9YkmR9f/GGzCYu8ANHCQ= +github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.13-k3s1 h1:rYjJ57yKwwG0UtsL2BlwenftSTMGkkF+LeygVzwqdVU= +github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.13-k3s1/go.mod h1:pw+OH968rZrCvNZo0Eer3HGuPtKWS0dYbGot9aZ64Y4= +github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.13-k3s1 h1:fMQiuNBjJRtUy9nn0Cw8mAOJwbnNVGzyagOLU2Fih0M= +github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.13-k3s1/go.mod h1:9QKLqDYjrnFJFS+rSO1jIH00jff39O2VGuZFkAUZPuM= +github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.13-k3s1 h1:QhjHqsqldH1PANCkAPejvShVaSftEPjVr7I5x6T+be8= +github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.13-k3s1/go.mod h1:sUn/5gFGVe5vHOybvFlICWkiG5KV78bQ3YnW+6K+jJY= +github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.13-k3s1 h1:MkQkmF3tHCFr04iYA/6wTPLSZtuVP8QdyxIHP0zOCcA= +github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.13-k3s1/go.mod h1:Zicsc4aFIp+w3G/peRJVi5s2aJEZ9jQfGiG7ozhTXM4= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.13-k3s1 h1:/3j/i4Q5MKl0BxUpwDUW+KT4oq+djx+VCWzxx39KLuk= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.13-k3s1/go.mod h1:dGHwWfmVHCCSkGbzm1+KKp448LNQR3HfANuNXH++lnA= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.13-k3s1 h1:TF+7d5QYx/O1GKhOAZhZ8u+1lh1am+KxLq2e37xtGnQ= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.13-k3s1/go.mod h1:wwy8f7/wn8nH5uZq1RrbJmZoYRoFicaqndxs8vbsALA= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.13-k3s1 h1:+UMncf8993AO0EfS7+cXyjiz+lYVeiR+/V4ZTH0MCrA= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.13-k3s1/go.mod h1:PWMBqO9xuXWJS8REJ8QWiouJzbiOwVVVT81ZTwYb2Nk= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.13-k3s1 h1:0mgphAXZfQIDEczsvS/S8OsG1O2xn2iItTgzvco8RvQ= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.13-k3s1/go.mod h1:KGBnJPnA0KkPNM8DFYa7IrEslOHOKUqewL+USqnG6fo= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.13-k3s1 h1:4leeXAz7E4q2oQCauKVHEJfK/55QDoIttClGU0rqvBE= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.13-k3s1/go.mod h1:d1id22qiXLGVR/9f3KN/9AXoY6kTMj5qeghYUyNtmTI= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.13-k3s1 h1:AlgadtQLVagA/Kv9gRnGXpkFyYJWoTQdXFXEw30imUE= +github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.13-k3s1/go.mod h1:avdvE67Z3Ewhy/mUZjo9ek8a5SYYQzVcL/cnYiU7tlo= +github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.13-k3s1 h1:90YQBKEMalcpvoaT9YCkuY1ke3qfX8OzZ6Pk1RkqUMs= +github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.13-k3s1/go.mod h1:Ar3mk1+4I10WJg8SwpYKlK7hzsa9BPd8W0Stzxr90Q0= +github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.13-k3s1 h1:6b2CvAz1u5CTHaLvkYqm5isBKDazyJH45u3esGu4hiQ= +github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.13-k3s1/go.mod h1:0Lx45qGvZm3dwobUa3Tib+i4yj3b5CbNRLvbLX4e1bw= +github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.13-k3s1 h1:w/DgorK37up1Rx+sZu3VkfpDI2INn+Q5J+yhmZb5Fqw= +github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.13-k3s1/go.mod h1:mFeSjsWvLj55xUpwltalvolz49izW7J0N5RfoIHrKKY= +github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-apiserver v1.20.13-k3s1/go.mod h1:TTIyd68fEFbiCLXlHbYPm4bWi8llq4wkE8Sle/aDXUU= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -1172,8 +1172,8 @@ k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/kube-openapi v0.0.0-20190502190224-411b2483e503/go.mod h1:iU+ZGYsNlvU9XKUSso6SQfKTCCw7lFduMZy26Mgr2Fw= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20211110013926-83f114cd0513 h1:pbudjNtv90nOgR0/DUhPwKHnQ55Khz8+sNhJBIK7A5M= +k8s.io/kube-openapi v0.0.0-20211110013926-83f114cd0513/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/system-validators v1.2.0/go.mod h1:bPldcLgkIUK22ALflnsXk8pvkTEndYdNuaHH6gRrl0Q= k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw= diff --git a/scripts/test-helpers b/scripts/test-helpers index 012827e414c8..e99e6a0f95ed 100755 --- a/scripts/test-helpers +++ b/scripts/test-helpers @@ -240,7 +240,7 @@ sonobuoy-test() { local sonobuoyPID=$! local code=0 - time timeout --foreground 30m bash -c test-wait $sonobuoyPID || code=$? + time timeout --foreground 60m bash -c test-wait $sonobuoyPID || code=$? echo "Sonobuoy finished with code $code" retrieve-sonobuoy-logs return $code diff --git a/vendor/github.com/containerd/containerd/.travis.yml b/vendor/github.com/containerd/containerd/.travis.yml index 1726cf6d5556..8314c796b56f 100644 --- a/vendor/github.com/containerd/containerd/.travis.yml +++ b/vendor/github.com/containerd/containerd/.travis.yml @@ -15,7 +15,7 @@ os: - linux go: - - "1.16.8" + - "1.16.10" env: - TRAVIS_GOOS=linux TEST_RUNTIME=io.containerd.runc.v1 TRAVIS_CGO_ENABLED=1 TRAVIS_DISTRO=bionic GOPROXY=direct diff --git a/vendor/github.com/containerd/containerd/Vagrantfile b/vendor/github.com/containerd/containerd/Vagrantfile index d1f30c559992..b31dfaa3416b 100644 --- a/vendor/github.com/containerd/containerd/Vagrantfile +++ b/vendor/github.com/containerd/containerd/Vagrantfile @@ -77,7 +77,7 @@ Vagrant.configure("2") do |config| config.vm.provision "install-golang", type: "shell", run: "once" do |sh| sh.upload_path = "/tmp/vagrant-install-golang" sh.env = { - 'GO_VERSION': ENV['GO_VERSION'] || "1.16.8", + 'GO_VERSION': ENV['GO_VERSION'] || "1.16.10", } sh.inline = <<~SHELL #!/usr/bin/env bash diff --git a/vendor/github.com/containerd/containerd/images/image.go b/vendor/github.com/containerd/containerd/images/image.go index 1868ee88dd1f..2e42ca09a64f 100644 --- a/vendor/github.com/containerd/containerd/images/image.go +++ b/vendor/github.com/containerd/containerd/images/image.go @@ -19,6 +19,7 @@ package images import ( "context" "encoding/json" + "fmt" "sort" "time" @@ -154,6 +155,10 @@ func Manifest(ctx context.Context, provider content.Provider, image ocispec.Desc return nil, err } + if err := validateMediaType(p, desc.MediaType); err != nil { + return nil, errors.Wrapf(err, "manifest: invalid desc %s", desc.Digest) + } + var manifest ocispec.Manifest if err := json.Unmarshal(p, &manifest); err != nil { return nil, err @@ -194,6 +199,10 @@ func Manifest(ctx context.Context, provider content.Provider, image ocispec.Desc return nil, err } + if err := validateMediaType(p, desc.MediaType); err != nil { + return nil, errors.Wrapf(err, "manifest: invalid desc %s", desc.Digest) + } + var idx ocispec.Index if err := json.Unmarshal(p, &idx); err != nil { return nil, err @@ -336,6 +345,10 @@ func Children(ctx context.Context, provider content.Provider, desc ocispec.Descr return nil, err } + if err := validateMediaType(p, desc.MediaType); err != nil { + return nil, errors.Wrapf(err, "children: invalid desc %s", desc.Digest) + } + // TODO(stevvooe): We just assume oci manifest, for now. There may be // subtle differences from the docker version. var manifest ocispec.Manifest @@ -351,6 +364,10 @@ func Children(ctx context.Context, provider content.Provider, desc ocispec.Descr return nil, err } + if err := validateMediaType(p, desc.MediaType); err != nil { + return nil, errors.Wrapf(err, "children: invalid desc %s", desc.Digest) + } + var index ocispec.Index if err := json.Unmarshal(p, &index); err != nil { return nil, err @@ -368,6 +385,44 @@ func Children(ctx context.Context, provider content.Provider, desc ocispec.Descr return descs, nil } +// unknownDocument represents a manifest, manifest list, or index that has not +// yet been validated. +type unknownDocument struct { + MediaType string `json:"mediaType,omitempty"` + Config json.RawMessage `json:"config,omitempty"` + Layers json.RawMessage `json:"layers,omitempty"` + Manifests json.RawMessage `json:"manifests,omitempty"` + FSLayers json.RawMessage `json:"fsLayers,omitempty"` // schema 1 +} + +// validateMediaType returns an error if the byte slice is invalid JSON or if +// the media type identifies the blob as one format but it contains elements of +// another format. +func validateMediaType(b []byte, mt string) error { + var doc unknownDocument + if err := json.Unmarshal(b, &doc); err != nil { + return err + } + if len(doc.FSLayers) != 0 { + return fmt.Errorf("media-type: schema 1 not supported") + } + switch mt { + case MediaTypeDockerSchema2Manifest, ocispec.MediaTypeImageManifest: + if len(doc.Manifests) != 0 || + doc.MediaType == MediaTypeDockerSchema2ManifestList || + doc.MediaType == ocispec.MediaTypeImageIndex { + return fmt.Errorf("media-type: expected manifest but found index (%s)", mt) + } + case MediaTypeDockerSchema2ManifestList, ocispec.MediaTypeImageIndex: + if len(doc.Config) != 0 || len(doc.Layers) != 0 || + doc.MediaType == MediaTypeDockerSchema2Manifest || + doc.MediaType == ocispec.MediaTypeImageManifest { + return fmt.Errorf("media-type: expected index but found manifest (%s)", mt) + } + } + return nil +} + // RootFS returns the unpacked diffids that make up and images rootfs. // // These are used to verify that a set of layers unpacked to the expected diff --git a/vendor/github.com/containerd/containerd/remotes/docker/fetcher.go b/vendor/github.com/containerd/containerd/remotes/docker/fetcher.go index 022c456a9f60..5aaaf9e2a5ce 100644 --- a/vendor/github.com/containerd/containerd/remotes/docker/fetcher.go +++ b/vendor/github.com/containerd/containerd/remotes/docker/fetcher.go @@ -60,6 +60,10 @@ func (r dockerFetcher) Fetch(ctx context.Context, desc ocispec.Descriptor) (io.R log.G(ctx).WithError(err).Debug("failed to parse") continue } + if u.Scheme != "http" && u.Scheme != "https" { + log.G(ctx).Debug("non-http(s) alternative url is unsupported") + continue + } log.G(ctx).Debug("trying alternative url") // Try this first, parse it diff --git a/vendor/github.com/containerd/containerd/remotes/docker/schema1/converter.go b/vendor/github.com/containerd/containerd/remotes/docker/schema1/converter.go index 8314c01d5a6f..f15a9acf3e81 100644 --- a/vendor/github.com/containerd/containerd/remotes/docker/schema1/converter.go +++ b/vendor/github.com/containerd/containerd/remotes/docker/schema1/converter.go @@ -256,6 +256,9 @@ func (c *Converter) fetchManifest(ctx context.Context, desc ocispec.Descriptor) if err := json.Unmarshal(b, &m); err != nil { return err } + if len(m.Manifests) != 0 || len(m.Layers) != 0 { + return errors.New("converter: expected schema1 document but found extra keys") + } c.pulledManifest = &m return nil @@ -472,8 +475,10 @@ type history struct { } type manifest struct { - FSLayers []fsLayer `json:"fsLayers"` - History []history `json:"history"` + FSLayers []fsLayer `json:"fsLayers"` + History []history `json:"history"` + Layers json.RawMessage `json:"layers,omitempty"` // OCI manifest + Manifests json.RawMessage `json:"manifests,omitempty"` // OCI index } type v1History struct { diff --git a/vendor/github.com/containerd/containerd/version/version.go b/vendor/github.com/containerd/containerd/version/version.go index 77f581f7cfef..dab4a1656a6d 100644 --- a/vendor/github.com/containerd/containerd/version/version.go +++ b/vendor/github.com/containerd/containerd/version/version.go @@ -23,7 +23,7 @@ var ( Package = "github.com/containerd/containerd" // Version holds the complete version number. Filled in at linking time. - Version = "1.4.11+unknown" + Version = "1.4.12+unknown" // Revision is filled with the VCS (e.g. git) revision being used to build // the program at linking time. diff --git a/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go b/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go index 4cb5306672bc..8ecb0198cf51 100644 --- a/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go +++ b/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go @@ -23,6 +23,7 @@ import ( "net" "net/http" "runtime" + "sync" "time" "k8s.io/klog/v2" @@ -51,13 +52,17 @@ type respLogger struct { statusRecorded bool status int statusStack string - addedInfo string - startTime time.Time + // mutex is used when accessing addedInfo + // It can be modified by other goroutine when logging happens (in case of request timeout) + mutex sync.Mutex + addedInfo string + startTime time.Time captureErrorOutput bool - req *http.Request - w http.ResponseWriter + req *http.Request + userAgent string + w http.ResponseWriter logStacktracePred StacktracePred } @@ -107,6 +112,7 @@ func newLogged(req *http.Request, w http.ResponseWriter) *respLogger { return &respLogger{ startTime: time.Now(), req: req, + userAgent: req.UserAgent(), w: w, logStacktracePred: DefaultStacktracePred, } @@ -152,6 +158,8 @@ func StatusIsNot(statuses ...int) StacktracePred { // Addf adds additional data to be logged with this request. func (rl *respLogger) Addf(format string, data ...interface{}) { + rl.mutex.Lock() + defer rl.mutex.Unlock() rl.addedInfo += "\n" + fmt.Sprintf(format, data...) } @@ -162,7 +170,7 @@ func (rl *respLogger) LogArgs() []interface{} { "verb", rl.req.Method, "URI", rl.req.RequestURI, "latency", latency, - "userAgent", rl.req.UserAgent(), + "userAgent", rl.userAgent, "srcIP", rl.req.RemoteAddr, "hijacked", true, } @@ -171,10 +179,17 @@ func (rl *respLogger) LogArgs() []interface{} { "verb", rl.req.Method, "URI", rl.req.RequestURI, "latency", latency, - "userAgent", rl.req.UserAgent(), + // We can't get UserAgent from rl.req.UserAgent() here as it accesses headers map, + // which can be modified in another goroutine when apiserver request times out. + // For example authentication filter modifies request's headers, + // This can cause apiserver to crash with unrecoverable fatal error. + // More info about concurrent read and write for maps: https://golang.org/doc/go1.6#runtime + "userAgent", rl.userAgent, "srcIP", rl.req.RemoteAddr, "resp", rl.status, } + rl.mutex.Lock() + defer rl.mutex.Unlock() if len(rl.statusStack) > 0 { args = append(args, "statusStack", rl.statusStack) } diff --git a/vendor/k8s.io/client-go/pkg/version/base.go b/vendor/k8s.io/client-go/pkg/version/base.go index 9da2d96fc42c..154234387b15 100644 --- a/vendor/k8s.io/client-go/pkg/version/base.go +++ b/vendor/k8s.io/client-go/pkg/version/base.go @@ -3,8 +3,8 @@ package version var ( gitMajor = "1" gitMinor = "20" - gitVersion = "v1.20.12-k3s1" - gitCommit = "ea9c1b99bd42e157dae782e2add8321cc3a6165a" + gitVersion = "v1.20.13-k3s1" + gitCommit = "00ac75d2198c72709eea88425cbc3d71993bdb6d" gitTreeState = "clean" - buildDate = "2021-10-28T17:00:10Z" + buildDate = "2021-11-17T22:42:11Z" ) diff --git a/vendor/k8s.io/cloud-provider/go.sum b/vendor/k8s.io/cloud-provider/go.sum index 8aa5b28f7928..ede986e97228 100644 --- a/vendor/k8s.io/cloud-provider/go.sum +++ b/vendor/k8s.io/cloud-provider/go.sum @@ -663,8 +663,8 @@ k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd h1:sOHNzJIkytDF6qadMNKhhDRpc6ODik8lVC6nOur7B2c= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20211110013926-83f114cd0513 h1:pbudjNtv90nOgR0/DUhPwKHnQ55Khz8+sNhJBIK7A5M= +k8s.io/kube-openapi v0.0.0-20211110013926-83f114cd0513/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/utils v0.0.0-20201110183641-67b214c5f920 h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/vendor/k8s.io/component-base/version/base.go b/vendor/k8s.io/component-base/version/base.go index 9da2d96fc42c..154234387b15 100644 --- a/vendor/k8s.io/component-base/version/base.go +++ b/vendor/k8s.io/component-base/version/base.go @@ -3,8 +3,8 @@ package version var ( gitMajor = "1" gitMinor = "20" - gitVersion = "v1.20.12-k3s1" - gitCommit = "ea9c1b99bd42e157dae782e2add8321cc3a6165a" + gitVersion = "v1.20.13-k3s1" + gitCommit = "00ac75d2198c72709eea88425cbc3d71993bdb6d" gitTreeState = "clean" - buildDate = "2021-10-28T17:00:10Z" + buildDate = "2021-11-17T22:42:11Z" ) diff --git a/vendor/k8s.io/csi-translation-lib/go.sum b/vendor/k8s.io/csi-translation-lib/go.sum index 5f9164bc9e90..7d118abf9141 100644 --- a/vendor/k8s.io/csi-translation-lib/go.sum +++ b/vendor/k8s.io/csi-translation-lib/go.sum @@ -197,7 +197,7 @@ k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8 k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.4.0 h1:7+X0fUguPyrKEC4WjH8iGDg3laWgMo5tMnRTIGTTxGQ= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= +k8s.io/kube-openapi v0.0.0-20211110013926-83f114cd0513/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= diff --git a/vendor/k8s.io/kube-openapi/pkg/handler/handler.go b/vendor/k8s.io/kube-openapi/pkg/handler/handler.go index 7cd1bbd0ff0a..24b99e87223e 100644 --- a/vendor/k8s.io/kube-openapi/pkg/handler/handler.go +++ b/vendor/k8s.io/kube-openapi/pkg/handler/handler.go @@ -35,7 +35,7 @@ import ( jsoniter "github.com/json-iterator/go" "github.com/munnerz/goautoneg" "gopkg.in/yaml.v2" - + klog "k8s.io/klog/v2" "k8s.io/kube-openapi/pkg/builder" "k8s.io/kube-openapi/pkg/common" ) @@ -57,13 +57,40 @@ type OpenAPIService struct { lastModified time.Time - specBytes []byte - specPb []byte - specPbGz []byte + jsonCache cache + protoCache cache +} + +type cache struct { + BuildCache func() ([]byte, error) + once sync.Once + bytes []byte + etag string + err error +} + +func (c *cache) Get() ([]byte, string, error) { + c.once.Do(func() { + bytes, err := c.BuildCache() + // if there is an error updating the cache, there can be situations where + // c.bytes contains a valid value (carried over from the previous update) + // but c.err is also not nil; the cache user is expected to check for this + c.err = err + if c.err == nil { + // don't override previous spec if we had an error + c.bytes = bytes + c.etag = computeETag(c.bytes) + } + }) + return c.bytes, c.etag, c.err +} - specBytesETag string - specPbETag string - specPbGzETag string +func (c *cache) New(cacheBuilder func() ([]byte, error)) cache { + return cache{ + bytes: c.bytes, + etag: c.etag, + BuildCache: cacheBuilder, + } } func init() { @@ -73,6 +100,9 @@ func init() { } func computeETag(data []byte) string { + if data == nil { + return "" + } return fmt.Sprintf("\"%X\"", sha512.Sum512(data)) } @@ -85,55 +115,44 @@ func NewOpenAPIService(spec *spec.Swagger) (*OpenAPIService, error) { return o, nil } -func (o *OpenAPIService) getSwaggerBytes() ([]byte, string, time.Time) { +func (o *OpenAPIService) getSwaggerBytes() ([]byte, string, time.Time, error) { o.rwMutex.RLock() defer o.rwMutex.RUnlock() - return o.specBytes, o.specBytesETag, o.lastModified -} - -func (o *OpenAPIService) getSwaggerPbBytes() ([]byte, string, time.Time) { - o.rwMutex.RLock() - defer o.rwMutex.RUnlock() - return o.specPb, o.specPbETag, o.lastModified + specBytes, etag, err := o.jsonCache.Get() + if err != nil { + return nil, "", time.Time{}, err + } + return specBytes, etag, o.lastModified, nil } -func (o *OpenAPIService) getSwaggerPbGzBytes() ([]byte, string, time.Time) { +func (o *OpenAPIService) getSwaggerPbBytes() ([]byte, string, time.Time, error) { o.rwMutex.RLock() defer o.rwMutex.RUnlock() - return o.specPbGz, o.specPbGzETag, o.lastModified -} - -func (o *OpenAPIService) UpdateSpec(openapiSpec *spec.Swagger) (err error) { - specBytes, err := jsoniter.ConfigCompatibleWithStandardLibrary.Marshal(openapiSpec) + specPb, etag, err := o.protoCache.Get() if err != nil { - return err - } - var json map[string]interface{} - if err := jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal(specBytes, &json); err != nil { - return err + return nil, "", time.Time{}, err } - specPb, err := ToProtoBinary(json) - if err != nil { - return err - } - specPbGz := toGzip(specPb) - - specBytesETag := computeETag(specBytes) - specPbETag := computeETag(specPb) - specPbGzETag := computeETag(specPbGz) - - lastModified := time.Now() + return specPb, etag, o.lastModified, nil +} +func (o *OpenAPIService) UpdateSpec(openapiSpec *spec.Swagger) (err error) { o.rwMutex.Lock() defer o.rwMutex.Unlock() - - o.specBytes = specBytes - o.specPb = specPb - o.specPbGz = specPbGz - o.specBytesETag = specBytesETag - o.specPbETag = specPbETag - o.specPbGzETag = specPbGzETag - o.lastModified = lastModified + o.jsonCache = o.jsonCache.New(func() ([]byte, error) { + return jsoniter.ConfigCompatibleWithStandardLibrary.Marshal(openapiSpec) + }) + o.protoCache = o.protoCache.New(func() ([]byte, error) { + json, _, err := o.jsonCache.Get() + if err != nil { + return nil, err + } + var jMap map[string]interface{} + if err := jsoniter.ConfigCompatibleWithStandardLibrary.Unmarshal(json, &jMap); err != nil { + return nil, err + } + return ToProtoBinary(jMap) + }) + o.lastModified = time.Now() return nil } @@ -212,7 +231,7 @@ func (o *OpenAPIService) RegisterOpenAPIVersionedService(servePath string, handl accepted := []struct { Type string SubType string - GetDataAndETag func() ([]byte, string, time.Time) + GetDataAndETag func() ([]byte, string, time.Time, error) }{ {"application", "json", o.getSwaggerBytes}, {"application", "com.github.proto-openapi.spec.v2@v1.0+protobuf", o.getSwaggerPbBytes}, @@ -236,7 +255,15 @@ func (o *OpenAPIService) RegisterOpenAPIVersionedService(servePath string, handl } // serve the first matching media type in the sorted clause list - data, etag, lastModified := accepts.GetDataAndETag() + data, etag, lastModified, err := accepts.GetDataAndETag() + if err != nil { + klog.Errorf("Error in OpenAPI handler: %s", err) + // only return a 503 if we have no older cache data to serve + if data == nil { + w.WriteHeader(http.StatusServiceUnavailable) + return + } + } w.Header().Set("Etag", etag) // ServeContent will take care of caching using eTag. http.ServeContent(w, r, servePath, lastModified, bytes.NewReader(data)) diff --git a/vendor/k8s.io/kubectl/pkg/cmd/cp/BUILD b/vendor/k8s.io/kubectl/pkg/cmd/cp/BUILD index 0b3bfcb57aaa..38c8129c8342 100644 --- a/vendor/k8s.io/kubectl/pkg/cmd/cp/BUILD +++ b/vendor/k8s.io/kubectl/pkg/cmd/cp/BUILD @@ -2,7 +2,10 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", - srcs = ["cp.go"], + srcs = [ + "cp.go", + "filespec.go", + ], importmap = "k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/cp", importpath = "k8s.io/kubectl/pkg/cmd/cp", visibility = ["//visibility:public"], @@ -14,7 +17,6 @@ go_library( "//staging/src/k8s.io/kubectl/pkg/cmd/util:go_default_library", "//staging/src/k8s.io/kubectl/pkg/util/i18n:go_default_library", "//staging/src/k8s.io/kubectl/pkg/util/templates:go_default_library", - "//vendor/github.com/lithammer/dedent:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", ], ) diff --git a/vendor/k8s.io/kubectl/pkg/cmd/cp/cp.go b/vendor/k8s.io/kubectl/pkg/cmd/cp/cp.go index 7790db531978..94cfa92f64eb 100644 --- a/vendor/k8s.io/kubectl/pkg/cmd/cp/cp.go +++ b/vendor/k8s.io/kubectl/pkg/cmd/cp/cp.go @@ -24,11 +24,8 @@ import ( "io" "io/ioutil" "os" - "path" - "path/filepath" "strings" - "github.com/lithammer/dedent" "github.com/spf13/cobra" "k8s.io/cli-runtime/pkg/genericclioptions" @@ -66,12 +63,6 @@ var ( # Copy /tmp/foo from a remote pod to /tmp/bar locally kubectl cp /:/tmp/foo /tmp/bar`)) - - cpUsageStr = dedent.Dedent(` - expected 'cp [-c container]'. - is: - [namespace/]pod-name:/file/path for a remote file - /file/path for a local file`) ) // CopyOptions have the data required to perform the copy operation @@ -106,6 +97,7 @@ func NewCmdCp(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.C Example: cpExample, Run: func(cmd *cobra.Command, args []string) { cmdutil.CheckErr(o.Complete(f, cmd)) + cmdutil.CheckErr(o.Validate(cmd, args)) cmdutil.CheckErr(o.Run(args)) }, } @@ -115,27 +107,22 @@ func NewCmdCp(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.C return cmd } -type fileSpec struct { - PodNamespace string - PodName string - File string -} - var ( errFileSpecDoesntMatchFormat = errors.New("filespec must match the canonical format: [[namespace/]pod:]file/path") - errFileCannotBeEmpty = errors.New("filepath can not be empty") ) func extractFileSpec(arg string) (fileSpec, error) { i := strings.Index(arg, ":") - if i == -1 { - return fileSpec{File: arg}, nil - } // filespec starting with a semicolon is invalid if i == 0 { return fileSpec{}, errFileSpecDoesntMatchFormat } + if i == -1 { + return fileSpec{ + File: newLocalPath(arg), + }, nil + } pod, file := arg[:i], arg[i+1:] pieces := strings.Split(pod, "/") @@ -143,13 +130,13 @@ func extractFileSpec(arg string) (fileSpec, error) { case 1: return fileSpec{ PodName: pieces[0], - File: file, + File: newRemotePath(file), }, nil case 2: return fileSpec{ PodNamespace: pieces[0], PodName: pieces[1], - File: file, + File: newRemotePath(file), }, nil default: return fileSpec{}, errFileSpecDoesntMatchFormat @@ -183,16 +170,13 @@ func (o *CopyOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { // Validate makes sure provided values for CopyOptions are valid func (o *CopyOptions) Validate(cmd *cobra.Command, args []string) error { if len(args) != 2 { - return cmdutil.UsageErrorf(cmd, cpUsageStr) + return fmt.Errorf("source and destination are required") } return nil } // Run performs the execution func (o *CopyOptions) Run(args []string) error { - if len(args) < 2 { - return fmt.Errorf("source and destination are required") - } srcSpec, err := extractFileSpec(args[0]) if err != nil { return err @@ -205,6 +189,9 @@ func (o *CopyOptions) Run(args []string) error { if len(srcSpec.PodName) != 0 && len(destSpec.PodName) != 0 { return fmt.Errorf("one of src or dest must be a local file specification") } + if len(srcSpec.File.String()) == 0 || len(destSpec.File.String()) == 0 { + return errors.New("filepath can not be empty") + } if len(srcSpec.PodName) != 0 { return o.copyFromPod(srcSpec, destSpec) @@ -231,7 +218,7 @@ func (o *CopyOptions) checkDestinationIsDir(dest fileSpec) error { PodName: dest.PodName, }, - Command: []string{"test", "-d", dest.File}, + Command: []string{"test", "-d", dest.File.String()}, Executor: &exec.DefaultRemoteExecutor{}, } @@ -239,30 +226,24 @@ func (o *CopyOptions) checkDestinationIsDir(dest fileSpec) error { } func (o *CopyOptions) copyToPod(src, dest fileSpec, options *exec.ExecOptions) error { - if len(src.File) == 0 || len(dest.File) == 0 { - return errFileCannotBeEmpty - } - if _, err := os.Stat(src.File); err != nil { + if _, err := os.Stat(src.File.String()); err != nil { return fmt.Errorf("%s doesn't exist in local filesystem", src.File) } reader, writer := io.Pipe() - // strip trailing slash (if any) - if dest.File != "/" && strings.HasSuffix(string(dest.File[len(dest.File)-1]), "/") { - dest.File = dest.File[:len(dest.File)-1] - } + srcFile := src.File.(localPath) + destFile := dest.File.(remotePath) if err := o.checkDestinationIsDir(dest); err == nil { // If no error, dest.File was found to be a directory. // Copy specified src into it - dest.File = dest.File + "/" + path.Base(src.File) + destFile = destFile.Join(srcFile.Base()) } - go func() { + go func(src localPath, dest remotePath, writer io.WriteCloser) { defer writer.Close() - err := makeTar(src.File, dest.File, writer) - cmdutil.CheckErr(err) - }() + cmdutil.CheckErr(makeTar(src, dest, writer)) + }(srcFile, destFile, writer) var cmdArr []string // TODO: Improve error messages by first testing if 'tar' is present in the container? @@ -271,9 +252,9 @@ func (o *CopyOptions) copyToPod(src, dest fileSpec, options *exec.ExecOptions) e } else { cmdArr = []string{"tar", "-xmf", "-"} } - destDir := path.Dir(dest.File) - if len(destDir) > 0 { - cmdArr = append(cmdArr, "-C", destDir) + destFileDir := destFile.Dir().String() + if len(destFileDir) > 0 { + cmdArr = append(cmdArr, "-C", destFileDir) } options.StreamOptions = exec.StreamOptions{ @@ -294,10 +275,6 @@ func (o *CopyOptions) copyToPod(src, dest fileSpec, options *exec.ExecOptions) e } func (o *CopyOptions) copyFromPod(src, dest fileSpec) error { - if len(src.File) == 0 || len(dest.File) == 0 { - return errFileCannotBeEmpty - } - reader, outStream := io.Pipe() options := &exec.ExecOptions{ StreamOptions: exec.StreamOptions{ @@ -312,7 +289,7 @@ func (o *CopyOptions) copyFromPod(src, dest fileSpec) error { }, // TODO: Improve error messages by first testing if 'tar' is present in the container? - Command: []string{"tar", "cf", "-", src.File}, + Command: []string{"tar", "cf", "-", src.File.String()}, Executor: &exec.DefaultRemoteExecutor{}, } @@ -321,49 +298,28 @@ func (o *CopyOptions) copyFromPod(src, dest fileSpec) error { err := o.execute(options) cmdutil.CheckErr(err) }() - prefix := getPrefix(src.File) - prefix = path.Clean(prefix) - // remove extraneous path shortcuts - these could occur if a path contained extra "../" - // and attempted to navigate beyond "/" in a remote filesystem - prefix = stripPathShortcuts(prefix) - return o.untarAll(src, reader, dest.File, prefix) -} - -// stripPathShortcuts removes any leading or trailing "../" from a given path -func stripPathShortcuts(p string) string { - newPath := path.Clean(p) - trimmed := strings.TrimPrefix(newPath, "../") - - for trimmed != newPath { - newPath = trimmed - trimmed = strings.TrimPrefix(newPath, "../") - } - - // trim leftover {".", ".."} - if newPath == "." || newPath == ".." { - newPath = "" - } - if len(newPath) > 0 && string(newPath[0]) == "/" { - return newPath[1:] - } + srcFile := src.File.(remotePath) + destFile := dest.File.(localPath) - return newPath + // remove extraneous path shortcuts - these could occur if a path contained extra "../" + // and attempted to navigate beyond "/" in a remote filesystem + prefix := stripPathShortcuts(srcFile.StripSlashes().Clean().String()) + return o.untarAll(src.PodNamespace, src.PodName, prefix, srcFile, destFile, reader) } -func makeTar(srcPath, destPath string, writer io.Writer) error { +func makeTar(src localPath, dest remotePath, writer io.Writer) error { // TODO: use compression here? tarWriter := tar.NewWriter(writer) defer tarWriter.Close() - srcPath = path.Clean(srcPath) - destPath = path.Clean(destPath) - return recursiveTar(path.Dir(srcPath), path.Base(srcPath), path.Dir(destPath), path.Base(destPath), tarWriter) + srcPath := src.Clean() + destPath := dest.Clean() + return recursiveTar(srcPath.Dir(), srcPath.Base(), destPath.Dir(), destPath.Base(), tarWriter) } -func recursiveTar(srcBase, srcFile, destBase, destFile string, tw *tar.Writer) error { - srcPath := path.Join(srcBase, srcFile) - matchedPaths, err := filepath.Glob(srcPath) +func recursiveTar(srcDir, srcFile localPath, destDir, destFile remotePath, tw *tar.Writer) error { + matchedPaths, err := srcDir.Join(srcFile).Glob() if err != nil { return err } @@ -380,13 +336,14 @@ func recursiveTar(srcBase, srcFile, destBase, destFile string, tw *tar.Writer) e if len(files) == 0 { //case empty directory hdr, _ := tar.FileInfoHeader(stat, fpath) - hdr.Name = destFile + hdr.Name = destFile.String() if err := tw.WriteHeader(hdr); err != nil { return err } } for _, f := range files { - if err := recursiveTar(srcBase, path.Join(srcFile, f.Name()), destBase, path.Join(destFile, f.Name()), tw); err != nil { + if err := recursiveTar(srcDir, srcFile.Join(newLocalPath(f.Name())), + destDir, destFile.Join(newRemotePath(f.Name())), tw); err != nil { return err } } @@ -400,7 +357,7 @@ func recursiveTar(srcBase, srcFile, destBase, destFile string, tw *tar.Writer) e } hdr.Linkname = target - hdr.Name = destFile + hdr.Name = destFile.String() if err := tw.WriteHeader(hdr); err != nil { return err } @@ -410,7 +367,7 @@ func recursiveTar(srcBase, srcFile, destBase, destFile string, tw *tar.Writer) e if err != nil { return err } - hdr.Name = destFile + hdr.Name = destFile.String() if err := tw.WriteHeader(hdr); err != nil { return err @@ -431,7 +388,7 @@ func recursiveTar(srcBase, srcFile, destBase, destFile string, tw *tar.Writer) e return nil } -func (o *CopyOptions) untarAll(src fileSpec, reader io.Reader, destDir, prefix string) error { +func (o *CopyOptions) untarAll(ns, pod string, prefix string, src remotePath, dest localPath, reader io.Reader) error { symlinkWarningPrinted := false // TODO: use compression here? tarReader := tar.NewReader(reader) @@ -455,19 +412,21 @@ func (o *CopyOptions) untarAll(src fileSpec, reader io.Reader, destDir, prefix s // basic file information mode := header.FileInfo().Mode() - destFileName := filepath.Join(destDir, header.Name[len(prefix):]) + // header.Name is a name of the REMOTE file, so we need to create + // a remotePath so that it goes through appropriate processing related + // with cleaning remote paths + destFileName := dest.Join(newRemotePath(header.Name[len(prefix):])) - if !isDestRelative(destDir, destFileName) { + if !isRelative(dest, destFileName) { fmt.Fprintf(o.IOStreams.ErrOut, "warning: file %q is outside target destination, skipping\n", destFileName) continue } - baseName := filepath.Dir(destFileName) - if err := os.MkdirAll(baseName, 0755); err != nil { + if err := os.MkdirAll(destFileName.Dir().String(), 0755); err != nil { return err } if header.FileInfo().IsDir() { - if err := os.MkdirAll(destFileName, 0755); err != nil { + if err := os.MkdirAll(destFileName.String(), 0755); err != nil { return err } continue @@ -475,14 +434,16 @@ func (o *CopyOptions) untarAll(src fileSpec, reader io.Reader, destDir, prefix s if mode&os.ModeSymlink != 0 { if !symlinkWarningPrinted && len(o.ExecParentCmdName) > 0 { - fmt.Fprintf(o.IOStreams.ErrOut, "warning: skipping symlink: %q -> %q (consider using \"%s exec -n %q %q -- tar cf - %q | tar xf -\")\n", destFileName, header.Linkname, o.ExecParentCmdName, src.PodNamespace, src.PodName, src.File) + fmt.Fprintf(o.IOStreams.ErrOut, + "warning: skipping symlink: %q -> %q (consider using \"%s exec -n %q %q -- tar cf - %q | tar xf -\")\n", + destFileName, header.Linkname, o.ExecParentCmdName, ns, pod, src) symlinkWarningPrinted = true continue } fmt.Fprintf(o.IOStreams.ErrOut, "warning: skipping symlink: %q -> %q\n", destFileName, header.Linkname) continue } - outFile, err := os.Create(destFileName) + outFile, err := os.Create(destFileName.String()) if err != nil { return err } @@ -498,21 +459,6 @@ func (o *CopyOptions) untarAll(src fileSpec, reader io.Reader, destDir, prefix s return nil } -// isDestRelative returns true if dest is pointing outside the base directory, -// false otherwise. -func isDestRelative(base, dest string) bool { - relative, err := filepath.Rel(base, dest) - if err != nil { - return false - } - return relative == "." || relative == stripPathShortcuts(relative) -} - -func getPrefix(file string) string { - // tar strips the leading '/' if it's there, so we will too - return strings.TrimLeft(file, "/") -} - func (o *CopyOptions) execute(options *exec.ExecOptions) error { if len(options.Namespace) == 0 { options.Namespace = o.Namespace diff --git a/vendor/k8s.io/kubectl/pkg/cmd/cp/filespec.go b/vendor/k8s.io/kubectl/pkg/cmd/cp/filespec.go new file mode 100644 index 000000000000..199bbeeed745 --- /dev/null +++ b/vendor/k8s.io/kubectl/pkg/cmd/cp/filespec.go @@ -0,0 +1,161 @@ +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cp + +import ( + "path" + "path/filepath" + "strings" +) + +type fileSpec struct { + PodName string + PodNamespace string + File pathSpec +} + +type pathSpec interface { + String() string +} + +// localPath represents a client-native path, which will differ based +// on the client OS, its methods will use path/filepath package which +// is OS dependant +type localPath struct { + file string +} + +func newLocalPath(fileName string) localPath { + file := stripTrailingSlash(fileName) + return localPath{file: file} +} + +func (p localPath) String() string { + return p.file +} + +func (p localPath) Dir() localPath { + return newLocalPath(filepath.Dir(p.file)) +} + +func (p localPath) Base() localPath { + return newLocalPath(filepath.Base(p.file)) +} + +func (p localPath) Clean() localPath { + return newLocalPath(filepath.Clean(p.file)) +} + +func (p localPath) Join(elem pathSpec) localPath { + return newLocalPath(filepath.Join(p.file, elem.String())) +} + +func (p localPath) Glob() (matches []string, err error) { + return filepath.Glob(p.file) +} + +func (p localPath) StripSlashes() localPath { + return newLocalPath(stripLeadingSlash(p.file)) +} + +func isRelative(base, target localPath) bool { + relative, err := filepath.Rel(base.String(), target.String()) + if err != nil { + return false + } + return relative == "." || relative == stripPathShortcuts(relative) +} + +// remotePath represents always UNIX path, its methods will use path +// package which is always using `/` +type remotePath struct { + file string +} + +func newRemotePath(fileName string) remotePath { + // we assume remote file is a linux container but we need to convert + // windows path separators to unix style for consistent processing + file := strings.ReplaceAll(stripTrailingSlash(fileName), `\`, "/") + return remotePath{file: file} +} + +func (p remotePath) String() string { + return p.file +} + +func (p remotePath) Dir() remotePath { + return newRemotePath(path.Dir(p.file)) +} + +func (p remotePath) Base() remotePath { + return newRemotePath(path.Base(p.file)) +} + +func (p remotePath) Clean() remotePath { + return newRemotePath(path.Clean(p.file)) +} + +func (p remotePath) Join(elem pathSpec) remotePath { + return newRemotePath(path.Join(p.file, elem.String())) +} + +func (p remotePath) StripShortcuts() remotePath { + p = p.Clean() + return newRemotePath(stripPathShortcuts(p.file)) +} + +func (p remotePath) StripSlashes() remotePath { + return newRemotePath(stripLeadingSlash(p.file)) +} + +// strips trailing slash (if any) both unix and windows style +func stripTrailingSlash(file string) string { + if len(file) == 0 { + return file + } + if file != "/" && strings.HasSuffix(string(file[len(file)-1]), "/") { + return file[:len(file)-1] + } + return file +} + +func stripLeadingSlash(file string) string { + // tar strips the leading '/' and '\' if it's there, so we will too + return strings.TrimLeft(file, `/\`) +} + +// stripPathShortcuts removes any leading or trailing "../" from a given path +func stripPathShortcuts(p string) string { + newPath := p + trimmed := strings.TrimPrefix(newPath, "../") + + for trimmed != newPath { + newPath = trimmed + trimmed = strings.TrimPrefix(newPath, "../") + } + + // trim leftover {".", ".."} + if newPath == "." || newPath == ".." { + newPath = "" + } + + if len(newPath) > 0 && string(newPath[0]) == "/" { + return newPath[1:] + } + + return newPath +} diff --git a/vendor/k8s.io/kubernetes/pkg/controller/endpointslicemirroring/endpointslicemirroring_controller.go b/vendor/k8s.io/kubernetes/pkg/controller/endpointslicemirroring/endpointslicemirroring_controller.go index 6ed19266ddce..a94919dc7599 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/endpointslicemirroring/endpointslicemirroring_controller.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/endpointslicemirroring/endpointslicemirroring_controller.go @@ -303,12 +303,11 @@ func (c *Controller) syncEndpoints(key string) error { return err } - // This means that if a Service transitions away from a nil selector, any - // mirrored EndpointSlices will not be cleaned up. #91072 tracks this issue - // for this controller along with the Endpoints and EndpointSlice - // controllers. + // If a selector is specified, clean up any mirrored slices. if svc.Spec.Selector != nil { - return nil + klog.V(4).Infof("%s/%s Service now has selector, cleaning up any mirrored EndpointSlices", namespace, name) + c.endpointSliceTracker.DeleteService(namespace, name) + return c.deleteMirroredSlices(namespace, name) } endpointSlices, err := endpointSlicesMirroredForService(c.endpointSliceLister, namespace, name) @@ -371,7 +370,7 @@ func (c *Controller) onServiceUpdate(prevObj, obj interface{}) { service := obj.(*v1.Service) prevService := prevObj.(*v1.Service) if service == nil || prevService == nil { - utilruntime.HandleError(fmt.Errorf("onServiceUpdate() expected type v1.Endpoints, got %T, %T", prevObj, obj)) + utilruntime.HandleError(fmt.Errorf("onServiceUpdate() expected type v1.Service, got %T, %T", prevObj, obj)) return } if (service.Spec.Selector == nil) != (prevService.Spec.Selector == nil) { diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go b/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go index 80809fa4e7ad..11bfe1005bd4 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go @@ -359,6 +359,7 @@ func ReadLogs(ctx context.Context, path, containerID string, opts *LogOptions, r } return fmt.Errorf("failed to open log file %q: %v", path, err) } + defer newF.Close() f.Close() if err := watcher.Remove(f.Name()); err != nil && !os.IsNotExist(err) { klog.Errorf("failed to remove file watch %q: %v", f.Name(), err) diff --git a/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go b/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go index 2ff94fe8c809..d6d5bbc863bc 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go @@ -263,7 +263,8 @@ func (c *csiMountMgr) SetUpAt(dir string, mounterArgs volume.MounterArgs) error c.supportsSELinux, err = c.kubeVolHost.GetHostUtil().GetSELinuxSupport(dir) if err != nil { - klog.V(2).Info(log("error checking for SELinux support: %s", err)) + // The volume is mounted. Return UncertainProgressError, so kubelet will unmount it when user deletes the pod. + return volumetypes.NewUncertainProgressError(fmt.Sprintf("error checking for SELinux support: %s", err)) } if c.supportsFSGroup(fsType, mounterArgs.FsGroup, c.fsGroupPolicy) { diff --git a/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/BUILD b/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/BUILD index 57b546e76115..ea3fdafc3fe5 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/BUILD @@ -15,11 +15,13 @@ go_library( "//staging/src/k8s.io/mount-utils:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:android": [ + "//pkg/util/selinux:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", "//vendor/k8s.io/klog/v2:go_default_library", "//vendor/k8s.io/utils/path:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ + "//pkg/util/selinux:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", "//vendor/k8s.io/klog/v2:go_default_library", "//vendor/k8s.io/utils/path:go_default_library", diff --git a/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/fake_hostutil.go b/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/fake_hostutil.go index cc5fe628af65..36b72e5e8ecf 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/fake_hostutil.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/fake_hostutil.go @@ -108,7 +108,7 @@ func (hu *FakeHostUtil) GetOwner(pathname string) (int64, int64, error) { // GetSELinuxSupport tests if pathname is on a mount that supports SELinux. // Not implemented for testing func (hu *FakeHostUtil) GetSELinuxSupport(pathname string) (bool, error) { - return false, errors.New("GetSELinuxSupport not implemented") + return false, nil } // GetMode returns permissions of pathname. diff --git a/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/hostutil_linux.go b/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/hostutil_linux.go index 160d22c28ad8..ab1c523358bf 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/hostutil_linux.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/hostutil_linux.go @@ -28,6 +28,7 @@ import ( "golang.org/x/sys/unix" "k8s.io/klog/v2" + "k8s.io/kubernetes/pkg/util/selinux" "k8s.io/mount-utils" utilpath "k8s.io/utils/path" ) @@ -229,8 +230,16 @@ func DoMakeRShared(path string, mountInfoFilename string) error { return nil } +// selinux.SELinuxEnabled implementation for unit tests +type seLinuxEnabledFunc func() bool + // GetSELinux is common implementation of GetSELinuxSupport on Linux. -func GetSELinux(path string, mountInfoFilename string) (bool, error) { +func GetSELinux(path string, mountInfoFilename string, selinuxEnabled seLinuxEnabledFunc) (bool, error) { + // Skip /proc/mounts parsing if SELinux is disabled. + if !selinuxEnabled() { + return false, nil + } + info, err := findMountInfo(path, mountInfoFilename) if err != nil { return false, err @@ -253,7 +262,7 @@ func GetSELinux(path string, mountInfoFilename string) (bool, error) { // GetSELinuxSupport returns true if given path is on a mount that supports // SELinux. func (hu *HostUtil) GetSELinuxSupport(pathname string) (bool, error) { - return GetSELinux(pathname, procMountInfoPath) + return GetSELinux(pathname, procMountInfoPath, selinux.SELinuxEnabled) } // GetOwner returns the integer ID for the user and group of the given path diff --git a/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/BUILD b/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/BUILD index 37908f614db4..df574dbfe2a9 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/BUILD @@ -16,7 +16,6 @@ go_library( "//vendor/k8s.io/utils/nsenter:go_default_library", ], "@io_bazel_rules_go//go/platform:android": [ - "//pkg/volume/util/hostutil:go_default_library", "//staging/src/k8s.io/mount-utils:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", "//vendor/k8s.io/klog/v2:go_default_library", @@ -46,7 +45,6 @@ go_library( "//vendor/k8s.io/utils/nsenter:go_default_library", ], "@io_bazel_rules_go//go/platform:linux": [ - "//pkg/volume/util/hostutil:go_default_library", "//staging/src/k8s.io/mount-utils:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", "//vendor/k8s.io/klog/v2:go_default_library", diff --git a/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/subpath_linux.go b/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/subpath_linux.go index 0588f3a7003c..a7222700d82a 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/subpath_linux.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/subpath_linux.go @@ -29,7 +29,6 @@ import ( "golang.org/x/sys/unix" "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/volume/util/hostutil" "k8s.io/mount-utils" ) @@ -109,12 +108,12 @@ func prepareSubpathTarget(mounter mount.Interface, subpath Subpath) (bool, strin notMount = true } if !notMount { - linuxHostUtil := hostutil.NewHostUtil() - mntInfo, err := linuxHostUtil.FindMountInfo(bindPathTarget) + // It's already mounted, so check if it's bind-mounted to the same path + samePath, err := checkSubPathFileEqual(subpath, bindPathTarget) if err != nil { - return false, "", fmt.Errorf("error calling findMountInfo for %s: %s", bindPathTarget, err) + return false, "", fmt.Errorf("error checking subpath mount info for %s: %s", bindPathTarget, err) } - if mntInfo.Root != subpath.Path { + if !samePath { // It's already mounted but not what we want, unmount it if err = mounter.Unmount(bindPathTarget); err != nil { return false, "", fmt.Errorf("error ummounting %s: %s", bindPathTarget, err) @@ -155,6 +154,23 @@ func prepareSubpathTarget(mounter mount.Interface, subpath Subpath) (bool, strin return false, bindPathTarget, nil } +func checkSubPathFileEqual(subpath Subpath, bindMountTarget string) (bool, error) { + s, err := os.Lstat(subpath.Path) + if err != nil { + return false, fmt.Errorf("stat %s failed: %s", subpath.Path, err) + } + + t, err := os.Lstat(bindMountTarget) + if err != nil { + return false, fmt.Errorf("lstat %s failed: %s", bindMountTarget, err) + } + + if !os.SameFile(s, t) { + return false, nil + } + return true, nil +} + func getSubpathBindTarget(subpath Subpath) string { // containerName is DNS label, i.e. safe as a directory name. return filepath.Join(subpath.PodDir, containerSubPathDirectoryName, subpath.VolumeName, subpath.ContainerName, strconv.Itoa(subpath.VolumeMountIndex)) diff --git a/vendor/k8s.io/mount-utils/mount_helper_windows.go b/vendor/k8s.io/mount-utils/mount_helper_windows.go index 865ab5c3243f..2dbbc73e9c05 100644 --- a/vendor/k8s.io/mount-utils/mount_helper_windows.go +++ b/vendor/k8s.io/mount-utils/mount_helper_windows.go @@ -84,15 +84,9 @@ func NormalizeWindowsPath(path string) string { // ValidateDiskNumber : disk number should be a number in [0, 99] func ValidateDiskNumber(disk string) error { - diskNum, err := strconv.Atoi(disk) - if err != nil { - return fmt.Errorf("wrong disk number format: %q, err:%v", disk, err) + if _, err := strconv.Atoi(disk); err != nil { + return fmt.Errorf("wrong disk number format: %q, err: %v", disk, err) } - - if diskNum < 0 || diskNum > 99 { - return fmt.Errorf("disk number out of range: %q", disk) - } - return nil } diff --git a/vendor/modules.txt b/vendor/modules.txt index d27707ec08d3..dfcc48a7ceb6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -179,7 +179,7 @@ github.com/containerd/cgroups/v2 github.com/containerd/cgroups/v2/stats # github.com/containerd/console v1.0.2 => github.com/containerd/console v1.0.2 github.com/containerd/console -# github.com/containerd/containerd v1.5.1 => github.com/k3s-io/containerd v1.4.11-k3s1 +# github.com/containerd/containerd v1.5.1 => github.com/k3s-io/containerd v1.4.12-k3s1 ## explicit github.com/containerd/containerd github.com/containerd/containerd/api/events @@ -1380,7 +1380,7 @@ gopkg.in/warnings.v0 gopkg.in/yaml.v2 # gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 gopkg.in/yaml.v3 -# k8s.io/api v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.12-k3s1 +# k8s.io/api v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.13-k3s1 ## explicit k8s.io/api/admission/v1 k8s.io/api/admission/v1beta1 @@ -1428,7 +1428,7 @@ k8s.io/api/scheduling/v1beta1 k8s.io/api/storage/v1 k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 -# k8s.io/apiextensions-apiserver v0.18.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.12-k3s1 +# k8s.io/apiextensions-apiserver v0.18.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.13-k3s1 k8s.io/apiextensions-apiserver/pkg/apihelpers k8s.io/apiextensions-apiserver/pkg/apis/apiextensions k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install @@ -1468,7 +1468,7 @@ k8s.io/apiextensions-apiserver/pkg/generated/openapi k8s.io/apiextensions-apiserver/pkg/registry/customresource k8s.io/apiextensions-apiserver/pkg/registry/customresource/tableconvertor k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition -# k8s.io/apimachinery v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.12-k3s1 +# k8s.io/apimachinery v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.13-k3s1 ## explicit k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors @@ -1532,7 +1532,7 @@ k8s.io/apimachinery/pkg/watch k8s.io/apimachinery/third_party/forked/golang/json k8s.io/apimachinery/third_party/forked/golang/netutil k8s.io/apimachinery/third_party/forked/golang/reflect -# k8s.io/apiserver v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.12-k3s1 +# k8s.io/apiserver v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.13-k3s1 ## explicit k8s.io/apiserver/pkg/admission k8s.io/apiserver/pkg/admission/configuration @@ -1671,7 +1671,7 @@ k8s.io/apiserver/plugin/pkg/audit/webhook k8s.io/apiserver/plugin/pkg/authenticator/token/oidc k8s.io/apiserver/plugin/pkg/authenticator/token/webhook k8s.io/apiserver/plugin/pkg/authorizer/webhook -# k8s.io/cli-runtime v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.12-k3s1 +# k8s.io/cli-runtime v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.13-k3s1 k8s.io/cli-runtime/pkg/genericclioptions k8s.io/cli-runtime/pkg/kustomize k8s.io/cli-runtime/pkg/kustomize/k8sdeps @@ -1684,7 +1684,7 @@ k8s.io/cli-runtime/pkg/kustomize/k8sdeps/transformer/patch k8s.io/cli-runtime/pkg/kustomize/k8sdeps/validator k8s.io/cli-runtime/pkg/printers k8s.io/cli-runtime/pkg/resource -# k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible => github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.12-k3s1 +# k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible => github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.13-k3s1 ## explicit k8s.io/client-go/discovery k8s.io/client-go/discovery/cached @@ -1931,7 +1931,7 @@ k8s.io/client-go/util/jsonpath k8s.io/client-go/util/keyutil k8s.io/client-go/util/retry k8s.io/client-go/util/workqueue -# k8s.io/cloud-provider v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.12-k3s1 +# k8s.io/cloud-provider v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.13-k3s1 ## explicit k8s.io/cloud-provider k8s.io/cloud-provider/api @@ -1952,13 +1952,13 @@ k8s.io/cloud-provider/service/helpers k8s.io/cloud-provider/volume k8s.io/cloud-provider/volume/errors k8s.io/cloud-provider/volume/helpers -# k8s.io/cluster-bootstrap v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.12-k3s1 +# k8s.io/cluster-bootstrap v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.13-k3s1 k8s.io/cluster-bootstrap/token/api k8s.io/cluster-bootstrap/token/jws k8s.io/cluster-bootstrap/token/util k8s.io/cluster-bootstrap/util/secrets k8s.io/cluster-bootstrap/util/tokens -# k8s.io/code-generator v0.18.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.12-k3s1 +# k8s.io/code-generator v0.18.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.13-k3s1 k8s.io/code-generator/cmd/client-gen/args k8s.io/code-generator/cmd/client-gen/generators k8s.io/code-generator/cmd/client-gen/generators/fake @@ -1973,7 +1973,7 @@ k8s.io/code-generator/cmd/lister-gen/args k8s.io/code-generator/cmd/lister-gen/generators k8s.io/code-generator/pkg/namer k8s.io/code-generator/pkg/util -# k8s.io/component-base v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.12-k3s1 +# k8s.io/component-base v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.13-k3s1 ## explicit k8s.io/component-base/cli/flag k8s.io/component-base/cli/globalflag @@ -1999,13 +1999,13 @@ k8s.io/component-base/metrics/testutil k8s.io/component-base/term k8s.io/component-base/version k8s.io/component-base/version/verflag -# k8s.io/component-helpers v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.12-k3s1 +# k8s.io/component-helpers v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.13-k3s1 k8s.io/component-helpers/apimachinery/lease k8s.io/component-helpers/auth/rbac/reconciliation k8s.io/component-helpers/auth/rbac/validation k8s.io/component-helpers/scheduling/corev1 k8s.io/component-helpers/scheduling/corev1/nodeaffinity -# k8s.io/controller-manager v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.12-k3s1 +# k8s.io/controller-manager v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.13-k3s1 ## explicit k8s.io/controller-manager/app k8s.io/controller-manager/config @@ -2015,11 +2015,11 @@ k8s.io/controller-manager/pkg/clientbuilder k8s.io/controller-manager/pkg/features k8s.io/controller-manager/pkg/features/register k8s.io/controller-manager/pkg/informerfactory -# k8s.io/cri-api v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.12-k3s1 +# k8s.io/cri-api v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.13-k3s1 ## explicit k8s.io/cri-api/pkg/apis k8s.io/cri-api/pkg/apis/runtime/v1alpha2 -# k8s.io/csi-translation-lib v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.12-k3s1 +# k8s.io/csi-translation-lib v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.13-k3s1 k8s.io/csi-translation-lib k8s.io/csi-translation-lib/plugins # k8s.io/gengo v0.0.0-20201113003025-83324d819ded @@ -2037,7 +2037,7 @@ k8s.io/heapster/metrics/api/v1/types k8s.io/klog # k8s.io/klog/v2 v2.4.0 k8s.io/klog/v2 -# k8s.io/kube-aggregator v0.18.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.12-k3s1 +# k8s.io/kube-aggregator v0.18.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.13-k3s1 k8s.io/kube-aggregator/pkg/apis/apiregistration k8s.io/kube-aggregator/pkg/apis/apiregistration/install k8s.io/kube-aggregator/pkg/apis/apiregistration/v1 @@ -2065,9 +2065,9 @@ k8s.io/kube-aggregator/pkg/controllers/status k8s.io/kube-aggregator/pkg/registry/apiservice k8s.io/kube-aggregator/pkg/registry/apiservice/etcd k8s.io/kube-aggregator/pkg/registry/apiservice/rest -# k8s.io/kube-controller-manager v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.12-k3s1 +# k8s.io/kube-controller-manager v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.13-k3s1 k8s.io/kube-controller-manager/config/v1alpha1 -# k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd +# k8s.io/kube-openapi v0.0.0-20211110013926-83f114cd0513 k8s.io/kube-openapi/pkg/aggregator k8s.io/kube-openapi/pkg/builder k8s.io/kube-openapi/pkg/common @@ -2081,13 +2081,13 @@ k8s.io/kube-openapi/pkg/validation/spec k8s.io/kube-openapi/pkg/validation/strfmt k8s.io/kube-openapi/pkg/validation/strfmt/bson k8s.io/kube-openapi/pkg/validation/validate -# k8s.io/kube-proxy v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.12-k3s1 +# k8s.io/kube-proxy v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.13-k3s1 k8s.io/kube-proxy/config/v1alpha1 -# k8s.io/kube-scheduler v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.12-k3s1 +# k8s.io/kube-scheduler v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.13-k3s1 k8s.io/kube-scheduler/config/v1 k8s.io/kube-scheduler/config/v1beta1 k8s.io/kube-scheduler/extender/v1 -# k8s.io/kubectl v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.12-k3s1 +# k8s.io/kubectl v1.20.11 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.13-k3s1 ## explicit k8s.io/kubectl/pkg/apps k8s.io/kubectl/pkg/cmd @@ -2165,7 +2165,7 @@ k8s.io/kubectl/pkg/util/storage k8s.io/kubectl/pkg/util/templates k8s.io/kubectl/pkg/util/term k8s.io/kubectl/pkg/validation -# k8s.io/kubelet v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.12-k3s1 +# k8s.io/kubelet v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.13-k3s1 k8s.io/kubelet/config/v1alpha1 k8s.io/kubelet/config/v1beta1 k8s.io/kubelet/pkg/apis/credentialprovider @@ -2176,7 +2176,7 @@ k8s.io/kubelet/pkg/apis/pluginregistration/v1 k8s.io/kubelet/pkg/apis/podresources/v1 k8s.io/kubelet/pkg/apis/podresources/v1alpha1 k8s.io/kubelet/pkg/apis/stats/v1alpha1 -# k8s.io/kubernetes v1.20.12 => github.com/k3s-io/kubernetes v1.20.12-k3s1 +# k8s.io/kubernetes v1.20.13 => github.com/k3s-io/kubernetes v1.20.13-k3s1 ## explicit k8s.io/kubernetes/cmd/kube-apiserver/app k8s.io/kubernetes/cmd/kube-apiserver/app/options @@ -2896,7 +2896,7 @@ k8s.io/kubernetes/third_party/forked/gonum/graph k8s.io/kubernetes/third_party/forked/gonum/graph/internal/linear k8s.io/kubernetes/third_party/forked/gonum/graph/simple k8s.io/kubernetes/third_party/forked/gonum/graph/traverse -# k8s.io/legacy-cloud-providers v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.12-k3s1 +# k8s.io/legacy-cloud-providers v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.13-k3s1 k8s.io/legacy-cloud-providers/aws k8s.io/legacy-cloud-providers/azure k8s.io/legacy-cloud-providers/azure/auth @@ -2938,7 +2938,7 @@ k8s.io/legacy-cloud-providers/openstack k8s.io/legacy-cloud-providers/vsphere k8s.io/legacy-cloud-providers/vsphere/vclib k8s.io/legacy-cloud-providers/vsphere/vclib/diskmanagers -# k8s.io/metrics v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.12-k3s1 +# k8s.io/metrics v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.13-k3s1 k8s.io/metrics/pkg/apis/custom_metrics k8s.io/metrics/pkg/apis/custom_metrics/v1beta1 k8s.io/metrics/pkg/apis/custom_metrics/v1beta2 @@ -2954,7 +2954,7 @@ k8s.io/metrics/pkg/client/clientset/versioned/typed/metrics/v1beta1 k8s.io/metrics/pkg/client/custom_metrics k8s.io/metrics/pkg/client/custom_metrics/scheme k8s.io/metrics/pkg/client/external_metrics -# k8s.io/mount-utils v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.12-k3s1 +# k8s.io/mount-utils v0.0.0 => github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.13-k3s1 k8s.io/mount-utils # k8s.io/utils v0.0.0-20201110183641-67b214c5f920 ## explicit @@ -3014,7 +3014,7 @@ sigs.k8s.io/yaml # github.com/containerd/btrfs => github.com/containerd/btrfs v1.0.0 # github.com/containerd/cgroups => github.com/containerd/cgroups v1.0.1 # github.com/containerd/console => github.com/containerd/console v1.0.2 -# github.com/containerd/containerd => github.com/k3s-io/containerd v1.4.11-k3s1 +# github.com/containerd/containerd => github.com/k3s-io/containerd v1.4.12-k3s1 # github.com/containerd/continuity => github.com/k3s-io/continuity v0.0.0-20210309170710-f93269e0d5c1 # github.com/containerd/cri => github.com/k3s-io/cri v1.4.0-k3s.7 # github.com/containerd/fifo => github.com/containerd/fifo v1.0.0 @@ -3041,32 +3041,32 @@ sigs.k8s.io/yaml # google.golang.org/genproto => google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63 # google.golang.org/grpc => google.golang.org/grpc v1.27.1 # gopkg.in/square/go-jose.v2 => gopkg.in/square/go-jose.v2 v2.2.2 -# k8s.io/api => github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.12-k3s1 -# k8s.io/apiextensions-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.12-k3s1 -# k8s.io/apimachinery => github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.12-k3s1 -# k8s.io/apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.12-k3s1 -# k8s.io/cli-runtime => github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.12-k3s1 -# k8s.io/client-go => github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.12-k3s1 -# k8s.io/cloud-provider => github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.12-k3s1 -# k8s.io/cluster-bootstrap => github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.12-k3s1 -# k8s.io/code-generator => github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.12-k3s1 -# k8s.io/component-base => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.12-k3s1 -# k8s.io/component-helpers => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.12-k3s1 -# k8s.io/controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.12-k3s1 -# k8s.io/cri-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.12-k3s1 -# k8s.io/csi-translation-lib => github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.12-k3s1 -# k8s.io/kube-aggregator => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.12-k3s1 -# k8s.io/kube-controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.12-k3s1 -# k8s.io/kube-proxy => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.12-k3s1 -# k8s.io/kube-scheduler => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.12-k3s1 -# k8s.io/kubectl => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.12-k3s1 -# k8s.io/kubelet => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.12-k3s1 -# k8s.io/kubernetes => github.com/k3s-io/kubernetes v1.20.12-k3s1 -# k8s.io/legacy-cloud-providers => github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.12-k3s1 -# k8s.io/metrics => github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.12-k3s1 -# k8s.io/mount-utils => github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.12-k3s1 -# k8s.io/node-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/node-api v1.20.12-k3s1 -# k8s.io/sample-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-apiserver v1.20.12-k3s1 -# k8s.io/sample-cli-plugin => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.20.12-k3s1 -# k8s.io/sample-controller => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-controller v1.20.12-k3s1 +# k8s.io/api => github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.20.13-k3s1 +# k8s.io/apiextensions-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.20.13-k3s1 +# k8s.io/apimachinery => github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.20.13-k3s1 +# k8s.io/apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.20.13-k3s1 +# k8s.io/cli-runtime => github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.20.13-k3s1 +# k8s.io/client-go => github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.20.13-k3s1 +# k8s.io/cloud-provider => github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.20.13-k3s1 +# k8s.io/cluster-bootstrap => github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.20.13-k3s1 +# k8s.io/code-generator => github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.20.13-k3s1 +# k8s.io/component-base => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.20.13-k3s1 +# k8s.io/component-helpers => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.20.13-k3s1 +# k8s.io/controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.20.13-k3s1 +# k8s.io/cri-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.20.13-k3s1 +# k8s.io/csi-translation-lib => github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.20.13-k3s1 +# k8s.io/kube-aggregator => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.20.13-k3s1 +# k8s.io/kube-controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.20.13-k3s1 +# k8s.io/kube-proxy => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.20.13-k3s1 +# k8s.io/kube-scheduler => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.20.13-k3s1 +# k8s.io/kubectl => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.20.13-k3s1 +# k8s.io/kubelet => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.20.13-k3s1 +# k8s.io/kubernetes => github.com/k3s-io/kubernetes v1.20.13-k3s1 +# k8s.io/legacy-cloud-providers => github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.20.13-k3s1 +# k8s.io/metrics => github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.20.13-k3s1 +# k8s.io/mount-utils => github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.20.13-k3s1 +# k8s.io/node-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/node-api v1.20.13-k3s1 +# k8s.io/sample-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-apiserver v1.20.13-k3s1 +# k8s.io/sample-cli-plugin => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.20.13-k3s1 +# k8s.io/sample-controller => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-controller v1.20.13-k3s1 # mvdan.cc/unparam => mvdan.cc/unparam v0.0.0-20190209190245-fbb59629db34