diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000000..1edb0da4355d --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,18 @@ +name: "generate-docs" +on: + push: + branches: + - master + +jobs: + generate-docs: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: 1.16.4 + stable: true + - name: gendocs + run: | + ./hack/generate_docs.sh ${{ secrets.MINIKUBE_BOT_PAT }} diff --git a/.github/workflows/time-to-k8s.yml b/.github/workflows/time-to-k8s.yml new file mode 100644 index 000000000000..eeb3a650929d --- /dev/null +++ b/.github/workflows/time-to-k8s.yml @@ -0,0 +1,18 @@ +name: "time-to-k8s benchmark" +on: + release: + types: [released] +jobs: + benchmark: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Checkout submodules + run: git submodule update --init + - uses: actions/setup-go@v2 + with: + go-version: 1.16.4 + stable: true + - name: Benchmark + run: | + ./hack/benchmark/time-to-k8s/time-to-k8s.sh ${{ secrets.MINIKUBE_BOT_PAT }} diff --git a/.gitignore b/.gitignore index e090af9badfc..cf6f99bc49fd 100644 --- a/.gitignore +++ b/.gitignore @@ -35,10 +35,6 @@ _testmain.go #iso version file deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/VERSION -/pkg/minikube/assets/assets.go-e -/pkg/minikube/assets/assets.go -/pkg/minikube/translate/translations.go -/pkg/minikube/translate/translations.go-e /minikube .DS_Store diff --git a/.gitmodules b/.gitmodules index 0e9969323318..d398a94cf9b5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "site/themes/docsy"] path = site/themes/docsy url = https://github.com/google/docsy.git -[submodule "hack/benchmark/time-to-k8s/time-to-k8s"] - path = hack/benchmark/time-to-k8s/time-to-k8s +[submodule "hack/benchmark/time-to-k8s/time-to-k8s-repo"] + path = hack/benchmark/time-to-k8s/time-to-k8s-repo url = https://github.com/tstromberg/time-to-k8s.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 5de17385e3af..947990df5587 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,37 @@ # Release Notes +## Version 1.21.0 - 2021-06-10 +* add more polish translations [#11587](https://github.com/kubernetes/minikube/pull/11587) +* Modify MetricsServer to use v1 api version (instead of v1beta1). [#11584](https://github.com/kubernetes/minikube/pull/11584) + +For a more detailed changelog, including changes occuring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md). + +Thank you to our contributors for this release! + +- Andriy Dzikh +- Ilya Zuyev +- JacekDuszenko +- Medya Ghazizadeh +- Sharif Elgamal +- Steven Powell + +Thank you to our PR reviewers for this release! + +- spowelljr (11 comments) +- medyagh (2 comments) +- sharifelgamal (2 comments) +- andriyDev (1 comments) + +Thank you to our triage members for this release! + +- RA489 (12 comments) +- andriyDev (10 comments) +- sharifelgamal (10 comments) +- JacekDuszenko (7 comments) +- spowelljr (5 comments) + +Check out our [contributions leaderboard](https://minikube.sigs.k8s.io/docs/contrib/leaderboard/v1.21.0/) for this release! + ## Version 1.21.0-beta.0 - 2021-06-02 Features: * Support setting addons from environmental variables [#11469](https://github.com/kubernetes/minikube/pull/11469) diff --git a/Makefile b/Makefile index 0c072af78258..e31255169154 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ # Bump these on release - and please check ISO_VERSION for correctness. VERSION_MAJOR ?= 1 VERSION_MINOR ?= 21 -VERSION_BUILD ?= 0-beta.0 +VERSION_BUILD ?= 0 RAW_VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD) VERSION ?= v$(RAW_VERSION) @@ -23,7 +23,7 @@ KUBERNETES_VERSION ?= $(shell egrep "DefaultKubernetesVersion =" pkg/minikube/co KIC_VERSION ?= $(shell egrep "Version =" pkg/drivers/kic/types.go | cut -d \" -f2) # Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions -ISO_VERSION ?= v1.20.0 +ISO_VERSION ?= v1.21.0 # Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta DEB_VERSION ?= $(subst -,~,$(RAW_VERSION)) DEB_REVISION ?= 0 @@ -40,7 +40,7 @@ KVM_GO_VERSION ?= $(GO_VERSION:.0=) INSTALL_SIZE ?= $(shell du out/minikube-windows-amd64.exe | cut -f1) BUILDROOT_BRANCH ?= 2020.02.12 -REGISTRY?=gcr.io/k8s-minikube +REGISTRY ?= gcr.io/k8s-minikube # Get git commit id COMMIT_NO := $(shell git rev-parse HEAD 2> /dev/null || true) @@ -74,8 +74,7 @@ GOLINT_GOGC ?= 100 GOLINT_OPTIONS = --timeout 7m \ --build-tags "${MINIKUBE_INTEGRATION_BUILD_TAGS}" \ --enable gofmt,goimports,gocritic,golint,gocyclo,misspell,nakedret,stylecheck,unconvert,unparam,dogsled \ - --exclude 'variable on range scope.*in function literal|ifElseChain' \ - --skip-files "pkg/minikube/translate/translations.go|pkg/minikube/assets/assets.go" + --exclude 'variable on range scope.*in function literal|ifElseChain' export GO111MODULE := on @@ -130,13 +129,15 @@ MINIKUBE_MARKDOWN_FILES := README.md CONTRIBUTING.md CHANGELOG.md MINIKUBE_BUILD_TAGS := MINIKUBE_INTEGRATION_BUILD_TAGS := integration $(MINIKUBE_BUILD_TAGS) -CMD_SOURCE_DIRS = cmd pkg +CMD_SOURCE_DIRS = cmd pkg deploy/addons translations SOURCE_DIRS = $(CMD_SOURCE_DIRS) test -SOURCE_PACKAGES = ./cmd/... ./pkg/... ./test/... +SOURCE_PACKAGES = ./cmd/... ./pkg/... ./deploy/addons/... ./translations/... ./test/... -SOURCE_GENERATED = pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go SOURCE_FILES = $(shell find $(CMD_SOURCE_DIRS) -type f -name "*.go" | grep -v _test.go) GOTEST_FILES = $(shell find $(CMD_SOURCE_DIRS) -type f -name "*.go" | grep _test.go) +ADDON_FILES = $(shell find "deploy/addons" -type f | grep -v "\.go") +TRANSLATION_FILES = $(shell find "translations" -type f | grep -v "\.go") +ASSET_FILES = $(ADDON_FILES) $(TRANSLATION_FILES) # kvm2 ldflags KVM2_LDFLAGS := -X k8s.io/minikube/pkg/drivers/kvm.version=$(VERSION) -X k8s.io/minikube/pkg/drivers/kvm.gitCommitID=$(COMMIT) @@ -195,7 +196,7 @@ ifneq ($(TEST_FILES),) INTEGRATION_TESTS_TO_RUN := $(addprefix ./test/integration/, $(TEST_HELPERS) $(TEST_FILES)) endif -out/minikube$(IS_EXE): $(SOURCE_GENERATED) $(SOURCE_FILES) go.mod +out/minikube$(IS_EXE): $(SOURCE_FILES) $(ASSET_FILES) go.mod ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y) $(call DOCKER,$(BUILD_IMAGE),GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) /usr/bin/make $@) else @@ -244,7 +245,7 @@ minikube-windows-amd64.exe: out/minikube-windows-amd64.exe ## Build Minikube for eq = $(and $(findstring x$(1),x$(2)),$(findstring x$(2),x$(1))) -out/minikube-%: $(SOURCE_GENERATED) $(SOURCE_FILES) +out/minikube-%: $(SOURCE_FILES) $(ASSET_FILES) ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y) $(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@) else @@ -253,7 +254,7 @@ else go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube endif -out/minikube-linux-armv6: $(SOURCE_GENERATED) $(SOURCE_FILES) +out/minikube-linux-armv6: $(SOURCE_FILES) $(ASSET_FILES) $(Q)GOOS=linux GOARCH=arm GOARM=6 \ go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube @@ -310,11 +311,11 @@ iso_in_docker: --user $(shell id -u):$(shell id -g) --env HOME=/tmp --env IN_DOCKER=1 \ $(ISO_BUILD_IMAGE) /bin/bash -test-iso: $(SOURCE_GENERATED) +test-iso: go test -v $(INTEGRATION_TESTS_TO_RUN) --tags=iso --minikube-start-args="--iso-url=file://$(shell pwd)/out/buildroot/output/images/rootfs.iso9660" .PHONY: test-pkg -test-pkg/%: $(SOURCE_GENERATED) ## Trigger packaging test +test-pkg/%: ## Trigger packaging test go test -v -test.timeout=60m ./$* --tags="$(MINIKUBE_BUILD_TAGS)" .PHONY: all @@ -364,7 +365,7 @@ else endif .PHONY: test -test: $(SOURCE_GENERATED) ## Trigger minikube test +test: ## Trigger minikube test MINIKUBE_LDFLAGS="${MINIKUBE_LDFLAGS}" ./test.sh .PHONY: generate-docs @@ -372,7 +373,7 @@ generate-docs: extract out/minikube ## Automatically generate commands documenta out/minikube generate-docs --path ./site/content/en/docs/commands/ --test-path ./site/content/en/docs/contrib/tests.en.md --code-path ./site/content/en/docs/contrib/errorcodes.en.md .PHONY: gotest -gotest: $(SOURCE_GENERATED) ## Trigger minikube test +gotest: ## Trigger minikube test $(if $(quiet),@echo " TEST $@") $(Q)go test -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" $(MINIKUBE_TEST_FILES) @@ -397,33 +398,6 @@ out/coverage.html: out/coverage.out extract: ## extract internationalization words for translations go run cmd/extract/extract.go -# Regenerates assets.go when template files have been updated -pkg/minikube/assets/assets.go: $(shell find "deploy/addons" -type f) -ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y) - $(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@) -endif - @which go-bindata >/dev/null 2>&1 || GO111MODULE=off GOBIN="$(GOPATH)$(DIRSEP)bin" go get github.com/go-bindata/go-bindata/... - $(if $(quiet),@echo " GEN $@") - $(Q)PATH="$(PATH)$(PATHSEP)$(GOPATH)$(DIRSEP)bin" go-bindata -nomemcopy -o $@ -pkg assets deploy/addons/... - $(Q)-gofmt -s -w $@ - @#golint: Dns should be DNS (compat sed) - @sed -i -e 's/Dns/DNS/g' $@ && rm -f ./-e - @#golint: Html should be HTML (compat sed) - @sed -i -e 's/Html/HTML/g' $@ && rm -f ./-e - @#golint: don't use underscores in Go names - @sed -i -e 's/SnapshotStorageK8sIo_volumesnapshot/SnapshotStorageK8sIoVolumesnapshot/g' $@ && rm -f ./-e - -pkg/minikube/translate/translations.go: $(shell find "translations/" -type f) -ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y) - $(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@) -endif - @which go-bindata >/dev/null 2>&1 || GO111MODULE=off GOBIN="$(GOPATH)$(DIRSEP)bin" go get github.com/go-bindata/go-bindata/... - $(if $(quiet),@echo " GEN $@") - $(Q)PATH="$(PATH)$(PATHSEP)$(GOPATH)$(DIRSEP)bin" go-bindata -nomemcopy -o $@ -pkg translate translations/... - $(Q)-gofmt -s -w $@ - @#golint: Json should be JSON (compat sed) - @sed -i -e 's/Json/JSON/' $@ && rm -f ./-e - .PHONY: cross cross: minikube-linux-amd64 minikube-darwin-amd64 minikube-windows-amd64.exe ## Build minikube for all platform @@ -490,7 +464,7 @@ goimports: ## Run goimports and list the files differs from goimport's @test -z "`goimports -l $(SOURCE_DIRS)`" .PHONY: golint -golint: $(SOURCE_GENERATED) ## Run golint +golint: ## Run golint @golint -set_exit_status $(SOURCE_PACKAGES) .PHONY: gocyclo @@ -505,17 +479,17 @@ out/linters/golangci-lint-$(GOLINT_VERSION): # this one is meant for local use .PHONY: lint ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y) -lint: $(SOURCE_GENERATED) +lint: docker run --rm -v $(pwd):/app -w /app golangci/golangci-lint:$(GOLINT_VERSION) \ golangci-lint run ${GOLINT_OPTIONS} --skip-dirs "cmd/drivers/kvm|cmd/drivers/hyperkit|pkg/drivers/kvm|pkg/drivers/hyperkit" ./... else -lint: $(SOURCE_GENERATED) out/linters/golangci-lint-$(GOLINT_VERSION) ## Run lint +lint: out/linters/golangci-lint-$(GOLINT_VERSION) ## Run lint ./out/linters/golangci-lint-$(GOLINT_VERSION) run ${GOLINT_OPTIONS} ./... endif # lint-ci is slower version of lint and is meant to be used in ci (travis) to avoid out of memory leaks. .PHONY: lint-ci -lint-ci: $(SOURCE_GENERATED) out/linters/golangci-lint-$(GOLINT_VERSION) ## Run lint-ci +lint-ci: out/linters/golangci-lint-$(GOLINT_VERSION) ## Run lint-ci GOGC=${GOLINT_GOGC} ./out/linters/golangci-lint-$(GOLINT_VERSION) run \ --concurrency ${GOLINT_JOBS} ${GOLINT_OPTIONS} ./... @@ -533,7 +507,7 @@ mdlint: verify-iso: # Make sure the current ISO exists in the expected bucket gsutil stat gs://$(ISO_BUCKET)/minikube-$(ISO_VERSION).iso -out/docs/minikube.md: $(shell find "cmd") $(shell find "pkg/minikube/constants") $(SOURCE_GENERATED) +out/docs/minikube.md: $(shell find "cmd") $(shell find "pkg/minikube/constants") go run -ldflags="$(MINIKUBE_LDFLAGS)" -tags gendocs hack/help_text/gen_help_text.go @@ -662,7 +636,7 @@ release-hyperkit-driver: install-hyperkit-driver checksum ## Copy hyperkit using gsutil cp $(GOBIN)/docker-machine-driver-hyperkit.sha256 gs://minikube/drivers/hyperkit/$(VERSION)/ .PHONY: check-release -check-release: $(SOURCE_GENERATED) ## Execute go test +check-release: ## Execute go test go test -v ./deploy/minikube/release_sanity_test.go -tags=release buildroot-image: $(ISO_BUILD_IMAGE) # convenient alias to build the docker container @@ -705,6 +679,21 @@ KICBASE_IMAGE_GCR ?= $(REGISTRY)/kicbase:$(KIC_VERSION) KICBASE_IMAGE_HUB ?= kicbase/stable:$(KIC_VERSION) KICBASE_IMAGE_REGISTRIES ?= $(KICBASE_IMAGE_GCR) $(KICBASE_IMAGE_HUB) +.PHONY: local-kicbase +local-kicbase: deploy/kicbase/auto-pause ## Builds the kicbase image and tags it local/kicbase:latest and local/kicbase:$(KIC_VERSION)-$(COMMIT_SHORT) + docker build -f ./deploy/kicbase/Dockerfile -t local/kicbase:$(KIC_VERSION) --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) --cache-from $(KICBASE_IMAGE_GCR) ./deploy/kicbase + docker tag local/kicbase:$(KIC_VERSION) local/kicbase:latest + docker tag local/kicbase:$(KIC_VERSION) local/kicbase:$(KIC_VERSION)-$(COMMIT_SHORT) + +SED = sed -i +ifeq ($(GOOS),darwin) + SED = sed -i '' +endif + +.PHONY: local-kicbase-debug +local-kicbase-debug: local-kicbase ## Builds a local kicbase image and switches source code to point to it + $(SED) 's|Version = .*|Version = \"$(KIC_VERSION)-$(COMMIT_SHORT)\"|;s|baseImageSHA = .*|baseImageSHA = \"\"|;s|gcrRepo = .*|gcrRepo = \"local/kicbase\"|;s|dockerhubRepo = .*|dockerhubRepo = \"local/kicbase\"|' pkg/drivers/kic/types.go + .PHONY: push-kic-base-image push-kic-base-image: deploy/kicbase/auto-pause docker-multi-arch-builder ## Push multi-arch local/kicbase:latest to all remote registries ifdef AUTOPUSH @@ -753,7 +742,7 @@ endif docker push $(IMAGE) .PHONY: out/gvisor-addon -out/gvisor-addon: $(SOURCE_GENERATED) ## Build gvisor addon +out/gvisor-addon: ## Build gvisor addon $(if $(quiet),@echo " GO $@") $(Q)GOOS=linux CGO_ENABLED=0 go build -o $@ cmd/gvisor/gvisor.go @@ -866,8 +855,7 @@ site/themes/docsy/assets/vendor/bootstrap/package.js: ## update the website docs out/hugo/hugo: mkdir -p out test -d out/hugo || git clone https://github.com/gohugoio/hugo.git out/hugo - go get golang.org/dl/go1.16 && go1.16 download - (cd out/hugo && go1.16 build --tags extended) + (cd out/hugo && go build --tags extended) .PHONY: site site: site/themes/docsy/assets/vendor/bootstrap/package.js out/hugo/hugo ## Serve the documentation site to localhost @@ -882,16 +870,16 @@ out/mkcmp: GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o $@ cmd/performance/mkcmp/main.go .PHONY: deploy/kicbase/auto-pause # auto pause binary to be used for kic image work around for not passing the whole repo as docker context -deploy/kicbase/auto-pause: $(SOURCE_GENERATED) $(SOURCE_FILES) +deploy/kicbase/auto-pause: $(SOURCE_FILES) $(ASSET_FILES) GOOS=linux GOARCH=$(GOARCH) go build -o $@ cmd/auto-pause/auto-pause.go # auto pause binary to be used for ISO -deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/usr/bin/auto-pause: $(SOURCE_GENERATED) $(SOURCE_FILES) +deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/usr/bin/auto-pause: $(SOURCE_FILES) $(ASSET_FILES) GOOS=linux GOARCH=$(GOARCH) go build -o $@ cmd/auto-pause/auto-pause.go .PHONY: deploy/addons/auto-pause/auto-pause-hook -deploy/addons/auto-pause/auto-pause-hook: $(SOURCE_GENERATED) ## Build auto-pause hook addon +deploy/addons/auto-pause/auto-pause-hook: ## Build auto-pause hook addon $(if $(quiet),@echo " GO $@") $(Q)GOOS=linux CGO_ENABLED=0 go build -a --ldflags '-extldflags "-static"' -tags netgo -installsuffix netgo -o $@ cmd/auto-pause/auto-pause-hook/main.go cmd/auto-pause/auto-pause-hook/config.go cmd/auto-pause/auto-pause-hook/certs.go diff --git a/cmd/minikube/cmd/config/config.go b/cmd/minikube/cmd/config/config.go index 8ef3630915f1..a3694e0a20e4 100644 --- a/cmd/minikube/cmd/config/config.go +++ b/cmd/minikube/cmd/config/config.go @@ -122,18 +122,6 @@ var settings = []Setting{ name: config.ReminderWaitPeriodInHours, set: SetInt, }, - { - name: config.WantReportError, - set: SetBool, - }, - { - name: config.WantReportErrorPrompt, - set: SetBool, - }, - { - name: config.WantKubectlDownloadMsg, - set: SetBool, - }, { name: config.WantNoneDriverWarning, set: SetBool, @@ -146,14 +134,6 @@ var settings = []Setting{ name: Bootstrapper, set: SetString, }, - { - name: config.ShowDriverDeprecationNotification, - set: SetBool, - }, - { - name: config.ShowBootstrapperDeprecationNotification, - set: SetBool, - }, { name: "insecure-registry", set: SetString, @@ -172,7 +152,7 @@ var settings = []Setting{ setMap: SetMap, }, { - name: "embed-certs", + name: config.EmbedCerts, set: SetBool, }, { diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index b7c86852d3c5..ec657fe817a6 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -87,6 +87,24 @@ func (error DeletionError) Error() string { return error.Err.Error() } +var hostAndDirsDeleter = func(api libmachine.API, cc *config.ClusterConfig, profileName string) error { + if err := killMountProcess(); err != nil { + out.FailureT("Failed to kill mount process: {{.error}}", out.V{"error": err}) + } + + deleteHosts(api, cc) + + // In case DeleteHost didn't complete the job. + deleteProfileDirectory(profileName) + deleteMachineDirectories(cc) + + if err := deleteConfig(profileName); err != nil { + return err + } + + return deleteContext(profileName) +} + func init() { deleteCmd.Flags().BoolVar(&deleteAll, "all", false, "Set flag to delete all profiles") deleteCmd.Flags().BoolVar(&purge, "purge", false, "Set this flag to delete the '.minikube' folder from your user directory.") @@ -282,23 +300,10 @@ func deleteProfile(ctx context.Context, profile *config.Profile) error { } } - if err := killMountProcess(); err != nil { - out.FailureT("Failed to kill mount process: {{.error}}", out.V{"error": err}) - } - - deleteHosts(api, cc) - - // In case DeleteHost didn't complete the job. - deleteProfileDirectory(profile.Name) - deleteMachineDirectories(cc) - - if err := deleteConfig(profile.Name); err != nil { + if err := hostAndDirsDeleter(api, cc, profile.Name); err != nil { return err } - if err := deleteContext(profile.Name); err != nil { - return err - } out.Step(style.Deleted, `Removed all traces of the "{{.name}}" cluster.`, out.V{"name": profile.Name}) return nil } diff --git a/cmd/minikube/cmd/delete_test.go b/cmd/minikube/cmd/delete_test.go index 6c6a98939f5d..fff2ffabf88c 100644 --- a/cmd/minikube/cmd/delete_test.go +++ b/cmd/minikube/cmd/delete_test.go @@ -17,15 +17,18 @@ limitations under the License. package cmd import ( + "fmt" "io/ioutil" "os" "path/filepath" "testing" + "github.com/docker/machine/libmachine" "github.com/google/go-cmp/cmp" "github.com/otiai10/copy" "github.com/spf13/viper" + cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/localpath" ) @@ -114,6 +117,7 @@ func TestDeleteProfile(t *testing.T) { t.Logf("load failure: %v", err) } + hostAndDirsDeleter = hostAndDirsDeleterMock errs := DeleteProfiles([]*config.Profile{profile}) if len(errs) > 0 { HandleDeletionErrors(errs) @@ -154,6 +158,17 @@ func TestDeleteProfile(t *testing.T) { } } +var hostAndDirsDeleterMock = func(api libmachine.API, cc *config.ClusterConfig, profileName string) error { + return deleteContextTest() +} + +func deleteContextTest() error { + if err := cmdcfg.Unset(config.ProfileName); err != nil { + return DeletionError{Err: fmt.Errorf("unset minikube profile: %v", err), Errtype: Fatal} + } + return nil +} + func TestDeleteAllProfiles(t *testing.T) { td, err := ioutil.TempDir("", "all") if err != nil { @@ -207,6 +222,7 @@ func TestDeleteAllProfiles(t *testing.T) { } profiles := append(validProfiles, inValidProfiles...) + hostAndDirsDeleter = hostAndDirsDeleterMock errs := DeleteProfiles(profiles) if errs != nil { diff --git a/cmd/minikube/cmd/generate-docs_test.go b/cmd/minikube/cmd/generate-docs_test.go index 0d03d2a293f1..91ce515de66e 100644 --- a/cmd/minikube/cmd/generate-docs_test.go +++ b/cmd/minikube/cmd/generate-docs_test.go @@ -17,43 +17,15 @@ limitations under the License. package cmd import ( - "fmt" "io/ioutil" "os" "path/filepath" "strings" "testing" - "github.com/google/go-cmp/cmp" - "github.com/spf13/pflag" "k8s.io/minikube/pkg/generate" ) -func TestGenerateDocs(t *testing.T) { - pflag.BoolP("help", "h", false, "") // avoid 'Docs are not updated. Please run `make generate-docs` to update commands documentation' error - dir := "../../../site/content/en/docs/commands/" - - for _, sc := range RootCmd.Commands() { - t.Run(sc.Name(), func(t *testing.T) { - if sc.Hidden { - t.Skip() - } - fp := filepath.Join(dir, fmt.Sprintf("%s.md", sc.Name())) - expectedContents, err := ioutil.ReadFile(fp) - if err != nil { - t.Fatalf("Docs are not updated. Please run `make generate-docs` to update commands documentation: %v", err) - } - actualContents, err := generate.DocForCommand(sc) - if err != nil { - t.Fatalf("error getting contents: %v", err) - } - if diff := cmp.Diff(actualContents, string(expectedContents)); diff != "" { - t.Fatalf("Docs are not updated. Please run `make generate-docs` to update commands documentation: %s", diff) - } - }) - } -} - func TestGenerateTestDocs(t *testing.T) { tempdir, err := ioutil.TempDir("", "") if err != nil { @@ -61,12 +33,6 @@ func TestGenerateTestDocs(t *testing.T) { } defer os.RemoveAll(tempdir) docPath := filepath.Join(tempdir, "tests.md") - realPath := "../../../site/content/en/docs/contrib/tests.en.md" - - expectedContents, err := ioutil.ReadFile(realPath) - if err != nil { - t.Fatalf("error reading existing file: %v", err) - } err = generate.TestDocs(docPath, "../../../test/integration") if err != nil { @@ -77,10 +43,6 @@ func TestGenerateTestDocs(t *testing.T) { t.Fatalf("error reading generated file: %v", err) } - if diff := cmp.Diff(string(actualContents), string(expectedContents)); diff != "" { - t.Errorf("Test docs are not updated. Please run `make generate-docs` to update documentation: %s", diff) - } - rest := string(actualContents) for rest != "" { rest = checkForNeedsDoc(t, rest) diff --git a/cmd/minikube/cmd/root.go b/cmd/minikube/cmd/root.go index cfcd7f02763e..6c2e26f3c6dd 100644 --- a/cmd/minikube/cmd/root.go +++ b/cmd/minikube/cmd/root.go @@ -97,7 +97,7 @@ func Execute() { if runtime.GOOS == "darwin" && detect.IsAmd64M1Emulation() { exit.Message(reason.WrongBinaryM1, "You are trying to run amd64 binary on M1 system. Please use darwin/arm64 binary instead (Download at {{.url}}.)", - out.V{"url": notify.DownloadURL(version.GetVersion(), "darwin", "amd64")}) + out.V{"url": notify.DownloadURL(version.GetVersion(), "darwin", "arm64")}) } _, callingCmd := filepath.Split(os.Args[0]) @@ -301,14 +301,10 @@ func setupViper() { viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_")) viper.AutomaticEnv() + viper.RegisterAlias(config.EmbedCerts, embedCerts) viper.SetDefault(config.WantUpdateNotification, true) viper.SetDefault(config.ReminderWaitPeriodInHours, 24) - viper.SetDefault(config.WantReportError, false) - viper.SetDefault(config.WantReportErrorPrompt, true) - viper.SetDefault(config.WantKubectlDownloadMsg, true) viper.SetDefault(config.WantNoneDriverWarning, true) - viper.SetDefault(config.ShowDriverDeprecationNotification, true) - viper.SetDefault(config.ShowBootstrapperDeprecationNotification, true) } func addToPath(dir string) { diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 0d4f574e29a8..42baf2a1280b 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -162,14 +162,13 @@ func runStart(cmd *cobra.Command, args []string) { // can be configured as MINIKUBE_IMAGE_REPOSITORY and IMAGE_MIRROR_COUNTRY // this should be updated to documentation if len(registryMirror) == 0 { - registryMirror = viper.GetStringSlice("registry_mirror") + registryMirror = viper.GetStringSlice("registry-mirror") } if !config.ProfileNameValid(ClusterFlagValue()) { out.WarningT("Profile name '{{.name}}' is not valid", out.V{"name": ClusterFlagValue()}) exit.Message(reason.Usage, "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.") } - existing, err := config.Load(ClusterFlagValue()) if err != nil && !config.IsNotExist(err) { kind := reason.HostConfigLoad diff --git a/deploy/addons/assets.go b/deploy/addons/assets.go new file mode 100644 index 000000000000..dfbdbfa379b5 --- /dev/null +++ b/deploy/addons/assets.go @@ -0,0 +1,135 @@ +/* +Copyright 2021 The Kubernetes Authors All rights reserved. + +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 addons + +import "embed" + +var ( + // AutoPauseAssets assets for auto-pause addon + //go:embed auto-pause/*.tmpl + //go:embed auto-pause/auto-pause.service + //go:embed auto-pause/unpause.lua + AutoPauseAssets embed.FS + + // DashboardAssets assets for dashboard addon + //go:embed dashboard/*.yaml dashboard/*.tmpl + DashboardAssets embed.FS + + // DefaultStorageClassAssets assets for default-storageclass addon + //go:embed storageclass/storageclass.yaml.tmpl + DefaultStorageClassAssets embed.FS + + // PodSecurityPolicyAssets assets for pod-security-policy addon + //go:embed pod-security-policy/pod-security-policy.yaml.tmpl + PodSecurityPolicyAssets embed.FS + + // StorageProvisionerAssets assets for storage-provisioner addon + //go:embed storage-provisioner/storage-provisioner.yaml.tmpl + StorageProvisionerAssets embed.FS + + // StorageProvisionerGlusterAssets assets for storage-provisioner-gluster addon + //go:embed storage-provisioner-gluster/*.tmpl + StorageProvisionerGlusterAssets embed.FS + + // EfkAssets assets for efk addon + //go:embed efk/*.tmpl + EfkAssets embed.FS + + // IngressAssets assets for ingress addon + //go:embed ingress/*.tmpl + IngressAssets embed.FS + + // IstioProvisionerAssets assets for istio-provisioner addon + //go:embed istio-provisioner/istio-operator.yaml.tmpl + IstioProvisionerAssets embed.FS + + // IstioAssets assets for istio addon + //go:embed istio/istio-default-profile.yaml.tmpl + IstioAssets embed.FS + + // KubevirtAssets assets for kubevirt addon + //go:embed kubevirt/pod.yaml.tmpl + KubevirtAssets embed.FS + + // MetricsServerAssets assets for metrics-server addon + //go:embed metrics-server/*.tmpl + MetricsServerAssets embed.FS + + // OlmAssets assets for olm addon + //go:embed olm/*.tmpl + OlmAssets embed.FS + + // RegistryAssets assets for registry addon + //go:embed registry/*.tmpl + RegistryAssets embed.FS + + // RegistryCredsAssets assets for registry-creds addon + //go:embed registry-creds/registry-creds-rc.yaml.tmpl + RegistryCredsAssets embed.FS + + // RegistryAliasesAssets assets for registry-aliases addon + //go:embed registry-aliases/*.tmpl + RegistryAliasesAssets embed.FS + + // FreshpodAssets assets for freshpod addon + //go:embed freshpod/freshpod-rc.yaml.tmpl + FreshpodAssets embed.FS + + // NvidiaDriverInstallerAssets assets for nvidia-driver-installer addon + //go:embed gpu/nvidia-driver-installer.yaml.tmpl + NvidiaDriverInstallerAssets embed.FS + + // NvidiaGpuDevicePluginAssets assets for nvidia-gpu-device-plugin addon + //go:embed gpu/nvidia-gpu-device-plugin.yaml.tmpl + NvidiaGpuDevicePluginAssets embed.FS + + // LogviewerAssets assets for logviewer addon + //go:embed logviewer/*.tmpl + LogviewerAssets embed.FS + + // GvisorAssets assets for gvisor addon + //go:embed gvisor/*.tmpl gvisor/*.toml + GvisorAssets embed.FS + + // HelmTillerAssets assets for helm-tiller addon + //go:embed helm-tiller/*.tmpl + HelmTillerAssets embed.FS + + // IngressDNSAssets assets for ingress-dns addon + //go:embed ingress-dns/ingress-dns-pod.yaml.tmpl + IngressDNSAssets embed.FS + + // MetallbAssets assets for metallb addon + //go:embed metallb/*.tmpl + MetallbAssets embed.FS + + // AmbassadorAssets assets for ambassador addon + //go:embed ambassador/*.tmpl + AmbassadorAssets embed.FS + + // GcpAuthAssets assets for gcp-auth addon + //go:embed gcp-auth/*.tmpl + GcpAuthAssets embed.FS + + // VolumeSnapshotsAssets assets for volumesnapshots addon + //go:embed volumesnapshots/*.tmpl + VolumeSnapshotsAssets embed.FS + + // CsiHostpathDriverAssets assets for csi-hostpath-driver addon + //go:embed csi-hostpath-driver/deploy/*.tmpl csi-hostpath-driver/rbac/*.tmpl + CsiHostpathDriverAssets embed.FS +) diff --git a/deploy/minikube/releases.json b/deploy/minikube/releases.json index 5172ffb61ce1..af0d047a75ad 100644 --- a/deploy/minikube/releases.json +++ b/deploy/minikube/releases.json @@ -1,4 +1,12 @@ [ + { + "name": "v1.21.0", + "checksums": { + "darwin": "e2043883ca993b2a65396d379823dab6404dd842d0cc2a81348d247b01785070", + "linux": "5d423a00a24fdfbb95627a3fadbf58540fc4463be2338619257c529f93cf061b", + "windows": "74c961877798531ab8e53e2590bfae3cee7690d0c2e0614fdb44339e065124b5" + } + }, { "name": "v1.20.0", "checksums": { diff --git a/enhancements/proposed/20210618-tips/tips.md b/enhancements/proposed/20210618-tips/tips.md new file mode 100644 index 000000000000..a42d21c59bf2 --- /dev/null +++ b/enhancements/proposed/20210618-tips/tips.md @@ -0,0 +1,205 @@ +# Periodically tell user about minikube features/tips and tricks + +* First proposed: 2021-06-18 +* Authors: Peixuan Ding (@dinever) + +## Reviewer Priorities + +Please review this proposal with the following priorities: + +* Does this fit with minikube's [principles](https://minikube.sigs.k8s.io/docs/concepts/principles/)? +* Are there other approaches to consider? +* Could the implementation be made simpler? +* Are there usability, reliability, or technical debt concerns? + +Please leave the above text in your proposal as instructions to the reader. + +## Summary + +minikube has lots of great features. We want to proactively remind users that +those features are available. + +To achieve this, we can have a tips feature that randomly shows a tip +from a curated list whenever the user starts a new minikube profile. + +For example: + +![Screenshot from 2021-06-18 00-58-02](https://user-images.githubusercontent.com/1311594/122508665-53bd6380-cfd0-11eb-9e99-a6c5935514d5.png) + +## Goals + +* Store a list of tips in a static file +* Show a random minikube usage tip each time a user starts a minikube profile +* Have the tips synced to the Hugo docs website to make those available through docs +* Allow user to disable the Tips feature with minikube config + +## Non-Goals + +* Modify any existing functionalities or docs + +## Design Details + +First, we need a static file to store all the tips, we can have a YAML file at [pkg/generate/tips/tips.yaml](https://github.com/kubernetes/minikube/tree/master/pkg/generate): + +```YAML +tips: + - | + You can specify any Kubernetes version you want. For example: + + ``` + minikube start --kubernetes-version=v1.19.0 + ``` + - | + You can use minikube's built-in kubectl. For example: + + ``` + minikube kubectl -- get pods + ``` + - | + minikube has the built-in Kubernetes Dashboard UI. To access it: + + ``` + minikube dashboard + ``` +``` + +Use `goembed` to embed this file into the minikube binary. + +The current `out.Boxed` has a hard-coded style (red). I propose to add another `out.BoxedWithConfig` method to allow +output with customized style: + +```go +// BoxedWithConfig writes a templated message in a box with customized style config to stdout +func BoxedWithConfig(cfg box.Config, st style.Enum, title string, format string, a ...V) { +} +``` + +Whenever minikube successfully starts, we randomly choose a tip. + +Before printing it out, we need to do some regex replacement to strip the markdown syntax +for better view experience in Terminal: + +From this: + +``````markdown +You can specify any Kubernetes version you want. For example: + +``` +minikube start --kubernetes-version=v1.19.0 +``` +`````` + +To this: + +```markdown +You can specify any Kubernetes version you want. For example: + +minikube start --kubernetes-version=v1.19.0 +``` + +Then we can print out the tip: + + +```go +boxCfg := out.BoxConfig{ + Config: box.Config{ + Py: 1, + Px: 5, + TitlePos: "Top", + Type: "Round", + Color: tipBoxColor, + }, + Title: tipTitle, + Icon: style.Tip, +} + +out.BoxedWithConfig(boxCfg, tips.Tips[chosen] + "\n\n" + tipSuffix) +``` + +![Screenshot from 2021-06-18 00-58-02](https://user-images.githubusercontent.com/1311594/122508665-53bd6380-cfd0-11eb-9e99-a6c5935514d5.png) + +User can choose to disable this through `minikube config set disable-tips true` + +We will have `make generate-docs` generating the docs site based on this YAML file as well. + +We can have a `Nice to know` sub-page under `FAQ`? + +![Screenshot from 2021-06-18 01-00-30](https://user-images.githubusercontent.com/1311594/122508827-a139d080-cfd0-11eb-98bb-f7c3c1c604c2.png) + + +### About the tip collection + +I plan to start with the command lines and cover almost all CLI usages of minikube. + +That includes but not limited to: +- addons +- cached images +- command line completion +- config +- file copy +- dashboard +- delete minikube cluster +- configure minikube's docker/podman env +- image build / load / ls / rm +- ip +- logging +- kubectl +- mount file directory +- multi-node +- pause/unpause to save resource +- multi-profile +- surface URL to a k8s service +- ssh into minikube +- status +- tunnel to connect to LB +- update-check to check versions +- update-context + +### Implementation + +I plan to open at least 4 PRs: + +1. `out.Boxed` with custom style +2. random `tips` display with ability to disable through config, with an initial set of about 10 tips +3. `make generate-docs` to sync tips to docs +4. Add more tips + +## Alternatives Considered + +1. Is there a more preferred file format to YAML? + +2. Maybe we just want to sync the tips to the `FAQ` page list instead of creating a new page? + +3. Instead of the file format I proposed, maybe add a `question` field? + + ```yaml + tips: + - question: How to specify a different Kubernetes version? + answer: | + You can specify any Kubernetes version you want. For example: + + ``` + minikube start --kubernetes-version=v1.19.0 + ``` + - question: Do I have to install `kubectl` myself? + answer: | + You can use minikube's built-in kubectl. For example: + + ``` + minikube kubectl -- get pods + ``` + - question: How do I access the Kubernetes Dashboard UI? + answer: | + minikube has the built-in Kubernetes Dashboard UI. To access it: + + ``` + minikube dashboard + ``` + ``` + + On the docs side we can show both questions and answers. On the CLI side + we can either show both questions and answers, or just show the answers + to make it more compact. + + ![Screenshot from 2021-06-18 01-25-54](https://user-images.githubusercontent.com/1311594/122510785-2c689580-cfd4-11eb-9fd0-0a0ff344e3cc.png) + diff --git a/go.mod b/go.mod index 14e9ebfacc4f..2793ccff1fe3 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 // indirect github.com/docker/cli v0.0.0-20200303162255-7d407207c304 // indirect - github.com/docker/docker v17.12.0-ce-rc1.0.20210128214336-420b1d36250f+incompatible + github.com/docker/docker v20.10.7+incompatible github.com/docker/go-units v0.4.0 github.com/docker/machine v0.16.2 github.com/elazarl/goproxy v0.0.0-20190421051319-9d40249d3c2f @@ -33,7 +33,7 @@ require ( github.com/google/go-github/v32 v32.1.0 github.com/google/slowjam v0.0.0-20200530021616-df27e642fe7b github.com/google/uuid v1.2.0 - github.com/hashicorp/go-getter v1.5.2 + github.com/hashicorp/go-getter v1.5.4 github.com/hashicorp/go-retryablehttp v0.7.0 github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214 // indirect @@ -57,6 +57,7 @@ require ( github.com/mattn/go-isatty v0.0.13 github.com/mitchellh/go-ps v1.0.0 github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14 + github.com/moby/sys/mount v0.2.0 // indirect github.com/olekukonko/tablewriter v0.0.5 github.com/opencontainers/go-digest v1.0.0 github.com/otiai10/copy v1.6.0 @@ -71,7 +72,7 @@ require ( github.com/shirou/gopsutil/v3 v3.21.5 github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.7.1 + github.com/spf13/viper v1.8.0 github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097 go.opencensus.io v0.23.0 @@ -84,11 +85,11 @@ require ( golang.org/x/mod v0.4.2 golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 + golang.org/x/sys v0.0.0-20210603125802-9665404d3644 golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72 golang.org/x/text v0.3.6 gonum.org/v1/plot v0.9.0 - google.golang.org/api v0.47.0 + google.golang.org/api v0.48.0 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect gopkg.in/yaml.v2 v2.4.0 gotest.tools/v3 v3.0.3 // indirect @@ -104,7 +105,6 @@ require ( replace ( git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999 github.com/briandowns/spinner => github.com/alonyb/spinner v1.12.7 - github.com/docker/docker => github.com/afbjorklund/moby v0.0.0-20210308214533-2fa72faf0e8b github.com/docker/machine => github.com/machine-drivers/machine v0.7.1-0.20210306082426-fcb2ad5bcb17 github.com/google/go-containerregistry => github.com/afbjorklund/go-containerregistry v0.4.1-0.20210321165649-761f6f9626b1 github.com/samalba/dockerclient => github.com/sayboras/dockerclient v1.0.0 diff --git a/go.sum b/go.sum index 02edccd9828e..58e3eae1a89c 100644 --- a/go.sum +++ b/go.sum @@ -21,8 +21,9 @@ cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKP cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0 h1:bAMqZidYkmIsUqe6PtkEPT7Q+vfizScn+jfNA6jwK9c= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -66,7 +67,6 @@ github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocm github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Delta456/box-cli-maker/v2 v2.2.1 h1:uTcuvT6Ty+LBHuRUdFrJBpqP9RhtLxI5+5ZpKYAUuVw= @@ -110,8 +110,6 @@ github.com/VividCortex/godaemon v0.0.0-20201030160542-15e3f4925a21 h1:Pgxfz/g+Xy github.com/VividCortex/godaemon v0.0.0-20201030160542-15e3f4925a21/go.mod h1:Y8CJ3IwPIAkMhv/rRUWIlczaeqd9ty9yrl+nc2AbaL4= github.com/afbjorklund/go-containerregistry v0.4.1-0.20210321165649-761f6f9626b1 h1:AI8EIk8occ3pruhaTpkaQxQGlC1dHx3J9hAtg7t+FLI= github.com/afbjorklund/go-containerregistry v0.4.1-0.20210321165649-761f6f9626b1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= -github.com/afbjorklund/moby v0.0.0-20210308214533-2fa72faf0e8b h1:wmyy8gOOzYzMD6SfMs44yCPoOWAAHcjxCio/zQjOlDU= -github.com/afbjorklund/moby v0.0.0-20210308214533-2fa72faf0e8b/go.mod h1:qXUBi22bjTfxOV8XyOI/W1PklPSinepyWoJ6eYSLwwo= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af h1:wVe6/Ea46ZMeNkQjjBW6xcqyQA/j5e0D6GytH95g0gQ= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -124,6 +122,7 @@ github.com/alonyb/spinner v1.12.7 h1:FflTMA9I2xRd8OQ5swyZY6Q1DFeaicA/bWo6/oM82a8 github.com/alonyb/spinner v1.12.7/go.mod h1:mQak9GHqbspjC/5iUx3qMlIho8xBS/ppAL/hX5SmPJU= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -148,6 +147,7 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bifurcation/mint v0.0.0-20180715133206-93c51c6ce115/go.mod h1:zVt7zX3K/aDCk9Tj+VM7YymsX66ERvzCJzw8rFCX2JU= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= @@ -269,6 +269,7 @@ github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -297,6 +298,12 @@ github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TT github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v17.12.0-ce-rc1.0.20181225093023-5ddb1d410a8b+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v17.12.0-ce-rc1.0.20190115220918-5ec31380a5d3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v17.12.0-ce-rc1.0.20200916142827-bd33bbf0497b+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.7+incompatible h1:Z6O9Nhsjv+ayUEeI1IojKbYcsGdgYSNqxe1s2MYzUhQ= +github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= @@ -421,6 +428,7 @@ github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblf github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= 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/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -467,6 +475,7 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= @@ -498,8 +507,9 @@ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -511,6 +521,7 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/slowjam v0.0.0-20200530021616-df27e642fe7b h1:x3aElhKtGmXLo6RI2FJSBaPBT0acmn2LFfKVP1CqH8o= github.com/google/slowjam v0.0.0-20200530021616-df27e642fe7b/go.mod h1:i4b4iDjZbKPkbD7z9Ycy4gtcALPoh8E9O3+wvtw7IB0= @@ -546,15 +557,16 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-getter v1.5.2 h1:XDo8LiAcDisiqZdv0TKgz+HtX3WN7zA2JD1R1tjsabE= -github.com/hashicorp/go-getter v1.5.2/go.mod h1:orNH3BTYLu/fIxGIdLjLoAJHWMDQ/UKQr5O4m3iBuoo= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.5.4 h1:/A0xlardcuhx8SEe1rh1371xV7Yi4j3xeluu53VXeyg= +github.com/hashicorp/go-getter v1.5.4/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI= github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -623,8 +635,9 @@ github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= @@ -666,6 +679,7 @@ github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgo github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -695,8 +709,9 @@ github.com/machine-drivers/docker-machine-driver-vmware v0.1.3/go.mod h1:p2hY99U github.com/machine-drivers/machine v0.7.1-0.20210306082426-fcb2ad5bcb17 h1:fQoDTuCuJ30R+D6TSB9SALB+J3jUMa8ID8YPfmSDA20= github.com/machine-drivers/machine v0.7.1-0.20210306082426-fcb2ad5bcb17/go.mod h1:79Uwa2hGd5S39LDJt58s8JZcIhGEK6pkq9bsuTbFWbk= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -750,13 +765,17 @@ github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUb github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14 h1:XGy4iMfaG4r1uZKZQmEPSYSH0Nj5JJuKgPNUhWGQ08E= github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14/go.mod h1:aBcAEoy5u01cPAYvosR85gzSrMZ0TVVnkPytOQN+9z8= github.com/moby/ipvs v1.0.1/go.mod h1:2pngiyseZbIKXNv7hsKj3O9UEz30c53MT9005gt2hxQ= +github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= +github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.1.3/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o= +github.com/moby/sys/mountinfo v0.4.0 h1:1KInV3Huv18akCu58V7lzNlt+jFmqlu1EaErnEHE/VM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd h1:aY7OQNf2XqY/JQ6qREWamhI/81os/agb2BAGpcx5yWI= @@ -838,8 +857,9 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= @@ -855,6 +875,7 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v0.0.0-20161223203901-3a8809bd8a80 h1:DQFOykp5w+HOykOMzd2yOX5P6ty58Ggiu2rthHgcNQg= github.com/pkg/profile v0.0.0-20161223203901-3a8809bd8a80/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= @@ -900,6 +921,7 @@ github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/robfig/cron v1.1.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= @@ -940,10 +962,12 @@ github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/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.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= @@ -961,8 +985,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= -github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.8.0 h1:QRwDgoG8xX+kp69di68D+YYTCWfYEckbZRfUlEIAal0= +github.com/spf13/viper v1.8.0/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/storageos/go-api v2.2.0+incompatible/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY= github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1035,6 +1059,9 @@ go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -1058,12 +1085,15 @@ go.opentelemetry.io/otel/sdk v0.16.0/go.mod h1:Jb0B4wrxerxtBeapvstmAZvJGQmvah4dH go.opentelemetry.io/otel/trace v0.17.0 h1:SBOj64/GAOyWzs5F680yW1ITIfJkm6cJWL2YAvuL9xY= go.opentelemetry.io/otel/trace v0.17.0/go.mod h1:bIujpqg6ZL6xUTubIUgziI1jSaUPthmabA/ygf/6Cfg= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190927031335-2835ba2e683f h1:hXVePvSFG7tPGX4Pwk1d10ePFfoTCc0QmISfpKOHsS8= golang.org/x/build v0.0.0-20190927031335-2835ba2e683f/go.mod h1:fYw7AShPAhGMdXqA9gRadk/CcMsvLlClpE5oBwnS3dM= @@ -1083,6 +1113,7 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -1207,6 +1238,7 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= @@ -1313,8 +1345,9 @@ golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210412220455-f1c623a9e750/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644 h1:CA1DEQ4NdKphKeL70tvsWNdT5oFh1lOjihRcEDROi0I= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72 h1:VqE9gduFZ4dbR7XoL77lHFp0/DyDUBKSXK7CMFkVcV0= golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1400,8 +1433,9 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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= @@ -1441,9 +1475,11 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.45.0/go.mod h1:ISLIJCedJolbZvDfAk+Ctuq5hf+aJ33WgtUsfyFoLXA= -google.golang.org/api v0.47.0 h1:sQLWZQvP6jPGIP4JGPkJu4zHswrv81iobiyszr3b/0I= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0 h1:RDAPWfNFY06dffEXfn7hZF5Fr1ZbnChzfQZAPyBd1+I= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1478,6 +1514,7 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= @@ -1501,8 +1538,10 @@ google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210413151531-c14fb6ef47c3/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210420162539-3c870d7478d2/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384 h1:z+j74wi4yV+P7EtK9gPLGukOk7mFOy9wMQaC0wNb7eY= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08 h1:pc16UedxnxXXtGxHCSUhafAoVHQZ0yXl8ZelMH4EETc= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1521,14 +1560,17 @@ google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1 h1:ARnQJNWxGyYJpdf/JXscNlQr/uv607ZPU9Z7ogHi+iI= google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1560,8 +1602,9 @@ gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= 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 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mcuadros/go-syslog.v2 v2.2.1/go.mod h1:l5LPIyOOyIdQquNg+oU6Z3524YwrcqEm0aKH+5zpt2U= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= @@ -1575,6 +1618,7 @@ gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1582,8 +1626,9 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= diff --git a/hack/benchmark/time-to-k8s/time-to-k8s b/hack/benchmark/time-to-k8s/time-to-k8s-repo similarity index 100% rename from hack/benchmark/time-to-k8s/time-to-k8s rename to hack/benchmark/time-to-k8s/time-to-k8s-repo diff --git a/hack/benchmark/time-to-k8s/time-to-k8s.sh b/hack/benchmark/time-to-k8s/time-to-k8s.sh index d999a6afc870..a16beea807cd 100755 --- a/hack/benchmark/time-to-k8s/time-to-k8s.sh +++ b/hack/benchmark/time-to-k8s/time-to-k8s.sh @@ -17,7 +17,7 @@ set -e install_kind() { - curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.0/kind-linux-amd64 + curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.0/kind-linux-amd64 chmod +x ./kind sudo mv ./kind /usr/local } @@ -31,31 +31,58 @@ install_minikube() { sudo install ./out/minikube /usr/local/bin/minikube } +install_gh() { + export access_token="$1" + + # Make sure gh is installed and configured + ./hack/jenkins/installers/check_install_gh.sh +} + +config_git() { + git config user.name "minikube-bot" + git config user.email "minikube-bot@google.com" +} + +create_branch() { + git checkout -b addTimeToK8s"$1" +} + run_benchmark() { - ( cd ./hack/benchmark/time-to-k8s/time-to-k8s/ && + pwd + ( cd ./hack/benchmark/time-to-k8s/time-to-k8s-repo/ && git submodule update --init && go run . --config local-kubernetes.yaml --iterations 5 --output output.csv ) } generate_chart() { - go run ./hack/benchmark/time-to-k8s/chart.go --csv ./hack/benchmark/time-to-k8s/time-to-k8s/output.csv --output ./site/static/images/benchmarks/timeToK8s/"$1".png + go run ./hack/benchmark/time-to-k8s/chart.go --csv ./hack/benchmark/time-to-k8s/time-to-k8s-repo/output.csv --output ./site/static/images/benchmarks/timeToK8s/"$1".png } create_page() { printf -- "---\ntitle: \"%s Benchmark\"\nlinkTitle: \"%s Benchmark\"\nweight: 1\n---\n\n![time-to-k8s](/images/benchmarks/timeToK8s/%s.png)\n" "$1" "$1" "$1" > ./site/content/en/docs/benchmarks/timeToK8s/"$1".md } -commit_chart() { +commit_changes() { git add ./site/static/images/benchmarks/timeToK8s/"$1".png ./site/content/en/docs/benchmarks/timeToK8s/"$1".md - git commit -m 'update time-to-k8s chart' + git commit -m "add time-to-k8s benchmark for $1" +} + +create_pr() { + git remote add minikube-bot https://minikube-bot:"$2"@github.com/minikube-bot/minikube.git + git push -u minikube-bot addTimeToK8s"$1" + gh pr create --repo kubernetes/minikube --base master --title "Add time-to-k8s benchmark for $1" --body "Updating time-to-k8s benchmark as part of the release process" } install_kind install_k3d install_minikube -VERSION=$(minikube version --short) +install_gh "$1" +config_git +VERSION=$(minikube version --short) +create_branch "$VERSION" run_benchmark generate_chart "$VERSION" create_page "$VERSION" -commit_chart "$VERSION" +commit_changes "$VERSION" +create_pr "$VERSION" "$1" diff --git a/hack/generate_docs.sh b/hack/generate_docs.sh new file mode 100755 index 000000000000..c7ff38be05b7 --- /dev/null +++ b/hack/generate_docs.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# Copyright 2021 The Kubernetes Authors All rights reserved. +# +# 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. + +set -x + +if [ "$#" -ne 1 ]; then + # there's no secret and therefore no reason to run this script + exit 0 +fi + +install_gh() { + export access_token="$1" + + # Make sure gh is installed and configured + ./hack/jenkins/installers/check_install_gh.sh +} + +config_git() { + git config user.name "minikube-bot" + git config user.email "minikube-bot@google.com" +} + +make generate-docs + +# If there are changes, open a PR +git diff-index --quiet HEAD -- +if [ $? -gt 0 ]; then + install_gh $1 + config_git + + branch=gendocs$(date +%s%N) + git checkout -b $branch + + git add . + git commit -m "Update generate-docs" + + git remote add minikube-bot https://minikube-bot:$1@github.com/minikube-bot/minikube.git + git push -u minikube-bot $branch + gh pr create --repo kubernetes/minukube --base master --title "Update generate-docs" --body "Committing changes resulting from \`make generate-docs\`" +fi diff --git a/hack/jenkins/common.sh b/hack/jenkins/common.sh index 40bfad2e983f..a8d8f4d5e4f7 100755 --- a/hack/jenkins/common.sh +++ b/hack/jenkins/common.sh @@ -419,7 +419,7 @@ fi touch "${HTML_OUT}" touch "${SUMMARY_OUT}" -gopogh_status=$(gopogh -in "${JSON_OUT}" -out_html "${HTML_OUT}" -out_summary "${SUMMARY_OUT}" -name "${JOB_NAME}" -pr "${MINIKUBE_LOCATION}" -repo github.com/kubernetes/minikube/ -details "${COMMIT}") || true +gopogh_status=$(gopogh -in "${JSON_OUT}" -out_html "${HTML_OUT}" -out_summary "${SUMMARY_OUT}" -name "${JOB_NAME}" -pr "${MINIKUBE_LOCATION}" -repo github.com/kubernetes/minikube/ -details "${COMMIT}:$(date +%Y-%m-%d)") || true fail_num=$(echo $gopogh_status | jq '.NumberOfFail') test_num=$(echo $gopogh_status | jq '.NumberOfTests') pessimistic_status="${fail_num} / ${test_num} failures" @@ -441,6 +441,11 @@ if [ -z "${EXTERNAL}" ]; then gsutil -qm cp "${HTML_OUT}" "gs://${JOB_GCS_BUCKET}.html" || true echo ">> uploading ${SUMMARY_OUT}" gsutil -qm cp "${SUMMARY_OUT}" "gs://${JOB_GCS_BUCKET}_summary.json" || true + if [[ "${MINIKUBE_LOCATION}" == "master" ]]; then + ./test-flake-chart/upload_tests.sh "${SUMMARY_OUT}" + elif [[ "${JOB_NAME}" == "Docker_Linux" || "${JOB_NAME}" == "Docker_Linux_containerd" || "${JOB_NAME}" == "KVM_Linux" || "${JOB_NAME}" == "KVM_Linux_containerd" ]]; then + ./test-flake-chart/report_flakes.sh "${MINIKUBE_LOCATION}" "${SUMMARY_OUT}" "${JOB_NAME}" + fi else # Otherwise, put the results in a predictable spot so the upload job can find them REPORTS_PATH=test_reports diff --git a/hack/jenkins/test-flake-chart/collect_data_manual.sh b/hack/jenkins/test-flake-chart/collect_data_manual.sh new file mode 100755 index 000000000000..287a1a63d50e --- /dev/null +++ b/hack/jenkins/test-flake-chart/collect_data_manual.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Copyright 2021 The Kubernetes Authors All rights reserved. +# +# 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. + +# Collects all test data manually, processes it, and uploads to GCS. This will +# overwrite any existing data. This should only be done for a dryrun, new data +# should be handled exclusively through upload_tests.sh. +# Example usage: ./collect_data_manual.sh + +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + +# 1) "cat" together all summary files. +# 2) Process all summary files. +# 3) Optimize the resulting data. +# 4) Store in GCS bucket. +gsutil cat gs://minikube-builds/logs/master/*/*_summary.json \ +| $DIR/process_data.sh \ +| $DIR/optimize_data.sh \ +| gsutil cp - gs://minikube-flake-rate/data.csv diff --git a/hack/jenkins/test-flake-chart/compute_flake_rate.go b/hack/jenkins/test-flake-chart/compute_flake_rate.go new file mode 100644 index 000000000000..0025df2fbe30 --- /dev/null +++ b/hack/jenkins/test-flake-chart/compute_flake_rate.go @@ -0,0 +1,264 @@ +/* +Copyright 2021 The Kubernetes Authors All rights reserved. + +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 main + +import ( + "bufio" + "flag" + "fmt" + "io" + "os" + "runtime/debug" + "sort" + "strconv" + "strings" + "time" +) + +var ( + dataCsv = flag.String("data-csv", "", "Source data to compute flake rates on") + dateRange = flag.Uint("date-range", 5, "Number of test dates to consider when computing flake rate") +) + +func main() { + flag.Parse() + + file, err := os.Open(*dataCsv) + if err != nil { + exit("Unable to read data CSV", err) + } + + testEntries := readData(file) + splitEntries := splitData(testEntries) + filteredEntries := filterRecentEntries(splitEntries, *dateRange) + flakeRates := computeFlakeRates(filteredEntries) + averageDurations := computeAverageDurations(filteredEntries) + fmt.Println("Environment,Test,Flake Rate,Duration") + for environment, environmentSplit := range flakeRates { + for test, flakeRate := range environmentSplit { + duration := averageDurations[environment][test] + fmt.Printf("%s,%s,%.2f,%.3f\n", environment, test, flakeRate*100, duration) + } + } +} + +// One entry of a test run. +// Example: TestEntry { +// name: "TestFunctional/parallel/LogsCmd", +// environment: "Docker_Linux", +// date: time.Now, +// status: "Passed", +// duration: 0.1, +// } +type testEntry struct { + name string + environment string + date time.Time + status string + duration float32 +} + +// A map with keys of (environment, test_name) to values of slcies of TestEntry. +type splitEntryMap map[string]map[string][]testEntry + +// Reads CSV `file` and consumes each line to be a single TestEntry. +func readData(file io.Reader) []testEntry { + testEntries := []testEntry{} + + fileReader := bufio.NewReaderSize(file, 256) + previousLine := []string{"", "", "", "", "", ""} + firstLine := true + for { + lineBytes, _, err := fileReader.ReadLine() + if err != nil { + if err == io.EOF { + break + } + exit("Error reading data CSV", err) + } + line := string(lineBytes) + fields := strings.Split(line, ",") + if firstLine { + if len(fields) != 6 { + exit(fmt.Sprintf("Data CSV in incorrect format. Expected 6 columns, but got %d", len(fields)), fmt.Errorf("bad CSV format")) + } + firstLine = false + } + for i, field := range fields { + if field == "" { + fields[i] = previousLine[i] + } + } + if len(fields) != 6 { + fmt.Printf("Found line with wrong number of columns. Expectd 6, but got %d - skipping\n", len(fields)) + continue + } + previousLine = fields + if fields[4] == "Passed" || fields[4] == "Failed" { + date, err := time.Parse("2006-01-02", fields[1]) + if err != nil { + fmt.Printf("Failed to parse date: %v\n", err) + continue + } + duration, err := strconv.ParseFloat(fields[5], 32) + if err != nil { + fmt.Printf("Failed to parse duration: %v\n", err) + continue + } + testEntries = append(testEntries, testEntry{ + name: fields[3], + environment: fields[2], + date: date, + status: fields[4], + duration: float32(duration), + }) + } + } + return testEntries +} + +// Splits `testEntries` up into maps indexed first by environment and then by test. +func splitData(testEntries []testEntry) splitEntryMap { + splitEntries := make(splitEntryMap) + + for _, entry := range testEntries { + appendEntry(splitEntries, entry.environment, entry.name, entry) + } + + return splitEntries +} + +// Appends `entry` to `splitEntries` at the `environment` and `test`. +func appendEntry(splitEntries splitEntryMap, environment, test string, entry testEntry) { + // Lookup the environment. + environmentSplit, ok := splitEntries[environment] + if !ok { + // If the environment map is missing, make a map for this environment and store it. + environmentSplit = make(map[string][]testEntry) + splitEntries[environment] = environmentSplit + } + + // Lookup the test. + testSplit, ok := environmentSplit[test] + if !ok { + // If the test is missing, make a slice for this test. + testSplit = make([]testEntry, 0) + // The slice is not inserted, since it will be replaced anyway. + } + environmentSplit[test] = append(testSplit, entry) +} + +// Filters `splitEntries` to include only the most recent `date_range` dates. +func filterRecentEntries(splitEntries splitEntryMap, dateRange uint) splitEntryMap { + filteredEntries := make(splitEntryMap) + + for environment, environmentSplit := range splitEntries { + for test, testSplit := range environmentSplit { + dates := make([]time.Time, len(testSplit)) + for _, entry := range testSplit { + dates = append(dates, entry.date) + } + // Sort dates from future to past. + sort.Slice(dates, func(i, j int) bool { + return dates[j].Before(dates[i]) + }) + datesInRange := make([]time.Time, 0, dateRange) + var lastDate time.Time + // Go through each date. + for _, date := range dates { + // If date is the same as last date, ignore it. + if date.Equal(lastDate) { + continue + } + + // Add the date. + datesInRange = append(datesInRange, date) + lastDate = date + // If the date_range has been hit, break out. + if uint(len(datesInRange)) == dateRange { + break + } + } + + for _, entry := range testSplit { + // Look for the first element <= entry.date + index := sort.Search(len(datesInRange), func(i int) bool { + return !datesInRange[i].After(entry.date) + }) + // If no date is <= entry.date, or the found date does not equal entry.date. + if index == len(datesInRange) || !datesInRange[index].Equal(entry.date) { + continue + } + appendEntry(filteredEntries, environment, test, entry) + } + } + } + return filteredEntries +} + +// Computes the flake rates over each entry in `splitEntries`. +func computeFlakeRates(splitEntries splitEntryMap) map[string]map[string]float32 { + flakeRates := make(map[string]map[string]float32) + for environment, environmentSplit := range splitEntries { + for test, testSplit := range environmentSplit { + failures := 0 + for _, entry := range testSplit { + if entry.status == "Failed" { + failures++ + } + } + setValue(flakeRates, environment, test, float32(failures)/float32(len(testSplit))) + } + } + return flakeRates +} + +// Computes the average durations over each entry in `splitEntries`. +func computeAverageDurations(splitEntries splitEntryMap) map[string]map[string]float32 { + averageDurations := make(map[string]map[string]float32) + for environment, environmentSplit := range splitEntries { + for test, testSplit := range environmentSplit { + durationSum := float32(0) + for _, entry := range testSplit { + durationSum += entry.duration + } + if len(testSplit) != 0 { + durationSum /= float32(len(testSplit)) + } + setValue(averageDurations, environment, test, durationSum) + } + } + return averageDurations +} + +// Sets the `value` of keys `environment` and `test` in `mapEntries`. +func setValue(mapEntries map[string]map[string]float32, environment, test string, value float32) { + // Lookup the environment. + environmentRates, ok := mapEntries[environment] + if !ok { + // If the environment map is missing, make a map for this environment and store it. + environmentRates = make(map[string]float32) + mapEntries[environment] = environmentRates + } + environmentRates[test] = value +} + +// exit will exit and clean up minikube +func exit(msg string, err error) { + fmt.Printf("WithError(%s)=%v called from:\n%s", msg, err, debug.Stack()) + os.Exit(60) +} diff --git a/hack/jenkins/test-flake-chart/compute_flake_rate_test.go b/hack/jenkins/test-flake-chart/compute_flake_rate_test.go new file mode 100644 index 000000000000..d4013c08855f --- /dev/null +++ b/hack/jenkins/test-flake-chart/compute_flake_rate_test.go @@ -0,0 +1,492 @@ +/* +Copyright 2021 The Kubernetes Authors All rights reserved. + +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 main + +import ( + "fmt" + "strings" + "testing" + "time" +) + +func simpleDate(year int, day int) time.Time { + return time.Date(year, time.January, day, 0, 0, 0, 0, time.UTC) +} + +func compareEntrySlices(t *testing.T, actualData, expectedData []testEntry, extra string) { + if extra != "" { + extra = fmt.Sprintf(" (%s)", extra) + } + for i, actual := range actualData { + if len(expectedData) <= i { + t.Errorf("Received unmatched actual element at index %d%s. Actual: %v", i, extra, actual) + continue + } + expected := expectedData[i] + if actual != expected { + t.Errorf("Elements differ at index %d%s. Expected: %v, Actual: %v", i, extra, expected, actual) + } + } + + if len(actualData) < len(expectedData) { + for i := len(actualData); i < len(expectedData); i++ { + t.Errorf("Missing unmatched expected element at index %d%s. Expected: %v", i, extra, expectedData[i]) + } + } +} + +func TestReadData(t *testing.T) { + actualData := readData(strings.NewReader( + `A,B,C,D,E,F + hash,2000-01-01,env1,test1,Passed,1 + hash,2001-01-01,env2,test2,Failed,0.5 + hash,,,test1,,0.6 + hash,2002-01-01,,,Passed,0.9 + hash,2003-01-01,env3,test3,Passed,2`, + )) + expectedData := []testEntry{ + { + name: "test1", + environment: "env1", + date: simpleDate(2000, 1), + status: "Passed", + duration: 1, + }, + { + name: "test2", + environment: "env2", + date: simpleDate(2001, 1), + status: "Failed", + duration: 0.5, + }, + { + name: "test1", + environment: "env2", + date: simpleDate(2001, 1), + status: "Failed", + duration: 0.6, + }, + { + name: "test1", + environment: "env2", + date: simpleDate(2002, 1), + status: "Passed", + duration: 0.9, + }, + { + name: "test3", + environment: "env3", + date: simpleDate(2003, 1), + status: "Passed", + duration: 2, + }, + } + + compareEntrySlices(t, actualData, expectedData, "") +} + +func compareSplitData(t *testing.T, actual, expected splitEntryMap) { + for environment, actualTests := range actual { + expectedTests, environmentOk := expected[environment] + if !environmentOk { + t.Errorf("Unexpected environment %s in actual", environment) + continue + } + + for test, actualEntries := range actualTests { + expectedEntries, testOk := expectedTests[test] + if !testOk { + t.Errorf("Unexpected test %s (in environment %s) in actual", test, environment) + continue + } + + compareEntrySlices(t, actualEntries, expectedEntries, fmt.Sprintf("environment %s, test %s", environment, test)) + } + + for test := range expectedTests { + _, testOk := actualTests[test] + if !testOk { + t.Errorf("Missing expected test %s (in environment %s) in actual", test, environment) + } + } + } + + for environment := range expected { + _, environmentOk := actual[environment] + if !environmentOk { + t.Errorf("Missing expected environment %s in actual", environment) + } + } +} + +func TestSplitData(t *testing.T) { + entryE1T1_1, entryE1T1_2 := testEntry{ + name: "test1", + environment: "env1", + date: simpleDate(2000, 1), + status: "Passed", + }, testEntry{ + name: "test1", + environment: "env1", + date: simpleDate(2000, 2), + status: "Passed", + } + entryE1T2 := testEntry{ + name: "test2", + environment: "env1", + date: simpleDate(2000, 1), + status: "Passed", + } + entryE2T1 := testEntry{ + name: "test1", + environment: "env2", + date: simpleDate(2000, 1), + status: "Passed", + } + entryE2T2 := testEntry{ + name: "test2", + environment: "env2", + date: simpleDate(2000, 1), + status: "Passed", + } + actual := splitData([]testEntry{entryE1T1_1, entryE1T1_2, entryE1T2, entryE2T1, entryE2T2}) + expected := splitEntryMap{ + "env1": { + "test1": {entryE1T1_1, entryE1T1_2}, + "test2": {entryE1T2}, + }, + "env2": { + "test1": {entryE2T1}, + "test2": {entryE2T2}, + }, + } + + compareSplitData(t, actual, expected) +} + +func TestFilterRecentEntries(t *testing.T) { + entryE1T1R1, entryE1T1R2, entryE1T1R3, entryE1T1O1, entryE1T1O2 := testEntry{ + name: "test1", + environment: "env1", + date: simpleDate(2000, 4), + status: "Passed", + }, testEntry{ + name: "test1", + environment: "env1", + date: simpleDate(2000, 3), + status: "Passed", + }, testEntry{ + name: "test1", + environment: "env1", + date: simpleDate(2000, 3), + status: "Passed", + }, testEntry{ + name: "test1", + environment: "env1", + date: simpleDate(2000, 2), + status: "Passed", + }, testEntry{ + name: "test1", + environment: "env1", + date: simpleDate(2000, 1), + status: "Passed", + } + entryE1T2R1, entryE1T2R2, entryE1T2O1 := testEntry{ + name: "test2", + environment: "env1", + date: simpleDate(2001, 3), + status: "Passed", + }, testEntry{ + name: "test2", + environment: "env1", + date: simpleDate(2001, 2), + status: "Passed", + }, testEntry{ + name: "test2", + environment: "env1", + date: simpleDate(2001, 1), + status: "Passed", + } + entryE2T2R1, entryE2T2R2, entryE2T2O1 := testEntry{ + name: "test2", + environment: "env2", + date: simpleDate(2003, 3), + status: "Passed", + }, testEntry{ + name: "test2", + environment: "env2", + date: simpleDate(2003, 2), + status: "Passed", + }, testEntry{ + name: "test2", + environment: "env2", + date: simpleDate(2003, 1), + status: "Passed", + } + + actualData := filterRecentEntries(splitEntryMap{ + "env1": { + "test1": { + entryE1T1R1, + entryE1T1R2, + entryE1T1R3, + entryE1T1O1, + entryE1T1O2, + }, + "test2": { + entryE1T2R1, + entryE1T2R2, + entryE1T2O1, + }, + }, + "env2": { + "test2": { + entryE2T2R1, + entryE2T2R2, + entryE2T2O1, + }, + }, + }, 2) + + expectedData := splitEntryMap{ + "env1": { + "test1": { + entryE1T1R1, + entryE1T1R2, + entryE1T1R3, + }, + "test2": { + entryE1T2R1, + entryE1T2R2, + }, + }, + "env2": { + "test2": { + entryE2T2R1, + entryE2T2R2, + }, + }, + } + + compareSplitData(t, actualData, expectedData) +} + +func compareValues(t *testing.T, actualValues, expectedValues map[string]map[string]float32) { + for environment, actualTests := range actualValues { + expectedTests, environmentOk := expectedValues[environment] + if !environmentOk { + t.Errorf("Unexpected environment %s in actual", environment) + continue + } + + for test, actualValue := range actualTests { + expectedValue, testOk := expectedTests[test] + if !testOk { + t.Errorf("Unexpected test %s (in environment %s) in actual", test, environment) + continue + } + + if actualValue != expectedValue { + t.Errorf("Wrong value at environment %s and test %s. Expected: %v, Actual: %v", environment, test, expectedValue, actualValue) + } + } + + for test := range expectedTests { + _, testOk := actualTests[test] + if !testOk { + t.Errorf("Missing expected test %s (in environment %s) in actual", test, environment) + } + } + } + + for environment := range expectedValues { + _, environmentOk := actualValues[environment] + if !environmentOk { + t.Errorf("Missing expected environment %s in actual", environment) + } + } +} + +func TestComputeFlakeRates(t *testing.T) { + actualData := computeFlakeRates(splitEntryMap{ + "env1": { + "test1": { + { + name: "test1", + environment: "env1", + date: simpleDate(2000, 4), + status: "Passed", + }, { + name: "test1", + environment: "env1", + date: simpleDate(2000, 3), + status: "Passed", + }, { + name: "test1", + environment: "env1", + date: simpleDate(2000, 3), + status: "Passed", + }, { + name: "test1", + environment: "env1", + date: simpleDate(2000, 2), + status: "Passed", + }, { + name: "test1", + environment: "env1", + date: simpleDate(2000, 1), + status: "Failed", + }, + }, + "test2": { + { + name: "test2", + environment: "env1", + date: simpleDate(2001, 3), + status: "Failed", + }, { + name: "test2", + environment: "env1", + date: simpleDate(2001, 2), + status: "Failed", + }, { + name: "test2", + environment: "env1", + date: simpleDate(2001, 1), + status: "Failed", + }, + }, + }, + "env2": { + "test2": { + { + name: "test2", + environment: "env2", + date: simpleDate(2003, 3), + status: "Passed", + }, testEntry{ + name: "test2", + environment: "env2", + date: simpleDate(2003, 2), + status: "Failed", + }, + }, + }, + }) + + expectedData := map[string]map[string]float32{ + "env1": { + "test1": 0.2, + "test2": 1, + }, + "env2": { + "test2": 0.5, + }, + } + + compareValues(t, actualData, expectedData) +} + +func TestComputeAverageDurations(t *testing.T) { + actualData := computeAverageDurations(splitEntryMap{ + "env1": { + "test1": { + { + name: "test1", + environment: "env1", + date: simpleDate(2000, 4), + status: "Passed", + duration: 1, + }, { + name: "test1", + environment: "env1", + date: simpleDate(2000, 3), + status: "Passed", + duration: 2, + }, { + name: "test1", + environment: "env1", + date: simpleDate(2000, 3), + status: "Passed", + duration: 3, + }, { + name: "test1", + environment: "env1", + date: simpleDate(2000, 2), + status: "Passed", + duration: 3, + }, { + name: "test1", + environment: "env1", + date: simpleDate(2000, 1), + status: "Failed", + duration: 3, + }, + }, + "test2": { + { + name: "test2", + environment: "env1", + date: simpleDate(2001, 3), + status: "Failed", + duration: 1, + }, { + name: "test2", + environment: "env1", + date: simpleDate(2001, 2), + status: "Failed", + duration: 3, + }, { + name: "test2", + environment: "env1", + date: simpleDate(2001, 1), + status: "Failed", + duration: 3, + }, + }, + }, + "env2": { + "test2": { + { + name: "test2", + environment: "env2", + date: simpleDate(2003, 3), + status: "Passed", + duration: 0.5, + }, testEntry{ + name: "test2", + environment: "env2", + date: simpleDate(2003, 2), + status: "Failed", + duration: 1.5, + }, + }, + }, + }) + + expectedData := map[string]map[string]float32{ + "env1": { + "test1": float32(12) / float32(5), + "test2": float32(7) / float32(3), + }, + "env2": { + "test2": 1, + }, + } + + compareValues(t, actualData, expectedData) +} diff --git a/hack/jenkins/test-flake-chart/flake_chart.html b/hack/jenkins/test-flake-chart/flake_chart.html new file mode 100644 index 000000000000..beaf224c207c --- /dev/null +++ b/hack/jenkins/test-flake-chart/flake_chart.html @@ -0,0 +1,9 @@ + + + + + +
+ + + \ No newline at end of file diff --git a/hack/jenkins/test-flake-chart/flake_chart.js b/hack/jenkins/test-flake-chart/flake_chart.js new file mode 100644 index 000000000000..736fc7cd7a2c --- /dev/null +++ b/hack/jenkins/test-flake-chart/flake_chart.js @@ -0,0 +1,194 @@ + +// Displays an error message to the UI. Any previous message will be erased. +function displayError(message) { + console.error(message); +} + +// Creates a generator that reads the response body one line at a time. +async function* bodyByLinesIterator(response) { + // TODO: Replace this with something that actually reads the body line by line + // (since the file can be big). + const lines = (await response.text()).split("\n"); + for (let line of lines) { + // Skip any empty lines (most likely at the end). + if (line !== "") { + yield line; + } + } +} + +// Determines whether `str` matches at least one value in `enumObject`. +function isValidEnumValue(enumObject, str) { + for (const enumKey in enumObject) { + if (enumObject[enumKey] === str) { + return true; + } + } + return false; +} + +// Enum for test status. +const testStatus = { + PASSED: "Passed", + FAILED: "Failed", + SKIPPED: "Skipped" +} + +async function loadTestData() { + const response = await fetch("data.csv"); + if (!response.ok) { + const responseText = await response.text(); + throw `Failed to fetch data from GCS bucket. Error: ${responseText}`; + } + + const lines = bodyByLinesIterator(response); + // Consume the header to ensure the data has the right number of fields. + const header = (await lines.next()).value; + if (header.split(",").length != 6) { + throw `Fetched CSV data contains wrong number of fields. Expected: 6. Actual Header: "${header}"`; + } + + const testData = []; + let lineData = ["", "", "", "", "", ""]; + for await (const line of lines) { + let splitLine = line.split(","); + if (splitLine.length != 6) { + console.warn(`Found line with wrong number of fields. Actual: ${splitLine.length} Expected: 6. Line: "${line}"`); + continue; + } + splitLine = splitLine.map((value, index) => value === "" ? lineData[index] : value); + lineData = splitLine; + if (!isValidEnumValue(testStatus, splitLine[4])) { + console.warn(`Invalid test status provided. Actual: ${splitLine[4]} Expected: One of ${Object.values(testStatus).join(", ")}`); + continue; + } + testData.push({ + commit: splitLine[0], + date: new Date(splitLine[1]), + environment: splitLine[2], + name: splitLine[3], + status: splitLine[4], + duration: Number(splitLine[5]), + }); + } + if (testData.length == 0) { + throw "Fetched CSV data is empty or poorly formatted."; + } + return testData; +} + +// Computes the average of an array of numbers. +Array.prototype.average = function () { + return this.length === 0 ? 0 : this.reduce((sum, value) => sum + value, 0) / this.length; +}; + +// Groups array elements by keys obtained through `keyGetter`. +Array.prototype.groupBy = function (keyGetter) { + return Array.from(this.reduce((mapCollection, element) => { + const key = keyGetter(element); + if (mapCollection.has(key)) { + mapCollection.get(key).push(element); + } else { + mapCollection.set(key, [element]); + } + return mapCollection; + }, new Map()).values()); +}; + +// Parse URL search `query` into [{key, value}]. +function parseUrlQuery(query) { + if (query[0] === '?') { + query = query.substring(1); + } + return Object.fromEntries((query === "" ? [] : query.split("&")).map(element => { + const keyValue = element.split("="); + return [unescape(keyValue[0]), unescape(keyValue[1])]; + })); +} + +async function init() { + google.charts.load('current', { 'packages': ['corechart'] }); + let testData; + try { + // Wait for Google Charts to load, and for test data to load. + // Only store the test data (at index 1) into `testData`. + testData = (await Promise.all([ + new Promise(resolve => google.charts.setOnLoadCallback(resolve)), + loadTestData() + ]))[1]; + } catch (err) { + displayError(err); + return; + } + + const data = new google.visualization.DataTable(); + data.addColumn('date', 'Date'); + data.addColumn('number', 'Flake Percentage'); + data.addColumn({ type: 'string', role: 'tooltip', 'p': { 'html': true } }); + data.addColumn('number', 'Duration'); + data.addColumn({ type: 'string', role: 'tooltip', 'p': { 'html': true } }); + + const query = parseUrlQuery(window.location.search); + const desiredTest = query.test || "", desiredEnvironment = query.env || ""; + + const groups = testData + // Filter to only contain unskipped runs of the requested test and requested environment. + .filter(test => test.name === desiredTest && test.environment === desiredEnvironment && test.status !== testStatus.SKIPPED) + .groupBy(test => test.date.getTime()); + + data.addRows( + groups + // Sort by run date, past to future. + .sort((a, b) => a[0].date - b[0].date) + // Map each group to all variables need to format the rows. + .map(tests => ({ + date: tests[0].date, // Get one of the dates from the tests (which will all be the same). + flakeRate: tests.map(test => test.status === testStatus.FAILED ? 100 : 0).average(), // Compute average of runs where FAILED counts as 100%. + duration: tests.map(test => test.duration).average(), // Compute average duration of runs. + commitHashes: tests.map(test => ({ // Take all hashes, statuses, and durations of tests in this group. + hash: test.commit, + status: test.status, + duration: test.duration + })) + })) + .map(groupData => [ + groupData.date, + groupData.flakeRate, + `
+ ${groupData.date.toString()}
+ Flake Percentage: ${groupData.flakeRate.toFixed(2)}%
+ Hashes:
+ ${groupData.commitHashes.map(({ hash, status }) => ` - ${hash} (${status})`).join("
")} +
`, + groupData.duration, + `
+ ${groupData.date.toString()}
+ Average Duration: ${groupData.duration.toFixed(2)}s
+ Hashes:
+ ${groupData.commitHashes.map(({ hash, duration }) => ` - ${hash} (${duration}s)`).join("
")} +
`, + ]) + ); + + const options = { + title: `Flake rate and duration by day of ${desiredTest} on ${desiredEnvironment}`, + width: window.innerWidth, + height: window.innerHeight, + pointSize: 10, + pointShape: "circle", + series: { + 0: { targetAxisIndex: 0 }, + 1: { targetAxisIndex: 1 }, + }, + vAxes: { + 0: { title: "Flake rate", minValue: 0, maxValue: 100 }, + 1: { title: "Duration (seconds)" }, + }, + colors: ['#dc3912', '#3366cc'], + tooltip: { trigger: "selection", isHtml: true } + }; + const chart = new google.visualization.LineChart(document.getElementById('chart_div')); + chart.draw(data, options); +} + +init(); diff --git a/hack/jenkins/test-flake-chart/optimize_data.sh b/hack/jenkins/test-flake-chart/optimize_data.sh new file mode 100755 index 000000000000..641dd6905b3e --- /dev/null +++ b/hack/jenkins/test-flake-chart/optimize_data.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Copyright 2021 The Kubernetes Authors All rights reserved. +# +# 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. + +# Takes a CSV file through stdin, compresses it and writes it to stdout. +# Example usage: < data.csv ./optimize_data.sh > data_optimized.csv + +set -eu -o pipefail + +# Take input CSV. For each field, if it is the same as the previous row, replace it with an empty string. +# This is to compress the input CSV. Example: +# Input: +# hash,2021-06-10,Docker_Linux,TestFunctional,Passed,0.5 +# hash,2021-06-10,Docker_Linux_containerd,TestFunctional,Failed,0.6 +# +# Output: +# hash,2021-06-10,Docker_Linux,TestFunctional,Passed,0.5 +# ,,DockerLinux_containerd,,Failed,0.6 +awk -F, 'BEGIN {OFS = FS} { for(i=1; i<=NF; i++) { if($i == j[i]) { $i = ""; } else { j[i] = $i; } } printf "%s\n",$0 }' diff --git a/hack/jenkins/test-flake-chart/process_data.sh b/hack/jenkins/test-flake-chart/process_data.sh new file mode 100755 index 000000000000..b51e07a9e2fb --- /dev/null +++ b/hack/jenkins/test-flake-chart/process_data.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Copyright 2021 The Kubernetes Authors All rights reserved. +# +# 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. + +# Takes a series of gopogh summary jsons, and formats them into a CSV file with +# a row for each test. +# Example usage: cat gopogh_1.json gopogh_2.json gopogh_3.json | ./process_data.sh + +set -eu -o pipefail + +# Print header. +printf "Commit Hash,Test Date,Environment,Test,Status,Duration\n" + +# Turn each test in each summary file to a CSV line containing its commit hash, date, environment, test, status, and duration. +# Example line: +# 247982745892,2021-06-10,Docker_Linux,TestFunctional,Passed,0.5 +jq -r '((.PassedTests[]? as $name | {commit: (.Detail.Details | split(":") | .[0]), date: (.Detail.Details | split(":") | .[1]), environment: .Detail.Name, test: $name, duration: .Durations[$name], status: "Passed"}), + (.FailedTests[]? as $name | {commit: (.Detail.Details | split(":") | .[0]), date: (.Detail.Details | split(":") | .[1]), environment: .Detail.Name, test: $name, duration: .Durations[$name], status: "Failed"}), + (.SkippedTests[]? as $name | {commit: (.Detail.Details | split(":") | .[0]), date: (.Detail.Details | split(":") | .[1]), environment: .Detail.Name, test: $name, duration: 0, status: "Skipped"})) + | .commit + "," + .date + "," + .environment + "," + .test + "," + .status + "," + (.duration | tostring)' diff --git a/hack/jenkins/test-flake-chart/report_flakes.sh b/hack/jenkins/test-flake-chart/report_flakes.sh new file mode 100755 index 000000000000..62ceed336079 --- /dev/null +++ b/hack/jenkins/test-flake-chart/report_flakes.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +# Copyright 2021 The Kubernetes Authors All rights reserved. +# +# 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. + +# Creates a comment on the provided PR number, using the provided gopogh summary +# to list out the flake rates of all failing tests. +# Example usage: ./report_flakes.sh 11602 gopogh.json Docker_Linux + +set -eu -o pipefail + +if [ "$#" -ne 3 ]; then + echo "Wrong number of arguments. Usage: report_flakes.sh " 1>&2 + exit 1 +fi + +PR_NUMBER=$1 +SUMMARY_DATA=$2 +ENVIRONMENT=$3 + +# To prevent having a super-long comment, add a maximum number of tests to report. +MAX_REPORTED_TESTS=30 + +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + +TMP_DATA=$(mktemp) +# 1) Process the data in the gopogh summary. +# 2) Filter tests to only include failed tests on the environment (and only get their names). +# 3) Sort the names of the tests. +# 4) Store in file $TMP_DATA. +< "$SUMMARY_DATA" $DIR/process_data.sh \ + | sed -n -r -e "s/[0-9a-f]*,[0-9-]*,$ENVIRONMENT,([a-zA-Z\/_-]*),Failed,[.0-9]*/\1/p" \ + | sort \ + > "$TMP_DATA" + +# Download the precomputed flake rates from the GCS bucket into file $TMP_FLAKE_RATES. +TMP_FLAKE_RATES=$(mktemp) +gsutil cp gs://minikube-flake-rate/flake_rates.csv "$TMP_FLAKE_RATES" + +TMP_FAILED_RATES="$TMP_FLAKE_RATES\_filtered" +# 1) Parse/filter the flake rates to only include the test name and flake rates for environment. +# 2) Sort the flake rates based on test name. +# 3) Join the flake rates with the failing tests to only get flake rates of failing tests. +# 4) Sort failed test flake rates based on the flakiness of that test - stable tests should be first on the list. +# 5) Store in file $TMP_FAILED_RATES. +< "$TMP_FLAKE_RATES" sed -n -r -e "s/$ENVIRONMENT,([a-zA-Z\/_-]*),([.0-9]*),[.0-9]*/\1,\2/p" \ + | sort -t, -k1,1 \ + | join -t , -j 1 "$TMP_DATA" - \ + | sort -g -t, -k2,2 \ + > "$TMP_FAILED_RATES" + +FAILED_RATES_LINES=$(wc -l < "$TMP_FAILED_RATES") +if [[ "$FAILED_RATES_LINES" -eq 0 ]]; then + echo "No failed tests! Aborting without commenting..." 1>&2 + exit 0 +fi + +# Create the comment template. +TMP_COMMENT=$(mktemp) +printf "These are the flake rates of all failed tests on %s.\n|Failed Tests|Flake Rate (%%)|\n|---|---|\n" "$ENVIRONMENT" > "$TMP_COMMENT" +# 1) Get the first $MAX_REPORTED_TESTS lines. +# 2) Print a row in the table with the test name, flake rate, and a link to the flake chart for that test. +# 3) Append these rows to file $TMP_COMMENT. +< "$TMP_FAILED_RATES" head -n $MAX_REPORTED_TESTS \ + | sed -n -r -e "s/([a-zA-Z\/_-]*),([.0-9]*)/|\1|\2 ([chart](https:\/\/storage.googleapis.com\/minikube-flake-rate\/flake_chart.html?env=$ENVIRONMENT\&test=\1))|/p" \ + >> "$TMP_COMMENT" + +# If there are too many failing tests, add an extra row explaining this, and a message after the table. +if [[ "$FAILED_RATES_LINES" -gt 30 ]]; then + printf "|More tests...|Continued...|\n\nToo many tests failed - See test logs for more details." >> "$TMP_COMMENT" +fi + +# install gh if not present +$DIR/../installers/check_install_gh.sh + +gh pr comment "https://github.com/kubernetes/minikube/pull/$PR_NUMBER" --body "$(cat $TMP_COMMENT)" diff --git a/hack/jenkins/test-flake-chart/upload_tests.sh b/hack/jenkins/test-flake-chart/upload_tests.sh new file mode 100755 index 000000000000..5906f73ae173 --- /dev/null +++ b/hack/jenkins/test-flake-chart/upload_tests.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Copyright 2021 The Kubernetes Authors All rights reserved. +# +# 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. + +# Takes a gopogh summary, extracts test data as a CSV and appends to the +# existing CSV data in the GCS bucket. +# Example usage: ./jenkins_upload_tests.sh gopogh_summary.json + +set -eu -o pipefail + +if [ "$#" -ne 1 ]; then + echo "Wrong number of arguments. Usage: jenkins_upload_tests.sh " 1>&2 + exit 1 +fi + +TMP_DATA=$(mktemp) + +# Use the gopogh summary, process it, optimize the data, remove the header, and store. +<"$1" ./test-flake-chart/process_data.sh \ + | ./test-flake-chart/optimize_data.sh \ + | sed "1d" > $TMP_DATA + +GCS_TMP="gs://minikube-flake-rate/$(basename "$TMP_DATA")" + +# Copy data to append to GCS +gsutil cp $TMP_DATA $GCS_TMP +# Append data to existing data. +gsutil compose gs://minikube-flake-rate/data.csv $GCS_TMP gs://minikube-flake-rate/data.csv +# Clear all the temp stuff. +rm $TMP_DATA +gsutil rm $GCS_TMP diff --git a/hack/jenkins/upload_integration_report.sh b/hack/jenkins/upload_integration_report.sh index 04e24df09ebc..ddf9a6cee613 100644 --- a/hack/jenkins/upload_integration_report.sh +++ b/hack/jenkins/upload_integration_report.sh @@ -47,3 +47,7 @@ gsutil -qm cp "${HTML_OUT}" "gs://${JOB_GCS_BUCKET}.html" || true SUMMARY_OUT="$ARTIFACTS/summary.txt" echo ">> uploading ${SUMMARY_OUT}" gsutil -qm cp "${SUMMARY_OUT}" "gs://${JOB_GCS_BUCKET}_summary.json" || true + +if [[ "${MINIKUBE_LOCATION}" == "master" ]]; then + ./test-flake-chart/jenkins_upload_tests.sh "${SUMMARY_OUT}" +fi diff --git a/hack/jenkins/windows_integration_setup.ps1 b/hack/jenkins/windows_integration_setup.ps1 new file mode 100644 index 000000000000..510cccbfc37f --- /dev/null +++ b/hack/jenkins/windows_integration_setup.ps1 @@ -0,0 +1,21 @@ +# Copyright 2021 The Kubernetes Authors All rights reserved. +# +# 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. + +$test_home="$env:HOMEDRIVE$env:HOMEPATH\minikube-integration" +$env:KUBECONFIG="$test_home\kubeconfig" +$env:MINIKUBE_HOME="$test_home\.minikube" + +# delete in case previous test was unexpectedly ended and teardown wasn't run +rm -r -Force $test_home +mkdir -p $test_home diff --git a/hack/jenkins/windows_integration_teardown.ps1 b/hack/jenkins/windows_integration_teardown.ps1 new file mode 100644 index 000000000000..2dc1248f7e66 --- /dev/null +++ b/hack/jenkins/windows_integration_teardown.ps1 @@ -0,0 +1,17 @@ +# Copyright 2021 The Kubernetes Authors All rights reserved. +# +# 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. + +$test_home="$env:HOMEDRIVE$env:HOMEPATH\minikube-integration" + +rm -r -Force $test_home diff --git a/hack/jenkins/windows_integration_test_docker.ps1 b/hack/jenkins/windows_integration_test_docker.ps1 index 0dcd4f8f53c5..244279a2362c 100644 --- a/hack/jenkins/windows_integration_test_docker.ps1 +++ b/hack/jenkins/windows_integration_test_docker.ps1 @@ -21,6 +21,8 @@ gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/minikube-windows-am gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/e2e-windows-amd64.exe out/ gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/testdata . gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/setup_docker_desktop_windows.ps1 out/ +gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_setup.ps1 out/ +gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_teardown.ps1 out/ $env:SHORT_COMMIT=$env:COMMIT.substring(0, 7) $gcs_bucket="minikube-builds/logs/$env:MINIKUBE_LOCATION/$env:SHORT_COMMIT" @@ -43,6 +45,8 @@ docker system prune --all --force ./out/minikube-windows-amd64.exe delete --all +./out/windows_integration_setup.ps1 + docker ps -aq | ForEach -Process {docker rm -fv $_} $started=Get-Date -UFormat %s @@ -96,4 +100,6 @@ docker system prune --all --force # Just shutdown Docker, it's safer than anything else Get-Process "*Docker Desktop*" | Stop-Process +./out/windows_integration_teardown.ps1 + Exit $env:result diff --git a/hack/jenkins/windows_integration_test_hyperv.ps1 b/hack/jenkins/windows_integration_test_hyperv.ps1 index f6c2282d4c13..067e64b695cf 100644 --- a/hack/jenkins/windows_integration_test_hyperv.ps1 +++ b/hack/jenkins/windows_integration_test_hyperv.ps1 @@ -18,9 +18,13 @@ mkdir -p out gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/minikube-windows-amd64.exe out/ gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/e2e-windows-amd64.exe out/ gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/testdata . +gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_setup.ps1 out/ +gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_teardown.ps1 out/ ./out/minikube-windows-amd64.exe delete --all +./out/windows_integration_setup.ps1 + out/e2e-windows-amd64.exe -minikube-start-args="--driver=hyperv" -binary=out/minikube-windows-amd64.exe -test.v -test.timeout=65m $env:result=$lastexitcode # If the last exit code was 0->success, x>0->error @@ -33,4 +37,6 @@ $env:target_url="https://storage.googleapis.com/minikube-builds/logs/$env:MINIKU $json = "{`"state`": `"$env:status`", `"description`": `"Jenkins`", `"target_url`": `"$env:target_url`", `"context`": `"Hyper-V_Windows`"}" Invoke-WebRequest -Uri "https://api.github.com/repos/kubernetes/minikube/statuses/$env:COMMIT`?access_token=$env:access_token" -Body $json -ContentType "application/json" -Method Post -usebasicparsing -Exit $env:result \ No newline at end of file +./out/windows_integration_teardown.ps1 + +Exit $env:result diff --git a/hack/jenkins/windows_integration_test_virtualbox.ps1 b/hack/jenkins/windows_integration_test_virtualbox.ps1 index f17084ab0b94..e4100ddf83ef 100644 --- a/hack/jenkins/windows_integration_test_virtualbox.ps1 +++ b/hack/jenkins/windows_integration_test_virtualbox.ps1 @@ -19,9 +19,13 @@ mkdir -p out gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/minikube-windows-amd64.exe out/ gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/e2e-windows-amd64.exe out/ gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/testdata . +gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_setup.ps1 out/ +gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_teardown.ps1 out/ ./out/minikube-windows-amd64.exe delete +./out/windows_integration_setup.ps1 + out/e2e-windows-amd64.exe -minikube-start-args="--driver=virtualbox" -binary=out/minikube-windows-amd64.exe -test.v -test.timeout=30m $env:result=$lastexitcode # If the last exit code was 0->success, x>0->error @@ -34,4 +38,6 @@ $env:target_url="https://storage.googleapis.com/minikube-builds/logs/$env:MINIKU $json = "{`"state`": `"$env:status`", `"description`": `"Jenkins`", `"target_url`": `"$env:target_url`", `"context`": `"VirtualBox_Windows`"}" Invoke-WebRequest -Uri "https://api.github.com/repos/kubernetes/minikube/statuses/$env:COMMIT`?access_token=$env:access_token" -Body $json -ContentType "application/json" -Method Post -usebasicparsing -Exit $env:result \ No newline at end of file +./out/windows_integration_teardown.ps1 + +Exit $env:result diff --git a/hack/update/golang_version/update_golang_version.go b/hack/update/golang_version/update_golang_version.go index ca1096f20378..d4fc63799ac2 100644 --- a/hack/update/golang_version/update_golang_version.go +++ b/hack/update/golang_version/update_golang_version.go @@ -70,6 +70,16 @@ var ( `go-version: '.*`: `go-version: '{{.StableVersion}}'`, }, }, + ".github/workflows/docs.yml": { + Replace: map[string]string{ + `go-version: '.*`: `go-version: '{{.StableVersion}}'`, + }, + }, + ".github/workflows/time-to-k8s.yml": { + Replace: map[string]string{ + `go-version: '.*`: `go-version: '{{.StableVersion}}'`, + }, + }, ".travis.yml": { Replace: map[string]string{ `go:\n - .*`: `go:{{printf "\n - %s" .StableVersion}}`, diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index e71836de8a12..627e54775e36 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -24,13 +24,13 @@ import ( const ( // Version is the current version of kic - Version = "v0.0.22-1620785771-11384" + Version = "v0.0.23" // SHA of the kic base image - baseImageSHA = "f5844fe35994179bbad8dda27d4912304a2fedccdf0bf93ce8b2ec2b3b83af1c" + baseImageSHA = "baf6d94b2050bcbecd98994e265cf965a4f4768978620ccf5227a6dcb75ade45" // The name of the GCR kicbase repository - gcrRepo = "gcr.io/k8s-minikube/kicbase-builds" + gcrRepo = "gcr.io/k8s-minikube/kicbase" // The name of the Dockerhub kicbase repository - dockerhubRepo = "kicbase/build" + dockerhubRepo = "kicbase/stable" ) var ( diff --git a/pkg/minikube/assets/addons.go b/pkg/minikube/assets/addons.go index 779b5b6791dc..d536260046ba 100644 --- a/pkg/minikube/assets/addons.go +++ b/pkg/minikube/assets/addons.go @@ -22,6 +22,7 @@ import ( "strings" "github.com/spf13/viper" + "k8s.io/minikube/deploy/addons" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/minikube/out" @@ -79,27 +80,32 @@ func (a *Addon) IsEnabled(cc *config.ClusterConfig) bool { var Addons = map[string]*Addon{ "auto-pause": NewAddon([]*BinAsset{ MustBinAsset( - "deploy/addons/auto-pause/auto-pause.yaml.tmpl", + addons.AutoPauseAssets, + "auto-pause/auto-pause.yaml.tmpl", vmpath.GuestAddonsDir, "auto-pause.yaml", "0640"), MustBinAsset( - "deploy/addons/auto-pause/auto-pause-hook.yaml.tmpl", + addons.AutoPauseAssets, + "auto-pause/auto-pause-hook.yaml.tmpl", vmpath.GuestAddonsDir, "auto-pause-hook.yaml", "0640"), MustBinAsset( - "deploy/addons/auto-pause/haproxy.cfg.tmpl", + addons.AutoPauseAssets, + "auto-pause/haproxy.cfg.tmpl", vmpath.GuestPersistentDir, "haproxy.cfg", "0640"), MustBinAsset( - "deploy/addons/auto-pause/unpause.lua", + addons.AutoPauseAssets, + "auto-pause/unpause.lua", vmpath.GuestPersistentDir, "unpause.lua", "0640"), MustBinAsset( - "deploy/addons/auto-pause/auto-pause.service", + addons.AutoPauseAssets, + "auto-pause/auto-pause.service", "/etc/systemd/system/", "auto-pause.service", "0640"), @@ -112,37 +118,37 @@ var Addons = map[string]*Addon{ }), "dashboard": NewAddon([]*BinAsset{ // We want to create the kubernetes-dashboard ns first so that every subsequent object can be created - MustBinAsset("deploy/addons/dashboard/dashboard-ns.yaml", vmpath.GuestAddonsDir, "dashboard-ns.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-clusterrole.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrole.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrolebinding.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-configmap.yaml", vmpath.GuestAddonsDir, "dashboard-configmap.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-dp.yaml.tmpl", vmpath.GuestAddonsDir, "dashboard-dp.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-role.yaml", vmpath.GuestAddonsDir, "dashboard-role.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-rolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-rolebinding.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-sa.yaml", vmpath.GuestAddonsDir, "dashboard-sa.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-secret.yaml", vmpath.GuestAddonsDir, "dashboard-secret.yaml", "0640"), - MustBinAsset("deploy/addons/dashboard/dashboard-svc.yaml", vmpath.GuestAddonsDir, "dashboard-svc.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-ns.yaml", vmpath.GuestAddonsDir, "dashboard-ns.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-clusterrole.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrole.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-clusterrolebinding.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-configmap.yaml", vmpath.GuestAddonsDir, "dashboard-configmap.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-dp.yaml.tmpl", vmpath.GuestAddonsDir, "dashboard-dp.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-role.yaml", vmpath.GuestAddonsDir, "dashboard-role.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-rolebinding.yaml", vmpath.GuestAddonsDir, "dashboard-rolebinding.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-sa.yaml", vmpath.GuestAddonsDir, "dashboard-sa.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-secret.yaml", vmpath.GuestAddonsDir, "dashboard-secret.yaml", "0640"), + MustBinAsset(addons.DashboardAssets, "dashboard/dashboard-svc.yaml", vmpath.GuestAddonsDir, "dashboard-svc.yaml", "0640"), }, false, "dashboard", map[string]string{ "Dashboard": "kubernetesui/dashboard:v2.1.0@sha256:7f80b5ba141bead69c4fee8661464857af300d7d7ed0274cf7beecedc00322e6", "MetricsScraper": "kubernetesui/metrics-scraper:v1.0.4@sha256:555981a24f184420f3be0c79d4efb6c948a85cfce84034f85a563f4151a81cbf", }, nil), "default-storageclass": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/storageclass/storageclass.yaml.tmpl", + MustBinAsset(addons.DefaultStorageClassAssets, + "storageclass/storageclass.yaml.tmpl", vmpath.GuestAddonsDir, "storageclass.yaml", "0640"), }, true, "default-storageclass", nil, nil), "pod-security-policy": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/pod-security-policy/pod-security-policy.yaml.tmpl", + MustBinAsset(addons.PodSecurityPolicyAssets, + "pod-security-policy/pod-security-policy.yaml.tmpl", vmpath.GuestAddonsDir, "pod-security-policy.yaml", "0640"), }, false, "pod-security-policy", nil, nil), "storage-provisioner": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/storage-provisioner/storage-provisioner.yaml.tmpl", + MustBinAsset(addons.StorageProvisionerAssets, + "storage-provisioner/storage-provisioner.yaml.tmpl", vmpath.GuestAddonsDir, "storage-provisioner.yaml", "0640"), @@ -152,23 +158,23 @@ var Addons = map[string]*Addon{ "StorageProvisioner": "gcr.io", }), "storage-provisioner-gluster": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/storage-provisioner-gluster/storage-gluster-ns.yaml.tmpl", + MustBinAsset(addons.StorageProvisionerGlusterAssets, + "storage-provisioner-gluster/storage-gluster-ns.yaml.tmpl", vmpath.GuestAddonsDir, "storage-gluster-ns.yaml", "0640"), - MustBinAsset( - "deploy/addons/storage-provisioner-gluster/glusterfs-daemonset.yaml.tmpl", + MustBinAsset(addons.StorageProvisionerGlusterAssets, + "storage-provisioner-gluster/glusterfs-daemonset.yaml.tmpl", vmpath.GuestAddonsDir, "glusterfs-daemonset.yaml", "0640"), - MustBinAsset( - "deploy/addons/storage-provisioner-gluster/heketi-deployment.yaml.tmpl", + MustBinAsset(addons.StorageProvisionerGlusterAssets, + "storage-provisioner-gluster/heketi-deployment.yaml.tmpl", vmpath.GuestAddonsDir, "heketi-deployment.yaml", "0640"), - MustBinAsset( - "deploy/addons/storage-provisioner-gluster/storage-provisioner-glusterfile.yaml.tmpl", + MustBinAsset(addons.StorageProvisionerGlusterAssets, + "storage-provisioner-gluster/storage-provisioner-glusterfile.yaml.tmpl", vmpath.GuestAddonsDir, "storage-privisioner-glusterfile.yaml", "0640"), @@ -180,33 +186,33 @@ var Addons = map[string]*Addon{ "GlusterfsServer": "quay.io", }), "efk": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/efk/elasticsearch-rc.yaml.tmpl", + MustBinAsset(addons.EfkAssets, + "efk/elasticsearch-rc.yaml.tmpl", vmpath.GuestAddonsDir, "elasticsearch-rc.yaml", "0640"), - MustBinAsset( - "deploy/addons/efk/elasticsearch-svc.yaml.tmpl", + MustBinAsset(addons.EfkAssets, + "efk/elasticsearch-svc.yaml.tmpl", vmpath.GuestAddonsDir, "elasticsearch-svc.yaml", "0640"), - MustBinAsset( - "deploy/addons/efk/fluentd-es-rc.yaml.tmpl", + MustBinAsset(addons.EfkAssets, + "efk/fluentd-es-rc.yaml.tmpl", vmpath.GuestAddonsDir, "fluentd-es-rc.yaml", "0640"), - MustBinAsset( - "deploy/addons/efk/fluentd-es-configmap.yaml.tmpl", + MustBinAsset(addons.EfkAssets, + "efk/fluentd-es-configmap.yaml.tmpl", vmpath.GuestAddonsDir, "fluentd-es-configmap.yaml", "0640"), - MustBinAsset( - "deploy/addons/efk/kibana-rc.yaml.tmpl", + MustBinAsset(addons.EfkAssets, + "efk/kibana-rc.yaml.tmpl", vmpath.GuestAddonsDir, "kibana-rc.yaml", "0640"), - MustBinAsset( - "deploy/addons/efk/kibana-svc.yaml.tmpl", + MustBinAsset(addons.EfkAssets, + "efk/kibana-svc.yaml.tmpl", vmpath.GuestAddonsDir, "kibana-svc.yaml", "0640"), @@ -221,18 +227,18 @@ var Addons = map[string]*Addon{ "Kibana": "docker.elastic.co", }), "ingress": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/ingress/ingress-configmap.yaml.tmpl", + MustBinAsset(addons.IngressAssets, + "ingress/ingress-configmap.yaml.tmpl", vmpath.GuestAddonsDir, "ingress-configmap.yaml", "0640"), - MustBinAsset( - "deploy/addons/ingress/ingress-rbac.yaml.tmpl", + MustBinAsset(addons.IngressAssets, + "ingress/ingress-rbac.yaml.tmpl", vmpath.GuestAddonsDir, "ingress-rbac.yaml", "0640"), - MustBinAsset( - "deploy/addons/ingress/ingress-dp.yaml.tmpl", + MustBinAsset(addons.IngressAssets, + "ingress/ingress-dp.yaml.tmpl", vmpath.GuestAddonsDir, "ingress-dp.yaml", "0640"), @@ -244,8 +250,8 @@ var Addons = map[string]*Addon{ "IngressController": "k8s.gcr.io", }), "istio-provisioner": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/istio-provisioner/istio-operator.yaml.tmpl", + MustBinAsset(addons.IstioProvisionerAssets, + "istio-provisioner/istio-operator.yaml.tmpl", vmpath.GuestAddonsDir, "istio-operator.yaml", "0640"), @@ -253,15 +259,15 @@ var Addons = map[string]*Addon{ "IstioOperator": "istio/operator:1.5.0@sha256:25a6398ed4996a5313767ceb63768d503c266f63506ad3074b30eef6b5b5167e", }, nil), "istio": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/istio/istio-default-profile.yaml.tmpl", + MustBinAsset(addons.IstioAssets, + "istio/istio-default-profile.yaml.tmpl", vmpath.GuestAddonsDir, "istio-default-profile.yaml", "0640"), }, false, "istio", nil, nil), "kubevirt": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/kubevirt/pod.yaml.tmpl", + MustBinAsset(addons.KubevirtAssets, + "kubevirt/pod.yaml.tmpl", vmpath.GuestAddonsDir, "pod.yaml", "0640"), @@ -269,23 +275,23 @@ var Addons = map[string]*Addon{ "Kubectl": "bitnami/kubectl:1.17@sha256:de642e973d3d0ef60e4d0a1f92286a9fdae245535c5990d4762bbe86fcf95887", }, nil), "metrics-server": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/metrics-server/metrics-apiservice.yaml.tmpl", + MustBinAsset(addons.MetricsServerAssets, + "metrics-server/metrics-apiservice.yaml.tmpl", vmpath.GuestAddonsDir, "metrics-apiservice.yaml", "0640"), - MustBinAsset( - "deploy/addons/metrics-server/metrics-server-deployment.yaml.tmpl", + MustBinAsset(addons.MetricsServerAssets, + "metrics-server/metrics-server-deployment.yaml.tmpl", vmpath.GuestAddonsDir, "metrics-server-deployment.yaml", "0640"), - MustBinAsset( - "deploy/addons/metrics-server/metrics-server-rbac.yaml.tmpl", + MustBinAsset(addons.MetricsServerAssets, + "metrics-server/metrics-server-rbac.yaml.tmpl", vmpath.GuestAddonsDir, "metrics-server-rbac.yaml", "0640"), - MustBinAsset( - "deploy/addons/metrics-server/metrics-server-service.yaml.tmpl", + MustBinAsset(addons.MetricsServerAssets, + "metrics-server/metrics-server-service.yaml.tmpl", vmpath.GuestAddonsDir, "metrics-server-service.yaml", "0640"), @@ -295,13 +301,13 @@ var Addons = map[string]*Addon{ "MetricsServer": "k8s.gcr.io", }), "olm": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/olm/crds.yaml.tmpl", + MustBinAsset(addons.OlmAssets, + "olm/crds.yaml.tmpl", vmpath.GuestAddonsDir, "crds.yaml", "0640"), - MustBinAsset( - "deploy/addons/olm/olm.yaml.tmpl", + MustBinAsset(addons.OlmAssets, + "olm/olm.yaml.tmpl", vmpath.GuestAddonsDir, "olm.yaml", "0640"), @@ -313,18 +319,18 @@ var Addons = map[string]*Addon{ "UpstreamCommunityOperators": "quay.io", }), "registry": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/registry/registry-rc.yaml.tmpl", + MustBinAsset(addons.RegistryAssets, + "registry/registry-rc.yaml.tmpl", vmpath.GuestAddonsDir, "registry-rc.yaml", "0640"), - MustBinAsset( - "deploy/addons/registry/registry-svc.yaml.tmpl", + MustBinAsset(addons.RegistryAssets, + "registry/registry-svc.yaml.tmpl", vmpath.GuestAddonsDir, "registry-svc.yaml", "0640"), - MustBinAsset( - "deploy/addons/registry/registry-proxy.yaml.tmpl", + MustBinAsset(addons.RegistryAssets, + "registry/registry-proxy.yaml.tmpl", vmpath.GuestAddonsDir, "registry-proxy.yaml", "0640"), @@ -335,8 +341,8 @@ var Addons = map[string]*Addon{ "KubeRegistryProxy": "gcr.io", }), "registry-creds": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/registry-creds/registry-creds-rc.yaml.tmpl", + MustBinAsset(addons.RegistryCredsAssets, + "registry-creds/registry-creds-rc.yaml.tmpl", vmpath.GuestAddonsDir, "registry-creds-rc.yaml", "0640"), @@ -344,28 +350,28 @@ var Addons = map[string]*Addon{ "RegistryCreds": "upmcenterprises/registry-creds:1.10@sha256:93a633d4f2b76a1c66bf19c664dbddc56093a543de6d54320f19f585ccd7d605", }, nil), "registry-aliases": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/registry-aliases/registry-aliases-sa.tmpl", + MustBinAsset(addons.RegistryAliasesAssets, + "registry-aliases/registry-aliases-sa.tmpl", vmpath.GuestAddonsDir, "registry-aliases-sa.yaml", "0640"), - MustBinAsset( - "deploy/addons/registry-aliases/registry-aliases-sa-crb.tmpl", + MustBinAsset(addons.RegistryAliasesAssets, + "registry-aliases/registry-aliases-sa-crb.tmpl", vmpath.GuestAddonsDir, "registry-aliases-sa-crb.yaml", "0640"), - MustBinAsset( - "deploy/addons/registry-aliases/registry-aliases-config.tmpl", + MustBinAsset(addons.RegistryAliasesAssets, + "registry-aliases/registry-aliases-config.tmpl", vmpath.GuestAddonsDir, "registry-aliases-config.yaml", "0640"), - MustBinAsset( - "deploy/addons/registry-aliases/node-etc-hosts-update.tmpl", + MustBinAsset(addons.RegistryAliasesAssets, + "registry-aliases/node-etc-hosts-update.tmpl", vmpath.GuestAddonsDir, "node-etc-hosts-update.yaml", "0640"), - MustBinAsset( - "deploy/addons/registry-aliases/patch-coredns-job.tmpl", + MustBinAsset(addons.RegistryAliasesAssets, + "registry-aliases/patch-coredns-job.tmpl", vmpath.GuestAddonsDir, "patch-coredns-job.yaml", "0640"), @@ -378,8 +384,8 @@ var Addons = map[string]*Addon{ "Pause": "gcr.io", }), "freshpod": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/freshpod/freshpod-rc.yaml.tmpl", + MustBinAsset(addons.FreshpodAssets, + "freshpod/freshpod-rc.yaml.tmpl", vmpath.GuestAddonsDir, "freshpod-rc.yaml", "0640"), @@ -389,8 +395,8 @@ var Addons = map[string]*Addon{ "FreshPod": "gcr.io", }), "nvidia-driver-installer": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/gpu/nvidia-driver-installer.yaml.tmpl", + MustBinAsset(addons.NvidiaDriverInstallerAssets, + "gpu/nvidia-driver-installer.yaml.tmpl", vmpath.GuestAddonsDir, "nvidia-driver-installer.yaml", "0640"), @@ -402,8 +408,8 @@ var Addons = map[string]*Addon{ "Pause": "k8s.gcr.io", }), "nvidia-gpu-device-plugin": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/gpu/nvidia-gpu-device-plugin.yaml.tmpl", + MustBinAsset(addons.NvidiaGpuDevicePluginAssets, + "gpu/nvidia-gpu-device-plugin.yaml.tmpl", vmpath.GuestAddonsDir, "nvidia-gpu-device-plugin.yaml", "0640"), @@ -411,13 +417,13 @@ var Addons = map[string]*Addon{ "NvidiaDevicePlugin": "nvidia/k8s-device-plugin:1.0.0-beta4@sha256:94d46bf513cbc43c4d77a364e4bbd409d32d89c8e686e12551cc3eb27c259b90", }, nil), "logviewer": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/logviewer/logviewer-dp-and-svc.yaml.tmpl", + MustBinAsset(addons.LogviewerAssets, + "logviewer/logviewer-dp-and-svc.yaml.tmpl", vmpath.GuestAddonsDir, "logviewer-dp-and-svc.yaml", "0640"), - MustBinAsset( - "deploy/addons/logviewer/logviewer-rbac.yaml.tmpl", + MustBinAsset(addons.LogviewerAssets, + "logviewer/logviewer-rbac.yaml.tmpl", vmpath.GuestAddonsDir, "logviewer-rbac.yaml", "0640"), @@ -425,18 +431,18 @@ var Addons = map[string]*Addon{ "LogViewer": "ivans3/minikube-log-viewer:latest@sha256:75854f45305cc47d17b04c6c588fa60777391761f951e3a34161ddf1f1b06405", }, nil), "gvisor": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/gvisor/gvisor-pod.yaml.tmpl", + MustBinAsset(addons.GvisorAssets, + "gvisor/gvisor-pod.yaml.tmpl", vmpath.GuestAddonsDir, "gvisor-pod.yaml", "0640"), - MustBinAsset( - "deploy/addons/gvisor/gvisor-runtimeclass.yaml.tmpl", + MustBinAsset(addons.GvisorAssets, + "gvisor/gvisor-runtimeclass.yaml.tmpl", vmpath.GuestAddonsDir, "gvisor-runtimeclass.yaml", "0640"), - MustBinAsset( - "deploy/addons/gvisor/gvisor-config.toml", + MustBinAsset(addons.GvisorAssets, + "gvisor/gvisor-config.toml", vmpath.GuestGvisorDir, constants.GvisorConfigTomlTargetName, "0640"), @@ -446,18 +452,18 @@ var Addons = map[string]*Addon{ "GvisorAddon": "gcr.io", }), "helm-tiller": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/helm-tiller/helm-tiller-dp.tmpl", + MustBinAsset(addons.HelmTillerAssets, + "helm-tiller/helm-tiller-dp.tmpl", vmpath.GuestAddonsDir, "helm-tiller-dp.yaml", "0640"), - MustBinAsset( - "deploy/addons/helm-tiller/helm-tiller-rbac.tmpl", + MustBinAsset(addons.HelmTillerAssets, + "helm-tiller/helm-tiller-rbac.tmpl", vmpath.GuestAddonsDir, "helm-tiller-rbac.yaml", "0640"), - MustBinAsset( - "deploy/addons/helm-tiller/helm-tiller-svc.tmpl", + MustBinAsset(addons.HelmTillerAssets, + "helm-tiller/helm-tiller-svc.tmpl", vmpath.GuestAddonsDir, "helm-tiller-svc.yaml", "0640"), @@ -467,8 +473,8 @@ var Addons = map[string]*Addon{ "Tiller": "gcr.io", }), "ingress-dns": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/ingress-dns/ingress-dns-pod.yaml.tmpl", + MustBinAsset(addons.IngressDNSAssets, + "ingress-dns/ingress-dns-pod.yaml.tmpl", vmpath.GuestAddonsDir, "ingress-dns-pod.yaml", "0640"), @@ -476,13 +482,13 @@ var Addons = map[string]*Addon{ "IngressDNS": "cryptexlabs/minikube-ingress-dns:0.3.0@sha256:e252d2a4c704027342b303cc563e95d2e71d2a0f1404f55d676390e28d5093ab", }, nil), "metallb": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/metallb/metallb.yaml.tmpl", + MustBinAsset(addons.MetallbAssets, + "metallb/metallb.yaml.tmpl", vmpath.GuestAddonsDir, "metallb.yaml", "0640"), - MustBinAsset( - "deploy/addons/metallb/metallb-config.yaml.tmpl", + MustBinAsset(addons.MetallbAssets, + "metallb/metallb-config.yaml.tmpl", vmpath.GuestAddonsDir, "metallb-config.yaml", "0640"), @@ -491,18 +497,18 @@ var Addons = map[string]*Addon{ "Controller": "metallb/controller:v0.9.6@sha256:fbfdb9d3f55976b0ee38f3309d83a4ca703efcf15d6ca7889cd8189142286502", }, nil), "ambassador": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/ambassador/ambassador-operator-crds.yaml.tmpl", + MustBinAsset(addons.AmbassadorAssets, + "ambassador/ambassador-operator-crds.yaml.tmpl", vmpath.GuestAddonsDir, "ambassador-operator-crds.yaml", "0640"), - MustBinAsset( - "deploy/addons/ambassador/ambassador-operator.yaml.tmpl", + MustBinAsset(addons.AmbassadorAssets, + "ambassador/ambassador-operator.yaml.tmpl", vmpath.GuestAddonsDir, "ambassador-operator.yaml", "0640"), - MustBinAsset( - "deploy/addons/ambassador/ambassadorinstallation.yaml.tmpl", + MustBinAsset(addons.AmbassadorAssets, + "ambassador/ambassadorinstallation.yaml.tmpl", vmpath.GuestAddonsDir, "ambassadorinstallation.yaml", "0640"), @@ -512,57 +518,57 @@ var Addons = map[string]*Addon{ "AmbassadorOperator": "quay.io", }), "gcp-auth": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/gcp-auth/gcp-auth-ns.yaml.tmpl", + MustBinAsset(addons.GcpAuthAssets, + "gcp-auth/gcp-auth-ns.yaml.tmpl", vmpath.GuestAddonsDir, "gcp-auth-ns.yaml", "0640"), - MustBinAsset( - "deploy/addons/gcp-auth/gcp-auth-service.yaml.tmpl", + MustBinAsset(addons.GcpAuthAssets, + "gcp-auth/gcp-auth-service.yaml.tmpl", vmpath.GuestAddonsDir, "gcp-auth-service.yaml", "0640"), - MustBinAsset( - "deploy/addons/gcp-auth/gcp-auth-webhook.yaml.tmpl.tmpl", + MustBinAsset(addons.GcpAuthAssets, + "gcp-auth/gcp-auth-webhook.yaml.tmpl.tmpl", vmpath.GuestAddonsDir, "gcp-auth-webhook.yaml", "0640"), }, false, "gcp-auth", map[string]string{ "KubeWebhookCertgen": "jettech/kube-webhook-certgen:v1.3.0@sha256:ff01fba91131ed260df3f3793009efbf9686f5a5ce78a85f81c386a4403f7689", - "GCPAuthWebhook": "k8s-minikube/gcp-auth-webhook:v0.0.5@sha256:4da26a6937e876c80642c98fed9efb2269a5d2cb55029de9e2685c9fd6bc1add", + "GCPAuthWebhook": "k8s-minikube/gcp-auth-webhook:v0.0.6@sha256:c407ad6ee97d8a0e8a21c713e2d9af66aaf73315e4a123874c00b786f962f3cd", }, map[string]string{ "GCPAuthWebhook": "gcr.io", }), "volumesnapshots": NewAddon([]*BinAsset{ // make sure the order of apply. `csi-hostpath-snapshotclass` must be the first position, because it depends on `snapshot.storage.k8s.io_volumesnapshotclasses` // if user disable volumesnapshots addon and delete `csi-hostpath-snapshotclass` after `snapshot.storage.k8s.io_volumesnapshotclasses`, kubernetes will return the error - MustBinAsset( - "deploy/addons/volumesnapshots/csi-hostpath-snapshotclass.yaml.tmpl", + MustBinAsset(addons.VolumeSnapshotsAssets, + "volumesnapshots/csi-hostpath-snapshotclass.yaml.tmpl", vmpath.GuestAddonsDir, "csi-hostpath-snapshotclass.yaml", "0640"), - MustBinAsset( - "deploy/addons/volumesnapshots/snapshot.storage.k8s.io_volumesnapshotclasses.yaml.tmpl", + MustBinAsset(addons.VolumeSnapshotsAssets, + "volumesnapshots/snapshot.storage.k8s.io_volumesnapshotclasses.yaml.tmpl", vmpath.GuestAddonsDir, "snapshot.storage.k8s.io_volumesnapshotclasses.yaml", "0640"), - MustBinAsset( - "deploy/addons/volumesnapshots/snapshot.storage.k8s.io_volumesnapshotcontents.yaml.tmpl", + MustBinAsset(addons.VolumeSnapshotsAssets, + "volumesnapshots/snapshot.storage.k8s.io_volumesnapshotcontents.yaml.tmpl", vmpath.GuestAddonsDir, "snapshot.storage.k8s.io_volumesnapshotcontents.yaml", "0640"), - MustBinAsset( - "deploy/addons/volumesnapshots/snapshot.storage.k8s.io_volumesnapshots.yaml.tmpl", + MustBinAsset(addons.VolumeSnapshotsAssets, + "volumesnapshots/snapshot.storage.k8s.io_volumesnapshots.yaml.tmpl", vmpath.GuestAddonsDir, "snapshot.storage.k8s.io_volumesnapshots.yaml", "0640"), - MustBinAsset( - "deploy/addons/volumesnapshots/rbac-volume-snapshot-controller.yaml.tmpl", + MustBinAsset(addons.VolumeSnapshotsAssets, + "volumesnapshots/rbac-volume-snapshot-controller.yaml.tmpl", vmpath.GuestAddonsDir, "rbac-volume-snapshot-controller.yaml", "0640"), - MustBinAsset( - "deploy/addons/volumesnapshots/volume-snapshot-controller-deployment.yaml.tmpl", + MustBinAsset(addons.VolumeSnapshotsAssets, + "volumesnapshots/volume-snapshot-controller-deployment.yaml.tmpl", vmpath.GuestAddonsDir, "volume-snapshot-controller-deployment.yaml", "0640"), @@ -572,68 +578,68 @@ var Addons = map[string]*Addon{ "SnapshotController": "k8s.gcr.io", }), "csi-hostpath-driver": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/csi-hostpath-driver/rbac/rbac-external-attacher.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/rbac/rbac-external-attacher.yaml.tmpl", vmpath.GuestAddonsDir, "rbac-external-attacher.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/rbac/rbac-external-health-monitor-agent.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/rbac/rbac-external-health-monitor-agent.yaml.tmpl", vmpath.GuestAddonsDir, "rbac-external-health-monitor-agent.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/rbac/rbac-external-health-monitor-controller.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/rbac/rbac-external-health-monitor-controller.yaml.tmpl", vmpath.GuestAddonsDir, "rbac-external-health-monitor-controller.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/rbac/rbac-external-provisioner.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/rbac/rbac-external-provisioner.yaml.tmpl", vmpath.GuestAddonsDir, "rbac-external-provisioner.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/rbac/rbac-external-resizer.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/rbac/rbac-external-resizer.yaml.tmpl", vmpath.GuestAddonsDir, "rbac-external-resizer.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/rbac/rbac-external-snapshotter.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/rbac/rbac-external-snapshotter.yaml.tmpl", vmpath.GuestAddonsDir, "rbac-external-snapshotter.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-attacher.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/deploy/csi-hostpath-attacher.yaml.tmpl", vmpath.GuestAddonsDir, "csi-hostpath-attacher.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-driverinfo.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/deploy/csi-hostpath-driverinfo.yaml.tmpl", vmpath.GuestAddonsDir, "csi-hostpath-driverinfo.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-plugin.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/deploy/csi-hostpath-plugin.yaml.tmpl", vmpath.GuestAddonsDir, "csi-hostpath-plugin.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-provisioner.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/deploy/csi-hostpath-provisioner.yaml.tmpl", vmpath.GuestAddonsDir, "csi-hostpath-provisioner.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-resizer.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/deploy/csi-hostpath-resizer.yaml.tmpl", vmpath.GuestAddonsDir, "csi-hostpath-resizer.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-snapshotter.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/deploy/csi-hostpath-snapshotter.yaml.tmpl", vmpath.GuestAddonsDir, "csi-hostpath-snapshotter.yaml", "0640"), - MustBinAsset( - "deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-storageclass.yaml.tmpl", + MustBinAsset(addons.CsiHostpathDriverAssets, + "csi-hostpath-driver/deploy/csi-hostpath-storageclass.yaml.tmpl", vmpath.GuestAddonsDir, "csi-hostpath-storageclass.yaml", "0640"), diff --git a/pkg/minikube/assets/vm_assets.go b/pkg/minikube/assets/vm_assets.go index 35df4fb275df..b6ec89e9b89f 100644 --- a/pkg/minikube/assets/vm_assets.go +++ b/pkg/minikube/assets/vm_assets.go @@ -18,6 +18,7 @@ package assets import ( "bytes" + "embed" "fmt" "html/template" "io" @@ -207,6 +208,7 @@ func NewMemoryAsset(d []byte, targetDir, targetName, permissions string) *Memory // BinAsset is a bindata (binary data) asset type BinAsset struct { + embed.FS BaseAsset reader io.ReadSeeker template *template.Template @@ -214,8 +216,8 @@ type BinAsset struct { } // MustBinAsset creates a new BinAsset, or panics if invalid -func MustBinAsset(name, targetDir, targetName, permissions string) *BinAsset { - asset, err := NewBinAsset(name, targetDir, targetName, permissions) +func MustBinAsset(fs embed.FS, name, targetDir, targetName, permissions string) *BinAsset { + asset, err := NewBinAsset(fs, name, targetDir, targetName, permissions) if err != nil { panic(fmt.Sprintf("Failed to define asset %s: %v", name, err)) } @@ -223,8 +225,9 @@ func MustBinAsset(name, targetDir, targetName, permissions string) *BinAsset { } // NewBinAsset creates a new BinAsset -func NewBinAsset(name, targetDir, targetName, permissions string) (*BinAsset, error) { +func NewBinAsset(fs embed.FS, name, targetDir, targetName, permissions string) (*BinAsset, error) { m := &BinAsset{ + FS: fs, BaseAsset: BaseAsset{ SourcePath: name, TargetDir: targetDir, @@ -249,7 +252,7 @@ func defaultValue(defValue string, val interface{}) string { } func (m *BinAsset) loadData() error { - contents, err := Asset(m.SourcePath) + contents, err := m.FS.ReadFile(m.SourcePath) if err != nil { return err } diff --git a/pkg/minikube/bootstrapper/bsutil/kverify/api_server.go b/pkg/minikube/bootstrapper/bsutil/kverify/api_server.go index 39c29a164077..e5d275beca44 100644 --- a/pkg/minikube/bootstrapper/bsutil/kverify/api_server.go +++ b/pkg/minikube/bootstrapper/bsutil/kverify/api_server.go @@ -232,7 +232,7 @@ func apiServerHealthzNow(hostname string, port int) (state.State, error) { Proxy: nil, // Avoid using a proxy to speak to a local host TLSClientConfig: &tls.Config{RootCAs: pool}, } - client := &http.Client{Transport: tr} + client := &http.Client{Transport: tr, Timeout: 5 * time.Second} resp, err := client.Get(url) // Connection refused, usually. if err != nil { diff --git a/pkg/minikube/config/config.go b/pkg/minikube/config/config.go index f194099266a5..893844eaee9a 100644 --- a/pkg/minikube/config/config.go +++ b/pkg/minikube/config/config.go @@ -36,20 +36,10 @@ const ( WantBetaUpdateNotification = "WantBetaUpdateNotification" // ReminderWaitPeriodInHours is the key for ReminderWaitPeriodInHours ReminderWaitPeriodInHours = "ReminderWaitPeriodInHours" - // WantReportError is the key for WantReportError - WantReportError = "WantReportError" - // WantReportErrorPrompt is the key for WantReportErrorPrompt - WantReportErrorPrompt = "WantReportErrorPrompt" - // WantKubectlDownloadMsg is the key for WantKubectlDownloadMsg - WantKubectlDownloadMsg = "WantKubectlDownloadMsg" // WantNoneDriverWarning is the key for WantNoneDriverWarning WantNoneDriverWarning = "WantNoneDriverWarning" // ProfileName represents the key for the global profile parameter ProfileName = "profile" - // ShowDriverDeprecationNotification is the key for ShowDriverDeprecationNotification - ShowDriverDeprecationNotification = "ShowDriverDeprecationNotification" - // ShowBootstrapperDeprecationNotification is the key for ShowBootstrapperDeprecationNotification - ShowBootstrapperDeprecationNotification = "ShowBootstrapperDeprecationNotification" // UserFlag is the key for the global user flag (ex. --user=user1) UserFlag = "user" // AddonImages stores custom addon images config @@ -58,6 +48,8 @@ const ( AddonRegistries = "addon-registries" // AddonListFlag represents the key for addons parameter AddonListFlag = "addons" + // EmbedCerts represents the config for embedding certificates in kubeconfig + EmbedCerts = "EmbedCerts" ) var ( diff --git a/pkg/minikube/image/cache.go b/pkg/minikube/image/cache.go index ba544b6e332a..03bd1dcdc00e 100644 --- a/pkg/minikube/image/cache.go +++ b/pkg/minikube/image/cache.go @@ -73,10 +73,10 @@ func SaveToDir(images []string, cacheDir string, overwrite bool) error { dst = localpath.SanitizeCacheDir(dst) if err := saveToTarFile(image, dst, overwrite); err != nil { if err == errCacheImageDoesntExist { - out.WarningT("The image you are trying to add {{.imageName}} doesn't exist!", out.V{"imageName": image}) - } else { - return errors.Wrapf(err, "caching image %q", dst) + out.WarningT("The image '{{.imageName}}' was not found; unable to add it to cache.", out.V{"imageName": image}) + return nil } + return errors.Wrapf(err, "caching image %q", dst) } klog.Infof("save to tar file %s -> %s succeeded", image, dst) return nil diff --git a/pkg/minikube/node/cache.go b/pkg/minikube/node/cache.go index 30aade94cab5..e05e78819864 100644 --- a/pkg/minikube/node/cache.go +++ b/pkg/minikube/node/cache.go @@ -131,6 +131,15 @@ func beginDownloadKicBaseImage(g *errgroup.Group, cc *config.ClusterConfig, down }() for _, img := range append([]string{baseImg}, kic.FallbackImages...) { var err error + + if driver.IsDocker(cc.Driver) { + if download.ImageExistsInDaemon(img) { + klog.Infof("%s exists in daemon, skipping load", img) + finalImg = img + return nil + } + } + klog.Infof("Downloading %s to local cache", img) err = download.ImageToCache(img) if err == nil { @@ -141,14 +150,6 @@ func beginDownloadKicBaseImage(g *errgroup.Group, cc *config.ClusterConfig, down return err } - if driver.IsDocker(cc.Driver) { - if download.ImageExistsInDaemon(img) { - klog.Infof("%s exists in daemon, skipping load", img) - finalImg = img - return nil - } - } - if cc.Driver == driver.Podman { return fmt.Errorf("not yet implemented, see issue #8426") } diff --git a/pkg/minikube/out/out.go b/pkg/minikube/out/out.go index 2f449691c89a..f2f6f8bc2fd0 100644 --- a/pkg/minikube/out/out.go +++ b/pkg/minikube/out/out.go @@ -114,17 +114,12 @@ func Styled(st style.Enum, format string, a ...V) { } func boxedCommon(printFunc func(format string, a ...interface{}), format string, a ...V) { - str := Sprintf(style.None, format, a...) - str = strings.TrimSpace(str) box := box.New(box.Config{Py: 1, Px: 4, Type: "Round"}) if useColor { box.Config.Color = "Red" } - str = box.String("", str) - lines := strings.Split(str, "\n") - for _, line := range lines { - printFunc(line + "\n") - } + str := Sprintf(style.None, format, a...) + printFunc(box.String("", strings.TrimSpace(str))) } // Boxed writes a stylized and templated message in a box to stdout diff --git a/pkg/minikube/sysinit/systemd.go b/pkg/minikube/sysinit/systemd.go index 51985d557109..16970d2ebb20 100644 --- a/pkg/minikube/sysinit/systemd.go +++ b/pkg/minikube/sysinit/systemd.go @@ -19,7 +19,9 @@ package sysinit import ( "errors" + "fmt" "os/exec" + "strings" "k8s.io/minikube/pkg/minikube/assets" ) @@ -123,7 +125,14 @@ func (s *Systemd) Stop(svc string) error { // ForceStop terminates a service with prejudice func (s *Systemd) ForceStop(svc string) error { - _, err := s.r.RunCmd(exec.Command("sudo", "systemctl", "stop", "-f", svc)) + rr, err := s.r.RunCmd(exec.Command("sudo", "systemctl", "stop", "-f", svc)) + if err == nil { + return nil + } + if strings.Contains(rr.Output(), fmt.Sprintf("Unit %s not loaded", svc)) { + // already stopped + return nil + } return err } diff --git a/pkg/minikube/translate/translate.go b/pkg/minikube/translate/translate.go index 892450e60428..48e2ab9de37e 100644 --- a/pkg/minikube/translate/translate.go +++ b/pkg/minikube/translate/translate.go @@ -19,13 +19,15 @@ package translate import ( "encoding/json" "fmt" - "path" + "os" + "runtime" "strings" "github.com/cloudfoundry-attic/jibber_jabber" "golang.org/x/text/language" "k8s.io/klog/v2" + "k8s.io/minikube/translations" ) var ( @@ -60,23 +62,29 @@ func T(s string) string { // DetermineLocale finds the system locale and sets the preferred language for output appropriately. func DetermineLocale() { - locale, err := jibber_jabber.DetectIETF() - if err != nil { - klog.V(1).Infof("Getting system locale failed: %v", err) - locale = "" + var locale string + // Allow windows users to overload the same env vars as unix users + if runtime.GOOS == "windows" { + locale = os.Getenv("LC_ALL") + } + if locale == "" { + var err error + locale, err = jibber_jabber.DetectIETF() + if err != nil { + klog.V(1).Infof("Getting system locale failed: %v", err) + locale = "" + } } SetPreferredLanguage(locale) // Load translations for preferred language into memory. p := preferredLanguage.String() - translationFile := path.Join("translations", fmt.Sprintf("%s.json", p)) - t, err := Asset(translationFile) + t, err := translations.Translations.ReadFile(fmt.Sprintf("%s.json", p)) if err != nil { // Attempt to find a more broad locale, e.g. fr instead of fr-FR. if strings.Contains(p, "-") { p = strings.Split(p, "-")[0] - translationFile := path.Join("translations", fmt.Sprintf("%s.json", p)) - t, err = Asset(translationFile) + t, err = translations.Translations.ReadFile(fmt.Sprintf("%s.json", p)) if err != nil { klog.V(1).Infof("Failed to load translation file for %s: %v", p, err) return diff --git a/site/content/en/docs/_index.md b/site/content/en/docs/_index.md index a3153bc9eb37..69776d0fe31a 100644 --- a/site/content/en/docs/_index.md +++ b/site/content/en/docs/_index.md @@ -11,7 +11,7 @@ minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows ![Screenshot](/images/screenshot.png) -🎉 Latest Release: v1.20.0 - May 06, 2021 ([changelog](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md)) +🎉 Latest Release: v1.21.0 - Jun 11, 2021 ([changelog](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md)) ## Highlights diff --git a/site/content/en/docs/commands/config.md b/site/content/en/docs/commands/config.md index 51ff431b204b..b6b4016965bc 100644 --- a/site/content/en/docs/commands/config.md +++ b/site/content/en/docs/commands/config.md @@ -29,19 +29,14 @@ Configurable fields: * WantUpdateNotification * WantBetaUpdateNotification * ReminderWaitPeriodInHours - * WantReportError - * WantReportErrorPrompt - * WantKubectlDownloadMsg * WantNoneDriverWarning * profile * bootstrapper - * ShowDriverDeprecationNotification - * ShowBootstrapperDeprecationNotification * insecure-registry * hyperv-virtual-switch * disable-driver-mounts * cache - * embed-certs + * EmbedCerts * native-ssh ```shell diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index ceb8509316e1..6785c7270e8e 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -26,7 +26,7 @@ minikube start [flags] --apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine --apiserver-port int The apiserver listening port (default 8443) --auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true) - --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.22-1620785771-11384@sha256:f5844fe35994179bbad8dda27d4912304a2fedccdf0bf93ce8b2ec2b3b83af1c") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.23@sha256:baf6d94b2050bcbecd98994e265cf965a4f4768978620ccf5227a6dcb75ade45") --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cni string CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto) --container-runtime string The container runtime to be used (docker, cri-o, containerd). (default "docker") @@ -64,7 +64,7 @@ minikube start [flags] --insecure-registry strings Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added. --install-addons If set, install addons. Defaults to true. (default true) --interactive Allow user prompts for more information (default true) - --iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube/iso/minikube-v1.20.0.iso,https://github.com/kubernetes/minikube/releases/download/v1.20.0/minikube-v1.20.0.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.20.0.iso]) + --iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube/iso/minikube-v1.21.0.iso,https://github.com/kubernetes/minikube/releases/download/v1.21.0/minikube-v1.21.0.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.21.0.iso]) --keep-context This will keep the existing kubectl context and will create a minikube context. --kubernetes-version string The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.20.7, 'latest' for v1.22.0-alpha.2). Defaults to 'stable'. --kvm-gpu Enable experimental NVIDIA GPU support in minikube diff --git a/site/content/en/docs/contrib/addons.en.md b/site/content/en/docs/contrib/addons.en.md index 0ffe72693445..b16a2f9ad904 100644 --- a/site/content/en/docs/contrib/addons.en.md +++ b/site/content/en/docs/contrib/addons.en.md @@ -47,24 +47,32 @@ To make the addon appear in `minikube addons list`, add it to `pkg/addons/config }, ``` +Next, add all required files using `//go:embed` directives to a new embed.FS variable in `deploy/addons/assets.go`. Here is the entry used by the `csi-hostpath-driver` addon: + +```go + // CsiHostpathDriverAssets assets for csi-hostpath-driver addon + //go:embed csi-hostpath-driver/deploy/*.tmpl csi-hostpath-driver/rbac/*.tmpl + CsiHostpathDriverAssets embed.FS +``` + Then, add into `pkg/minikube/assets/addons.go` the list of files to copy into the cluster, including manifests. Here is the entry used by the `registry` addon: ```go "registry": NewAddon([]*BinAsset{ - MustBinAsset( - "deploy/addons/registry/registry-rc.yaml.tmpl", + MustBinAsset(addons.RegistryAssets, + "registry/registry-rc.yaml.tmpl", vmpath.GuestAddonsDir, "registry-rc.yaml", "0640", false), - MustBinAsset( - "deploy/addons/registry/registry-svc.yaml.tmpl", + MustBinAsset(addons.RegistryAssets, + "registry/registry-svc.yaml.tmpl", vmpath.GuestAddonsDir, "registry-svc.yaml", "0640", false), - MustBinAsset( - "deploy/addons/registry/registry-proxy.yaml.tmpl", + MustBinAsset(addons.RegistryAssets, + "registry/registry-proxy.yaml.tmpl", vmpath.GuestAddonsDir, "registry-proxy.yaml", "0640", @@ -74,6 +82,7 @@ Then, add into `pkg/minikube/assets/addons.go` the list of files to copy into th The `MustBinAsset` arguments are: +* asset variable (typically present in `deploy/addons/assets.go`) * source filename * destination directory (typically `vmpath.GuestAddonsDir`) * destination filename diff --git a/site/content/en/docs/contrib/building/binaries.md b/site/content/en/docs/contrib/building/binaries.md index ade5f54f9943..6254844a1004 100644 --- a/site/content/en/docs/contrib/building/binaries.md +++ b/site/content/en/docs/contrib/building/binaries.md @@ -7,7 +7,7 @@ weight: 2 ## Prerequisites -* A recent Go distribution (>=1.12) +* A recent Go distribution (>=1.16) * If you are on Windows, you'll need Docker to be installed. * 4GB of RAM diff --git a/site/content/en/docs/contrib/building/iso.md b/site/content/en/docs/contrib/building/iso.md index 8fd818bd382b..f739aef8196c 100644 --- a/site/content/en/docs/contrib/building/iso.md +++ b/site/content/en/docs/contrib/building/iso.md @@ -10,7 +10,7 @@ The minikube ISO is booted by each hypervisor to provide a stable minimal Linux ## Prerequisites -* A recent Go distribution (>=1.12) +* A recent Go distribution (>=1.16) * If you are on Windows, you'll need Docker to be installed. * 4GB of RAM * Build tools: diff --git a/site/content/en/docs/contrib/leaderboard/v1.21.0.html b/site/content/en/docs/contrib/leaderboard/v1.21.0.html new file mode 100644 index 000000000000..e497ff1b04d0 --- /dev/null +++ b/site/content/en/docs/contrib/leaderboard/v1.21.0.html @@ -0,0 +1,496 @@ +--- +title: "v1.21.0 - 2021-06-11" +linkTitle: "v1.21.0 - 2021-06-11" +weight: -97 +--- + + + kubernetes/minikube - Leaderboard + + + + + + + +

kubernetes/minikube

+
2021-05-06 — 2021-06-11
+ + + +

Reviewers

+ + +
+

Most Influential

+

# of Merged PRs reviewed

+
+ +
+ +
+

Most Helpful

+

# of words written in merged PRs

+
+ +
+ +
+

Most Demanding

+

# of Review Comments in merged PRs

+
+ +
+ + +

Pull Requests

+ + +
+

Most Active

+

# of Pull Requests Merged

+
+ +
+ +
+

Big Movers

+

Lines of code (delta)

+
+ +
+ +
+

Most difficult to review

+

Average PR size (added+changed)

+
+ +
+ + +

Issues

+ + +
+

Most Active

+

# of comments

+
+ +
+ +
+

Most Helpful

+

# of words (excludes authored)

+
+ +
+ +
+

Top Closers

+

# of issues closed (excludes authored)

+
+ +
+ + + + diff --git a/site/content/en/docs/contrib/tests.en.md b/site/content/en/docs/contrib/tests.en.md index 47ea10dca52f..67c78f1ecab3 100644 --- a/site/content/en/docs/contrib/tests.en.md +++ b/site/content/en/docs/contrib/tests.en.md @@ -130,6 +130,9 @@ asserts that the dashboard command works #### validateDryRun asserts that the dry-run mode quickly exits with the right code +#### validateInternationalLanguage +asserts that the language used can be changed with environment variables + #### validateCacheCmd tests functionality of cache command (cache add, delete, list) diff --git a/site/content/en/docs/contrib/triage.md b/site/content/en/docs/contrib/triage.md index e8627516de59..b0a0d5a757d4 100644 --- a/site/content/en/docs/contrib/triage.md +++ b/site/content/en/docs/contrib/triage.md @@ -9,7 +9,7 @@ description: > Community triage takes place **every Wednesday** from **11AM-12PM PST**. -- Hangouts link: https://meet.google.com/ikf-fvrs-eer +- Hangouts link: https://meet.google.com/sss-wdet-gwe - Google Group: https://groups.google.com/forum/#!forum/minikube-dev All community members are welcome and encouraged to join and help us triage minikube! diff --git a/site/content/en/docs/faq/_index.md b/site/content/en/docs/faq/_index.md index 68445b3db84b..ccd09b6c5711 100644 --- a/site/content/en/docs/faq/_index.md +++ b/site/content/en/docs/faq/_index.md @@ -3,14 +3,14 @@ title: "FAQ" linkTitle: "FAQ" weight: 3 description: > - Questions that come up regularly + Frequently Asked Questions --- -## How to run an older Kubernetes version with minikube ? +## Can I run an older Kubernetes version with minikube? Do I have to downgrade my minikube version? You do not need to download an older minikube to run an older kubernetes version. -You can create a Kubenretes cluster with any version you desire using `--kubernetes-version` flag. +You can create a Kubernetes cluster with any version you desire using `--kubernetes-version` flag. Example: @@ -19,26 +19,27 @@ minikube start --kubernetes-version=v1.15.0 ``` -## Docker Driver: How to set the cgroup manager minikube uses? +## Docker Driver: How can I set minikube's cgroup manager? -By default minikube uses the `cgroupfs` cgroup manager for the Kubernetes clusters, if you are on a system with a systemd cgroup manager, this could cause conflicts. -To use `systemd` cgroup manager, run: +By default minikube uses the `cgroupfs` cgroup manager for Kubernetes clusters. If you are on a system with a systemd cgroup manager, this could cause conflicts. +To use the `systemd` cgroup manager, run: ```bash minikube start --force-systemd=true ``` -## How to run minikube with Docker driver if existing cluster is VM? +## How can I run minikube with the Docker driver if I have an existing cluster with a VM driver? -If you have an existing cluster with a VM driver (virtualbox, hyperkit, KVM,...). +First please ensure your Docker service is running. Then you need to either: + +(a) Delete the existing cluster and create a new one -First please ensure your Docker service is running and then you need to either delete the existing cluster and create one ```bash minikube delete minikube start --driver=docker ``` -Alternatively, if you want to keep your existing cluster you can create a second cluster with a different profile name. (example p1) +Alternatively, (b) Create a second cluster with a different profile name: ```bash minikube start -p p1 --driver=docker @@ -46,27 +47,27 @@ minikube start -p p1 --driver=docker ## Does minikube support IPv6? -minikube currently doesn't support IPv6. However, it is on the [roadmap]({{< ref "/docs/contrib/roadmap.en.md" >}}). +minikube currently doesn't support IPv6. However, it is on the [roadmap]({{< ref "/docs/contrib/roadmap.en.md" >}}). You can also refer to the [open issue](https://github.com/kubernetes/minikube/issues/8535). ## How can I prevent password prompts on Linux? The easiest approach is to use the `docker` driver, as the backend service always runs as `root`. -`none` users may want to try `CHANGE_MINIKUBE_NONE_USER=true`, where kubectl and such will still work: [see environment variables]({{< ref "/docs/handbook/config.md#environment-variables" >}}) +`none` users may want to try `CHANGE_MINIKUBE_NONE_USER=true`, where kubectl and such will work without `sudo`. See [environment variables]({{< ref "/docs/handbook/config.md#environment-variables" >}}) for more details. -Alternatively, configure `sudo` to never prompt for the commands issued by minikube. +Alternatively, you can configure `sudo` to never prompt for commands issued by minikube. -## How to ignore system verification? +## How can I ignore system verification? -minikube's bootstrapper, [Kubeadm](https://github.com/kubernetes/kubeadm) verifies a list of features on the host system before installing Kubernetes. in case you get this error, and you still want to try minikube anyways despite your system's limitation you can skip the verification by starting minikube with this extra option: +[kubeadm](https://github.com/kubernetes/kubeadm), minikube's bootstrapper, verifies a list of features on the host system before installing Kubernetes. In the case you get an error and still want to try minikube despite your system's limitation, you can skip verification by starting minikube with this extra option: ```shell minikube start --extra-config kubeadm.ignore-preflight-errors=SystemVerification ``` -## what is the resource allocation for Knative Setup using minikube? +## What is the minimum resource allocation necessary for a Knative setup using minikube? -Please allocate sufficient resources for Knative setup using minikube, especially when you run a minikube cluster on your local machine. We recommend allocating at least 6 CPUs and 8G memory. +Please allocate sufficient resources for Knative setup using minikube, especially when running minikube cluster on your local machine. We recommend allocating at least 6 CPUs and 8G memory: ```shell minikube start --cpus 6 --memory 8000 @@ -74,11 +75,33 @@ minikube start --cpus 6 --memory 8000 ## Do I need to install kubectl locally? -No, minikube comes with built-in kubectl [see minikube's kubectl documentation]({{< ref "docs/handbook/kubectl.md" >}}). +No, minikube comes with a built-in kubectl installation. See [minikube's kubectl documentation]({{< ref "docs/handbook/kubectl.md" >}}). -## How to opt-in to beta notifications? +## How can I opt-in to beta release notifications? -Simply run the following command to be enrolled into beta notifications. +Simply run the following command to be enrolled into beta notifications: ``` minikube config set WantBetaUpdateNotification true ``` + +## Can I get rid of the emoji in minikube's outpuut? + +Yes! If you prefer not having emoji in your minikube output 😔 , just set the `MINIKUBE_IN_STYLE` environment variable to `0` or `false`: + +``` +MINIKUBE_IN_STYLE=0 minikube start + +``` + +## How can I access a minikube cluster from a remote network? + +minikube's primary goal is to quickly set up local Kubernetes clusters, and therefore we strongly discourage using minikube in production or for listening to remote traffic. By design, minikube is meant to only listen on the local network. + +However, it is possible to configure minikube to listen on a remote network. This will open your network to the outside world and is not recommended. If you are not fully aware of the security implications, please avoid using this. + +For the docker and podman driver, use `--listen-address` flag: + +``` +minikube start --listen-address=0.0.0.0 +``` + diff --git a/deploy/addons/ingress-dns/README.md b/site/content/en/docs/handbook/addons/ingress-dns.md similarity index 97% rename from deploy/addons/ingress-dns/README.md rename to site/content/en/docs/handbook/addons/ingress-dns.md index 145d67b37455..84eb968468d3 100644 --- a/deploy/addons/ingress-dns/README.md +++ b/site/content/en/docs/handbook/addons/ingress-dns.md @@ -1,6 +1,9 @@ -# Minikube Ingress DNS -![Build Status](https://gitlab.com/cryptexlabs/public/development/minikube-ingress-dns/badges/master/pipeline.svg) - +--- +title: "Ingress DNS" +linkTitle: "Minikube Ingress DNS" +weight: 1 +date: 2021-06-03 +--- DNS service for ingress controllers running on your minikube server ## Overview @@ -172,7 +175,7 @@ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.pli ## TODO - Add a service that runs on the host OS which will update the files in `/etc/resolver` automatically - Start this service when running `minikube addons enable ingress-dns` and stop the service when running -`minikube addons disable ingress-dns` + `minikube addons disable ingress-dns` ## Contributors - [Josh Woodcock](https://github.com/woodcockjosh) diff --git a/site/content/en/docs/handbook/controls.md b/site/content/en/docs/handbook/controls.md index 0f1218ca6336..0301da5e18d5 100644 --- a/site/content/en/docs/handbook/controls.md +++ b/site/content/en/docs/handbook/controls.md @@ -16,7 +16,7 @@ Start a cluster by running: minikube start ``` -Access the Kubernetes Dashboard running within the minikube cluster: +Access the Kubernetes dashboard running within the minikube cluster: ```shell minikube dashboard diff --git a/site/content/en/docs/handbook/vpn_and_proxy.md b/site/content/en/docs/handbook/vpn_and_proxy.md index bcd92ee5c8e5..5b9260185346 100644 --- a/site/content/en/docs/handbook/vpn_and_proxy.md +++ b/site/content/en/docs/handbook/vpn_and_proxy.md @@ -93,6 +93,10 @@ Ask your IT department for the appropriate PEM file, and add it to: `~/.minikube/files/etc/ssl/certs` +or + +`~/.minikube/certs` + Then run `minikube delete` and `minikube start`. #### downloading binaries: proxyconnect tcp: tls: oversized record received with length 20527 diff --git a/site/content/en/docs/tutorials/user_flag.md b/site/content/en/docs/tutorials/user_flag.md new file mode 100644 index 000000000000..55e8ee475280 --- /dev/null +++ b/site/content/en/docs/tutorials/user_flag.md @@ -0,0 +1,56 @@ +--- +title: "Using the User Flag" +linkTitle: "Using the User Flag" +weight: 1 +date: 2021-06-15 +description: > + Using the User Flag to Keep an Audit Log +--- + +## Overview + +In minikube, all executed commands are logged to a local audit log in the minikube home directory (default: `~/.minikube/logs/audit.json`). +These commands are logged with additional information including the user that ran them, which by default is the OS user. +However, there is a global flag `--user` that will set the user who ran the command in the audit log. + +## Prerequisites + +- minikube v1.17.1 or newer + +## What does the flag do? + +Assuming the OS user is `johndoe`, running `minikube start` will add the following to the audit log: +``` +|---------------|--------------------------|-----------------------------|--------------|----------------|-------------------------------|-------------------------------| +| Command | Args | Profile | User | Version | Start Time | End Time | +|---------------|--------------------------|-----------------------------|--------------|----------------|-------------------------------|-------------------------------| +| start | | minikube | johndoe | v1.21.0 | Tue, 15 Jun 2021 09:00:00 MST | Tue, 15 Jun 2021 09:01:00 MST | +|---------------|--------------------------|-----------------------------|--------------|----------------|-------------------------------|-------------------------------| +``` +As you can see, minikube pulled the OS user and listed them as the user for the command. + +Running the same command with `--user=mary` appended to the command will add the following to the audit log: +``` +|---------------|--------------------------|-----------------------------|--------------|----------------|-------------------------------|-------------------------------| +| Command | Args | Profile | User | Version | Start Time | End Time | +|---------------|--------------------------|-----------------------------|--------------|----------------|-------------------------------|-------------------------------| +| start | --user=mary | minikube | mary | v1.21.0 | Tue, 15 Jun 2021 09:00:00 MST | Tue, 15 Jun 2021 09:01:00 MST | +|---------------|--------------------------|-----------------------------|--------------|----------------|-------------------------------|-------------------------------| +``` +Here you can see that passing `--user=mary` overwrote the OS user with `mary` as the user for the command. + +## Example use case + +- Embedded use of minikube by multiple users (IDEs, Plugins, etc.) +- A machine shared by multiple users using the same home folder + +## How do I use minikube in a script? + +If you are using minikube in a script or plugin it is recommeneded to add `--user=your_script_name` to all operations. + +Example: +``` +minikube start --user=plugin_name +minikube profile list --user=plugin_name +minikube stop --user=plugin_name +``` diff --git a/test/integration/error_spam_test.go b/test/integration/error_spam_test.go index 24248a3a38c5..6333e5eace6c 100644 --- a/test/integration/error_spam_test.go +++ b/test/integration/error_spam_test.go @@ -70,141 +70,144 @@ func TestErrorSpam(t *testing.T) { } defer os.RemoveAll(logDir) - // This should likely use multi-node once it's ready - // use `--log_dir` flag to run isolated and avoid race condition - ie, failing to clean up (locked) log files created by other concurently-run tests, or counting them in results - args := append([]string{"start", "-p", profile, "-n=1", "--memory=2250", "--wait=false", fmt.Sprintf("--log_dir=%s", logDir)}, StartArgs()...) - - rr, err := Run(t, exec.CommandContext(ctx, Target(), args...)) - if err != nil { - t.Errorf("%q failed: %v", rr.Command(), err) - } + t.Run("setup", func(t *testing.T) { + // This should likely use multi-node once it's ready + // use `--log_dir` flag to run isolated and avoid race condition - ie, failing to clean up (locked) log files created by other concurently-run tests, or counting them in results + args := append([]string{"start", "-p", profile, "-n=1", "--memory=2250", "--wait=false", fmt.Sprintf("--log_dir=%s", logDir)}, StartArgs()...) + + rr, err := Run(t, exec.CommandContext(ctx, Target(), args...)) + if err != nil { + t.Errorf("%q failed: %v", rr.Command(), err) + } - stdout := rr.Stdout.String() - stderr := rr.Stderr.String() + stdout := rr.Stdout.String() + stderr := rr.Stderr.String() - for _, line := range strings.Split(stderr, "\n") { - if stderrAllowRe.MatchString(line) { - t.Logf("acceptable stderr: %q", line) - continue - } + for _, line := range strings.Split(stderr, "\n") { + if stderrAllowRe.MatchString(line) { + t.Logf("acceptable stderr: %q", line) + continue + } - if len(strings.TrimSpace(line)) > 0 { - t.Errorf("unexpected stderr: %q", line) + if len(strings.TrimSpace(line)) > 0 { + t.Errorf("unexpected stderr: %q", line) + } } - } - for _, line := range strings.Split(stdout, "\n") { - keywords := []string{"error", "fail", "warning", "conflict"} - for _, keyword := range keywords { - if strings.Contains(line, keyword) { - t.Errorf("unexpected %q in stdout: %q", keyword, line) + for _, line := range strings.Split(stdout, "\n") { + keywords := []string{"error", "fail", "warning", "conflict"} + for _, keyword := range keywords { + if strings.Contains(line, keyword) { + t.Errorf("unexpected %q in stdout: %q", keyword, line) + } } } - } - if t.Failed() { - t.Logf("minikube stdout:\n%s", stdout) - t.Logf("minikube stderr:\n%s", stderr) - } + if t.Failed() { + t.Logf("minikube stdout:\n%s", stdout) + t.Logf("minikube stderr:\n%s", stderr) + } - steps := []string{ - "Generating certificates and keys ...", - "Booting up control plane ...", - "Configuring RBAC rules ...", - } - for _, step := range steps { - if !strings.Contains(stdout, step) { - t.Errorf("missing kubeadm init sub-step %q", step) + steps := []string{ + "Generating certificates and keys ...", + "Booting up control plane ...", + "Configuring RBAC rules ...", } - } + for _, step := range steps { + if !strings.Contains(stdout, step) { + t.Errorf("missing kubeadm init sub-step %q", step) + } + } + }) logTests := []struct { - command string - args []string - runCount int // number of times to run command - expectedLogFiles int // number of logfiles expected after running command runCount times + command string + args []string }{ { - command: "start", - args: []string{"--dry-run"}, - runCount: 175, // calling this 175 times should create 2 files with 1 greater than 1M - expectedLogFiles: 2, + command: "start", + args: []string{"--dry-run"}, }, { - command: "status", - runCount: 100, - expectedLogFiles: 1, + command: "status", }, { - command: "pause", - runCount: 5, - expectedLogFiles: 1, + command: "pause", }, { - command: "unpause", - runCount: 1, - expectedLogFiles: 1, + command: "unpause", }, { - command: "stop", - runCount: 1, - expectedLogFiles: 1, + command: "stop", }, } for _, test := range logTests { t.Run(test.command, func(t *testing.T) { - - // flags can be before subcommand - args := []string{"-p", profile, "--log_dir", logDir, test.command} - args = append(args, test.args...) - // before starting the test, ensure no other logs from the current command are written - logFiles, err := filepath.Glob(filepath.Join(logDir, fmt.Sprintf("minikube_%s*", test.command))) + logFiles, err := getLogFiles(logDir, test.command) if err != nil { - t.Errorf("failed to get old log files for command %s : %v", test.command, err) + t.Fatalf("failed to get old log files for command %s : %v", test.command, err) } cleanupLogFiles(t, logFiles) - // run command runCount times - for i := 0; i < test.runCount; i++ { + args := []string{"-p", profile, "--log_dir", logDir, test.command} + args = append(args, test.args...) + + // run command twice + for i := 0; i < 2; i++ { rr, err := Run(t, exec.CommandContext(ctx, Target(), args...)) if err != nil { - t.Errorf("%q failed: %v", rr.Command(), err) + t.Logf("%q failed: %v", rr.Command(), err) } } - // get log files generated above - logFiles, err = filepath.Glob(filepath.Join(logDir, fmt.Sprintf("minikube_%s*", test.command))) + // check if one log file exists + if err := checkLogFileCount(test.command, logDir, 1); err != nil { + t.Fatal(err) + } + + // get log file generated above + logFiles, err = getLogFiles(logDir, test.command) if err != nil { - t.Errorf("failed to get new log files for command %s : %v", test.command, err) + t.Fatalf("failed to get new log files for command %s : %v", test.command, err) } - // if not the expected number of files, throw err - if len(logFiles) != test.expectedLogFiles { - t.Errorf("failed to find expected number of log files: cmd %s: expected: %d got %d", test.command, test.expectedLogFiles, len(logFiles)) + // make file at least 1024 KB in size + if err := os.Truncate(logFiles[0], 2e7); err != nil { + t.Fatalf("failed to increase file size to 1024KB: %v", err) } - // if more than 1 logfile is expected, only one file should be less than 1M - if test.expectedLogFiles > 1 { - foundSmall := false - var maxSize int64 = 1024 * 1024 // 1M - for _, logFile := range logFiles { - finfo, err := os.Stat(logFile) - if err != nil { - t.Logf("logfile %q for command %q not found:", logFile, test.command) - continue - } - isSmall := finfo.Size() < maxSize - if isSmall && !foundSmall { - foundSmall = true - } else if isSmall && foundSmall { - t.Errorf("expected to find only one file less than 1MB: cmd %s:", test.command) - } - } + // run command again + rr, err := Run(t, exec.CommandContext(ctx, Target(), args...)) + if err != nil { + t.Logf("%q failed: %v", rr.Command(), err) + } + + // check if two log files exist now + if err := checkLogFileCount(test.command, logDir, 2); err != nil { + t.Fatal(err) } }) } } +func getLogFiles(logDir string, command string) ([]string, error) { + return filepath.Glob(filepath.Join(logDir, fmt.Sprintf("minikube_%s*", command))) +} + +func checkLogFileCount(command string, logDir string, expectedNumberOfLogFiles int) error { + // get log files generated above + logFiles, err := getLogFiles(logDir, command) + if err != nil { + return fmt.Errorf("failed to get new log files for command %s : %v", command, err) + } + + if len(logFiles) != expectedNumberOfLogFiles { + return fmt.Errorf("Running cmd %q resulted in %d log file(s); expected: %d", command, len(logFiles), expectedNumberOfLogFiles) + } + + return nil +} + // cleanupLogFiles removes logfiles generated during testing func cleanupLogFiles(t *testing.T, logFiles []string) { t.Logf("Cleaning up %d logfile(s) ...", len(logFiles)) diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index 2616bf1535b9..a3c41bd4efd2 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -116,6 +116,7 @@ func TestFunctional(t *testing.T) { {"ConfigCmd", validateConfigCmd}, {"DashboardCmd", validateDashboardCmd}, {"DryRun", validateDryRun}, + {"InternationalLanguage", validateInternationalLanguage}, {"StatusCmd", validateStatusCmd}, {"LogsCmd", validateLogsCmd}, {"LogsFileCmd", validateLogsFileCmd}, @@ -897,6 +898,32 @@ func validateDryRun(ctx context.Context, t *testing.T, profile string) { } } +// validateInternationalLanguage asserts that the language used can be changed with environment variables +func validateInternationalLanguage(ctx context.Context, t *testing.T, profile string) { + // dry-run mode should always be able to finish quickly (<5s) + mctx, cancel := context.WithTimeout(ctx, Seconds(5)) + defer cancel() + + // Too little memory! + startArgs := append([]string{"start", "-p", profile, "--dry-run", "--memory", "250MB", "--alsologtostderr"}, StartArgs()...) + c := exec.CommandContext(mctx, Target(), startArgs...) + c.Env = append(os.Environ(), "LC_ALL=fr") + + rr, err := Run(t, c) + + wantCode := reason.ExInsufficientMemory + if rr.ExitCode != wantCode { + if HyperVDriver() { + t.Skip("skipping this error on HyperV till this issue is solved https://github.com/kubernetes/minikube/issues/9785") + } else { + t.Errorf("dry-run(250MB) exit code = %d, wanted = %d: %v", rr.ExitCode, wantCode, err) + } + } + if !strings.Contains(rr.Stdout.String(), "Utilisation du pilote") { + t.Errorf("dry-run output was expected to be in French. Expected \"Utilisation du pilote\", but not present in output:\n%s", rr.Stdout.String()) + } +} + // validateCacheCmd tests functionality of cache command (cache add, delete, list) func validateCacheCmd(ctx context.Context, t *testing.T, profile string) { defer PostMortemLogs(t, profile) diff --git a/translations/de.json b/translations/de.json index bbd00044da79..be50ba730e78 100644 --- a/translations/de.json +++ b/translations/de.json @@ -625,7 +625,7 @@ "The heapster addon is depreciated. please try to disable metrics-server instead": "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "Der Name des virtuellen Hyperv-Switch. Standardmäßig zuerst gefunden. (nur Hyperv-Treiber)", "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "", - "The image you are trying to add {{.imageName}} doesn't exist!": "", + "The image '{{.imageName}}' was not found; unable to add it to cache.": "", "The initial time interval for each check that wait performs in seconds": "", "The kubeadm binary within the Docker container is not executable": "", "The kubernetes version that the minikube VM will use (ex: v1.2.3)": "Die von der minikube-VM verwendete Kubernetes-Version (Beispiel: v1.2.3)", diff --git a/translations/es.json b/translations/es.json index 67f349fb27eb..2595b1fe5ae9 100644 --- a/translations/es.json +++ b/translations/es.json @@ -630,7 +630,7 @@ "The heapster addon is depreciated. please try to disable metrics-server instead": "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "El nombre del conmutador virtual de hyperv. El valor predeterminado será el primer nombre que se encuentre (solo con el controlador de hyperv).", "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "", - "The image you are trying to add {{.imageName}} doesn't exist!": "", + "The image '{{.imageName}}' was not found; unable to add it to cache.": "", "The initial time interval for each check that wait performs in seconds": "", "The kubeadm binary within the Docker container is not executable": "", "The kubernetes version that the minikube VM will use (ex: v1.2.3)": "La versión de Kubernetes que utilizará la VM de minikube (p. ej.: versión 1.2.3)", diff --git a/translations/fr.json b/translations/fr.json index 79488027531c..31ccde574898 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -7,20 +7,20 @@ "'none' driver does not support 'minikube mount' command": "Le pilote 'none' ne prend pas en charge la commande 'minikube mount'", "'none' driver does not support 'minikube podman-env' command": "Le pilote 'none' ne prend pas en charge la commande 'minikube podman-env'", "'none' driver does not support 'minikube ssh' command": "Le pilote 'none' ne prend pas en charge la commande 'minikube ssh'", - "'none' driver does not support 'minikube ssh-host' command": "", + "'none' driver does not support 'minikube ssh-host' command": "Le pilote 'none' ne prend pas en charge la commande 'minikube ssh-host'", "- Delete and recreate minikube cluster\n\t\tminikube delete\n\t\tminikube start --driver={{.driver_name}}": "- Supprimer et recréer le cluster de minikube\n\t\tminikube delete\n\t\tminikube start --driver={{.driver_name}}", "- Docs https://docs.docker.com/docker-for-mac/#resources": "- Documentation https://docs.docker.com/docker-for-mac/#resources", "- Docs https://docs.docker.com/docker-for-windows/#resources": "- Docs https://docs.docker.com/docker-for-windows/#resources", "- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "- Assurez-vous que votre démon {{.driver_name}} a accès à suffisamment de ressources CPU/mémoire.", "- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "- Nettoyer les images {{.driver_name}} non utilisées, les volumes et les conteneurs abandonnés.", - "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "", + "- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "- Nettoyer les images {{.driver_name}} non utilisées, les volumes, les réseaux et les conteneurs abandonnées.", "- Restart your {{.driver_name}} service": "- Redémarrer votre service {{.driver_name}}", "- {{.logPath}}": "", - "--kvm-numa-count range is 1-8": "", - "--network flag is only valid with the docker/podman and KVM drivers, it will be ignored": "", - "\u003ctarget file absolute path\u003e must be an absolute Path. Relative Path is not allowed (example: \"/home/docker/copied.txt\")": "", + "--kvm-numa-count range is 1-8": "la tranche de --kvm-numa-count est 1 à 8", + "--network flag is only valid with the docker/podman and KVM drivers, it will be ignored": "le drapeau --network est valide uniquement avec les pilotes docker/podman et KVM, il va être ignoré", + "\u003ctarget file absolute path\u003e must be an absolute Path. Relative Path is not allowed (example: \"/home/docker/copied.txt\")": "\u003ctarget file absolute path\u003e doit être un chemin absolu. Les chemins relatifs ne sont pas autorisés (exemple: \"/home/docker/copied.txt\")", "==\u003e Audit \u003c==": "", - "==\u003e Last Start \u003c==": "", + "==\u003e Last Start \u003c==": "==\u003e Dernier démarrage \u003c==", "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "Un VPN ou un pare-feu interfère avec l'accès HTTP à la machine virtuelle minikube. Vous pouvez également essayer un autre pilote de machine virtuelle : https://minikube.sigs.k8s.io/docs/start/", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "Un pare-feu empêche le Docker de la machine virtuelle minikube d'atteindre le dépôt d'images. Vous devriez peut-être sélectionner --image-repository, ou utiliser un proxy.", "A firewall is interfering with minikube's ability to make outgoing HTTPS requests. You may need to change the value of the HTTPS_PROXY environment variable.": "Un pare-feu interfère avec la capacité de minikube à executer des requêtes HTTPS sortantes. Vous devriez peut-être modifier la valeur de la variable d'environnement HTTPS_PROXY.", @@ -32,11 +32,11 @@ "A set of key=value pairs that describe configuration that may be passed to different components.\nThe key should be '.' separated, and the first part before the dot is the component to apply the configuration to.\nValid components are: kubelet, kubeadm, apiserver, controller-manager, etcd, proxy, scheduler\nValid kubeadm parameters:": "Ensemble de paires clé = valeur qui décrivent la configuration pouvant être transmise à différents composants.\nLa clé doit être séparée par le caractère \".\", la première partie placée avant le point étant le composant auquel la configuration est appliquée.\nVoici la liste des composants valides : apiserver, controller-manager, etcd, kubeadm, kubelet, proxy et scheduler.\nParamètres valides pour le composant kubeadm :", "A set of key=value pairs that describe feature gates for alpha/experimental features.": "Ensemble de paires clé = valeur qui décrivent l'entrée de configuration pour des fonctionnalités alpha ou expérimentales.", "Access the Kubernetes dashboard running within the minikube cluster": "Accéder au tableau de bord Kubernetes exécuté dans le cluster de minikube", - "Access to ports below 1024 may fail on Windows with OpenSSH clients older than v8.1. For more information, see: https://minikube.sigs.k8s.io/docs/handbook/accessing/#access-to-ports-1024-on-windows-requires-root-permission": "", - "Add SSH identity key to SSH authentication agent": "", + "Access to ports below 1024 may fail on Windows with OpenSSH clients older than v8.1. For more information, see: https://minikube.sigs.k8s.io/docs/handbook/accessing/#access-to-ports-1024-on-windows-requires-root-permission": "Accéder aux ports inférieurs à 1024 peut échouer sur Windows avec les clients OpenSSH antérieurs à v8.1. Pour plus d'information, voir: https://minikube.sigs.k8s.io/docs/handbook/accessing/#access-to-ports-1024-on-windows-requires-root-permission", + "Add SSH identity key to SSH authentication agent": "Ajouter la clé d'identité SSH à l'agent d'authentication SSH", "Add an image to local cache.": "Ajouter une image au cache local.", - "Add host key to SSH known_hosts file": "", - "Add image to cache for all running minikube clusters": "", + "Add host key to SSH known_hosts file": "Ajouter la clé hôte au fichier SSH known_hosts", + "Add image to cache for all running minikube clusters": "Ajouter l'image au cache pour tous les cluster minikube en fonctionnement", "Add machine IP to NO_PROXY environment variable": "Ajouter l'IP de la machine à la variable d'environnement NO_PROXY", "Add, delete, or push a local image into minikube": "Ajouter, supprimer ou pousser une image locale dans minikube", "Add, remove, or list additional nodes": "Ajouter, supprimer ou lister des nœuds supplémentaires", @@ -46,19 +46,19 @@ "Adds a node to the given cluster config, and starts it.": "Ajoute un nœud à la configuration du cluster et démarre le cluster.", "Adds a node to the given cluster.": "Ajoute un nœud au cluster.", "Advanced Commands:": "Commandes avancées :", - "After the addon is enabled, please run \"minikube tunnel\" and your ingress resources would be available at \"127.0.0.1\"": "", + "After the addon is enabled, please run \"minikube tunnel\" and your ingress resources would be available at \"127.0.0.1\"": "Après que le module est activé, veuiller exécuter \"minikube tunnel\" et vos ressources ingress seront disponibles à \"127.0.0.1\"", "Aliases": "Alias", - "All existing scheduled stops cancelled": "", - "Allow user prompts for more information": "Autoriser les utilisateur à saisir plus d'informations", + "All existing scheduled stops cancelled": "Tous les arrêts programmés existants annulés", + "Allow user prompts for more information": "Autoriser les utilisateurs à saisir plus d'informations", "Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to \\\"auto\\\" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers": "Autre dépôt d'images d'où extraire des images Docker. Il peut être utilisé en cas d'accès limité à gcr.io. Définissez-le sur \\\"auto\\\" pour permettre à minikube de choisir la valeur à votre place. Pour les utilisateurs situés en Chine continentale, vous pouvez utiliser des miroirs gcr.io locaux tels que registry.cn-hangzhou.aliyuncs.com/google_containers.", "Amount of RAM allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "Quantité de mémoire RAM allouée à la VM minikube (format : \u003cnombre\u003e[\u003cunité\u003e], où \"unité\" = b, k, m ou g).", "Amount of RAM to allocate to Kubernetes (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "Quantité de mémoire RAM à allouer à Kubernetes (format: \u003cnombre\u003e[\u003cunité\u003e], où unité = b, k, m ou g).", "Amount of time to wait for a service in seconds": "Temps d'attente pour un service en secondes", "Amount of time to wait for service in seconds": "Temps d'attente pour un service en secondes", "Another hypervisor, such as VirtualBox, is conflicting with KVM. Please stop the other hypervisor, or use --driver to switch to it.": "Un autre hyperviseur, tel que VirtualBox, est en conflit avec KVM. Veuillez arrêter l'autre hyperviseur ou utiliser --driver pour y basculer.", - "Another minikube instance is downloading dependencies... ": "", + "Another minikube instance is downloading dependencies... ": "Une autre instance minikube télécharge des dépendances", "Another program is using a file required by minikube. If you are using Hyper-V, try stopping the minikube VM from within the Hyper-V manager": "Un autre programme utilise un fichier requis par minikube. Si vous utilisez Hyper-V, essayez d'arrêter la machine virtuelle minikube à partir du gestionnaire Hyper-V", - "At least needs control plane nodes to enable addon": "", + "At least needs control plane nodes to enable addon": "Nécessite au moins des nœuds de plan de contrôle pour activer le module", "Automatically selected the {{.driver}} driver": "Choix automatique du pilote {{.driver}}", "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "Choix automatique du pilote {{.driver}}. Autres choix: {{.alternatives}}", "Available Commands": "Commandes disponibles", @@ -67,835 +67,835 @@ "Bind Address: {{.Address}}": "Adresse de liaison : {{.Address}}", "Booting up control plane ...": "Démarrage du plan de contrôle ...", "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", - "Bridge CNI is incompatible with multi-node clusters, use a different CNI": "", - "Build a container image in minikube": "", - "Build a container image, using the container runtime.": "", - "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", - "Cache image from docker daemon": "", - "Cache image from remote registry": "", - "Cannot find directory {{.path}} for copy": "", - "Cannot find directory {{.path}} for mount": "", - "Cannot use both --output and --format options": "", - "Check if you have unnecessary pods running by running 'kubectl get po -A": "", - "Check output of 'journalctl -xeu kubelet', try passing --extra-config=kubelet.cgroup-driver=systemd to minikube start": "", - "Check that libvirt is setup properly": "", - "Check that minikube is running and that you have specified the correct namespace (-n flag) if required.": "", - "Check that the provided apiserver flags are valid, and that SELinux is disabled": "", - "Check your firewall rules for interference, and run 'virt-host-validate' to check for KVM configuration issues. If you are running minikube within a VM, consider using --driver=none": "", - "Choose a smaller value for --memory, such as 2000": "", - "ChromeOS is missing the kernel support necessary for running Kubernetes": "", - "Cluster was created without any CNI, adding a node to it might cause broken networking.": "", - "Configuration and Management Commands:": "", - "Configure a default route on this Linux host, or use another --driver that does not require it": "", - "Configure an external network switch following the official documentation, then add `--hyperv-virtual-switch=\u003cswitch-name\u003e` to `minikube start`": "", - "Configure environment to use minikube's Docker daemon": "", - "Configure environment to use minikube's Podman service": "", - "Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list": "", + "Bridge CNI is incompatible with multi-node clusters, use a different CNI": "Le pont CNI est incompatible avec les clusters multi-nœuds, utilisez un autre CNI", + "Build a container image in minikube": "Construire une image de conteneur dans minikube", + "Build a container image, using the container runtime.": "Construire une image de conteneur à l'aide de l'environnement d'exécution du conteneur.", + "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "Plug-in CNI à utiliser. Options valides : auto, bridge, calico, cilium, flannel, kindnet ou chemin vers un manifeste CNI (par défaut : auto)", + "Cache image from docker daemon": "Cacher l'image du démon docker", + "Cache image from remote registry": "Cacher l'image du registre distant", + "Cannot find directory {{.path}} for copy": "Impossible de trouver le répertoire {{.path}} pour la copie", + "Cannot find directory {{.path}} for mount": "Impossible de trouver le répertoire {{.path}} pour le montage", + "Cannot use both --output and --format options": "Impossible d'utiliser à la fois les options --output et --format", + "Check if you have unnecessary pods running by running 'kubectl get po -A'": "Vérifiez si vous avez des pods inutiles en cours d'exécution en exécutant 'kubectl get po -A'", + "Check output of 'journalctl -xeu kubelet', try passing --extra-config=kubelet.cgroup-driver=systemd to minikube start": "Vérifiez la sortie de 'journalctl -xeu kubelet', essayez de passer --extra-config=kubelet.cgroup-driver=systemd au démarrage de minikube", + "Check that libvirt is setup properly": "Vérifiez que libvirt est correctement configuré", + "Check that minikube is running and that you have specified the correct namespace (-n flag) if required.": "Vérifiez que minikube est en cours d'exécution et que vous avez spécifié le bon espace de noms (indicateur -n) si nécessaire", + "Check that the provided apiserver flags are valid, and that SELinux is disabled": "Vérifiez que les indicateur apiserver fournis sont valides et que SELinux est désactivé", + "Check your firewall rules for interference, and run 'virt-host-validate' to check for KVM configuration issues. If you are running minikube within a VM, consider using --driver=none": "Vérifiez vos règles de pare-feu pour les interférences et exécutez 'virt-host-validate' pour vérifier les problèmes de configuration KVM. Si vous exécutez minikube dans une machine virtuelle, envisagez d'utiliser --driver=none", + "Choose a smaller value for --memory, such as 2000": "Choisissez une valeur plus petite pour --memory, telle que 2000", + "ChromeOS is missing the kernel support necessary for running Kubernetes": "ChromeOS ne dispose pas de la prise en charge du noyau nécessaire à l'exécution de Kubernetes", + "Cluster was created without any CNI, adding a node to it might cause broken networking.": "Le cluster a été créé sans aucun CNI, l'ajout d'un nœud peut provoquer un réseau inopérant.", + "Configuration and Management Commands:": "Commandes de configuration et de gestion :", + "Configure a default route on this Linux host, or use another --driver that does not require it": "Configurez une route par défaut sur cet hôte Linux ou utilisez un autre --driver qui ne l'exige pas", + "Configure an external network switch following the official documentation, then add `--hyperv-virtual-switch=\u003cswitch-name\u003e` to `minikube start`": "Configurez un commutateur réseau externe en suivant la documentation officielle, puis ajoutez `--hyperv-virtual-switch=\u003cswitch-name\u003e` à `minikube start`", + "Configure environment to use minikube's Docker daemon": "Configurer l'environnement pour utiliser le démon Docker de minikube", + "Configure environment to use minikube's Podman service": "Configurer l'environnement pour utiliser le service Podman de minikube", + "Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list": "Configure le module w/ADDON_NAME dans minikube (exemple : minikube addons configure registry-creds). Pour une liste des modules disponibles, utilisez : minikube addons list", "Configuring RBAC rules ...": "Configuration des règles RBAC ...", "Configuring environment for Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}}": "Configuration de l'environment pour Kubernetes {{.k8sVersion}} sur {{.runtime}} {{.runtimeVersion}}", - "Configuring local host environment ...": "", - "Configuring {{.name}} (Container Networking Interface) ...": "", - "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "", - "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "", - "Connect to LoadBalancer services": "", - "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", - "Consider increasing Docker Desktop's memory size.": "", - "Continuously listing/getting the status with optional interval duration.": "", - "Copy the specified file into minikube": "", - "Copy the specified file into minikube, it will be saved at path \u003ctarget file absolute path\u003e in your minikube.\\nExample Command : \\\"minikube cp a.txt /home/docker/b.txt\\\"\\n \\\"minikube cp a.txt minikube-m02:/home/docker/b.txt\\\"\\n": "", - "Could not determine a Google Cloud project, which might be ok.": "", - "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", - "Could not process error from failed deletion": "", - "Could not process errors from failed deletion": "", - "Could not resolve IP address": "", + "Configuring local host environment ...": "Configuration de l'environnement de l'hôte local...", + "Configuring {{.name}} (Container Networking Interface) ...": "Configuration de {{.name}} (Container Networking Interface)...", + "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "Confirmez que vous disposez d'une connexion Internet fonctionnelle et que votre VM n'est pas à court de ressources en utilisant : 'minikube logs'", + "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "Confirmez que vous avez fourni la valeur correcte à --hyperv-virtual-switch à l'aide de la commande 'Get-VMSwitch'", + "Connect to LoadBalancer services": "Se connecter aux services LoadBalancer", + "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "Envisagez de créer un cluster avec une plus grande taille de mémoire en utilisant `minikube start --memory SIZE_MB`", + "Consider increasing Docker Desktop's memory size.": "Envisagez d'augmenter la taille de la mémoire de Docker Desktop.", + "Continuously listing/getting the status with optional interval duration.": "Répertorier/obtenir le statut en continu avec une durée d'intervalle facultative.", + "Copy the specified file into minikube": "Copiez le fichier spécifié dans minikube", + "Copy the specified file into minikube, it will be saved at path \u003ctarget file absolute path\u003e in your minikube.\\nExample Command : \\\"minikube cp a.txt /home/docker/b.txt\\\"\\n \\\"minikube cp a.txt minikube-m02:/home/docker/b.txt\\\"\\n": "Copiez le fichier spécifié dans minikube, il sera enregistré au chemin \u003ctarget file absolute path\u003e dans votre minikube.\\nExemple de commande : \\\"minikube cp a.txt /home/docker/b.txt\\\"\\n \\\"minikube cp a.txt minikube-m02:/home/docker/b.txt\\\"\\n", + "Could not determine a Google Cloud project, which might be ok.": "Impossible de déterminer un projet Google Cloud, ce qui peut convenir.", + "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "Impossible de trouver les identifiants GCP. Exécutez `gcloud auth application-default login` ou définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS vers le chemin de votre fichier d'informations d'identification.", + "Could not process error from failed deletion": "Impossible de traiter l'erreur due à l'échec de la suppression", + "Could not process errors from failed deletion": "Impossible de traiter les erreurs dues à l'échec de la suppression", + "Could not resolve IP address": "Impossible de résoudre l'adresse IP", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "Code pays du miroir d'images à utiliser. Laissez ce paramètre vide pour utiliser le miroir international. Pour les utilisateurs situés en Chine continentale, définissez sa valeur sur \"cn\".", "Creating mount {{.name}} ...": "Création de l'installation {{.name}}…", - "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", + "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "Création de {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}Mo) ...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "Création de {{.machine_type}} {{.driver_name}} (CPUs={{.number_of_cpus}}, Mémoire={{.memory_size}}MB, Disque={{.disk_size}}MB)...", - "Current context is \"{{.context}}\"": "", - "DEPRECATED, use `driver` instead.": "", - "DEPRECATED: Replaced by --cni=bridge": "", - "Default group id used for the mount": "", - "Default user id used for the mount": "", - "Delete an image from the local cache.": "", - "Deletes a local Kubernetes cluster": "", - "Deletes a local Kubernetes cluster. This command deletes the VM, and removes all\nassociated files.": "", + "Current context is \"{{.context}}\"": "Le contexte courant est \"{{.context}}\"", + "DEPRECATED, use `driver` instead.": "DÉPRÉCIÉ, utilisez plutôt `driver`.", + "DEPRECATED: Replaced by --cni=bridge": "DÉPRÉCIÉ : remplacé par --cni=bridge", + "Default group id used for the mount": "ID de groupe par défaut utilisé pour le montage", + "Default user id used for the mount": "ID utilisateur par défaut utilisé pour le montage", + "Delete an image from the local cache.": "Supprimez une image du cache local.", + "Deletes a local Kubernetes cluster": "Supprime un cluster Kubernetes local", + "Deletes a local Kubernetes cluster. This command deletes the VM, and removes all\nassociated files.": "Supprime le cluster Kubernetes local. Cette commande supprime la VM ainsi que tous les fichiers associés.", "Deletes a local kubernetes cluster. This command deletes the VM, and removes all\nassociated files.": "Supprime le cluster Kubernetes local. Cette commande supprime la VM ainsi que tous les fichiers associés.", - "Deletes a node from a cluster.": "", + "Deletes a node from a cluster.": "Supprime un nœud d'un cluster.", "Deleting \"{{.profile_name}}\" in {{.driver_name}} ...": "Suppression de \"{{.profile_name}}\" dans {{.driver_name}}...", - "Deleting container \"{{.name}}\" ...": "", - "Deleting existing cluster {{.name}} with different driver {{.driver_name}} due to --delete-on-failure flag set by the user. ": "", + "Deleting container \"{{.name}}\" ...": "Suppression du conteneur \"{{.name}}\" ...", + "Deleting existing cluster {{.name}} with different driver {{.driver_name}} due to --delete-on-failure flag set by the user. ": "Suppression du cluster existant {{.name}} avec un pilote différent {{.driver_name}} en raison de l'indicateur --delete-on-failure défini par l'utilisateur.", "Deleting node {{.name}} from cluster {{.cluster}}": "Suppression de noeuds {{.name}} de cluster {{.cluster}}", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "Désactive la vérification de la disponibilité de la virtualisation du matériel avant le démarrage de la VM (pilote virtualbox uniquement).", - "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "", - "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", + "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "Désactivez la mémoire dynamique dans votre gestionnaire de machine virtuelle ou transmettez une valeur --memory plus grande", + "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "Désactive le module w/ADDON_NAME dans minikube (exemple : minikube addons disable dashboard). Pour une liste des addons disponibles, utilisez : minikube addons list", "Disables the filesystem mounts provided by the hypervisors": "Désactive les installations de systèmes de fichiers fournies par les hyperviseurs.", "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "Taille de disque allouée à la VM minikube (format : \u003cnombre\u003e[\u003cunité\u003e], où \"unité\" = b, k, m ou g)", - "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "", - "Display dashboard URL instead of opening a browser": "", - "Display the Kubernetes addons URL in the CLI instead of opening it in the default browser": "", - "Display the Kubernetes service URL in the CLI instead of opening it in the default browser": "", - "Display values currently set in the minikube config file": "", - "Display values currently set in the minikube config file.": "", - "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "", - "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "", - "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", - "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "", - "Docker container exited prematurely after it was created, consider investigating Docker's performance/health.": "", - "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", - "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "", - "Docs have been saved at - {{.path}}": "", + "Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "Taille du disque alloué à la VM minikube (format : \u003cnombre\u003e[\u003cunité\u003e], où unité = b, k, m ou g).", + "Display dashboard URL instead of opening a browser": "Afficher l'URL du tableau de bord au lieu d'ouvrir un navigateur", + "Display the Kubernetes addons URL in the CLI instead of opening it in the default browser": "Afficher l'URL des modules Kubernetes dans la CLI au lieu de l'ouvrir dans le navigateur par défaut", + "Display the Kubernetes service URL in the CLI instead of opening it in the default browser": "Afficher l'URL du service Kubernetes dans la CLI au lieu de l'ouvrir dans le navigateur par défaut", + "Display values currently set in the minikube config file": "Afficher les valeurs actuellement définies dans le fichier de configuration minikube", + "Display values currently set in the minikube config file.": "Afficher les valeurs actuellement définies dans le fichier de configuration minikube", + "Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "Docker Desktop a moins de 2 processeurs configurés, mais Kubernetes nécessite au moins 2 pour être disponible", + "Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "Docker Desktop est configuré pour les conteneurs Windows, mais les conteneurs Linux sont requis pour minikube", + "Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "Docker Desktop n'a que {{.size}} Mio disponibles, moins que les {{.req}} Mio requis pour Kubernetes", + "Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "Docker Desktop n'a que {{.size}}Mio disponibles, vous pouvez rencontrer des échecs de déploiement d'applications.", + "Docker container exited prematurely after it was created, consider investigating Docker's performance/health.": "Le conteneur Docker s'est fermé prématurément après sa création, envisagez d'enquêter sur les performances/l'intégrité de Docker.", + "Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "Docker a moins de 2 processeurs disponibles, mais Kubernetes a besoin d'au moins 2 pour être disponible", + "Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "Docker à l'intérieur de la VM n'est pas disponible. Essayez d'exécuter « minikube delete » pour réinitialiser la machine virtuelle.", + "Docs have been saved at - {{.path}}": "Les documents ont été enregistrés à - {{.path}}", "Documentation: {{.url}}": "", "Done! kubectl is now configured to use \"{{.name}}\"": "Terminé ! kubectl est maintenant configuré pour utiliser \"{{.name}}\".", "Done! kubectl is now configured to use \"{{.name}}\" cluster and \"{{.ns}}\" namespace by default": "Terminé ! kubectl est maintenant configuré pour utiliser \"{{.name}}\" cluster et espace de noms \"{{.ns}}\" par défaut.", "Download complete!": "Téléchargement terminé !", - "Downloading Kubernetes {{.version}} preload ...": "", - "Downloading VM boot image ...": "", - "Downloading driver {{.driver}}:": "", - "Due to networking limitations of driver {{.driver_name}} on {{.os_name}}, {{.addon_name}} addon is not supported.\nAlternatively to use this addon you can use a vm-based driver:\n\n\t'minikube start --vm=true'\n\nTo track the update on this work in progress feature please check:\nhttps://github.com/kubernetes/minikube/issues/7332": "", - "Due to networking limitations of driver {{.driver_name}}, {{.addon_name}} addon is not fully supported. Try using a different driver.": "", - "ERROR creating `registry-creds-acr` secret": "", - "ERROR creating `registry-creds-dpr` secret": "", - "ERROR creating `registry-creds-ecr` secret: {{.error}}": "", - "ERROR creating `registry-creds-gcr` secret: {{.error}}": "", - "Either systemctl is not installed, or Docker is broken. Run 'sudo systemctl start docker' and 'journalctl -u docker'": "", - "Enable addons. see `minikube addons list` for a list of valid addon names.": "", + "Downloading Kubernetes {{.version}} preload ...": "Téléchargement du préchargement de Kubernetes {{.version}}...", + "Downloading VM boot image ...": "Téléchargement de l'image de démarrage de la VM...", + "Downloading driver {{.driver}}:": "Téléchargement du pilote {{.driver}} :", + "Due to networking limitations of driver {{.driver_name}} on {{.os_name}}, {{.addon_name}} addon is not supported.\nAlternatively to use this addon you can use a vm-based driver:\n\n\t'minikube start --vm=true'\n\nTo track the update on this work in progress feature please check:\nhttps://github.com/kubernetes/minikube/issues/7332": "En raison des limitations réseau du pilote {{.driver_name}} sur {{.os_name}}, le module {{.addon_name}} n'est pas pris en charge.\nAlternativement, pour utiliser ce module, vous pouvez utiliser un pilote basé sur vm :\n\n \t'minikube start --vm=true'\n\nPour suivre la mise à jour de cette fonctionnalité en cours de travail, veuillez vérifier :\nhttps://github.com/kubernetes/minikube/issues/7332", + "Due to networking limitations of driver {{.driver_name}}, {{.addon_name}} addon is not fully supported. Try using a different driver.": "En raison des limitations réseau du pilote {{.driver_name}}, le module {{.addon_name}} n'est pas entièrement pris en charge. Essayez d'utiliser un autre pilote.", + "ERROR creating `registry-creds-acr` secret": "ERREUR lors de la création du secret `registry-creds-acr`", + "ERROR creating `registry-creds-dpr` secret": "ERREUR lors de la création du secret `registry-creds-dpr`", + "ERROR creating `registry-creds-ecr` secret: {{.error}}": "ERREUR lors de la création du secret `registry-creds-ecr` : {{.error}}", + "ERROR creating `registry-creds-gcr` secret: {{.error}}": "ERREUR lors de la création du secret `registry-creds-gcr` : {{.error}}", + "Either systemctl is not installed, or Docker is broken. Run 'sudo systemctl start docker' and 'journalctl -u docker'": "Soit systemctl n'est pas installé, soit Docker ne fonctionne plus. Exécutez 'sudo systemctl start docker' et 'journalctl -u docker'", + "Enable addons. see `minikube addons list` for a list of valid addon names.": "Activer les modules. Voir `minikube addons list` pour une liste de noms de modules valides.", "Enable experimental NVIDIA GPU support in minikube": "Active l'assistance expérimentale du GPU NVIDIA dans minikube.", "Enable host resolver for NAT DNS requests (virtualbox driver only)": "Active le résolveur d'hôte pour les requêtes DNS NAT (pilote VirtualBox uniquement).", - "Enable or disable a minikube addon": "", + "Enable or disable a minikube addon": "Activer ou désactiver un module minikube", "Enable proxy for NAT DNS requests (virtualbox driver only)": "Active le proxy pour les requêtes DNS NAT (pilote VirtualBox uniquement).", "Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\": "Active le plug-in CNI par défaut (/etc/cni/net.d/k8s.conf). Utilisé en association avec \\\"--network-plugin=cni\\\".", - "Enabled addons: {{.addons}}": "Addons activés: {{.addons}}", - "Enables the addon w/ADDON_NAME within minikube. For a list of available addons use: minikube addons list ": "", - "Enabling '{{.name}}' returned an error: {{.error}}": "", - "Enabling addons: {{.addons}}": "Installation des addons: {{.addons}}", - "Enabling dashboard ...": "", - "Ensure that CRI-O is installed and healthy: Run 'sudo systemctl start crio' and 'journalctl -u crio'. Alternatively, use --container-runtime=docker": "", - "Ensure that Docker is installed and healthy: Run 'sudo systemctl start docker' and 'journalctl -u docker'. Alternatively, select another value for --driver": "", - "Ensure that the required 'pids' cgroup is enabled on your host: grep pids /proc/cgroups": "", - "Ensure that the user listed in /etc/libvirt/qemu.conf has access to your home directory": "", - "Ensure that you are a member of the appropriate libvirt group (remember to relogin for group changes to take effect!)": "", - "Ensure that your value for HTTPS_PROXY points to an HTTPS proxy rather than an HTTP proxy": "", - "Ensure the tmp directory path is writable to the current user.": "", - "Ensure you have at least 20GB of free disk space.": "", - "Ensure your {{.driver_name}} is running and is healthy.": "", + "Enabled addons: {{.addons}}": "Modules activés: {{.addons}}", + "Enables the addon w/ADDON_NAME within minikube. For a list of available addons use: minikube addons list ": "Active le module w/ADDON_NAME dans minikube. Pour une liste des modules disponibles, utilisez : minikube addons list", + "Enabling '{{.name}}' returned an error: {{.error}}": "L'activation de '{{.name}}' a renvoyé une erreur : {{.error}}", + "Enabling addons: {{.addons}}": "Installation des modules: {{.addons}}", + "Enabling dashboard ...": "Activation du tableau de bord...", + "Ensure that CRI-O is installed and healthy: Run 'sudo systemctl start crio' and 'journalctl -u crio'. Alternatively, use --container-runtime=docker": "Assurez-vous que CRI-O est installé et en fonctionnement : exécutez 'sudo systemctl start crio' et 'journalctl -u crio'. Sinon, utilisez --container-runtime=docker", + "Ensure that Docker is installed and healthy: Run 'sudo systemctl start docker' and 'journalctl -u docker'. Alternatively, select another value for --driver": "Assurez-vous que Docker est installé et en fonctionnement : exécutez 'sudo systemctl start docker' et 'journalctl -u docker'. Sinon, sélectionnez une autre valeur pour --driver", + "Ensure that the required 'pids' cgroup is enabled on your host: grep pids /proc/cgroups": "Assurez-vous que le groupe de contrôle 'pids' requis est activé sur votre hôte : grep pids /proc/cgroups", + "Ensure that the user listed in /etc/libvirt/qemu.conf has access to your home directory": "Assurez-vous que l'utilisateur répertorié dans /etc/libvirt/qemu.conf a accès à votre répertoire personnel", + "Ensure that you are a member of the appropriate libvirt group (remember to relogin for group changes to take effect!)": "Assurez-vous que vous êtes membre du groupe libvirt approprié (n'oubliez pas de vous reconnecter pour que les modifications du groupe prennent effet !)", + "Ensure that your value for HTTPS_PROXY points to an HTTPS proxy rather than an HTTP proxy": "Assurez-vous que votre valeur pour HTTPS_PROXY pointe vers un proxy HTTPS plutôt qu'un proxy HTTP", + "Ensure the tmp directory path is writable to the current user.": "Assurez-vous que le chemin du répertoire tmp est accessible en écriture à l'utilisateur actuel.", + "Ensure you have at least 20GB of free disk space.": "Assurez-vous d'avoir au moins 20 Go d'espace disque libre.", + "Ensure your {{.driver_name}} is running and is healthy.": "Assurez-vous que votre {{.driver_name}} est en cours d'exécution et en fonctionnement.", "Environment variables to pass to the Docker daemon. (format: key=value)": "Variables d'environment à transmettre au daemon Docker (format : clé = valeur).", - "Environment variables to pass to the build. (format: key=value)": "", + "Environment variables to pass to the build. (format: key=value)": "Variables d'environnement à transmettre au build. (format : clé=valeur)", "Error checking driver version: {{.error}}": "Erreur lors de la vérification de la version du driver : {{.error}}", - "Error code docs have been saved at - {{.path}}": "", - "Error creating minikube directory": "", - "Error creating view template": "", - "Error detecting shell": "", - "Error executing view template": "", - "Error finding port for mount": "", - "Error generating set output": "", - "Error generating unset output": "", - "Error getting cluster bootstrapper": "", - "Error getting cluster config": "", - "Error getting host": "", - "Error getting port binding for '{{.driver_name}} driver: {{.error}}": "", - "Error getting primary control plane": "", - "Error getting service with namespace: {{.namespace}} and labels {{.labelName}}:{{.addonName}}: {{.error}}": "", - "Error getting ssh client": "", - "Error getting the host IP address to use from within the VM": "", - "Error killing mount process": "", - "Error loading profile config: {{.error}}": "", + "Error code docs have been saved at - {{.path}}": "Les documents de code d'erreur ont été enregistrés à - {{.path}}", + "Error creating minikube directory": "Erreur lors de la création du répertoire minikube", + "Error creating view template": "Erreur lors de la création du modèle de vue", + "Error detecting shell": "Erreur de détection du shell", + "Error executing view template": "Erreur lors de l'exécution du modèle de vue", + "Error finding port for mount": "Erreur lors de la recherche du port pour le montage", + "Error generating set output": "Erreur lors de la génération set output", + "Error generating unset output": "Erreur lors de la génération unset output", + "Error getting cluster bootstrapper": "Erreur lors de l'obtention du programme d'amorçage du cluster", + "Error getting cluster config": "Erreur lors de l'obtention de la configuration du cluster", + "Error getting host": "Erreur lors de l'obtention de l'hôte", + "Error getting port binding for '{{.driver_name}} driver: {{.error}}": "Erreur lors de l'obtention de la liaison de port pour le pilote '{{.driver_name}} : {{.error}}", + "Error getting primary control plane": "Erreur lors de l'obtention du plan de contrôle principal", + "Error getting service with namespace: {{.namespace}} and labels {{.labelName}}:{{.addonName}}: {{.error}}": "Erreur lors de l'obtention du service avec l'espace de noms : {{.namespace}} et les étiquettes {{.labelName}} :{{.addonName}} : {{.error}}", + "Error getting ssh client": "Erreur lors de l'obtention du client ssh", + "Error getting the host IP address to use from within the VM": "Erreur lors de l'obtention de l'adresse IP de l'hôte à utiliser depuis la VM", + "Error killing mount process": "Erreur lors de la suppression du processus de montage", + "Error loading profile config: {{.error}}": "Erreur lors du chargement de la configuration du profil : {{.error}}", "Error loading profile {{.name}}: {{.error}}": "Erreur lors du chargement du profil {{.name}} : {{.error}}", - "Error opening service": "", + "Error opening service": "Erreur d'ouverture du service", "Error parsing Driver version: {{.error}}": "Erreur lors de l'analyse de la version du pilote de la VM : {{.error}}", "Error parsing minikube version: {{.error}}": "Erreur lors de l'analyse de la version de minikube : {{.error}}", - "Error parsing {{.name}}={{.value}}, {{.err}}": "", - "Error reading {{.path}}: {{.error}}": "", - "Error starting cluster": "", - "Error starting mount": "", - "Error while setting kubectl current context : {{.error}}": "", - "Error while setting kubectl current context: {{.error}}": "", - "Error with ssh-add": "", - "Error writing mount pid": "", + "Error parsing {{.name}}={{.value}}, {{.err}}": "Erreur lors de l'analyse de {{.name}}={{.value}}, {{.err}}", + "Error reading {{.path}}: {{.error}}": "Erreur de lecture {{.path}} : {{.error}}", + "Error starting cluster": "Erreur lors du démarrage du cluster", + "Error starting mount": "Erreur lors du démarrage du montage", + "Error while setting kubectl current context : {{.error}}": "Erreur lors de la définition du contexte actuel de kubectl : {{.error}}", + "Error while setting kubectl current context: {{.error}}": "Erreur lors de la définition du contexte actuel de kubectl : {{.error}}", + "Error with ssh-add": "Erreur avec ssh-add", + "Error writing mount pid": "Erreur lors de l'écriture du pid de montage", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Erreur : Vous avez sélectionné Kubernetes v{{.new}}, mais le cluster existent pour votre profil exécute Kubernetes v{{.old}}. Les rétrogradations non-destructives ne sont pas compatibles. Toutefois, vous pouvez poursuivre le processus en réalisant l'une des trois actions suivantes :\n* Créer à nouveau le cluster en utilisant Kubernetes v{{.new}} – exécutez \"minikube delete {{.profile}}\", puis \"minikube start {{.profile}} --kubernetes-version={{.new}}\".\n* Créer un second cluster avec Kubernetes v{{.new}} – exécutez \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\".\n* Réutiliser le cluster existent avec Kubernetes v{{.old}} ou version ultérieure – exécutez \"minikube start {{.profile}} --kubernetes-version={{.old}}\".", - "Examples": "", - "Executing \"{{.command}}\" took an unusually long time: {{.duration}}": "", - "Existing disk is missing new features ({{.error}}). To upgrade, run 'minikube delete'": "", + "Examples": "Exemples", + "Executing \"{{.command}}\" took an unusually long time: {{.duration}}": "L'exécution de \"{{.command}}\" a pris un temps inhabituellement long : {{.duration}}", + "Existing disk is missing new features ({{.error}}). To upgrade, run 'minikube delete'": "Il manque de nouvelles fonctionnalités sur le disque existant ({{.error}}). Pour mettre à niveau, exécutez 'minikube delete'", "Exiting": "Fermeture…", - "Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "", - "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", - "Fail check if container paused": "", - "Failed runtime": "", - "Failed to build image": "", - "Failed to cache and load images": "", - "Failed to cache binaries": "", - "Failed to cache images": "", - "Failed to cache images to tar": "", - "Failed to cache kubectl": "", + "Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "Fermeture en raison de {{.fatal_code}} : {{.fatal_msg}}", + "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "L'adaptateur externe sur lequel un commutateur externe sera créé si aucun commutateur externe n'est trouvé. (pilote hyperv uniquement)", + "Fail check if container paused": "Échec de la vérification si le conteneur est en pause", + "Failed runtime": "Échec de l'exécution", + "Failed to build image": "Échec de la création de l'image", + "Failed to cache and load images": "Échec de la mise en cache et du chargement des images", + "Failed to cache binaries": "Échec de la mise en cache des binaires", + "Failed to cache images": "Échec de la mise en cache des images", + "Failed to cache images to tar": "Échec de la mise en cache des images dans l'archive tar", + "Failed to cache kubectl": "Échec de la mise en cache de kubectl", "Failed to change permissions for {{.minikube_dir_path}}: {{.error}}": "Échec de la modification des autorisations pour {{.minikube_dir_path}} : {{.error}}", - "Failed to check main repository and mirrors for images": "", - "Failed to configure metallb IP {{.profile}}": "", - "Failed to create file": "", - "Failed to create runtime": "", - "Failed to delete cluster {{.name}}, proceeding with retry anyway.": "", - "Failed to delete cluster {{.name}}.": "", + "Failed to check main repository and mirrors for images": "Échec de la vérification du référentiel principal et des miroirs pour les images", + "Failed to configure metallb IP {{.profile}}": "Échec de la configuration de metallb IP {{.profile}}", + "Failed to create file": "La création du fichier a échoué", + "Failed to create runtime": "Échec de la création de l'environnement d'exécution", + "Failed to delete cluster {{.name}}, proceeding with retry anyway.": "Échec de la suppression du cluster {{.name}}, réessayez quand même.", + "Failed to delete cluster {{.name}}.": "Échec de la suppression du cluster {{.name}}.", "Failed to delete cluster: {{.error}}": "Échec de la suppression du cluster : {{.error}}", "Failed to delete cluster: {{.error}}__1": "Échec de la suppression du cluster : {{.error}}", - "Failed to delete images": "", - "Failed to delete images from config": "", - "Failed to enable container runtime": "", - "Failed to get bootstrapper": "", - "Failed to get command runner": "", - "Failed to get image map": "", - "Failed to get service URL: {{.error}}": "", + "Failed to delete images": "Échec de la suppression des images", + "Failed to delete images from config": "Échec de la suppression des images de la configuration", + "Failed to enable container runtime": "Échec de l'activation de l'environnement d'exécution du conteneur", + "Failed to get bootstrapper": "Échec de l'obtention du programme d'amorçage", + "Failed to get command runner": "Impossible d'obtenir le lanceur de commandes", + "Failed to get image map": "Échec de l'obtention de la carte d'image", + "Failed to get service URL: {{.error}}": "Échec de l'obtention de l'URL du service : {{.error}}", "Failed to kill mount process: {{.error}}": "Échec de l'arrêt du processus d'installation : {{.error}}", - "Failed to list cached images": "", - "Failed to list images": "", - "Failed to load image": "", - "Failed to persist images": "", - "Failed to pull image": "", - "Failed to reload cached images": "", - "Failed to remove image": "", - "Failed to save config {{.profile}}": "", - "Failed to save dir": "", - "Failed to save stdin": "", - "Failed to set NO_PROXY Env. Please use `export NO_PROXY=$NO_PROXY,{{.ip}}": "Échec de la définition de NO_PROXY Env. Veuillez utiliser `export NO_PROXY=$NO_PROXY,{{.ip}}.", - "Failed to set NO_PROXY Env. Please use `export NO_PROXY=$NO_PROXY,{{.ip}}`.": "", - "Failed to setup certs": "", - "Failed to start container runtime": "", - "Failed to start {{.driver}} {{.driver_type}}. Running \"{{.cmd}}\" may fix it: {{.error}}": "", - "Failed to stop node {{.name}}": "", - "Failed to update cluster": "", - "Failed to update config": "", - "Failed to verify '{{.driver_name}} info' will try again ...": "", - "Failed unmount: {{.error}}": "", - "File permissions used for the mount": "", - "Filter to use only VM Drivers": "", - "Flags": "", - "Follow": "", + "Failed to list cached images": "Échec de l'obtention de la liste des images mises en cache", + "Failed to list images": "Échec de l'obtention de la liste des images", + "Failed to load image": "Échec du chargement de l'image", + "Failed to persist images": "Échec de la persistance des images", + "Failed to pull image": "Échec de l'extraction de l'image", + "Failed to reload cached images": "Échec du rechargement des images mises en cache", + "Failed to remove image": "Échec de la suppression de l'image", + "Failed to save config {{.profile}}": "Échec de l'enregistrement de la configuration {{.profile}}", + "Failed to save dir": "Échec de l'enregistrement du répertoire", + "Failed to save stdin": "Échec de l'enregistrement de l'entrée standard", + "Failed to set NO_PROXY Env. Please use `export NO_PROXY=$NO_PROXY,{{.ip}}": "Échec de la définition la variable d'environnement NO_PROXY. Veuillez utiliser `export NO_PROXY=$NO_PROXY,{{.ip}}.", + "Failed to set NO_PROXY Env. Please use `export NO_PROXY=$NO_PROXY,{{.ip}}`.": "Échec de la définition de la variable d'environnement NO_PROXY. Veuillez utiliser `export NO_PROXY=$NO_PROXY,{{.ip}}`.", + "Failed to setup certs": "Échec de la configuration des certificats", + "Failed to start container runtime": "Échec du démarrage de l'exécution du conteneur", + "Failed to start {{.driver}} {{.driver_type}}. Running \"{{.cmd}}\" may fix it: {{.error}}": "Échec du démarrage de {{.driver}} {{.driver_type}}. L'exécution de \"{{.cmd}}\" peut résoudre le problème : {{.error}}", + "Failed to stop node {{.name}}": "Échec de l'arrêt du nœud {{.name}}", + "Failed to update cluster": "Échec de la mise à jour du cluster", + "Failed to update config": "Échec de la mise à jour de la configuration", + "Failed to verify '{{.driver_name}} info' will try again ...": "Échec de la vérification des informations sur '{{.driver_name}}' va réessayer ...", + "Failed unmount: {{.error}}": "Échec du démontage : {{.error}}", + "File permissions used for the mount": "Autorisations de fichier utilisées pour le montage", + "Filter to use only VM Drivers": "Filtrer pour n'utiliser que les pilotes VM", + "Flags": "Indicateurs", + "Follow": "Suivre", "For best results, install kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl/": "Pour des résultats optimaux, installez kubectl à l'adresse suivante : https://kubernetes.io/docs/tasks/tools/install-kubectl/", "For best results, install kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl/__1": "Pour des résultats optimaux, installez kubectl à l'adresse suivante : https://kubernetes.io/docs/tasks/tools/install-kubectl/", - "For improved {{.driver}} performance, {{.fix}}": "", - "For more information see: https://minikube.sigs.k8s.io/docs/drivers/{{.driver}}": "", + "For improved {{.driver}} performance, {{.fix}}": "Pour de meilleures performances {{.driver}}, {{.fix}}", + "For more information see: https://minikube.sigs.k8s.io/docs/drivers/{{.driver}}": "Pour plus d'informations, voir : https://minikube.sigs.k8s.io/docs/drivers/{{.driver}}", "For more information, see:": "Pour en savoir plus, consultez les pages suivantes :", - "For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "", - "For more information, see: {{.url}}": "", - "Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh], default is auto-detect": "", + "For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "Pour plus d'informations, voir : https://minikube.sigs.k8s.io/docs/reference/drivers/none/", + "For more information, see: {{.url}}": "Pour plus d'informations, voir : {{.url}}", + "Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh], default is auto-detect": "Forcer l'environnement à être configuré pour un shell spécifié : [fish, cmd, powershell, tcsh, bash, zsh], la valeur par défaut est la détection automatique", "Force minikube to perform possibly dangerous operations": "Oblige minikube à réaliser des opérations possiblement dangereuses.", - "Format to print stdout in. Options include: [text,json]": "", - "Found docker, but the docker service isn't running. Try restarting the docker service.": "", - "Found driver(s) but none were healthy. See above for suggestions how to fix installed drivers.": "", + "Format to print stdout in. Options include: [text,json]": "Format dans lequel imprimer la sortie standard. Les options incluent : [text,json]", + "Found docker, but the docker service isn't running. Try restarting the docker service.": "Docker trouvé, mais le service docker ne fonctionne pas. Essayez de redémarrer le service Docker.", + "Found driver(s) but none were healthy. See above for suggestions how to fix installed drivers.": "Pilote(s) trouvé(s) mais aucun n'était en fonctionnement. Voir ci-dessus pour des suggestions sur la façon de réparer les pilotes installés.", "Found network options:": "Options de réseau trouvées :", - "Found {{.number}} invalid profile(s) ! ": "", - "Generate command completion for a shell": "", - "Generate command completion for bash.": "", - "Generate command completion for fish .": "", - "Generate command completion for zsh.": "", - "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "", - "Generate unable to parse memory '{{.memory}}': {{.error}}": "", + "Found {{.number}} invalid profile(s) ! ": "{{.number}} profil(s) invalide(s) trouvé(s) !", + "Generate command completion for a shell": "Générer la complétion de commande pour un shell", + "Generate command completion for bash.": "Générer la complétion de la commande pour bash.", + "Generate command completion for fish .": "Générer la complétion de la commande pour fish.", + "Generate command completion for zsh.": "Générer la complétion de la commande pour zsh.", + "Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "Générer impossible d'analyser la taille du disque '{{.diskSize}}' : {{.error}}", + "Generate unable to parse memory '{{.memory}}': {{.error}}": "Générer impossible d'analyser la mémoire '{{.memory}}' : {{.error}}", "Generating certificates and keys ...": "Génération des certificats et des clés", - "Get or list the current profiles (clusters)": "", - "Gets the logs of the running instance, used for debugging minikube, not user code.": "", - "Gets the status of a local Kubernetes cluster": "", - "Gets the status of a local Kubernetes cluster.\n\tExit status contains the status of minikube's VM, cluster and Kubernetes encoded on it's bits in this order from right to left.\n\tEg: 7 meaning: 1 (for minikube NOK) + 2 (for cluster NOK) + 4 (for Kubernetes NOK)": "", - "Gets the value of PROPERTY_NAME from the minikube config file": "", - "Global Flags": "", - "Go template format string for the cache list output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#CacheListTemplate": "", - "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "", - "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "", - "Group ID: {{.groupID}}": "", + "Get or list the current profiles (clusters)": "Obtenir ou répertorier les profils actuels (clusters)", + "Gets the logs of the running instance, used for debugging minikube, not user code.": "Obtenir les journaux de l'instance en cours d'exécution, utilisés pour le débogage de minikube, pas le code utilisateur.", + "Gets the status of a local Kubernetes cluster": "Obtient l'état d'un cluster Kubernetes local", + "Gets the status of a local Kubernetes cluster.\n\tExit status contains the status of minikube's VM, cluster and Kubernetes encoded on it's bits in this order from right to left.\n\tEg: 7 meaning: 1 (for minikube NOK) + 2 (for cluster NOK) + 4 (for Kubernetes NOK)": "Obtient le statut d'un cluster Kubernetes local.\n\tLe statut de sortie contient le statut de la VM minikube, du cluster et de Kubernetes encodé sur ses bits dans cet ordre de droite à gauche.\n\tEx : 7 signifiant : 1 (pour minikube NOK) + 2 (pour le cluster NOK) + 4 (pour Kubernetes NOK)", + "Gets the value of PROPERTY_NAME from the minikube config file": "Obtient la valeur de PROPERTY_NAME à partir du fichier de configuration minikube", + "Global Flags": "Indicateurs globaux", + "Go template format string for the cache list output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#CacheListTemplate": "Chaîne de format de modèle Go pour la sortie de la liste de cache. Le format des modèles Go peut être trouvé ici : https://golang.org/pkg/text/template/\nPour la liste des variables accessibles pour le modèle, voir les valeurs de structure ici : https://godoc.org/k8s .io/minikube/cmd/minikube/cmd#CacheListTemplate", + "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "Go chaîne de format de modèle pour la sortie de la vue de configuration. Le format des modèles Go peut être trouvé ici : https://golang.org/pkg/text/template/\nPour la liste des variables accessibles pour le modèle, voir les valeurs de structure ici : https://godoc.org/k8s .io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate", + "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "Go chaîne de format de modèle pour la sortie d'état. Le format des modèles Go peut être trouvé ici : https://golang.org/pkg/text/template/\nPour la liste des variables accessibles pour le modèle, consultez les valeurs de structure ici : https://godoc.org/k8s. io/minikube/cmd/minikube/cmd#Status", + "Group ID: {{.groupID}}": "Identifiant du groupe: {{.groupID}}", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "Masque la signature de l'hyperviseur de l'invité dans minikube (pilote kvm2 uniquement).", - "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "", - "Hyperkit networking is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "", - "IP Address to use to expose ports (docker and podman driver only)": "", - "IP address (ssh driver only)": "", - "If present, writes to the provided file instead of stdout.": "", - "If set, automatically updates drivers to the latest version. Defaults to true.": "", - "If set, delete the current cluster if start fails and try again. Defaults to false.": "", - "If set, download tarball of preloaded images if available to improve start time. Defaults to true.": "", - "If set, force the container runtime to use systemd as cgroup manager. Defaults to false.": "", - "If set, install addons. Defaults to true.": "", - "If set, pause all namespaces": "", - "If set, unpause all namespaces": "", - "If the above advice does not help, please let us know:": "", - "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "", - "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --vm-driver=none.": "Si la valeur est \"true\", mettez les images Docker en cache pour l'amorceur actuel et chargez-les dans la machine. La valeur est toujours \"false\" avec --vm-driver=none.", + "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Hyperkit ne fonctionne pas. Mettez à niveau vers la dernière version d'hyperkit et/ou Docker for Desktop. Alternativement, vous pouvez choisir un autre --driver", + "Hyperkit networking is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Le réseau Hyperkit ne fonctionne pas. Mettez à niveau vers la dernière version d'hyperkit et/ou Docker for Desktop. Alternativement, vous pouvez choisir un autre --driver", + "IP Address to use to expose ports (docker and podman driver only)": "Adresse IP à utiliser pour exposer les ports (pilote docker et podman uniquement)", + "IP address (ssh driver only)": "Adresse IP (pilote ssh uniquement)", + "If present, writes to the provided file instead of stdout.": "S'il est présent, écrit dans le fichier fourni au lieu de la sortie standard.", + "If set, automatically updates drivers to the latest version. Defaults to true.": "Si défini, met automatiquement à jour les pilotes vers la dernière version. La valeur par défaut est true.", + "If set, delete the current cluster if start fails and try again. Defaults to false.": "Si défini, supprime le cluster actuel si le démarrage échoue et réessaye. La valeur par défaut est false.", + "If set, download tarball of preloaded images if available to improve start time. Defaults to true.": "Si défini, télécharge l'archive tar des images préchargées si disponibles pour améliorer le temps de démarrage. La valeur par défaut est true.", + "If set, force the container runtime to use systemd as cgroup manager. Defaults to false.": "S'il est défini, force l'environnement d'exécution du conteneur à utiliser systemd comme gestionnaire de groupe de contrôle. La valeur par défaut est false.", + "If set, install addons. Defaults to true.": "Si défini, installe les modules. La valeur par défaut est true.", + "If set, pause all namespaces": "Si défini, suspend tous les espaces de noms", + "If set, unpause all namespaces": "Si défini, annule la pause de tous les espaces de noms", + "If the above advice does not help, please let us know:": "Si les conseils ci-dessus ne vous aident pas, veuillez nous en informer :", + "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "Si vrai, met en cache les images Docker pour le programme d'amorçage actuel et les charge dans la machine. Toujours faux avec --driver=none.", + "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --vm-driver=none.": "Si la valeur est \"true\", met les images Docker en cache pour l'amorceur actuel et les charge dans la machine. La valeur est toujours \"false\" avec --vm-driver=none.", "If true, only download and cache files for later use - don't install or start anything.": "Si la valeur est \"true\", téléchargez les fichiers et mettez-les en cache uniquement pour une utilisation future. Ne lancez pas d'installation et ne commencez aucun processus.", - "If true, pods might get deleted and restarted on addon enable": "", - "If true, returns list of profiles faster by skipping validating the status of the cluster.": "", - "If true, the added node will be marked for work. Defaults to true.": "", - "If true, the node added will also be a control plane in addition to a worker.": "", - "If true, will perform potentially dangerous operations. Use with discretion.": "", - "If you are running minikube within a VM, consider using --driver=none:": "", - "If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "", - "If you don't want your credentials mounted into a specific pod, add a label with the `gcp-auth-skip-secret` key to your pod configuration.": "", - "If you want existing pods to be mounted with credentials, either recreate them or rerun addons enable with --refresh.": "", - "Ignoring empty custom image {{.name}}": "", - "Ignoring invalid pair entry {{.pair}}": "", - "Ignoring unknown custom image {{.name}}": "", - "Ignoring unknown custom registry {{.name}}": "", - "Images Commands:": "", - "Images used by this addon. Separated by commas.": "", - "In order to use the fall back image, you need to log in to the github packages registry": "", - "Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added.": "", + "If true, pods might get deleted and restarted on addon enable": "Si vrai, les pods peuvent être supprimés et redémarrés lors addon enable", + "If true, returns list of profiles faster by skipping validating the status of the cluster.": "Si vrai, renvoie la liste des profils plus rapidement en ignorant la validation de l'état du cluster.", + "If true, the added node will be marked for work. Defaults to true.": "Si vrai, le nœud ajouté sera marqué pour le travail. La valeur par défaut est true.", + "If true, the node added will also be a control plane in addition to a worker.": "Si vrai, le nœud ajouté sera également un plan de contrôle en plus d'un travailleur.", + "If true, will perform potentially dangerous operations. Use with discretion.": "Si vrai, effectuera des opérations potentiellement dangereuses. A utiliser avec discrétion.", + "If you are running minikube within a VM, consider using --driver=none:": "Si vous exécutez minikube dans une machine virtuelle, envisagez d'utiliser --driver=none", + "If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "Si vous êtes toujours intéressé à faire fonctionner le pilote {{.driver_name}}. Les suggestions suivantes pourraient vous aider à surmonter ce problème :", + "If you don't want your credentials mounted into a specific pod, add a label with the `gcp-auth-skip-secret` key to your pod configuration.": "Si vous ne voulez pas que vos informations d'identification soient montées dans un pod spécifique, ajoutez une étiquette avec la clé `gcp-auth-skip-secret` à votre configuration de pod.", + "If you want existing pods to be mounted with credentials, either recreate them or rerun addons enable with --refresh.": "Si vous souhaitez que les pods existants soient montés avec des informations d'identification, recréez-les ou réexécutez les modules complémentaires activés avec --refresh.", + "Ignoring empty custom image {{.name}}": "Ignorer l'image personnalisée vide {{.name}}", + "Ignoring invalid pair entry {{.pair}}": "Ignorer l'entrée de paire non valide {{.pair}}", + "Ignoring unknown custom image {{.name}}": "Ignorer l'image personnalisée inconnue {{.name}}", + "Ignoring unknown custom registry {{.name}}": "Ignorer le registre personnalisé inconnu {{.name}}", + "Images Commands:": "Commandes d'images:", + "Images used by this addon. Separated by commas.": "Images utilisées par ce module. Séparé par des virgules.", + "In order to use the fall back image, you need to log in to the github packages registry": "Pour utiliser l'image de secours, vous devez vous connecter au registre des packages github", + "Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added.": "Registres Docker non sécurisés à transmettre au démon Docker. La plage CIDR de service par défaut sera automatiquement ajoutée.", "Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added.": "Registres Docker non sécurisés à transmettre au daemon Docker. La plage CIDR par défaut du service sera ajoutée automatiquement.", - "Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "", - "Install the latest hyperkit binary, and run 'minikube delete'": "", - "Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "", - "Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "", - "Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "", - "It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "", - "Kill the mount process spawned by minikube start": "", - "Kubelet network plug-in to use (default: auto)": "", - "Kubernetes requires at least 2 CPU's to start": "", - "Kubernetes {{.new}} is now available. If you would like to upgrade, specify: --kubernetes-version={{.prefix}}{{.new}}": "", - "Kubernetes {{.version}} is not supported by this release of minikube": "", + "Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "Installez VirtualBox et assurez-vous qu'il est dans le chemin, ou sélectionnez une valeur alternative pour --driver", + "Install the latest hyperkit binary, and run 'minikube delete'": "Installez le dernier binaire hyperkit et exécutez 'minikube delete'", + "Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "Exécution de conteneur non valide : \"{{.runtime}}\". Les environnements d'exécution valides sont : {{.validOptions}}", + "Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "Istio a besoin de {{.minCPUs}} processeurs -- votre configuration n'alloue que {{.cpus}} processeurs", + "Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "Istio a besoin de {{.minMem}}Mo de mémoire -- votre configuration n'alloue que {{.memory}}Mo", + "It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "Il semble que vous exécutiez GCE, ce qui signifie que l'authentification devrait fonctionner sans le module GCP Auth. Si vous souhaitez toujours vous authentifier à l'aide d'un fichier d'informations d'identification, utilisez l'indicateur --force.", + "Kill the mount process spawned by minikube start": "Tuez le processus de montage généré par le démarrage de minikube", + "Kubelet network plug-in to use (default: auto)": "Plug-in réseau Kubelet à utiliser (par défaut : auto)", + "Kubernetes requires at least 2 CPU's to start": "Kubernetes nécessite au moins 2 processeurs pour démarrer", + "Kubernetes {{.new}} is now available. If you would like to upgrade, specify: --kubernetes-version={{.prefix}}{{.new}}": "Kubernetes {{.new}} est désormais disponible. Si vous souhaitez effectuer une mise à niveau, spécifiez : --kubernetes-version={{.prefix}}{{.new}}", + "Kubernetes {{.version}} is not supported by this release of minikube": "Kubernetes {{.version}} n'est pas pris en charge par cette version de minikube", "Launching Kubernetes ...": "Lancement de Kubernetes...", - "Launching proxy ...": "", - "List all available images from the local cache.": "", - "List existing minikube nodes.": "", - "List image names the addon w/ADDON_NAME used. For a list of available addons use: minikube addons list": "", - "List images": "", - "List nodes.": "", + "Launching proxy ...": "Lancement du proxy...", + "List all available images from the local cache.": "Répertoriez toutes les images disponibles à partir du cache local.", + "List existing minikube nodes.": "Répertoriez les nœuds minikube existants.", + "List image names the addon w/ADDON_NAME used. For a list of available addons use: minikube addons list": "Répertoriez les noms d'images que le module w/ADDON_NAME a utilisé. Pour une liste des modules disponibles, utilisez: minikube addons list", + "List images": "Lister les images", + "List nodes.": "Lister les nœuds.", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "Liste de ports VSock invités qui devraient être exposés comme sockets sur l'hôte (pilote hyperkit uniquement).", - "List of ports that should be exposed (docker and podman driver only)": "", - "Listening to 0.0.0.0 on external docker host {{.host}}. Please be advised": "", - "Listening to {{.listenAddr}}. This is not recommended and can cause a security vulnerability. Use at your own risk": "", - "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", - "Lists all minikube profiles.": "", - "Lists all valid default values for PROPERTY_NAME": "", - "Lists all valid minikube profiles and detects all possible invalid profiles.": "", - "Lists the URLs for the services in your local cluster": "", - "Load a image into minikube": "", + "List of ports that should be exposed (docker and podman driver only)": "Liste des ports qui doivent être exposés (pilote docker et podman uniquement)", + "Listening to 0.0.0.0 on external docker host {{.host}}. Please be advised": "Écoute de 0.0.0.0 sur l'hôte docker externe {{.host}}. Veuillez être informé", + "Listening to {{.listenAddr}}. This is not recommended and can cause a security vulnerability. Use at your own risk": "Écoute {{.listenAddr}}. Ceci n'est pas recommandé et peut entraîner une faille de sécurité. À utiliser à vos risques et périls", + "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "Répertorie tous les modules minikube disponibles ainsi que leurs statuts actuels (activé/désactivé)", + "Lists all minikube profiles.": "Répertorie tous les profils minikube.", + "Lists all valid default values for PROPERTY_NAME": "Répertorie toutes les valeurs par défaut valides pour PROPERTY_NAME", + "Lists all valid minikube profiles and detects all possible invalid profiles.": "Répertorie tous les profils minikube valides et détecte tous les profils invalides possibles.", + "Lists the URLs for the services in your local cluster": "Répertorie les URL des services de votre cluster local", + "Load a image into minikube": "Charger une image dans minikube", "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "Dossiers locaux à partager avec l'invité par des installations NFS (pilote hyperkit uniquement).", - "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", + "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "Proxy local ignoré : ne pas passer {{.name}}={{.value}} à docker env.", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "Emplacement du socket VPNKit exploité pour la mise en réseau. Si la valeur est vide, désactive Hyperkit VPNKitSock. Si la valeur affiche \"auto\", utilise la connexion VPNKit de Docker pour Mac. Sinon, utilise le VSock spécifié (pilote hyperkit uniquement).", + "Locations to fetch the minikube ISO from.": "Emplacements à partir desquels récupérer l'ISO minikube.", "Location of the minikube iso": "Emplacement de l'ISO minikube.", - "Locations to fetch the minikube ISO from.": "", - "Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'.": "", - "Log into the minikube environment (for debugging)": "", - "Manage images": "", - "Message Size: {{.size}}": "", - "Modify persistent configuration values": "", - "More information: https://docs.docker.com/engine/install/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities": "", - "Most users should use the newer 'docker' driver instead, which does not require root!": "", - "Mount type: {{.name}}": "", - "Mounting host path {{.sourcePath}} into VM as {{.destinationPath}} ...": "", - "Mounts the specified directory into minikube": "", - "Mounts the specified directory into minikube.": "", - "Multiple errors deleting profiles": "", - "Multiple minikube profiles were found - ": "", - "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", - "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", - "NOTE: This process must stay alive for the mount to be accessible ...": "", - "Networking and Connectivity Commands:": "", - "No IP address provided. Try specifying --ssh-ip-address, or see https://minikube.sigs.k8s.io/docs/drivers/ssh/": "", - "No changes required for the \"{{.context}}\" context": "", - "No minikube profile was found. ": "", - "No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/": "", - "No such addon {{.name}}": "", + "Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'.": "Connectez-vous ou exécutez une commande sur une machine avec SSH ; similaire à 'docker-machine ssh'."", + "Log into the minikube environment (for debugging)": "Connectez-vous à l'environnement minikube (pour le débogage)", + "Manage images": "Gérer les images", + "Message Size: {{.size}}": "Taille du message : {{.size}}", + "Modify persistent configuration values": "Modifier les valeurs de configuration persistantes", + "More information: https://docs.docker.com/engine/install/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities": "Plus d'informations: https://docs.docker.com/engine/install/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities", + "Most users should use the newer 'docker' driver instead, which does not require root!": "La plupart des utilisateurs devraient plutôt utiliser le nouveau pilote 'docker', qui ne nécessite pas de root !", + "Mount type: {{.name}}": "Type de montage : {{.name}}", + "Mounting host path {{.sourcePath}} into VM as {{.destinationPath}} ...": "Montage du chemin d'hôte {{.sourcePath}} dans la machine virtuelle en tant que {{.destinationPath}} ...", + "Mounts the specified directory into minikube": "Monte le répertoire spécifié dans minikube", + "Mounts the specified directory into minikube.": "Monte le répertoire spécifié dans minikube.", + "Multiple errors deleting profiles": "Plusieurs erreurs lors de la suppression des profils", + "Multiple minikube profiles were found - ": "Plusieurs profils minikube ont été trouvés -", + "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "Type de carte réseau utilisé pour le réseau hôte uniquement. Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM ou virtio (pilote virtualbox uniquement)", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "Type de carte réseau utilisé pour le réseau nat. Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM ou virtio (pilote virtualbox uniquement)", + "NOTE: This process must stay alive for the mount to be accessible ...": "REMARQUE : ce processus doit rester actif pour que le montage soit accessible...", + "Networking and Connectivity Commands:": "Commandes de mise en réseau et de connectivité :", + "No IP address provided. Try specifying --ssh-ip-address, or see https://minikube.sigs.k8s.io/docs/drivers/ssh/": "Aucune adresse IP fournie. Essayez de spécifier --ssh-ip-address, ou consultez https://minikube.sigs.k8s.io/docs/drivers/ssh/", + "No changes required for the \"{{.context}}\" context": "Aucune modification requise pour le contexte \"{{.context}}\"", + "No minikube profile was found. ": "Aucun profil minikube n'a été trouvé.", + "No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/": "Aucun pilote possible n'a été détecté. Essayez de spécifier --driver, ou consultez https://minikube.sigs.k8s.io/docs/start/", + "No such addon {{.name}}": "Aucun module de ce type {{.name}}", "Node \"{{.node_name}}\" stopped.": "Le noeud \"{{.node_name}}\" est arrêté.", - "Node {{.name}} failed to start, deleting and trying again.": "", - "Node {{.name}} was successfully deleted.": "", - "Node {{.nodeName}} does not exist.": "", - "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", + "Node {{.name}} failed to start, deleting and trying again.": "Le nœud {{.name}} n'a pas pu démarrer, suppression et réessai.", + "Node {{.name}} was successfully deleted.": "Le nœud {{.name}} a été supprimé avec succès.", + "Node {{.nodeName}} does not exist.": "Le nœud {{.nodeName}} n'existe pas.", + "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "Aucun des référentiels connus n'est accessible. Envisagez de spécifier un référentiel d'images alternatif avec l'indicateur --image-repository", "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "Aucun dépôt connu dans votre emplacement n'est accessible. {{.image_repository_name}} est utilisé comme dépôt de remplacement.", "None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "Aucun dépôt connu n'est accessible. Pensez à spécifier un autre dépôt d'images à l'aide de l'indicateur \"--image-repository\".", - "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", - "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", - "Number of CPUs allocated to Kubernetes.": "", + "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "Vous avez remarqué que vous avez un docker-env activé sur le pilote {{.driver_name}} dans ce terminal :", + "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "Vous avez remarqué que vous avez un pilote podman-env activé sur {{.driver_name}} dans ce terminal :", + "Number of CPUs allocated to Kubernetes.": "Nombre de processeurs alloués à Kubernetes.", "Number of CPUs allocated to the minikube VM": "Nombre de processeurs alloués à la VM minikube.", - "Number of lines back to go within the log": "", - "OS release is {{.pretty_name}}": "", - "One of 'yaml' or 'json'.": "", - "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", - "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", - "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", - "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", - "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "", - "Opening {{.url}} in your default browser...": "", - "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", - "Operations on nodes": "", - "Options: {{.options}}": "", - "Output format. Accepted values: [json]": "", - "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash_completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", - "Overwrite image even if same image:tag name exists": "", - "Path to the Dockerfile to use (optional)": "", - "Pause": "", - "Paused {{.count}} containers": "", - "Paused {{.count}} containers in: {{.namespaces}}": "", - "Pausing node {{.name}} ... ": "", - "Permissions: {{.octalMode}} ({{.writtenMode}})": "", - "Please attach the following file to the GitHub issue:": "", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", - "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", - "Please enter a value:": "", - "Please free up disk or prune images.": "", - "Please increse Desktop's disk size.": "", - "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", - "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", - "Please make sure the service you are looking for is deployed or is in the correct namespace.": "", - "Please provide a path or url to build": "", - "Please provide an image in your local daemon to load into minikube via \u003cminikube image load IMAGE_NAME\u003e": "", - "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", - "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", - "Please see {{.documentation_url}} for more details": "", - "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", - "Please specify the path to copy: \n\tminikube cp \u003csource file path\u003e \u003ctarget file absolute path\u003e (example: \"minikube cp a/b.txt /copied.txt\")": "", - "Please try purging minikube using `minikube delete --all --purge`": "", + "Number of lines back to go within the log": "Nombre de lignes à remonter dans le journal", + "OS release is {{.pretty_name}}": "La version du système d'exploitation est {{.pretty_name}}", + "One of 'yaml' or 'json'.": "Un parmi 'yaml' ou 'json'.", + "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "Seuls les caractères alphanumériques et les tirets '-' sont autorisés. Minimum 1 caractère, commençant par alphanumérique.", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "Seuls les caractères alphanumériques et les tirets '-' sont autorisés. Minimum 2 caractères, commençant par alphanumérique.", + "Open the addons URL with https instead of http": "Ouvrez l'URL des modules avec https au lieu de http", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "Ouvrez l'URL du service avec https au lieu de http (par défaut \\\"false\\\")", + "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "Ouverture du service Kubernetes {{.namespace_name}}/{{.service_name}} dans le navigateur par défaut...", + "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "Ouverture du service {{.namespace_name}}/{{.service_name}} dans le navigateur par défaut...", + "Opening {{.url}} in your default browser...": "Ouverture de {{.url}} dans votre navigateur par défaut...", + "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "Ouvre le module avec ADDON_NAME dans minikube (exemple : minikube addons open dashboard). Pour une liste des modules disponibles, utilisez: minikube addons list", + "Operations on nodes": "Opérations sur les nœuds", + "Options: {{.options}}": "Options: {{.options}}", + "Output format. Accepted values: [json]": "Format de sortie. Valeurs acceptées : [json]", + "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash_completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "Affiche la complétion du shell minikube pour le shell donné (bash, zsh ou fish)\n\n\tCela dépend du binaire bash-completion. Exemple d'instructions d'installation :\n\tOS X :\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # pour les utilisateurs bash\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # pour les utilisateurs zsh\n\t\t$ source ~/.minikube-completion\ n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # pour les utilisateurs de fish\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t \t$ source /etc/bash_completion\n\t\t$ source \u003c(minikube completion bash) # pour les utilisateurs bash\n\t\t$ source \u003c(minikube completion zsh) # pour les utilisateurs zsh\n\t \t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # pour les utilisateurs de fish\n\n\tDe plus, vous voudrez peut-être sortir la complétion dans un fichier et une source dans votre .bashrc\n\ n\tRemarque pour les utilisateurs de zsh : [1] les complétions zsh ne sont prises en charge que dans les versions de zsh \u003e= 5.2\n\tRemarque pour les utilisateurs de fish : [2] veuillez vous référer à cette documentation pour plus de détails https://fishshell.com/docs/current/#tab-completion\n", + "Overwrite image even if same image:tag name exists": "Écraser l'image même si la même image:balise existe", + "Path to the Dockerfile to use (optional)": "Chemin d'accès au Dockerfile à utiliser (facultatif)", + "Pause": "Pause", + "Paused {{.count}} containers": "{{.count}} conteneurs suspendus", + "Paused {{.count}} containers in: {{.namespaces}}": "{{.count}} conteneurs suspendus dans : {{.namespaces}}", + "Pausing node {{.name}} ... ": "Suspendre le nœud {{.name}} ...", + "Permissions: {{.octalMode}} ({{.writtenMode}})": "Autorisations : {{.octalMode}} ({{.writeMode}})", + "Please attach the following file to the GitHub issue:": "Veuillez joindre le fichier suivant au problème GitHub :", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "Veuillez créer un cluster avec une plus grande taille de disque : `minikube start --disk SIZE_MB`", + "Please either authenticate to the registry or use --base-image flag to use a different registry.": "Veuillez vous authentifier auprès du registre ou utiliser l'indicateur --base-image pour utiliser un registre différent.", + "Please enter a value:": "Entrer un nombre, SVP:", + "Please free up disk or prune images.": "Veuillez libérer le disque ou élaguer les images.", + "Please increse Desktop's disk size.": "Veuillez augmenter la taille du disque du bureau.", + "Please install the minikube hyperkit VM driver, or select an alternative --driver": "Veuillez installer le pilote minikube hyperkit VM, ou sélectionnez un --driver alternatif", + "Please install the minikube kvm2 VM driver, or select an alternative --driver": "Veuillez installer le pilote minikube kvm2 VM, ou sélectionnez un --driver alternatif", + "Please make sure the service you are looking for is deployed or is in the correct namespace.": "Veuillez vous assurer que le service que vous recherchez est déployé ou se trouve dans le bon espace de noms.", + "Please provide a path or url to build": "Veuillez fournir un chemin ou une URL à construire", + "Please provide an image in your local daemon to load into minikube via \u003cminikube image load IMAGE_NAME\u003e": "Veuillez fournir une image dans votre démon local à charger dans minikube via \u003cminikube image load IMAGE_NAME\u003e", + "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "Veuillez réévaluer votre docker-env, pour vous assurer que vos variables d'environnement ont des ports mis à jour :\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t", + "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "Veuillez réévaluer votre podman-env, pour vous assurer que vos variables d'environnement ont des ports mis à jour :\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t", + "Please see {{.documentation_url}} for more details": "Veuillez consulter {{.documentation_url}} pour plus de détails", + "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "Veuillez spécifier le répertoire à monter : \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (exemple : \"/host-home:/vm-home\")", + "Please specify the path to copy: \n\tminikube cp \u003csource file path\u003e \u003ctarget file absolute path\u003e (example: \"minikube cp a/b.txt /copied.txt\")": "Veuillez spécifier le chemin à copier : \n\tminikube cp \u003cchemin du fichier source\u003e \u003cchemin absolu du fichier cible\u003e (exemple : \"minikube cp a/b.txt /copied.txt\")", + "Please try purging minikube using `minikube delete --all --purge`": "Veuillez essayer de purger minikube en utilisant `minikube delete --all --purge`", "Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "Veuillez mettre à niveau l'exécutable \"{{.driver_executable}}\". {{.documentation_url}}", - "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", - "Populates the specified folder with documentation in markdown about minikube": "", - "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", + "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "Veuillez visiter le lien suivant pour la documentation à ce sujet : \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with -github-packages#authentiating-to-github-packages\n", + "Populates the specified folder with documentation in markdown about minikube": "Remplit le dossier spécifié avec la documentation en markdown sur minikube", + "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "PowerShell s'exécute en mode contraint, ce qui est incompatible avec les scripts Hyper-V.", "Powering off \"{{.profile_name}}\" via SSH ...": "Mise hors tension du profil \"{{.profile_name}}\" via SSH…", "Preparing Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}} ...": "Préparation de Kubernetes {{.k8sVersion}} sur {{.runtime}} {{.runtimeVersion}}...", - "Print current and latest version number": "", - "Print just the version number.": "", - "Print the version of minikube": "", - "Print the version of minikube.": "", - "Problems detected in {{.entry}}:": "", - "Problems detected in {{.name}}:": "", - "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "", - "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "", - "Profile name '{{.name}}' is duplicated with machine name '{{.machine}}' in profile '{{.profile}}'": "", - "Profile name '{{.name}}' is not valid": "", - "Profile name '{{.profilename}}' is not valid": "", - "Profile name should be unique": "", + "Print current and latest version number": "Imprimer le numéro de version actuel et le plus récent", + "Print just the version number.": "Imprimez uniquement le numéro de version.", + "Print the version of minikube": "Imprimer la version de minikube", + "Print the version of minikube.": "Imprimez la version de minikube.", + "Problems detected in {{.entry}}:": "Problèmes détectés dans {{.entry}} :", + "Problems detected in {{.name}}:": "Problèmes détectés dans {{.name}} :", + "Profile \"{{.cluster}}\" not found. Run \"minikube profile list\" to view all profiles.": "Profil \"{{.cluster}}\" introuvable. Exécutez \"minikube profile list\" pour afficher tous les profils.", + "Profile name \"{{.profilename}}\" is reserved keyword. To delete this profile, run: \"{{.cmd}}\"": "Le nom du profil \"{{.profilename}}\" est un mot-clé réservé. Pour supprimer ce profil, exécutez : \"{{.cmd}}\"", + "Profile name '{{.name}}' is duplicated with machine name '{{.machine}}' in profile '{{.profile}}'": "Le nom de profil '{{.name}}' est dupliqué avec le nom de machine '{{.machine}}' dans le profil '{{.profile}}'", + "Profile name '{{.name}}' is not valid": "Le nom de profil '{{.name}}' n'est pas valide", + "Profile name '{{.profilename}}' is not valid": "Le nom de profil '{{.profilename}}' n'est pas valide", + "Profile name should be unique": "Le nom du profil doit être unique", "Provide VM UUID to restore MAC address (hyperkit driver only)": "Fournit l'identifiant unique universel (UUID) de la VM pour restaurer l'adresse MAC (pilote hyperkit uniquement).", - "Pull the remote image (no caching)": "", - "Pulling base image ...": "", + "Pull the remote image (no caching)": "Extraire l'image distante (pas de mise en cache)", + "Pulling base image ...": "Extraction de l'image de base...", "Pulling images ...": "Extraction des images... ", - "Push the new image (requires tag)": "", - "Reboot to complete VirtualBox installation, verify that VirtualBox is not blocked by your system, and/or use another hypervisor": "", - "Rebuild libvirt with virt-network support": "", - "Received {{.name}} signal": "", - "Registries used by this addon. Separated by commas.": "", - "Registry addon with {{.driver}} driver uses port {{.port}} please use that instead of default port 5000": "", + "Push the new image (requires tag)": "Pousser la nouvelle image (nécessite une balise)", + "Reboot to complete VirtualBox installation, verify that VirtualBox is not blocked by your system, and/or use another hypervisor": "Redémarrez pour terminer l'installation de VirtualBox, vérifiez que VirtualBox n'est pas bloqué par votre système et/ou utilisez un autre hyperviseur", + "Rebuild libvirt with virt-network support": "Reconstruire libvirt avec le support de virt-network", + "Received {{.name}} signal": "Signal {{.name}} reçu", + "Registries used by this addon. Separated by commas.": "Registres utilisés par ce module. Séparé par des virgules.", + "Registry addon with {{.driver}} driver uses port {{.port}} please use that instead of default port 5000": "Le module complémentaire de registre avec le pilote {{.driver}} utilise le port {{.port}}, veuillez l'utiliser au lieu du port par défaut 5000", "Registry mirrors to pass to the Docker daemon": "Miroirs de dépôt à transmettre au daemon Docker.", - "Reinstall VirtualBox and reboot. Alternatively, try the kvm2 driver: https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/": "", - "Reinstall VirtualBox and verify that it is not blocked: System Preferences -\u003e Security \u0026 Privacy -\u003e General -\u003e Some system software was blocked from loading": "", - "Related issue: {{.url}}": "", - "Related issues:": "", + "Reinstall VirtualBox and reboot. Alternatively, try the kvm2 driver: https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/": "Réinstallez VirtualBox et redémarrez. Sinon, essayez le pilote kvm2 : https://minikube.sigs.k8s.io/docs/reference/drivers/kvm2/", + "Reinstall VirtualBox and verify that it is not blocked: System Preferences -\u003e Security \u0026 Privacy -\u003e General -\u003e Some system software was blocked from loading": "Réinstallez VirtualBox et vérifiez qu'il n'est pas bloqué : Préférences Système -\u003e Sécurité \u0026 Confidentialité -\u003e Général -\u003e Le chargement de certains logiciels système a été bloqué", + "Related issue: {{.url}}": "Problème connexe : {{.url}}", + "Related issues:": "Problème connexe : {{.url}}", "Relaunching Kubernetes using {{.bootstrapper}} ...": "Redémarrage de Kubernetes à l'aide de {{.bootstrapper}}…", - "Remove one or more images": "", - "Remove the invalid --docker-opt or --insecure-registry flag if one was provided": "", + "Remove one or more images": "Supprimer une ou plusieurs images", + "Remove the invalid --docker-opt or --insecure-registry flag if one was provided": "Supprimez l'indicateur --docker-opt ou --insecure-registry non valide s'il a été fourni", "Removed all traces of the \"{{.name}}\" cluster.": "Le cluster \"{{.name}}\" a été supprimé.", "Removing {{.directory}} ...": "Suppression du répertoire {{.directory}}…", - "Requested cpu count {{.requested_cpus}} is greater than the available cpus of {{.avail_cpus}}": "", - "Requested cpu count {{.requested_cpus}} is less than the minimum allowed of {{.minimum_cpus}}": "", + "Requested cpu count {{.requested_cpus}} is greater than the available cpus of {{.avail_cpus}}": "Le nombre de processeurs demandés {{.requested_cpus}} est supérieur au nombre de processeurs disponibles de {{.avail_cpus}}", + "Requested cpu count {{.requested_cpus}} is less than the minimum allowed of {{.minimum_cpus}}": "Le nombre de processeurs demandés {{.requested_cpus}} est inférieur au minimum autorisé de {{.minimum_cpus}}", "Requested disk size {{.requested_size}} is less than minimum of {{.minimum_size}}": "La taille de disque demandée ({{.requested_size}}) est inférieure à la taille minimale ({{.minimum_size}}).", "Requested memory allocation ({{.memory}}MB) is less than the default memory allocation of {{.default_memorysize}}MB. Beware that minikube might not work correctly or crash unexpectedly.": "L'allocation de mémoire demandée ({{.memory}} Mo) est inférieure à l'allocation de mémoire par défaut ({{.default_memorysize}} Mo). Sachez que minikube pourrait ne pas fonctionner correctement ou planter de manière inattendue.", - "Requested memory allocation ({{.requested}}MB) is less than the recommended minimum {{.recommend}}MB. Deployments may fail.": "", + "Requested memory allocation ({{.requested}}MB) is less than the recommended minimum {{.recommend}}MB. Deployments may fail.": "L'allocation de mémoire demandée ({{.requested}} Mo) est inférieure au minimum recommandé de {{.recommend}} Mo. Les déploiements peuvent échouer.", "Requested memory allocation {{.requested_size}} is less than the minimum allowed of {{.minimum_size}}": "L'allocation de mémoire demandée ({{.requested_size}}) est inférieure au minimum autorisé ({{.minimum_size}}).", - "Requested memory allocation {{.requested}}MB is more than your system limit {{.system_limit}}MB.": "", - "Requested memory allocation {{.requested}}MiB is less than the usable minimum of {{.minimum_memory}}MB": "", - "Reset Docker to factory defaults": "", - "Restart Docker": "", - "Restart Docker, Ensure docker is running and then run: 'minikube delete' and then 'minikube start' again": "", - "Restarting existing {{.driver_name}} {{.machine_type}} for \"{{.cluster}}\" ...": "", - "Restarting the {{.name}} service may improve performance.": "", - "Retrieve the ssh host key of the specified node": "", - "Retrieve the ssh host key of the specified node.": "", - "Retrieve the ssh identity key path of the specified node": "", - "Retrieve the ssh identity key path of the specified node, and writes it to STDOUT.": "", - "Retrieves the IP address of the running cluster, checks it\n\t\t\twith IP in kubeconfig, and corrects kubeconfig if incorrect.": "", - "Retrieves the IP address of the specified node": "", - "Retrieves the IP address of the specified node, and writes it to STDOUT.": "", - "Returns a URL to connect to a service": "", - "Returns logs to debug a local Kubernetes cluster": "", - "Returns the Kubernetes URL for a service in your local cluster. In the case of multiple URLs they will be printed one at a time.": "", - "Returns the value of PROPERTY_NAME from the minikube config file. Can be overwritten at runtime by flags or environmental variables.": "", - "Right-click the PowerShell icon and select Run as Administrator to open PowerShell in elevated mode.": "", - "Run 'kubectl describe pod coredns -n kube-system' and check for a firewall or DNS conflict": "", - "Run 'minikube delete' to delete the stale VM, or and ensure that minikube is running as the same user you are issuing this command with": "", - "Run 'sudo sysctl fs.protected_regular=0', or try a driver which does not require root, such as '--driver=docker'": "", - "Run a kubectl binary matching the cluster version": "", - "Run minikube from the C: drive.": "", - "Run the Kubernetes client, download it if necessary. Remember -- after kubectl!\n\nThis will run the Kubernetes client (kubectl) with the same version as the cluster\n\nNormally it will download a binary matching the host operating system and architecture,\nbut optionally you can also run it directly on the control plane over the ssh connection.\nThis can be useful if you cannot run kubectl locally for some reason, like unsupported\nhost. Please be aware that when using --ssh all paths will apply to the remote machine.": "", - "Run: 'Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Tools-All'": "", - "Run: 'kubectl delete clusterrolebinding kubernetes-dashboard'": "", - "Run: 'minikube delete --all' to clean up all the abandoned networks.": "", - "Run: 'sudo chown $USER $HOME/.kube/config \u0026\u0026 chmod 600 $HOME/.kube/config'": "", - "Run: 'sudo mkdir /sys/fs/cgroup/systemd \u0026\u0026 sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd'": "", - "Running on localhost (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "", - "Running remotely (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "", - "SSH key (ssh driver only)": "", - "SSH port (ssh driver only)": "", - "SSH user (ssh driver only)": "", - "Select a valid value for --dnsdomain": "", - "Send trace events. Options include: [gcp]": "", - "Service '{{.service}}' was not found in '{{.namespace}}' namespace.\nYou may select another namespace by using 'minikube service {{.service}} -n \u003cnamespace\u003e'. Or list out all the services using 'minikube service list'": "", - "Set failed": "", - "Set flag to delete all profiles": "", - "Set flag to stop all profiles (clusters)": "", - "Set flag to stop cluster after a set amount of time (e.g. --schedule=5m)": "", - "Set this flag to delete the '.minikube' folder from your user directory.": "", - "Sets an individual value in a minikube config file": "", - "Sets the PROPERTY_NAME config value to PROPERTY_VALUE\n\tThese values can be overwritten by flags or environment variables at runtime.": "", - "Sets up docker env variables; similar to '$(docker-machine env)'.": "", - "Sets up podman env variables; similar to '$(podman-machine env)'.": "", - "Setting profile failed": "", - "Show a list of global command-line options (applies to all commands).": "", - "Show only log entries which point to known problems": "", - "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "", - "Simulate numa node count in minikube, supported numa node count range is 1-8 (kvm2 driver only)": "", - "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "", - "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "", - "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "", - "Sorry, completion support is not yet implemented for {{.name}}": "", - "Sorry, please set the --output flag to one of the following valid options: [text,json]": "", - "Sorry, the IP provided with the --listen-address flag is invalid: {{.listenAddr}}.": "", - "Sorry, the address provided with the --insecure-registry flag is invalid: {{.addr}}. Expected formats are: \u003cip\u003e[:\u003cport\u003e], \u003chostname\u003e[:\u003cport\u003e] or \u003cnetwork\u003e/\u003cnetmask\u003e": "", + "Requested memory allocation {{.requested}}MB is more than your system limit {{.system_limit}}MB.": "L'allocation de mémoire demandée {{.requested}} Mo est supérieure à la limite de votre système {{.system_limit}} Mo.", + "Requested memory allocation {{.requested}}MiB is less than the usable minimum of {{.minimum_memory}}MB": "L'allocation de mémoire demandée {{.requested}} Mio est inférieure au minimum utilisable de {{.minimum_memory}} Mo", + "Reset Docker to factory defaults": "Réinitialiser Docker aux paramètres d'usine", + "Restart Docker": "Redémarrer Docker", + "Restart Docker, Ensure docker is running and then run: 'minikube delete' and then 'minikube start' again": "Redémarrez Docker, assurez-vous que docker est en cours d'exécution, puis exécutez : 'minikube delete' puis 'minikube start' à nouveau", + "Restarting existing {{.driver_name}} {{.machine_type}} for \"{{.cluster}}\" ...": "Redémarrage du {{.driver_name}} {{.machine_type}} existant pour \"{{.cluster}}\" ...", + "Restarting the {{.name}} service may improve performance.": "Le redémarrage du service {{.name}} peut améliorer les performances.", + "Retrieve the ssh host key of the specified node": "Récupérer la clé d'hôte ssh du nœud spécifié", + "Retrieve the ssh host key of the specified node.": "Récupérez la clé d'hôte ssh du nœud spécifié.", + "Retrieve the ssh identity key path of the specified node": "Récupérer le chemin de la clé d'identité ssh du nœud spécifié", + "Retrieve the ssh identity key path of the specified node, and writes it to STDOUT.": "Récupérez le chemin de la clé d'identité ssh du nœud spécifié et l'écrit dans la sortie standard.", + "Retrieves the IP address of the running cluster, checks it\n\t\t\twith IP in kubeconfig, and corrects kubeconfig if incorrect.": "Récupère l'adresse IP du cluster en cours d'exécution, la vérifie\n\t\t\tavec l'adresse IP dans kubeconfig et corrige kubeconfig si elle est incorrecte.", + "Retrieves the IP address of the specified node": "Récupère l'adresse IP du nœud spécifié", + "Retrieves the IP address of the specified node, and writes it to STDOUT.": "Récupère l'adresse IP du nœud spécifié et l'écrit dans la sortie standard.", + "Returns a URL to connect to a service": "Renvoie une URL pour se connecter à un service", + "Returns logs to debug a local Kubernetes cluster": "Renvoie les journaux pour déboguer un cluster Kubernetes local", + "Returns the Kubernetes URL for a service in your local cluster. In the case of multiple URLs they will be printed one at a time.": "Renvoie l'URL Kubernetes d'un service de votre cluster local. Dans le cas de plusieurs URL, elles seront imprimées une à la fois.", + "Returns the value of PROPERTY_NAME from the minikube config file. Can be overwritten at runtime by flags or environmental variables.": "Renvoie la valeur de PROPERTY_NAME à partir du fichier de configuration minikube. Peut être écrasé à l'exécution par des indicateurs ou des variables d'environnement.", + "Right-click the PowerShell icon and select Run as Administrator to open PowerShell in elevated mode.": "Cliquez avec le bouton droit sur l'icône PowerShell et sélectionnez Exécuter en tant qu'administrateur pour ouvrir PowerShell en mode élevé.", + "Run 'kubectl describe pod coredns -n kube-system' and check for a firewall or DNS conflict": "Exécutez 'kubectl describe pod coredns -n kube-system' et recherchez un pare-feu ou un conflit DNS", + "Run 'minikube delete' to delete the stale VM, or and ensure that minikube is running as the same user you are issuing this command with": "Exécutez 'minikube delete' pour supprimer la machine virtuelle obsolète ou assurez-vous que minikube s'exécute en tant qu'utilisateur avec lequel vous exécutez cette commande", + "Run 'sudo sysctl fs.protected_regular=0', or try a driver which does not require root, such as '--driver=docker'": "Exécutez 'sudo sysctl fs.protected_regular=0', ou essayez un pilote qui ne nécessite pas de root, tel que '--driver=docker'", + "Run a kubectl binary matching the cluster version": "Exécuter un binaire kubectl correspondant à la version du cluster", + "Run minikube from the C: drive.": "Exécutez minikube à partir du lecteur C:.", + "Run the Kubernetes client, download it if necessary. Remember -- after kubectl!\n\nThis will run the Kubernetes client (kubectl) with the same version as the cluster\n\nNormally it will download a binary matching the host operating system and architecture,\nbut optionally you can also run it directly on the control plane over the ssh connection.\nThis can be useful if you cannot run kubectl locally for some reason, like unsupported\nhost. Please be aware that when using --ssh all paths will apply to the remote machine.": "Exécutez le client Kubernetes, téléchargez-le si nécessaire. N'oubliez pas -- après kubectl !\n\nCela exécutera le client Kubernetes (kubectl) avec la même version que le cluster\n\nNormalement, il téléchargera un binaire correspondant au système d'exploitation et à l'architecture de l'hôte,\nmais vous pouvez également l'exécuter en option directement sur le plan de contrôle via la connexion ssh.\nCela peut être utile si vous ne pouvez pas exécuter kubectl localement pour une raison quelconque, comme un hôte non pris en charge. Veuillez noter que lors de l'utilisation de --ssh, tous les chemins s'appliqueront à la machine distante.", + "Run: 'Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Tools-All'": "Exécutez : 'Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Tools-All'", + "Run: 'kubectl delete clusterrolebinding kubernetes-dashboard'": "Exécutez : 'kubectl delete clusterrolebinding kubernetes-dashboard'", + "Run: 'minikube delete --all' to clean up all the abandoned networks.": "Exécutez : 'minikube delete --all' pour nettoyer tous les réseaux abandonnés.", + "Run: 'sudo chown $USER $HOME/.kube/config \u0026\u0026 chmod 600 $HOME/.kube/config'": "Exécutez : 'sudo chown $USER $HOME/.kube/config \u0026\u0026 chmod 600 $HOME/.kube/config'", + "Run: 'sudo mkdir /sys/fs/cgroup/systemd \u0026\u0026 sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd'": "Exécutez : 'sudo mkdir /sys/fs/cgroup/systemd \u0026\u0026 sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd'", + "Running on localhost (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "Exécution sur localhost (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}Mo, Disk={{.disk_size}}Mo) ...", + "Running remotely (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "Exécution à distance (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}Mo, Disk={{.disk_size}}Mo) ...", + "SSH key (ssh driver only)": "Clé SSH (pilote ssh uniquement)", + "SSH port (ssh driver only)": "Port SSH (pilote ssh uniquement)", + "SSH user (ssh driver only)": "Utilisateur SSH (pilote ssh uniquement)", + "Select a valid value for --dnsdomain": "Sélectionnez une valeur valide pour --dnsdomain", + "Send trace events. Options include: [gcp]": "Envoyer des événements de trace. Les options incluent : [gcp]", + "Service '{{.service}}' was not found in '{{.namespace}}' namespace.\nYou may select another namespace by using 'minikube service {{.service}} -n \u003cnamespace\u003e'. Or list out all the services using 'minikube service list'": "Le service '{{.service}}' n'a pas été trouvé dans l'espace de noms '{{.namespace}}'.\nVous pouvez sélectionner un autre espace de noms en utilisant 'minikube service {{.service}} -n \u003cnamespace\u003e'. Ou répertoriez tous les services à l'aide de 'minikube service list'", + "Set failed": "Échec de la définition", + "Set flag to delete all profiles": "Définir un indicateur pour supprimer tous les profils", + "Set flag to stop all profiles (clusters)": "Définir un indicateur pour arrêter tous les profils (clusters)", + "Set flag to stop cluster after a set amount of time (e.g. --schedule=5m)": "Définir un indicateur pour arrêter le cluster après un laps de temps défini (par exemple, --schedule=5m)", + "Set this flag to delete the '.minikube' folder from your user directory.": "Définissez cet indicateur pour supprimer le dossier '.minikube' de votre répertoire utilisateur.", + "Sets an individual value in a minikube config file": "Définit une valeur individuelle dans un fichier de configuration minikube", + "Sets the PROPERTY_NAME config value to PROPERTY_VALUE\n\tThese values can be overwritten by flags or environment variables at runtime.": "Définit la valeur de configuration PROPERTY_NAME sur PROPERTY_VALUE\n\tCes valeurs peuvent être écrasées par des indicateurs ou des variables d'environnement lors de l'exécution.", + "Sets up docker env variables; similar to '$(docker-machine env)'.": "Configure les variables d'environnement docker ; similaire à '$(docker-machine env)'.", + "Sets up podman env variables; similar to '$(podman-machine env)'.": "Configure les variables d'environnement podman ; similaire à '$(podman-machine env)'.", + "Setting profile failed": "Échec de la définition du profil", + "Show a list of global command-line options (applies to all commands).": "Affiche une liste des options de ligne de commande globales (s'applique à toutes les commandes).", + "Show only log entries which point to known problems": "Afficher uniquement les entrées de journal qui pointent vers des problèmes connus", + "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "Affichez uniquement les entrées de journal les plus récentes et imprimez en continu de nouvelles entrées au fur et à mesure qu'elles sont ajoutées au journal.", + "Simulate numa node count in minikube, supported numa node count range is 1-8 (kvm2 driver only)": "Simulez le nombre de nœuds numa dans minikube, la plage de nombre de nœuds numa pris en charge est de 1 à 8 (pilote kvm2 uniquement)", + "Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "Changement de contexte kubectl ignoré pour {{.profile_name}} car --keep-context a été défini.", + "Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "Certaines fonctionnalités du tableau de bord nécessitent le module metrics-server. Pour activer toutes les fonctionnalités, veuillez exécuter :\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n", + "Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "Désolé, Kubernetes {{.k8sVersion}} nécessite que conntrack soit installé dans le chemin de la racine", + "Sorry, completion support is not yet implemented for {{.name}}": "Désolé, la prise en charge de la complétion n'est pas encore implémentée pour {{.name}}", + "Sorry, please set the --output flag to one of the following valid options: [text,json]": "Désolé, veuillez définir l'indicateur --output sur l'une des options valides suivantes : [text,json]", + "Sorry, the IP provided with the --listen-address flag is invalid: {{.listenAddr}}.": "Désolé, l'adresse IP fournie avec l'indicateur --listen-address n'est pas valide : {{.listenAddr}}.", + "Sorry, the address provided with the --insecure-registry flag is invalid: {{.addr}}. Expected formats are: \u003cip\u003e[:\u003cport\u003e], \u003chostname\u003e[:\u003cport\u003e] or \u003cnetwork\u003e/\u003cnetmask\u003e": "Désolé, l'adresse fournie avec l'indicateur --insecure-registry n'est pas valide : {{.addr}}. Les formats attendus sont : \u003cip\u003e[:\u003cport\u003e], \u003chostname\u003e[:\u003cport\u003e] ou \u003cnetwork\u003e/\u003cnetmask\u003e", "Sorry, the kubeadm.{{.parameter_name}} parameter is currently not supported by --extra-config": "Désolé, le paramètre kubeadm.{{.parameter_name}} ne peut actuellement pas être utilisé avec \"--extra-config\".", "Sorry, the url provided with the --registry-mirror flag is invalid: {{.url}}": "Désolé, l'URL fournie avec l'indicateur \"--registry-mirror\" n'est pas valide : {{.url}}", - "Sorry, {{.driver}} does not allow mounts to be changed after container creation (previous mount: '{{.old}}', new mount: '{{.new}})'": "", - "Source {{.path}} can not be empty": "", - "Specified Kubernetes version {{.specified}} is less than the oldest supported version: {{.oldest}}": "", - "Specify --kubernetes-version in v\u003cmajor\u003e.\u003cminor.\u003cbuild\u003e form. example: 'v1.1.14'": "", - "Specify an alternate --host-only-cidr value, such as 172.16.0.1/24": "", + "Sorry, {{.driver}} does not allow mounts to be changed after container creation (previous mount: '{{.old}}', new mount: '{{.new}})'": "Désolé, {{.driver}} n'autorise pas la modification des montages après la création du conteneur (montage précédent : '{{.old}}', nouveau montage : '{{.new}})'", + "Source {{.path}} can not be empty": "La source {{.path}} ne peut pas être vide", + "Specified Kubernetes version {{.specified}} is less than the oldest supported version: {{.oldest}}": "La version spécifiée de Kubernetes {{.specified}} est inférieure à la plus ancienne version prise en charge : {{.oldest}}", + "Specify --kubernetes-version in v\u003cmajor\u003e.\u003cminor.\u003cbuild\u003e form. example: 'v1.1.14'": "Spécifiez --kubernetes-version avec la forme v\u003cmajor\u003e.\u003cminor.\u003cbuild\u003e. exemple : 'v1.1.14'", + "Specify an alternate --host-only-cidr value, such as 172.16.0.1/24": "Spécifiez une autre valeur --host-only-cidr, telle que 172.16.0.1/24", "Specify arbitrary flags to pass to the Docker daemon. (format: key=value)": "Spécifie des indicateurs arbitraires à transmettre au daemon Docker (format : clé = valeur).", - "Specify arbitrary flags to pass to the build. (format: key=value)": "", - "Specify the 9p version that the mount should use": "", - "Specify the ip that the mount should be setup on": "", - "Specify the mount filesystem type (supported types: 9p)": "", - "StartHost failed, but will try again: {{.error}}": "", + "Specify arbitrary flags to pass to the build. (format: key=value)": "Spécifiez des indicateurs arbitraires à transmettre au build. (format : clé=valeur)", + "Specify the 9p version that the mount should use": "Spécifiez la version 9p que la montage doit utiliser", + "Specify the ip that the mount should be setup on": "Spécifiez l'adresse IP sur laquelle le montage doit être configuré", + "Specify the mount filesystem type (supported types: 9p)": "Spécifiez le type de système de fichiers de montage (types pris en charge : 9p)", + "StartHost failed, but will try again: {{.error}}": "StartHost a échoué, mais va réessayer : {{.error}}", "Starting control plane node {{.name}} in cluster {{.cluster}}": "Démarrage du noeud de plan de contrôle {{.name}} dans le cluster {{.cluster}}", "Starting node {{.name}} in cluster {{.cluster}}": "Démarrage du noeud {{.name}} dans le cluster {{.cluster}}", - "Starting tunnel for service {{.service}}.": "", - "Starts a local Kubernetes cluster": "", + "Starting tunnel for service {{.service}}.": "Tunnel de démarrage pour le service {{.service}}.", + "Starts a local Kubernetes cluster": "Démarre un cluster Kubernetes local", "Starts a local kubernetes cluster": "Démarre un cluster Kubernetes local.", - "Starts a node.": "", - "Starts an existing stopped node in a cluster.": "", - "Startup with {{.old_driver}} driver failed, trying with alternate driver {{.new_driver}}: {{.error}}": "", + "Starts a node.": "Démarre un nœud.", + "Starts an existing stopped node in a cluster.": "Démarre un nœud arrêté existant dans un cluster.", + "Startup with {{.old_driver}} driver failed, trying with alternate driver {{.new_driver}}: {{.error}}": "Échec du démarrage avec le pilote {{.old_driver}}, essai avec un autre pilote {{.new_driver}} : {{.error}}", "Stopping \"{{.profile_name}}\" in {{.driver_name}} ...": "Arrêt de \"{{.profile_name}}\" sur {{.driver_name}}...", - "Stopping node \"{{.name}}\" ...": "", - "Stopping tunnel for service {{.service}}.": "", - "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "", - "Stops a node in a cluster.": "", - "Stops a running local Kubernetes cluster": "", - "Successfully added {{.name}} to {{.cluster}}!": "", - "Successfully deleted all profiles": "", - "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "", - "Successfully purged minikube directory located at - [{{.minikubeDirectory}}]": "", - "Successfully started node {{.name}}!": "", - "Successfully stopped node {{.name}}": "", - "Suggestion: {{.advice}}": "", - "System only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", - "Tag to apply to the new image (optional)": "", - "Target directory {{.path}} must be an absolute path": "", - "Target {{.path}} can not be empty": "", - "Test docs have been saved at - {{.path}}": "", + "Stopping node \"{{.name}}\" ...": "Nœud d'arrêt \"{{.name}}\" ...", + "Stopping tunnel for service {{.service}}.": "Tunnel d'arrêt pour le service {{.service}}.", + "Stops a local Kubernetes cluster. This command stops the underlying VM or container, but keeps user data intact. The cluster can be started again with the \"start\" command.": "Arrête un cluster Kubernetes local. Cette commande arrête la VM ou le conteneur sous-jacent, mais conserve les données utilisateur intactes. Le cluster peut être redémarré avec la commande \"start\".", + "Stops a node in a cluster.": "Arrête un nœud dans un cluster.", + "Stops a running local Kubernetes cluster": "Arrête un cluster Kubernetes local en cours d'exécution", + "Successfully added {{.name}} to {{.cluster}}!": "{{.name}} a été ajouté avec succès à {{.cluster}} !", + "Successfully deleted all profiles": "Tous les profils ont été supprimés avec succès", + "Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "{{.sourcePath}} monté avec succès sur {{.destinationPath}}", + "Successfully purged minikube directory located at - [{{.minikubeDirectory}}]": "Répertoire minikube purgé avec succès situé à - [{{.minikubeDirectory}}]", + "Successfully started node {{.name}}!": "Nœud {{.name}} démarré avec succès !", + "Successfully stopped node {{.name}}": "Nœud {{.name}} arrêté avec succès", + "Suggestion: {{.advice}}": "Suggestion : {{.advice}}", + "System only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "Le système n'a que {{.size}} Mio disponibles, moins que les {{.req}} Mio requis pour Kubernetes", + "Tag to apply to the new image (optional)": "Tag à appliquer à la nouvelle image (facultatif)", + "Target directory {{.path}} must be an absolute path": "Le répertoire cible {{.path}} doit être un chemin absolu", + "Target {{.path}} can not be empty": "La cible {{.path}} ne peut pas être vide", + "Test docs have been saved at - {{.path}}": "Les documents de test ont été enregistrés à - {{.path}}", "The \"{{.driver_name}}\" driver requires root privileges. Please run minikube using 'sudo minikube --vm-driver={{.driver_name}}": "Le pilote \"{{.driver_name}}\" nécessite de disposer de droits racine. Veuillez exécuter minikube à l'aide de \"sudo minikube --vm-driver={{.driver_name}}\".", - "The \"{{.driver_name}}\" driver should not be used with root privileges.": "", - "The 'none' driver is designed for experts who need to integrate with an existing VM": "", + "The \"{{.driver_name}}\" driver should not be used with root privileges.": "Le pilote \"{{.driver_name}}\" ne doit pas être utilisé avec les privilèges root.", + "The 'none' driver is designed for experts who need to integrate with an existing VM": "Le pilote 'none' est conçu pour les experts qui doivent s'intégrer à une machine virtuelle existante", "The 'none' driver provides limited isolation and may reduce system security and reliability.": "L'isolation fournie par le pilote \"none\" (aucun) est limitée, ce qui peut diminuer la sécurité et la fiabilité du système.", - "The '{{.addonName}}' addon is enabled": "", - "The '{{.driver}}' driver requires elevated permissions. The following commands will be executed:\\n\\n{{ .example }}\\n": "", - "The '{{.driver}}' provider was not found: {{.error}}": "", - "The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "", - "The '{{.name}}' driver does not respect the --cpus flag": "", - "The '{{.name}}' driver does not respect the --memory flag": "", - "The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "", - "The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "", + "The '{{.addonName}}' addon is enabled": "Le module '{{.addonName}}' est activé", + "The '{{.driver}}' driver requires elevated permissions. The following commands will be executed:\\n\\n{{ .example }}\\n": "Le pilote '{{.driver}}' nécessite des autorisations élevées. Les commandes suivantes seront exécutées :\\n\\n{{ .example }}\\n", + "The '{{.driver}}' provider was not found: {{.error}}": "Le fournisseur '{{.driver}}' n'a pas été trouvé : {{.error}}", + "The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "Le pilote '{{.name}}' ne prend pas en charge plusieurs profils : https://minikube.sigs.k8s.io/docs/reference/drivers/none/", + "The '{{.name}}' driver does not respect the --cpus flag": "Le pilote '{{.name}}' ne respecte pas l'indicateur --cpus", + "The '{{.name}}' driver does not respect the --memory flag": "Le pilote '{{.name}}' ne respecte pas l'indicateur --memory", + "The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "L'indicateur --image-repository que vous avez fourni contient le schéma : {{.scheme}}, ce sera en tant que domaine, supprimé automatiquement", + "The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "L'indicateur --image-repository que vous avez fourni s'est terminé par un / qui pourrait provoquer un conflit dans kubernetes, supprimé automatiquement", "The CIDR to be used for service cluster IPs.": "Méthode CIDR à exploiter pour les adresses IP des clusters du service.", "The CIDR to be used for the minikube VM (virtualbox driver only)": "Méthode CIDR à exploiter pour la VM minikube (pilote virtualbox uniquement).", "The KVM QEMU connection URI. (kvm2 driver only)": "URI de connexion QEMU de la KVM (pilote kvm2 uniquement).", - "The KVM default network name. (kvm2 driver only)": "", - "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "", + "The KVM default network name. (kvm2 driver only)": "Le nom de réseau par défaut de KVM. (pilote kvm2 uniquement)", + "The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "Le pilote KVM est incapable de ressusciter cette ancienne VM. Veuillez exécuter `minikube delete` pour la supprimer et réessayer.", "The KVM network name. (kvm2 driver only)": "Nom du réseau de la KVM (pilote kvm2 uniquement).", - "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "", - "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "", - "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "", - "The \\\"{{.name}}\\\" container runtime requires CNI": "", + "The VM driver crashed. Run 'minikube start --alsologtostderr -v=8' to see the VM driver error message": "Le pilote VM s'est écrasé. Exécutez 'minikube start --alsologtostderr -v=8' pour voir le message d'erreur du pilote VM", + "The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "Le pilote VM s'est terminé avec une erreur et est peut-être corrompu. Exécutez 'minikube start' avec --alsologtostderr -v=8 pour voir l'erreur", + "The VM that minikube is configured for no longer exists. Run 'minikube delete'": "La machine virtuelle pour laquelle minikube est configuré n'existe plus. Exécutez 'minikube delete'", + "The \\\"{{.name}}\\\" container runtime requires CNI": "L'environnement d'exécution du conteneur \\\"{{.name}}\\\" nécessite CNI", "The apiserver listening port": "Port d'écoute du serveur d'API.", "The apiserver name which is used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "Nom du serveur d'API utilisé dans le certificat généré pour Kubernetes. Vous pouvez l'utiliser si vous souhaitez que le serveur d'API soit disponible en dehors de la machine.", "The argument to pass the minikube mount command on start": "Argument à transmettre à la commande d'installation de minikube au démarrage.", - "The argument to pass the minikube mount command on start.": "", - "The authoritative apiserver hostname for apiserver certificates and connectivity. This can be used if you want to make the apiserver available from outside the machine": "", - "The base image to use for docker/podman drivers. Intended for local development.": "", - "The certificate hostname provided appears to be invalid (may be a minikube bug, try 'minikube delete')": "", - "The cluster dns domain name used in the Kubernetes cluster": "", + "The argument to pass the minikube mount command on start.": "L'argument pour passer la commande de montage minikube au démarrage.", + "The authoritative apiserver hostname for apiserver certificates and connectivity. This can be used if you want to make the apiserver available from outside the machine": "Le nom d'hôte apiserver faisant autorité pour les certificats apiserver et la connectivité. Cela peut être utilisé si vous souhaitez rendre l'apiserver disponible depuis l'extérieur de la machine", + "The base image to use for docker/podman drivers. Intended for local development.": "L'image de base à utiliser pour les pilotes docker/podman. Destiné au développement local.", + "The certificate hostname provided appears to be invalid (may be a minikube bug, try 'minikube delete')": "Le nom d'hôte du certificat fourni semble être invalide (peut être un bogue minikube, essayez 'minikube delete')", + "The cluster dns domain name used in the Kubernetes cluster": "Le nom de domaine DNS du cluster utilisé dans le cluster Kubernetes", "The cluster dns domain name used in the kubernetes cluster": "Nom du domaine DNS du cluster utilisé dans le cluster Kubernetes.", - "The cluster {{.cluster}} already exists which means the --nodes parameter will be ignored. Use \"minikube node add\" to add nodes to an existing cluster.": "", + "The cluster {{.cluster}} already exists which means the --nodes parameter will be ignored. Use \"minikube node add\" to add nodes to an existing cluster.": "Le cluster {{.cluster}} existe déjà, ce qui signifie que le paramètre --nodes sera ignoré. Utilisez \"minikube node add\" pour ajouter des nœuds à un cluster existant.", "The container runtime to be used (docker, crio, containerd)": "environment d'exécution du conteneur à utiliser (docker, crio, containerd).", - "The control plane for \"{{.name}}\" is paused!": "", - "The control plane node \"{{.name}}\" does not exist.": "", - "The control plane node is not running (state={{.state}})": "", - "The control plane node must be running for this command": "", + "The control plane for \"{{.name}}\" is paused!": "Le plan de contrôle pour \"{{.name}}\" est en pause !", + "The control plane node \"{{.name}}\" does not exist.": "Le nœud du plan de contrôle \"{{.name}}\" n'existe pas.", + "The control plane node is not running (state={{.state}})": "Le nœud du plan de contrôle n'est pas en cours d'exécution (state={{.state}})", + "The control plane node must be running for this command": "Le nœud du plan de contrôle doit être en cours d'exécution pour cette commande", "The cri socket path to be used": "Chemin d'accès au socket CRI à utiliser.", - "The cri socket path to be used.": "", + "The cri socket path to be used.": "Le chemin de socket cri à utiliser.", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "La commande docker-env est incompatible avec les clusters multi-nœuds. Utilisez le module 'registry' : https://minikube.sigs.k8s.io/docs/handbook/registry/", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Le pilote \"{{.driver}}\" n'est pas compatible avec {{.os}}/{{.arch}}.", - "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", - "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", - "The heapster addon is depreciated. please try to disable metrics-server instead": "", + "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "Le cluster \"{{.name}}\" existant a été créé à l'aide du pilote \"{{.old}}\", qui est incompatible avec le pilote \"{{.new}}\" demandé.", + "The existing node configuration appears to be corrupt. Run 'minikube delete'": "La configuration de nœud existante semble être corrompue. Exécutez 'minikube delete'", + "The heapster addon is depreciated. please try to disable metrics-server instead": "Le module heapster est déprécié. s'il vous plaît essayez de désactiver metrics-server à la place", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "Nom du commutateur virtuel hyperv. La valeur par défaut affiche le premier commutateur trouvé (pilote hyperv uniquement).", - "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "", - "The image you are trying to add {{.imageName}} doesn't exist!": "", - "The initial time interval for each check that wait performs in seconds": "", - "The kubeadm binary within the Docker container is not executable": "", + "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "L'hyperviseur ne semble pas être configuré correctement. Exécutez 'minikube start --alsologtostderr -v=1' et inspectez le code d'erreur", + "The image '{{.imageName}}' was not found; unable to add it to cache.": "L'image '{{.imageName}}' n'a pas été trouvée ; impossible de l'ajouter au cache.", + "The initial time interval for each check that wait performs in seconds": "L'intervalle de temps initial pour chaque vérification effectuée en secondes", + "The kubeadm binary within the Docker container is not executable": "Le binaire kubeadm dans le conteneur Docker n'est pas exécutable", "The kubernetes version that the minikube VM will use (ex: v1.2.3)": "Version de Kubernetes qu'utilisera la VM minikube (exemple : v1.2.3).", - "The machine-driver specified is failing to start. Try running 'docker-machine-driver-\u003ctype\u003e version'": "", - "The minikube VM is offline. Please run 'minikube start' to start it again.": "", - "The minikube {{.driver_name}} container exited unexpectedly.": "", - "The minimum required version for podman is \"{{.minVersion}}\". your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk. To install latest version please see https://podman.io/getting-started/installation.html": "", + "The machine-driver specified is failing to start. Try running 'docker-machine-driver-\u003ctype\u003e version'": "Le pilote de machine spécifié ne démarre pas. Essayez d'exécuter 'docker-machine-driver-\u003ctype\u003e version'", + "The minikube VM is offline. Please run 'minikube start' to start it again.": "La machine virtuelle minikube est hors ligne. Veuillez exécuter 'minikube start' pour le redémarrer.", + "The minikube {{.driver_name}} container exited unexpectedly.": "Le conteneur minikube {{.driver_name}} s'est fermé de manière inattendue.", + "The minimum required version for podman is \"{{.minVersion}}\". your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk. To install latest version please see https://podman.io/getting-started/installation.html": "La version minimale requise pour podman est \"{{.minVersion}}\". votre version est \"{{.currentVersion}}\". minikube pourrait ne pas fonctionner. À utiliser à vos risques et périls. Pour installer la dernière version, veuillez consulter https://podman.io/getting-started/installation.html", "The name of the network plugin": "Nom du plug-in réseau.", - "The named space to activate after start": "", - "The node to check status for. Defaults to control plane. Leave blank with default format for status on all nodes.": "", - "The node to get IP. Defaults to the primary control plane.": "", - "The node to get logs from. Defaults to the primary control plane.": "", - "The node to get ssh-key path. Defaults to the primary control plane.": "", - "The node to ssh into. Defaults to the primary control plane.": "", - "The node {{.name}} has ran out of available PIDs.": "", - "The node {{.name}} has ran out of disk space.": "", - "The node {{.name}} has ran out of memory.": "", - "The node {{.name}} network is not available. Please verify network settings.": "", - "The none driver is not compatible with multi-node clusters.": "", - "The number of bytes to use for 9p packet payload": "", - "The number of nodes to spin up. Defaults to 1.": "", - "The output format. One of 'json', 'table'": "", - "The path on the file system where the docs in markdown need to be saved": "", - "The path on the file system where the error code docs in markdown need to be saved": "", - "The path on the file system where the testing docs in markdown need to be saved": "", - "The podman service within '{{.cluster}}' is not active": "", - "The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The requested memory allocation of {{.requested}}MiB does not leave room for system overhead (total system memory: {{.system_limit}}MiB). You may face stability issues.": "", - "The service namespace": "", - "The service {{.service}} requires privileged ports to be exposed: {{.ports}}": "", - "The services namespace": "", - "The time interval for each check that wait performs in seconds": "", - "The value passed to --format is invalid": "", - "The value passed to --format is invalid: {{.error}}": "", + "The named space to activate after start": "L'espace nommé à activer après le démarrage", + "The node to check status for. Defaults to control plane. Leave blank with default format for status on all nodes.": "Le nœud pour lequel vérifier l'état. La valeur par défaut est le plan de contrôle. Laissez vide avec le format par défaut pour l'état sur tous les nœuds.", + "The node to get IP. Defaults to the primary control plane.": "Le nœud pour obtenir l'IP. La valeur par défaut est le plan de contrôle principal.", + "The node to get logs from. Defaults to the primary control plane.": "Le nœud à partir duquel obtenir les journaux. La valeur par défaut est le plan de contrôle principal.", + "The node to get ssh-key path. Defaults to the primary control plane.": "Le nœud pour obtenir le chemin de la clé ssh. La valeur par défaut est le plan de contrôle principal.", + "The node to ssh into. Defaults to the primary control plane.": "Le nœud dans lequel ssh. La valeur par défaut est le plan de contrôle principal.", + "The node {{.name}} has ran out of available PIDs.": "Le nœud {{.name}} n'a plus de PID disponibles.", + "The node {{.name}} has ran out of disk space.": "Le nœud {{.name}} a manqué d'espace disque.", + "The node {{.name}} has ran out of memory.": "Le nœud {{.name}} est à court de mémoire.", + "The node {{.name}} network is not available. Please verify network settings.": "Le réseau du nœud {{.name}} n'est pas disponible. Veuillez vérifier les paramètres réseau.", + "The none driver is not compatible with multi-node clusters.": "Le pilote none n'est pas compatible avec les clusters multi-nœuds.", + "The number of bytes to use for 9p packet payload": "Le nombre d'octets à utiliser pour la charge utile du paquet 9p", + "The number of nodes to spin up. Defaults to 1.": "Le nombre de nœuds à faire tourner. La valeur par défaut est 1.", + "The output format. One of 'json', 'table'": "Le format de sortie. "json" ou "table"", + "The path on the file system where the docs in markdown need to be saved": "Le chemin sur le système de fichiers où les documents en markdown doivent être enregistrés", + "The path on the file system where the error code docs in markdown need to be saved": "Le chemin sur le système de fichiers où les documents code d'erreur en markdown doivent être enregistrés", + "The path on the file system where the testing docs in markdown need to be saved": "Le chemin sur le système de fichiers où les documents de test en markdown doivent être enregistrés", + "The podman service within '{{.cluster}}' is not active": "Le service podman dans '{{.cluster}}' n'est pas actif", + "The podman-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "La commande podman-env est incompatible avec les clusters multi-nœuds. Utilisez le module 'registry' : https://minikube.sigs.k8s.io/docs/handbook/registry/", + "The requested memory allocation of {{.requested}}MiB does not leave room for system overhead (total system memory: {{.system_limit}}MiB). You may face stability issues.": "L'allocation de mémoire demandée de {{.requested}}MiB ne laisse pas de place pour la surcharge système (mémoire système totale : {{.system_limit}}MiB). Vous pouvez rencontrer des problèmes de stabilité.", + "The service namespace": "L'espace de nom du service", + "The service {{.service}} requires privileged ports to be exposed: {{.ports}}": "Le service {{.service}} nécessite l'exposition des ports privilégiés : {{.ports}}", + "The services namespace": "L'espace de noms des services", + "The time interval for each check that wait performs in seconds": "L'intervalle de temps pour chaque contrôle que wait effectue en secondes", + "The value passed to --format is invalid": "La valeur passée à --format n'est pas valide", + "The value passed to --format is invalid: {{.error}}": "La valeur passée à --format n'est pas valide : {{.error}}", "The {{.driver_name}} driver should not be used with root privileges.": "Le pilote {{.driver_name}} ne doit pas être utilisé avec des droits racine.", "There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}": "Une nouvelle version de \"{{.driver_executable}}\" est disponible. Pensez à effectuer la mise à niveau. {{.documentation_url}}", - "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "", - "These changes will take effect upon a minikube delete and then a minikube start": "", - "This addon does not have an endpoint defined for the 'addons open' command.\nYou can add one by annotating a service with the label {{.labelName}}:{{.addonName}}": "", + "These --extra-config parameters are invalid: {{.invalid_extra_opts}}": "Ces paramètres --extra-config ne sont pas valides : {{.invalid_extra_opts}}", + "These changes will take effect upon a minikube delete and then a minikube start": "Ces modifications prendront effet lors d'une suppression de minikube, puis d'un démarrage de minikube", + "This addon does not have an endpoint defined for the 'addons open' command.\nYou can add one by annotating a service with the label {{.labelName}}:{{.addonName}}": "Ce module n'a pas de point de terminaison défini pour la commande 'addons open'.\nVous pouvez en ajouter un en annotant un service avec le libellé {{.labelName}} :{{.addonName}}", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "Cette opération peut également être réalisée en définissant la variable d'environment \"CHANGE_MINIKUBE_NONE_USER=true\".", - "This control plane is not running! (state={{.state}})": "", - "This driver does not yet work on your architecture. Maybe try --driver=none": "", - "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "", - "This is unusual - you may want to investigate using \"{{.command}}\"": "", + "This control plane is not running! (state={{.state}})": "Ce plan de contrôle ne fonctionne pas ! (état={{.état}})", + "This driver does not yet work on your architecture. Maybe try --driver=none": "Ce pilote ne fonctionne pas encore sur votre architecture. Essayez peut-être --driver=none", + "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "Il s'agit d'un problème connu avec le pilote de stockage BTRFS, il existe une solution de contournement, veuillez vérifier le problème sur GitHub", + "This is unusual - you may want to investigate using \"{{.command}}\"": "C'est inhabituel - vous voudrez peut-être investiguer en utilisant \"{{.command}}\"", "This will keep the existing kubectl context and will create a minikube context.": "Cela permet de conserver le contexte kubectl existent et de créer un contexte minikube.", "This will start the mount daemon and automatically mount files into minikube": "Cela permet de lancer le daemon d'installation et d'installer automatiquement les fichiers dans minikube.", - "This will start the mount daemon and automatically mount files into minikube.": "", - "This {{.type}} is having trouble accessing https://{{.repository}}": "", - "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "", + "This will start the mount daemon and automatically mount files into minikube.": "Cela démarrera le démon de montage et montera automatiquement les fichiers dans minikube.", + "This {{.type}} is having trouble accessing https://{{.repository}}": "Ce {{.type}} rencontre des difficultés pour accéder à https://{{.repository}}": "",", + "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "Astuce : Pour supprimer ce cluster appartenant à la racine, exécutez : sudo {{.cmd}}", "Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "Conseil : Pour supprimer ce cluster appartenant à la racine, exécutez la commande \"sudo {{.cmd}} delete\".", - "To connect to this cluster, use: --context={{.name}}": "", + "To connect to this cluster, use: --context={{.name}}": "Pour vous connecter à ce cluster, utilisez : --context={{.name}}", "To connect to this cluster, use: kubectl --context={{.name}}": "Pour vous connecter à ce cluster, utilisez la commande \"kubectl --context={{.name}}\".", "To connect to this cluster, use: kubectl --context={{.name}}__1": "Pour vous connecter à ce cluster, utilisez la commande \"kubectl --context={{.name}}\".", - "To connect to this cluster, use: kubectl --context={{.profile_name}}": "", - "To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "", - "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To disable update notices in general, run: 'minikube config set WantUpdateNotification false'\\n": "", - "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "", - "To see addons list for other profiles use: `minikube addons -p name list`": "", - "To set your Google Cloud project, run:\n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "", - "To start a cluster, run: \"{{.command}}\"": "", - "To start minikube with Hyper-V, Powershell must be in your PATH`": "", + "To connect to this cluster, use: kubectl --context={{.profile_name}}": "Pour vous connecter à ce cluster, utilisez : kubectl --context={{.profile_name}}", + "To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "Pour désactiver les notifications bêta, exécutez : 'minikube config set WantBetaUpdateNotification false'", + "To disable this notice, run: 'minikube config set WantUpdateNotification false'\\n": "Pour désactiver cette notification, exécutez : 'minikube config set WantUpdateNotification false'\\n", + "To disable update notices in general, run: 'minikube config set WantUpdateNotification false'\\n": "Pour désactiver les notifications de mise à jour en général, exécutez : 'minikube config set WantUpdateNotification false'\\n", + "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/": "Pour extraire de nouvelles images externes, vous devrez peut-être configurer un proxy : https://minikube.sigs.k8s.io/docs/reference/networking/proxy/", + "To see addons list for other profiles use: `minikube addons -p name list`": "Pour voir la liste des modules pour d'autres profils, utilisez: `minikube addons -p name list`", + "To set your Google Cloud project, run:\n\n\t\tgcloud config set project \u003cproject name\u003e\n\nor set the GOOGLE_CLOUD_PROJECT environment variable.": "Pour définir votre projet Google Cloud, exécutez :\n\n\t\tgcloud config set project \u003cproject name\u003e\n\n\n définissez la variable d'environnement GOOGLE_CLOUD_PROJECT.", + "To start a cluster, run: \"{{.command}}\"": "Pour démarrer un cluster, exécutez : \"{{.command}}\"", + "To start minikube with Hyper-V, Powershell must be in your PATH`": "Pour démarrer minikube avec Hyper-V, Powershell doit être dans votre PATH`", "To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "Pour utiliser les commandes kubectl ou minikube sous votre propre nom d'utilisateur, vous devrez peut-être les déplacer. Par exemple, pour écraser vos propres paramètres, exécutez la commande suivante :", - "Troubleshooting Commands:": "", - "Try 'minikube delete' to force new SSL certificates to be installed": "", - "Try 'minikube delete', and disable any conflicting VPN or firewall software": "", - "Trying to delete invalid profile {{.profile}}": "", - "Unable to bind flags": "", - "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "", - "Unable to enable dashboard": "", - "Unable to fetch latest version info": "", - "Unable to find control plane": "", - "Unable to generate docs": "", - "Unable to generate the documentation. Please ensure that the path specified is a directory, exists \u0026 you have permission to write to it.": "", + "Troubleshooting Commands:": "Commandes de dépannage :", + "Try 'minikube delete' to force new SSL certificates to be installed": "Essayez 'minikube delete' pour forcer l'installation de nouveaux certificats SSL", + "Try 'minikube delete', and disable any conflicting VPN or firewall software": "Essayez 'minikube delete' et désactivez tout logiciel VPN ou pare-feu en conflit", + "Trying to delete invalid profile {{.profile}}": "Tentative de suppression du profil non valide {{.profile}}", + "Unable to bind flags": "Impossible de lier les drapeaux", + "Unable to create dedicated network, this might result in cluster IP change after restart: {{.error}}": "Impossible de créer un réseau dédié, cela peut entraîner une modification de l'adresse IP du cluster après le redémarrage : {{.error}}", + "Unable to enable dashboard": "Impossible d'activer le tableau de bord", + "Unable to fetch latest version info": "Impossible de récupérer les informations sur la dernière version", + "Unable to find control plane": "Impossible de trouver le plan de contrôle", + "Unable to generate docs": "Impossible de générer des documents", + "Unable to generate the documentation. Please ensure that the path specified is a directory, exists \u0026 you have permission to write to it.": "Impossible de générer la documentation. Veuillez vous assurer que le chemin spécifié est un répertoire, existe \u0026 vous avez la permission d'y écrire.", "Unable to get bootstrapper: {{.error}}": "Impossible d'obtenir l'amorceur : {{.error}}", - "Unable to get command runner": "", - "Unable to get control plane status: {{.error}}": "", - "Unable to get current user": "", - "Unable to get forwarded endpoint": "", - "Unable to get machine status": "", - "Unable to get runtime": "", - "Unable to kill mount process: {{.error}}": "", - "Unable to list profiles: {{.error}}": "", + "Unable to get command runner": "Impossible d'obtenir le lanceur de commandes", + "Unable to get control plane status: {{.error}}": "Impossible d'obtenir l'état du plan de contrôle : {{.error}}", + "Unable to get current user": "Impossible d'obtenir l'utilisateur actuel", + "Unable to get forwarded endpoint": "Impossible d'obtenir le point de terminaison transféré", + "Unable to get machine status": "Impossible d'obtenir l'état de la machine", + "Unable to get runtime": "Impossible d'obtenir l'environnement d'exécution", + "Unable to kill mount process: {{.error}}": "Impossible d'arrêter le processus de montage : {{.error}}", + "Unable to list profiles: {{.error}}": "Impossible de répertorier les profils : {{.error}}", "Unable to load cached images from config file.": "Impossible de charger les images mises en cache depuis le fichier de configuration.", "Unable to load cached images: {{.error}}": "", "Unable to load config: {{.error}}": "Impossible de charger la configuration : {{.error}}", - "Unable to load host": "", - "Unable to load profile: {{.error}}": "", + "Unable to load host": "Impossible de charger l'hôte", + "Unable to load profile: {{.error}}": "Impossible de charger le profil : {{.error}}", "Unable to parse \"{{.kubernetes_version}}\": {{.error}}": "Impossible d'analyser la version \"{{.kubernetes_version}}\" : {{.error}}", - "Unable to parse default Kubernetes version from constants: {{.error}}": "", - "Unable to parse memory '{{.memory}}': {{.error}}": "", - "Unable to parse oldest Kubernetes version from constants: {{.error}}": "", - "Unable to pick a default driver. Here is what was considered, in preference order:": "", + "Unable to parse default Kubernetes version from constants: {{.error}}": "Impossible d'analyser la version Kubernetes par défaut à partir des constantes : {{.error}}", + "Unable to parse memory '{{.memory}}': {{.error}}": "Impossible d'analyser la mémoire '{{.memory}}' : {{.error}}", + "Unable to parse oldest Kubernetes version from constants: {{.error}}": "Impossible d'analyser la version la plus ancienne de Kubernetes à partir des constantes : {{.error}}", + "Unable to pick a default driver. Here is what was considered, in preference order:": "Impossible de choisir un pilote par défaut. Voici ce qui a été considéré, par ordre de préférence :", "Unable to pull images, which may be OK: {{.error}}": "Impossible d'extraire des images, qui sont peut-être au bon format : {{.error}}", - "Unable to push cached images: {{.error}}": "", - "Unable to remove machine directory": "", - "Unable to restart cluster, will reset it: {{.error}}": "", - "Unable to safely downgrade existing Kubernetes v{{.old}} cluster to v{{.new}}": "", - "Unable to stop VM": "", - "Unable to update {{.driver}} driver: {{.error}}": "", - "Unfortunately, could not download the base image {{.image_name}} ": "", + "Unable to push cached images: {{.error}}": "Impossible de pousser les images mises en cache : {{.error}}", + "Unable to remove machine directory": "Impossible de supprimer le répertoire de la machine", + "Unable to restart cluster, will reset it: {{.error}}": "Impossible de redémarrer le cluster, va être réinitialisé : {{.error}}", + "Unable to safely downgrade existing Kubernetes v{{.old}} cluster to v{{.new}}": "Impossible de rétrograder en toute sécurité le cluster Kubernetes v{{.old}} existant vers v{{.new}}", + "Unable to stop VM": "Impossible d'arrêter la VM", + "Unable to update {{.driver}} driver: {{.error}}": "Impossible de mettre à jour le pilote {{.driver}} : {{.error}}", + "Unfortunately, could not download the base image {{.image_name}} ": "Malheureusement, impossible de télécharger l'image de base {{.image_name}}", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "Désinstallation de Kubernetes {{.kubernetes_version}} à l'aide de {{.bootstrapper_name}}…", - "Unmounting {{.path}} ...": "", - "Unpause": "", - "Unpaused {{.count}} containers": "", - "Unpaused {{.count}} containers in: {{.namespaces}}": "", - "Unpausing node {{.name}} ... ": "", - "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "", - "Unset variables instead of setting them": "", - "Update Docker to the latest minor version, this version is unsupported": "", - "Update kubeconfig in case of an IP or port change": "", - "Update server returned an empty list": "", + "Unmounting {{.path}} ...": "Démontage de {{.path}} ...", + "Unpause": "Annuler la pause", + "Unpaused {{.count}} containers": "{{.count}} conteneurs non mis en veille", + "Unpaused {{.count}} containers in: {{.namespaces}}": "{{.count}} conteneurs non mis en veille dans : {{.namespaces}}", + "Unpausing node {{.name}} ... ": "Rétablissement du nœud {{.name}} ...", + "Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "Désactivez la variable d'environnement KUBECONFIG ou vérifiez qu'elle ne pointe pas vers un chemin vide ou non valide", + "Unset variables instead of setting them": "Désactivez les variables au lieu de les définir", + "Update Docker to the latest minor version, this version is unsupported": "Mettez à jour Docker vers la dernière version mineure, cette version n'est pas prise en charge", + "Update kubeconfig in case of an IP or port change": "Mettre à jour kubeconfig en cas de changement d'IP ou de port", + "Update server returned an empty list": "Le serveur de mise à jour a renvoyé une liste vide", "Updating the running {{.driver_name}} \"{{.cluster}}\" {{.machine_type}} ...": "Mise à jour du {{.machine_type}} {{.driver_name}} en marche \"{{.cluster}}\" ...", - "Upgrade to QEMU v3.1.0+, run 'virt-host-validate', or ensure that you are not running in a nested VM environment.": "", + "Upgrade to QEMU v3.1.0+, run 'virt-host-validate', or ensure that you are not running in a nested VM environment.": "Mettez à niveau vers QEMU v3.1.0+, exécutez 'virt-host-validate' ou assurez-vous que vous n'exécutez pas dans un environnement VM imbriqué.", "Upgrading from Kubernetes {{.old}} to {{.new}}": "Mise à niveau de Kubernetes de la version {{.old}} à la version {{.new}}…", "Usage": "Usage", - "Usage: minikube completion SHELL": "", - "Usage: minikube delete": "", - "Usage: minikube delete --all --purge": "", - "Usage: minikube node [add|start|stop|delete|list]": "", - "Usage: minikube node delete [name]": "", - "Usage: minikube node list": "", - "Usage: minikube node start [name]": "", - "Usage: minikube node stop [name]": "", - "Use \"{{.CommandPath}} [command] --help\" for more information about a command.": "", - "Use 'kubect get po -A' to find the correct and namespace name": "", - "Use -A to specify all namespaces": "", - "Use SSH connection instead of HTTPS (port 2376)": "", - "Use SSH for running kubernetes client on the node": "", - "Use VirtualBox to remove the conflicting VM and/or network interfaces": "", - "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "", - "User ID: {{.userID}}": "", - "User name '{{.username}}' is not valid": "", - "User name must be 60 chars or less.": "", - "Userspace file server is shutdown": "", - "Userspace file server: ": "", + "Usage: minikube completion SHELL": "Utilisation : minikube completion SHELL", + "Usage: minikube delete": "Utilisation: minikube delete", + "Usage: minikube delete --all --purge": "Utilisation: minikube delete --all --purge", + "Usage: minikube node [add|start|stop|delete|list]": "Utilisation: minikube node [add|start|stop|delete|list]", + "Usage: minikube node delete [name]": "Utilisation: minikube node delete [name]", + "Usage: minikube node list": "Utilisation: minikube node list", + "Usage: minikube node start [name]": "Utilisation: minikube node start [name]", + "Usage: minikube node stop [name]": "Utilisation: minikube node stop [name]", + "Use \"{{.CommandPath}} [command] --help\" for more information about a command.": "Utilisez \"{{.CommandPath}} [commande] --help\" pour plus d'informations sur une commande.", + "Use 'kubect get po -A' to find the correct and namespace name": "Utilisez 'kubect get po -A' pour trouver le nom correct et l'espace de noms", + "Use -A to specify all namespaces": "Utilisez -A pour spécifier tous les espaces de noms", + "Use SSH connection instead of HTTPS (port 2376)": "Utiliser la connexion SSH au lieu de HTTPS (port 2376)", + "Use SSH for running kubernetes client on the node": "Utiliser SSH pour exécuter le client kubernetes sur le nœud", + "Use VirtualBox to remove the conflicting VM and/or network interfaces": "Utilisez VirtualBox pour supprimer la VM et/ou les interfaces réseau en conflit", + "Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "Utilisez le client Golang SSH natif (par défaut vrai). Définissez sur 'false' pour utiliser la commande de ligne de commande 'ssh' lors de l'accès à la machine docker. Utile pour les pilotes de machine lorsqu'ils ne démarrent pas avec 'Waiting for SSH'.", + "User ID: {{.userID}}": "ID utilisateur : {{.userID}}", + "User name '{{.username}}' is not valid": "Le nom d'utilisateur '{{.username}}' n'est pas valide", + "User name must be 60 chars or less.": "Le nom d'utilisateur doit comporter 60 caractères ou moins.", + "Userspace file server is shutdown": "Le serveur de fichiers de l'espace utilisateur est arrêté", + "Userspace file server: ": "Serveur de fichiers de l'espace utilisateur :", "Using image repository {{.name}}": "Utilisation du dépôt d'images {{.name}}…", "Using image {{.registry}}{{.image}}": "Utilisation de l'image {{.registry}}{{.image}}", - "Using image {{.registry}}{{.image}} (global image repository)": "", - "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", + "Using image {{.registry}}{{.image}} (global image repository)": "Utilisation de l'image {{.registry}}{{.image}} (référentiel d'images global)", + "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "L'utilisation du runtime '{{.runtime}}' avec le pilote 'none' est une configuration non testée !", "Using the {{.driver}} driver based on existing profile": "Utilisation du pilote {{.driver}} basé sur le profil existant", "Using the {{.driver}} driver based on user configuration": "Utilisation du pilote {{.driver}} basé sur la configuration de l'utilisateur", "VM driver is one of: %v": "Le pilote de la VM appartient à : %v", - "Valid components are: {{.valid_extra_opts}}": "", - "Validate your KVM networks. Run: virt-host-validate and then virsh net-list --all": "", - "Validation unable to parse disk size '{{.diskSize}}': {{.error}}": "", - "Verify that your HTTP_PROXY and HTTPS_PROXY environment variables are set correctly.": "", + "Valid components are: {{.valid_extra_opts}}": "Les composants valides sont : {{.valid_extra_opts}}", + "Validate your KVM networks. Run: virt-host-validate and then virsh net-list --all": "Validez vos réseaux KVM. Exécutez : virt-host-validate puis virsh net-list --all", + "Validation unable to parse disk size '{{.diskSize}}': {{.error}}": "La validation n'a pas pu analyser la taille du disque '{{.diskSize}}' : {{.error}}", + "Verify that your HTTP_PROXY and HTTPS_PROXY environment variables are set correctly.": "Vérifiez que vos variables d'environnement HTTP_PROXY et HTTPS_PROXY sont correctement définies.", "Verifying Kubernetes components...": "Vérification des composants Kubernetes...", - "Verifying dashboard health ...": "", - "Verifying proxy health ...": "", - "Verifying {{.addon_name}} addon...": "", + "Verifying dashboard health ...": "Vérification de l'état du tableau de bord...", + "Verifying proxy health ...": "Vérification de l'état du proxy...", + "Verifying {{.addon_name}} addon...": "Vérification du module {{.addon_name}}...", "Verifying:": "Vérification :", - "Version: {{.version}}": "", - "VirtualBox and Hyper-V are having a conflict. Use '--driver=hyperv' or disable Hyper-V using: 'bcdedit /set hypervisorlaunchtype off'": "", - "VirtualBox cannot create a network, probably because it conflicts with an existing network that minikube no longer knows about. Try running 'minikube delete'": "", - "VirtualBox is broken. Disable real-time anti-virus software, reboot, and reinstall VirtualBox if the problem continues.": "", - "VirtualBox is broken. Reinstall VirtualBox, reboot, and run 'minikube delete'.": "", - "VirtualBox is unable to find its network interface. Try upgrading to the latest release and rebooting.": "", - "Virtualization support is disabled on your computer. If you are running minikube within a VM, try '--driver=docker'. Otherwise, consult your systems BIOS manual for how to enable virtualization.": "", - "Wait failed: {{.error}}": "", + "Version: {{.version}}": "Version : {{.version}}", + "VirtualBox and Hyper-V are having a conflict. Use '--driver=hyperv' or disable Hyper-V using: 'bcdedit /set hypervisorlaunchtype off'": "VirtualBox et Hyper-V ont un conflit. Utilisez '--driver=hyperv' ou désactivez Hyper-V en utilisant : 'bcdedit /set hypervisorlaunchtype off'", + "VirtualBox cannot create a network, probably because it conflicts with an existing network that minikube no longer knows about. Try running 'minikube delete'": "VirtualBox ne peut pas créer de réseau, probablement parce qu'il entre en conflit avec un réseau existant que minikube ne connaît plus. Essayez d'exécuter 'minikube delete'", + "VirtualBox is broken. Disable real-time anti-virus software, reboot, and reinstall VirtualBox if the problem continues.": "VirtualBox ne fonctionne pas. Désactivez le logiciel antivirus en temps réel, redémarrez et réinstallez VirtualBox si le problème persiste.", + "VirtualBox is broken. Reinstall VirtualBox, reboot, and run 'minikube delete'.": "VirtualBox ne fonctionne pas. Réinstallez VirtualBox, redémarrez et exécutez « minikube delete ».", + "VirtualBox is unable to find its network interface. Try upgrading to the latest release and rebooting.": "VirtualBox est incapable de trouver son interface réseau. Essayez de mettre à niveau vers la dernière version et de redémarrer.", + "Virtualization support is disabled on your computer. If you are running minikube within a VM, try '--driver=docker'. Otherwise, consult your systems BIOS manual for how to enable virtualization.": "La prise en charge de la virtualisation est désactivée sur votre ordinateur. Si vous exécutez minikube dans une machine virtuelle, essayez '--driver=docker'. Sinon, consultez le manuel du BIOS de votre système pour savoir comment activer la virtualisation.", + "Wait failed: {{.error}}": "Échec de l'attente : {{.error}}", "Wait until Kubernetes core services are healthy before exiting": "Avant de quitter, veuillez patienter jusqu'à ce que les principaux services Kubernetes soient opérationnels.", "Waiting for SSH access ...": "En attente de l'accès SSH...", "Waiting for:": "En attente de :", - "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "", + "Want kubectl {{.version}}? Try 'minikube kubectl -- get pods -A'": "Vous voulez kubectl {{.version}} ? Essayez 'minikube kubectl -- get pods -A'", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "Emplacement permettant d'accéder aux partages NFS en mode root, la valeur par défaut affichant /nfsshares (pilote hyperkit uniquement).", - "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "", - "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "", - "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "", + "Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "S'il faut utiliser le commutateur externe sur le commutateur par défaut si le commutateur virtuel n'est pas explicitement spécifié. (pilote hyperv uniquement)", + "With --network-plugin=cni, you will need to provide your own CNI. See --cni flag as a user-friendly alternative": "Avec --network-plugin=cni, vous devrez fournir votre propre CNI. Voir --cni flag comme alternative conviviale", + "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "Vous semblez utiliser un proxy, mais votre environnement NO_PROXY n'inclut pas l'IP minikube ({{.ip_address}}).", "You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details": "Il semble que vous utilisiez un proxy, mais votre environment NO_PROXY n'inclut pas l'adresse IP ({{.ip_address}}) de minikube. Consultez la documentation à l'adresse {{.documentation_url}} pour en savoir plus.", - "You are trying to run amd64 binary on M1 system. Please use darwin/arm64 binary instead (Download at {{.url}}.)": "", - "You are trying to run windows .exe binary inside WSL, for better integration please use Linux binary instead (Download at https://minikube.sigs.k8s.io/docs/start/.). Otherwise if you still want to do this, you can do it using --force": "", - "You can delete them using the following command(s): ": "", - "You can force an unsupported Kubernetes version via the --force flag": "", - "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "", - "You cannot change the disk size for an existing minikube cluster. Please first delete the cluster.": "", - "You cannot change the memory size for an existing minikube cluster. Please first delete the cluster.": "", - "You have chosen to disable the CNI but the \\\"{{.name}}\\\" container runtime requires CNI": "", + "You are trying to run amd64 binary on M1 system. Please use darwin/arm64 binary instead (Download at {{.url}}.)": "Vous essayez d'exécuter le binaire amd64 sur le système M1. Veuillez utiliser le binaire darwin/arm64 à la place (télécharger sur {{.url}}.)", + "You are trying to run windows .exe binary inside WSL, for better integration please use Linux binary instead (Download at https://minikube.sigs.k8s.io/docs/start/.). Otherwise if you still want to do this, you can do it using --force": "Vous essayez d'exécuter le binaire Windows .exe dans WSL. Pour une meilleure intégration, veuillez utiliser le binaire Linux à la place (Télécharger sur https://minikube.sigs.k8s.io/docs/start/.). Sinon, si vous voulez toujours le faire, vous pouvez le faire en utilisant --force", + "You can delete them using the following command(s): ": "Vous pouvez les supprimer à l'aide de la ou des commandes suivantes :", + "You can force an unsupported Kubernetes version via the --force flag": "Vous pouvez forcer une version Kubernetes non prise en charge via l'indicateur --force", + "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "Vous ne pouvez pas modifier les processeurs d'un cluster minikube existant. Veuillez d'abord supprimer le cluster.", + "You cannot change the disk size for an existing minikube cluster. Please first delete the cluster.": "Vous ne pouvez pas modifier la taille du disque pour un cluster minikube existant. Veuillez d'abord supprimer le cluster.", + "You cannot change the memory size for an existing minikube cluster. Please first delete the cluster.": "Vous ne pouvez pas modifier la taille de la mémoire d'un cluster minikube existant. Veuillez d'abord supprimer le cluster.", + "You have chosen to disable the CNI but the \\\"{{.name}}\\\" container runtime requires CNI": "Vous avez choisi de désactiver le CNI mais le runtime du conteneur \\\"{{.name}}\\\" nécessite CNI", "You may need to manually remove the \"{{.name}}\" VM from your hypervisor": "Vous devrez peut-être supprimer la VM \"{{.name}}\" manuellement de votre hyperviseur.", - "You may need to stop the Hyper-V Manager and run `minikube delete` again.": "", - "You might be using an amd64 version of minikube on a M1 Mac, use the arm64 version of minikube instead": "", - "You must specify a service name": "", - "Your GCP credentials will now be mounted into every pod created in the {{.name}} cluster.": "", - "Your cgroup does not allow setting memory.": "", - "Your host does not support KVM virtualization. Ensure that qemu-kvm is installed, and run 'virt-host-validate' to debug the problem": "", - "Your host does not support virtualization. If you are running minikube within a VM, try '--driver=docker'. Otherwise, enable virtualization in your BIOS": "", - "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "", - "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "", - "Your minikube vm is not running, try minikube start.": "", - "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "", - "\\\"minikube cache\\\" will be deprecated in upcoming versions, please switch to \\\"minikube image load\\\"": "", - "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "", - "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "", - "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "", - "auto-pause addon is an alpha feature and still in early development. Please file issues to help us make it better.": "", - "auto-pause currently is only supported on docker runtime and amd64. Track progress of others here: https://github.com/kubernetes/minikube/issues/10601": "", - "bash completion failed": "", - "bash completion.": "", - "call with cleanup=true to remove old tunnels": "", - "cancel any existing scheduled stop requests": "", - "config modifies minikube config files using subcommands like \"minikube config set driver kvm2\"\nConfigurable fields: \\n\\n": "", - "config view failed": "", - "containers paused status: {{.paused}}": "", - "dashboard service is not running: {{.error}}": "", - "delete ctx": "", - "deleting node": "", - "disable failed": "", - "dry-run mode. Validates configuration, but does not mutate system state": "", - "dry-run validation complete!": "", - "enable failed": "", - "error creating clientset": "", - "error getting primary control plane": "", - "error getting ssh port": "", - "error initializing tracing: {{.Error}}": "", - "error parsing the input ip address for mount": "", - "error provisioning host": "", - "error starting tunnel": "", - "error stopping tunnel": "", - "error: --output must be 'yaml' or 'json'": "", - "experimental": "", - "failed to add node": "", - "failed to open browser: {{.error}}": "", - "failed to save config": "", - "failed to start node": "", - "fish completion failed": "", - "fish completion.": "", - "if true, will embed the certs in kubeconfig.": "", - "if you want to create a profile you can by this command: minikube start -p {{.profile_name}}": "", - "initialization failed, will try again: {{.error}}": "", - "invalid kubernetes version": "", - "keep the kube-context active after cluster is stopped. Defaults to false.": "", - "kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "", + "You may need to stop the Hyper-V Manager and run `minikube delete` again.": "Vous devrez peut-être arrêter le gestionnaire Hyper-V et exécuter à nouveau 'minikube delete'.", + "You might be using an amd64 version of minikube on a M1 Mac, use the arm64 version of minikube instead": "Vous utilisez peut-être une version amd64 de minikube sur un Mac M1, utilisez plutôt la version arm64 de minikube", + "You must specify a service name": "Vous devez spécifier un nom de service", + "Your GCP credentials will now be mounted into every pod created in the {{.name}} cluster.": "Vos identifiants GCP seront désormais installés dans chaque pod créé dans le cluster {{.name}}.", + "Your cgroup does not allow setting memory.": "Votre groupe de contrôle ne permet pas de définir la mémoire.", + "Your host does not support KVM virtualization. Ensure that qemu-kvm is installed, and run 'virt-host-validate' to debug the problem": "Votre hébergeur ne prend pas en charge la virtualisation KVM. Assurez-vous que qemu-kvm est installé et exécutez 'virt-host-validate' pour déboguer le problème", + "Your host does not support virtualization. If you are running minikube within a VM, try '--driver=docker'. Otherwise, enable virtualization in your BIOS": "Votre hébergeur ne prend pas en charge la virtualisation. Si vous exécutez minikube dans une machine virtuelle, essayez '--driver=docker'. Sinon, activez la virtualisation dans votre BIOS", + "Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "Votre hôte ne parvient pas à acheminer les paquets vers la machine virtuelle minikube. Si vous disposez d'un logiciel VPN, essayez de le désactiver ou de le configurer afin qu'il ne réachemine pas le trafic vers l'adresse IP de la VM. Sinon, vérifiez les options de routage de votre environnement de machine virtuelle.", + "Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "Votre configuration minikube fait référence à un pilote non pris en charge. Effacez ~/.minikube et réessayez.", + "Your minikube vm is not running, try minikube start.": "Votre minikube vm ne fonctionne pas, essayez de démarrer minikube.", + "[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "[AVERTISSEMENT] Pour une fonctionnalité complète, le module 'csi-hostpath-driver' nécessite que le module 'volumesnapshots' soit activé.\n\nVous pouvez activer le module 'volumesnapshots' en exécutant : 'minikube addons enable volumesnapshots'\n", + "\\\"minikube cache\\\" will be deprecated in upcoming versions, please switch to \\\"minikube image load\\\"": "\\\"minikube cache\\\" sera obsolète dans les prochaines versions, veuillez passer à \\\"minikube image load\\\"", + "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "Le module '{{.name}}' n'est actuellement pas activé.\nPour activer ce module, exécutez :\nminikube addons enable {{.name}}", + "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "Le module '{{.name}}' n'est pas un module valide fourni avec minikube.\nPour voir la liste des modules disponibles, exécutez :\nminikube addons list", + "addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "addons modifie les fichiers de modules minikube à l'aide de sous-commandes telles que \"minikube addons enable dashboard\"", + "auto-pause addon is an alpha feature and still in early development. Please file issues to help us make it better.": "Le module auto-pause est une fonctionnalité alpha et encore en développement précoce. Veuillez signaler les problèmes pour nous aider à l'améliorer.", + "auto-pause currently is only supported on docker runtime and amd64. Track progress of others here: https://github.com/kubernetes/minikube/issues/10601": "la pause automatique n'est actuellement prise en charge que sur le runtime docker et amd64. Suivez les progrès des autres ici : https://github.com/kubernetes/minikube/issues/10601", + "bash completion failed": "échec de la complétion bash", + "bash completion.": "complétion bash", + "call with cleanup=true to remove old tunnels": "appelez avec cleanup=true pour supprimer les anciens tunnels", + "cancel any existing scheduled stop requests": "annuler toutes les demandes d'arrêt programmées existantes", + "config modifies minikube config files using subcommands like \"minikube config set driver kvm2\"\nConfigurable fields: \\n\\n": "config modifie les fichiers de configuration de minikube à l'aide de sous-commandes telles que \"minikube config set driver kvm2\"\nChamps configurables : \\n\\n", + "config view failed": "échec de la vue de configuration", + "containers paused status: {{.paused}}": "état des conteneurs en pause : {{.paused}}", + "dashboard service is not running: {{.error}}": "le service de tableau de bord ne fonctionne pas : {{.error}}", + "delete ctx": "supprimer ctx", + "deleting node": "suppression d'un nœud", + "disable failed": "échec de la désactivation", + "dry-run mode. Validates configuration, but does not mutate system state": "mode simulation. Valide la configuration, mais ne modifie pas l'état du système", + "dry-run validation complete!": "validation de la simulation terminée !", + "enable failed": "échec de l'activation", + "error creating clientset": "erreur lors de la création de l'ensemble de clients", + "error getting primary control plane": "erreur lors de l'obtention du plan de contrôle principal", + "error getting ssh port": "erreur lors de l'obtention du port ssh", + "error initializing tracing: {{.Error}}": "erreur d'initialisation du traçage : {{.Error}}", + "error parsing the input ip address for mount": "erreur lors de l'analyse de l'adresse IP d'entrée pour le montage", + "error provisioning host": "erreur de provisionnement de l'hôte", + "error starting tunnel": "erreur de démarrage du tunnel", + "error stopping tunnel": "erreur d'arrêt du tunnel", + "error: --output must be 'yaml' or 'json'": "erreur : --output doit être 'yaml' ou 'json'", + "experimental": "expérimental", + "failed to add node": "échec de l'ajout du nœud", + "failed to open browser: {{.error}}": "échec de l'ouverture du navigateur : {{.error}}", + "failed to save config": "échec de l'enregistrement de la configuration", + "failed to start node": "échec du démarrage du nœud", + "fish completion failed": "la complétion fish a échoué", + "fish completion.": "complétion fish.", + "if true, will embed the certs in kubeconfig.": "si vrai, intégrera les certificats dans kubeconfig.", + "if you want to create a profile you can by this command: minikube start -p {{.profile_name}}": "si vous voulez créer un profil vous pouvez par cette commande : minikube start -p {{.profile_name}}", + "initialization failed, will try again: {{.error}}": "l'initialisation a échoué, va réessayer : {{.error}}", + "invalid kubernetes version": "version kubernetes invalide", + "keep the kube-context active after cluster is stopped. Defaults to false.": "garder le kube-context actif après l'arrêt du cluster. La valeur par défaut est false.", + "kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "kubeadm a détecté un conflit de port TCP avec un autre processus : probablement une autre installation locale de Kubernetes. Exécutez lsof -p\u003cport\u003e pour trouver le processus et le tuer", "kubectl and minikube configuration will be stored in {{.home_folder}}": "Les configurations kubectl et minikube seront stockées dans le dossier {{.home_folder}}.", - "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "", - "kubectl proxy": "", - "libmachine failed": "", - "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", - "loading profile": "", - "max time to wait per Kubernetes or host to be healthy.": "", - "minikube addons list --output OUTPUT. json, list": "", - "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "", - "minikube is not meant for production use. You are opening non-local traffic": "", - "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "", - "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", + "kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "kubectl introuvable. Si vous en avez besoin, essayez : 'minikube kubectl -- get pods -A'", + "kubectl proxy": "proxy kubectl", + "libmachine failed": "libmachine a échoué", + "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "la liste affiche tous les paramètres par défaut valides pour PROPERTY_NAME\nChamps acceptables : \\n\\n", + "loading profile": "profil de chargement", + "max time to wait per Kubernetes or host to be healthy.": "temps d'attente maximal par Kubernetes ou hôte pour être en bonne santé.", + "minikube addons list --output OUTPUT. json, list": "liste des modules minikube --output OUTPUT. json, liste", + "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "minikube manque des fichiers relatifs à votre environnement invité. Cela peut être corrigé en exécutant 'minikube delete'", + "minikube is not meant for production use. You are opening non-local traffic": "minikube n'est pas destiné à une utilisation en production. Vous ouvrez du trafic non local", + "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "minikube ne peut pas accéder à Google Container Registry. Vous devrez peut-être le configurer pour utiliser un proxy HTTP.", + "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "minikube ne parvient pas à se connecter à la VM : {{.error}}\n\n\tCela est probablement dû à l'une des deux raisons suivantes :\n\n\t- Interférence VPN ou pare-feu\n\t- {{.hypervisor }} problème de configuration réseau\n\n\tSolutions suggérées :\n\n\t- Désactivez votre logiciel VPN ou pare-feu local\n\t- Configurez votre VPN ou pare-feu local pour autoriser l'accès à {{.ip}}\n \t- Redémarrez ou réinstallez {{.hypervisor}}\n\t- Utilisez un autre --vm-driver\n\t- Utilisez --force pour annuler cette vérification de connectivité\n\t", "minikube profile was successfully set to {{.profile_name}}": "Le profil de minikube a été défini avec succès sur {{.profile_name}}", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "minikube provisionne et gère des clusters Kubernetes locaux optimisés pour les workflows de développement.", "minikube quickly sets up a local Kubernetes cluster": "minikube configure rapidement un cluster Kubernetes local", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "minikube ignore diverses validations lorsque --force est fourni ; cela peut conduire à un comportement inattendu", - "minikube status --output OUTPUT. json, text": "", + "minikube status --output OUTPUT. json, text": "état minikube --sortie SORTIE. json, texte", "minikube {{.version}} is available! Download it: {{.url}}": "minikube {{.version}} est disponible ! Téléchargez-le ici : {{.url}}", "mkcmp is used to compare performance of two minikube binaries": "mkcmp est utilisé pour comparer les performances de deux binaires minikube", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "argument de montage \"{{.value}}\" doit être de la forme : \u003cdossier source\u003e:\u003cdossier de destination\u003e", "mount failed": "échec du montage", "namespaces to pause": "espaces de noms à mettre en pause", "namespaces to unpause": "espaces de noms à réactiver", - "network to run minikube with. Now it is used by docker/podman and KVM drivers. If left empty, minikube will create a new network.": "", + "network to run minikube with. Now it is used by docker/podman and KVM drivers. If left empty, minikube will create a new network.": "réseau avec lequel exécuter minikube. Maintenant, il est utilisé par les pilotes docker/podman et KVM. Si laissé vide, minikube créera un nouveau réseau.", "none driver does not support multi-node clusters": "aucun pilote ne prend pas en charge les clusters multi-nœuds", "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "pas assez d'arguments ({{.ArgCount}}).\\nusage : minikube config set PROPERTY_NAME PROPERTY_VALUE", - "numa node is only supported on k8s v1.18 and later": "", + "numa node is only supported on k8s v1.18 and later": "le nœud numa n'est pris en charge que sur k8s v1.18 et versions ultérieures", "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "format de sortie (EXPERIMENTAL, JSON uniquement) : 'nodes' ou 'cluster'", "pause Kubernetes": "met Kubernetes en pause", - "preload extraction failed: \\\"No space left on device\\\"": "", + "preload extraction failed: \\\"No space left on device\\\"": "échec de l'extraction du préchargement : \\\"Pas d'espace disponible sur l'appareil\\\"", "profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "profile définit le profil courrant de minikube, ou obtient le profil actuel si aucun argument n'est fourni. Ceci est utilisé pour exécuter et gérer plusieurs instances de minikube. Vous pouvez revenir au profil par défaut du minikube en exécutant `minikube profile default`", "provisioning host for node": "provisionne un hôte pour le nœud", "reload cached images.": "recharge les cache des images.", "reloads images previously added using the 'cache add' subcommand": "recharge les images précédemment ajoutées à l'aide de la sous-commande 'cache add'", "retrieving node": "récupération du nœud", - "scheduled stop is not supported on the none driver, skipping scheduling": "", + "scheduled stop is not supported on the none driver, skipping scheduling": "l'arrêt programmé n'est pas pris en charge sur le pilote none, programmation non prise en compte", "service {{.namespace_name}}/{{.service_name}} has no node port": "le service {{.namespace_name}}/{{.service_name}} n'a pas de port de nœud", "stat failed": "stat en échec", "status json failure": "état du JSON en échec", @@ -903,7 +903,7 @@ "toom any arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "toom tous les arguments ({{.ArgCount}}).\\nusage : jeu de configuration de minikube PROPERTY_NAME PROPERTY_VALUE", "tunnel creates a route to services deployed with type LoadBalancer and sets their Ingress to their ClusterIP. for a detailed example see https://minikube.sigs.k8s.io/docs/tasks/loadbalancer": "le tunnel crée une route vers les services déployés avec le type LoadBalancer et définit leur Ingress sur leur ClusterIP. Pour un exemple détaillé, voir https://minikube.sigs.k8s.io/docs/tasks/loadbalancer", "unable to bind flags": "impossible de lier les configurations", - "unable to daemonize: {{.err}}": "", + "unable to daemonize: {{.err}}": "impossible de démoniser : {{.err}}", "unable to delete minikube config folder": "impossible de supprimer le dossier de configuration de minikube", "unable to set logtostderr": "impossible de définir logtostderr", "unpause Kubernetes": "réactive Kubernetes", @@ -912,41 +912,41 @@ "unsets an individual value in a minikube config file": "déconfigure une valeur individuelle dans le fichier de configuration de minikube", "unsupported or missing driver: {{.name}}": "pilote non pris en charge ou manquant : {{.name}}", "update config": "mettre à jour la configuration", - "usage: minikube addons configure ADDON_NAME": "usage : minikube addons configure ADDON_NAME", - "usage: minikube addons disable ADDON_NAME": "usage : minikube addons disable ADDON_NAME", - "usage: minikube addons enable ADDON_NAME": "usage : minikube addons enable ADDON_NAME", - "usage: minikube addons images ADDON_NAME": "", - "usage: minikube addons list": "usage : minikube addons list", - "usage: minikube addons open ADDON_NAME": "usage : minikube addons open ADDON_NAME", - "usage: minikube config unset PROPERTY_NAME": "usage : minikube config unset PROPERTY_NAME", - "usage: minikube delete": "usage : minikube delete", - "usage: minikube profile [MINIKUBE_PROFILE_NAME]": "usage : minikube profile [MINIKUBE_PROFILE_NAME]", - "using metrics-server addon, heapster is deprecated": "", + "usage: minikube addons configure ADDON_NAME": "utilisation : minikube addons configure ADDON_NAME", + "usage: minikube addons disable ADDON_NAME": "utilisation : minikube addons disable ADDON_NAME", + "usage: minikube addons enable ADDON_NAME": "utilisation : minikube addons enable ADDON_NAME", + "usage: minikube addons images ADDON_NAME": "utilisation: minikube addons images ADDON_NAME", + "usage: minikube addons list": "utilisation : minikube addons list", + "usage: minikube addons open ADDON_NAME": "utilisation : minikube addons open ADDON_NAME", + "usage: minikube config unset PROPERTY_NAME": "utilisation : minikube config unset PROPERTY_NAME", + "usage: minikube delete": "utilisation : minikube delete", + "usage: minikube profile [MINIKUBE_PROFILE_NAME]": "utilisation : minikube profile [MINIKUBE_PROFILE_NAME]", + "using metrics-server addon, heapster is deprecated": "utilisation du module metrics-server, heapster est obsolète", "version json failure": "échec de la version du JSON", "version yaml failure": "échec de la version du YAML", "zsh completion failed": "complétion de zsh en échec", - "zsh completion.": "", - "{{ .name }}: Suggestion: {{ .suggestion}}": "", + "zsh completion.": "complétion zsh.", + "{{ .name }}: Suggestion: {{ .suggestion}}": "{{ .name }}: Suggestion: {{ .suggestion}}", "{{ .name }}: {{ .rejection }}": "{{ .name }} : {{ .rejection }}", - "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", + "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "{{.Driver}} utilise actuellement le pilote de stockage {{.StorageDriver}}, envisagez de passer à overlay2 pour de meilleures performances", "{{.count}} nodes stopped.": "{{.count}} nœud(s) arrêté(s).", "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} est manquant, il va être recréé.", "{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "{{.driver_name}} n'a pas pu continuer car le service {{.driver_name}} n'est pas fonctionnel.", "{{.driver_name}} has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "{{.driver_name}} dispose de moins de 2 processeurs disponibles, mais Kubernetes nécessite au moins 2 procésseurs pour fonctionner", "{{.driver_name}} has only {{.container_limit}}MB memory but you specified {{.specified_memory}}MB": "{{.driver_name}} ne dispose que de {{.container_limit}}Mo de mémoire, mais vous avez spécifié {{.specified_memory}}Mo", "{{.driver}} only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "{{.driver}} ne dispose que de {{.size}}Mio disponible, moins que les {{.req}}Mio requis pour Kubernetes", - "{{.extra_option_component_name}}.{{.key}}={{.value}}": "", - "{{.name}} doesn't have images.": "", - "{{.name}} has following images:": "", + "{{.extra_option_component_name}}.{{.key}}={{.value}}": "{{.extra_option_component_name}}.{{.key}}={{.value}}", + "{{.name}} doesn't have images.": "{{.name}} n'a pas d'images.", + "{{.name}} has following images:": "{{.name}} a les images suivantes :", "{{.name}} has no available configuration options": "{{.name}} n'a pas d'options de configuration disponible", "{{.name}} is already running": "{{.name}} est déjà en cours d'exécution", "{{.name}} was successfully configured": "{{.name}} a été configuré avec succès", - "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "{{.n}} manque presque d'espace disque, ce qui peut entraîner l'échec des déploiements ! ({{.p}} % de la capacité)", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "{{.n}} n'a plus d'espace disque ! (/var est à {{.p}} % de capacité)", "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "{{.oxibin}} prend un temps anormalement long pour répondre, pensez à redémarrer {{.osibin}}", "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "{{.path}} est la version {{.client_version}}, qui peut comporter des incompatibilités avec Kubernetes {{.cluster_version}}.", "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}minikube {{.version}} sur {{.platform}}", - "{{.profile}} profile is not valid: {{.err}}": "", + "{{.profile}} profile is not valid: {{.err}}": "Le profil {{.profile}} n'est pas valide : {{.error}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "{{.type}} n'est pas encore un système de fichiers pris en charge. Nous essaierons quand même !", "{{.url}} is not accessible: {{.error}}": "{{.url}} n'est pas accessible : {{.error}}" -} \ No newline at end of file +} diff --git a/translations/ja.json b/translations/ja.json index 359f941d7bff..d86712a73c9d 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -624,7 +624,7 @@ "The heapster addon is depreciated. please try to disable metrics-server instead": "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "hyperv 仮想スイッチ名。最初に見つかったものにデフォルト設定されます(hyperv ドライバのみ)", "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "", - "The image you are trying to add {{.imageName}} doesn't exist!": "", + "The image '{{.imageName}}' was not found; unable to add it to cache.": "", "The initial time interval for each check that wait performs in seconds": "", "The kubeadm binary within the Docker container is not executable": "", "The kubernetes version that the minikube VM will use (ex: v1.2.3)": "minikube VM で使用される Kubernetes バージョン(例: v1.2.3)", diff --git a/translations/ko.json b/translations/ko.json index 67b0f2a3fa02..6d9761ed21e2 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -33,8 +33,7 @@ "A set of apiserver IP Addresses which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "", "A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "", "A set of key=value pairs that describe feature gates for alpha/experimental features.": "", - "Access the Kubernetes dashboard running within the minikube cluster": "", - "Access the kubernetes dashboard running within the minikube cluster": "minikube 클러스터 내의 쿠버네티스 대시보드에 접근합니다", + "Access the Kubernetes dashboard running within the minikube cluster": "minikube 클러스터 내의 쿠버네티스 대시보드에 접근합니다", "Access to ports below 1024 may fail on Windows with OpenSSH clients older than v8.1. For more information, see: https://minikube.sigs.k8s.io/docs/handbook/accessing/#access-to-ports-1024-on-windows-requires-root-permission": "", "Add SSH identity key to SSH authentication agent": "SSH 인증 에이전트에 SSH ID 키 추가합니다", "Add an image to local cache.": "로컬 캐시에 이미지를 추가합니다", @@ -639,7 +638,7 @@ "The heapster addon is depreciated. please try to disable metrics-server instead": "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "", "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "", - "The image you are trying to add {{.imageName}} doesn't exist!": "", + "The image '{{.imageName}}' was not found; unable to add it to cache.": "", "The initial time interval for each check that wait performs in seconds": "", "The kubeadm binary within the Docker container is not executable": "", "The machine-driver specified is failing to start. Try running 'docker-machine-driver-\u003ctype\u003e version'": "", diff --git a/translations/pl.json b/translations/pl.json index e8eb780ae80f..1d0462ae2165 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -23,70 +23,68 @@ "--kvm-numa-count range is 1-8": "", "--network flag is only valid with the docker/podman and KVM drivers, it will be ignored": "", "\u003ctarget file absolute path\u003e must be an absolute Path. Relative Path is not allowed (example: \"/home/docker/copied.txt\")": "", - "==\u003e Audit \u003c==": "", - "==\u003e Last Start \u003c==": "", - "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "", + "==\u003e Audit \u003c==": "==\u003e Audyt \u003c==", + "==\u003e Last Start \u003c==": "==\u003e Ostatni start \u003c==", + "A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "VPN lub zapora sieciowa przeszkadza w komunikacji protokołem HTTP z maszyną wirtualną minikube. Spróbuj użyć innego sterownika: https://minikube.sigs.k8s.io/docs/start/", "A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "", "A firewall is interfering with minikube's ability to make outgoing HTTPS requests. You may need to change the value of the HTTPS_PROXY environment variable.": "", "A firewall is likely blocking minikube from reaching the internet. You may need to configure minikube to use a proxy.": "", "A set of apiserver IP Addresses which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "", "A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "", "A set of key=value pairs that describe feature gates for alpha/experimental features.": "", - "Access the Kubernetes dashboard running within the minikube cluster": "", - "Access the kubernetes dashboard running within the minikube cluster": "Dostęp do dashboardu uruchomionego w klastrze kubernetesa w minikube", + "Access the Kubernetes dashboard running within the minikube cluster": "Dostęp do dashboardu uruchomionego w klastrze kubernetesa w minikube", "Access to ports below 1024 may fail on Windows with OpenSSH clients older than v8.1. For more information, see: https://minikube.sigs.k8s.io/docs/handbook/accessing/#access-to-ports-1024-on-windows-requires-root-permission": "", "Add SSH identity key to SSH authentication agent": "", - "Add an image to local cache.": "", - "Add host key to SSH known_hosts file": "", - "Add image to cache for all running minikube clusters": "", - "Add machine IP to NO_PROXY environment variable": "", - "Add, delete, or push a local image into minikube": "", - "Add, remove, or list additional nodes": "", - "Adding node {{.name}} to cluster {{.cluster}}": "", + "Add an image to local cache.": "Dodaj obraz do lokalnego cache", + "Add host key to SSH known_hosts file": "Dodaj klucz hosta do pliku known_hosts", + "Add image to cache for all running minikube clusters": "Dodaj obraz do cache'a dla wszystkich uruchomionych klastrów minikube", + "Add machine IP to NO_PROXY environment variable": "Dodaj IP serwera do zmiennej środowiskowej NO_PROXY", + "Add, delete, or push a local image into minikube": "Dodaj, usuń lub wypchnij lokalny obraz do minikube", + "Add, remove, or list additional nodes": "Dodaj, usuń lub wylistuj pozostałe węzły", + "Adding node {{.name}} to cluster {{.cluster}}": "Dodawanie węzła {{.name}} do klastra {{.cluster}}", "Additional help topics": "Dodatkowe tematy pomocy", "Additional mount options, such as cache=fscache": "Dodatkowe opcje montowania, jak na przykład cache=fscache", - "Adds a node to the given cluster config, and starts it.": "", - "Adds a node to the given cluster.": "", + "Adds a node to the given cluster config, and starts it.": "Dodaje węzeł do konfiguracji danego klastra i wystartowuje go", + "Adds a node to the given cluster.": "Dodaje węzeł do danego klastra", "Advanced Commands:": "Zaawansowane komendy", - "After the addon is enabled, please run \"minikube tunnel\" and your ingress resources would be available at \"127.0.0.1\"": "", + "After the addon is enabled, please run \"minikube tunnel\" and your ingress resources would be available at \"127.0.0.1\"": "Po włączeniu addona wykonaj komendę \"minikube tunnel\". Twoje zasoby będą dostępne pod adresem \"127.0.0.1\"", "Aliases": "Aliasy", - "All existing scheduled stops cancelled": "", + "All existing scheduled stops cancelled": "Wszystkie zaplanowane zatrzymania zostały anulowane", "Allow user prompts for more information": "", "Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to \\\"auto\\\" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers": "", - "Amount of RAM allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "Ilość zarezerwowanej pamięci RAM dla maszyny wirtualnej minikube (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or )", - "Amount of RAM allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "Ilość zarezerwowanej pamięci RAM dla maszyny wirtualnej minikube (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or )", + "Amount of RAM allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "Ilość zarezerwowanej pamięci RAM dla maszyny wirtualnej minikube (format: \u003cnumber\u003e[\u003cunit\u003e], gdzie jednostka to = b, k, m lub g)", "Amount of RAM to allocate to Kubernetes (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "", "Amount of time to wait for a service in seconds": "Czas oczekiwania na serwis w sekundach", "Amount of time to wait for service in seconds": "Czas oczekiwania na serwis w sekundach", - "Another hypervisor, such as VirtualBox, is conflicting with KVM. Please stop the other hypervisor, or use --driver to switch to it.": "", - "Another minikube instance is downloading dependencies... ": "", - "Another program is using a file required by minikube. If you are using Hyper-V, try stopping the minikube VM from within the Hyper-V manager": "", - "At least needs control plane nodes to enable addon": "", - "Automatically selected the {{.driver}} driver": "", - "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "", + "Another hypervisor, such as VirtualBox, is conflicting with KVM. Please stop the other hypervisor, or use --driver to switch to it.": "Inny hiperwizor, taki jak Virtualbox, powoduje konflikty z KVM. Zatrzymaj innego hiperwizora lub użyj flagi --driver żeby go zmienić.", + "Another minikube instance is downloading dependencies... ": "Inny program minikube już pobiera zależności...", + "Another program is using a file required by minikube. If you are using Hyper-V, try stopping the minikube VM from within the Hyper-V manager": "Inny program używa pliku wymaganego przez minikube. Jeśli używasz Hyper-V, spróbuj zatrzymać maszynę wirtualną minikube z poziomu managera Hyper-V", + "At least needs control plane nodes to enable addon": "Wymaga węzłów z płaszczyzny kontrolnej do włączenia addona", + "Automatically selected the {{.driver}} driver": "Automatycznie wybrano sterownik {{.driver}}", + "Automatically selected the {{.driver}} driver. Other choices: {{.alternates}}": "Automatycznie wybrano sterownik {{.driver}}. Inne możliwe sterowniki: {{.alternates}}", "Available Commands": "Dostępne polecenia", "Basic Commands:": "Podstawowe polecenia", - "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "", + "Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "Z powodu użycia sterownika dockera na systemie operacyjnym {{.operating_system}}, terminal musi zostać uruchomiony.", "Bind Address: {{.Address}}": "", - "Booting up control plane ...": "", + "Booting up control plane ...": "Uruchamianie płaszczyzny kontrolnej ...", "Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "", "Bridge CNI is incompatible with multi-node clusters, use a different CNI": "", - "Build a container image in minikube": "", - "Build a container image, using the container runtime.": "", + "Build a container image in minikube": "Zbuduj obraz kontenera w minikube", + "Build a container image, using the container runtime.": "Zbuduj obraz kontenera używając środowiska uruchomieniowego kontenera", "CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "", "Cache image from docker daemon": "", "Cache image from remote registry": "", - "Cannot find directory {{.path}} for copy": "", + "Cannot find directory {{.path}} for copy": "Nie znaleziono katalogu {{.path}} do skopiowania", "Cannot find directory {{.path}} for mount": "Nie można odnaleźć folderu {{.path}} do zamontowania", - "Cannot use both --output and --format options": "", - "Check if you have unnecessary pods running by running 'kubectl get po -A": "", + "Cannot use both --output and --format options": "Nie można użyć obydwu opcji --output i --format jednocześnie", + "Check if you have unnecessary pods running by running 'kubectl get po -A": "Sprawdź czy są uruchomione jakieś niepotrzebne pody za pomocą komendy: 'kubectl get pod -A' ", "Check output of 'journalctl -xeu kubelet', try passing --extra-config=kubelet.cgroup-driver=systemd to minikube start": "", - "Check that libvirt is setup properly": "", + "Check that libvirt is setup properly": "Sprawdź czy bibliteka libvirt jest poprawnie zainstalowana", "Check that minikube is running and that you have specified the correct namespace (-n flag) if required.": "Upewnij się, że minikube zostało uruchomione i że podano poprawną przestrzeń nazw (flaga -n) celem zamontowania", "Check that the provided apiserver flags are valid, and that SELinux is disabled": "", "Check that your --kubernetes-version has a leading 'v'. For example: 'v1.1.14'": "Upewnij się, że --kubernetes-version ma 'v' z przodu. Na przykład `v1.1.14`", "Check your firewall rules for interference, and run 'virt-host-validate' to check for KVM configuration issues. If you are running minikube within a VM, consider using --driver=none": "", - "Choose a smaller value for --memory, such as 2000": "", + "Choose a smaller value for --memory, such as 2000": "Wybierz mniejszą wartość dla --memory, przykładowo 2000", "ChromeOS is missing the kernel support necessary for running Kubernetes": "", "Cluster was created without any CNI, adding a node to it might cause broken networking.": "", "Configuration and Management Commands:": "Polecenia konfiguracji i zarządzania", @@ -95,17 +93,17 @@ "Configure environment to use minikube's Docker daemon": "", "Configure environment to use minikube's Podman service": "", "Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list": "", - "Configuring RBAC rules ...": "", + "Configuring RBAC rules ...": "Konfigurowanie zasad RBAC ...", "Configuring environment for Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}}": "Konfigurowanie środowiska dla Kubernetesa w wersji {{.k8sVersion}} na {{.runtime}} {{.runtimeVersion}}", "Configuring local host environment ...": "Konfigurowanie lokalnego środowiska hosta...", "Configuring {{.name}} (Container Networking Interface) ...": "", "Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "", "Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "", - "Connect to LoadBalancer services": "", + "Connect to LoadBalancer services": "Połącz się do serwisów LoadBalancer'a", "Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "", - "Consider increasing Docker Desktop's memory size.": "", + "Consider increasing Docker Desktop's memory size.": "Rozważ przydzielenie większej ilości pamięci RAM dla programu Docker Desktop", "Continuously listing/getting the status with optional interval duration.": "", - "Copy the specified file into minikube": "", + "Copy the specified file into minikube": "Skopiuj dany plik do minikube", "Copy the specified file into minikube, it will be saved at path \u003ctarget file absolute path\u003e in your minikube.\\nExample Command : \\\"minikube cp a.txt /home/docker/b.txt\\\"\\n \\\"minikube cp a.txt minikube-m02:/home/docker/b.txt\\\"\\n": "", "Could not determine a Google Cloud project, which might be ok.": "", "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "", @@ -119,22 +117,22 @@ "Creating {{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "Tworzenie {{.driver_name}} (CPUs={{.number_of_cpus}}, Pamięć={{.memory_size}}MB, Dysk={{.disk_size}}MB)...", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "", "Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "", - "Current context is \"{{.context}}\"": "", - "DEPRECATED, use `driver` instead.": "", - "DEPRECATED: Replaced by --cni=bridge": "", + "Current context is \"{{.context}}\"": "Obecny kontekst to \"{{.context}}\"", + "DEPRECATED, use `driver` instead.": "PRZESTARZAŁE, użyj zamiast tego `driver`", + "DEPRECATED: Replaced by --cni=bridge": "PRZESTARZAŁE, zostało zastąpione przez --cni=bridge", "Default group id used for the mount": "Domyślne id groupy użyte dla montowania", "Default user id used for the mount": "Domyślne id użytkownika użyte dla montowania ", - "Delete an image from the local cache.": "", - "Deletes a local Kubernetes cluster": "", + "Delete an image from the local cache.": "Usuń obraz z lokalnego cache'a", + "Deletes a local Kubernetes cluster": "Usuwa lokalny klaster Kubernetesa", "Deletes a local Kubernetes cluster. This command deletes the VM, and removes all\nassociated files.": "", - "Deletes a local kubernetes cluster": "Usuwa lokalny klaster kubernetesa", + "Deletes a local kubernetes cluster": "Usuwa lokalny klaster Kubernetesa", "Deletes a local kubernetes cluster. This command deletes the VM, and removes all\nassociated files.": "Usuwa lokalny klaster kubernetesa. Ta komenda usuwa maszynę wirtualną i wszystkie powiązane pliki.", "Deletes a local kubernetes cluster. This command deletes the VM, and removes all associated files.": "Usuwa lokalny klaster kubernetesa. Ta komenda usuwa maszynę wirtualną i wszystkie powiązane pliki.", - "Deletes a node from a cluster.": "", + "Deletes a node from a cluster.": "Usuwa węzeł z klastra", "Deleting \"{{.profile_name}}\" in {{.driver_name}} ...": "Usuwanie \"{{.profile_name}}\" - {{.driver_name}}...", - "Deleting container \"{{.name}}\" ...": "", + "Deleting container \"{{.name}}\" ...": "Usuwanie kontenera \"{{.name}}\" ...", "Deleting existing cluster {{.name}} with different driver {{.driver_name}} due to --delete-on-failure flag set by the user. ": "", - "Deleting node {{.name}} from cluster {{.cluster}}": "", + "Deleting node {{.name}} from cluster {{.cluster}}": "Usuwanie węzła {{.name}} z klastra {{.cluster}}", "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "", "Disable dynamic memory in your VM manager, or pass in a larger --memory value": "", "Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "", @@ -355,110 +353,110 @@ "Kubernetes requires at least 2 CPU's to start": "", "Kubernetes {{.new}} is now available. If you would like to upgrade, specify: --kubernetes-version={{.prefix}}{{.new}}": "", "Kubernetes {{.version}} is not supported by this release of minikube": "", - "Launching Kubernetes ...": "Uruchamianie Kubernetesa...", - "Launching proxy ...": "", + "Launching Kubernetes ...": "Uruchamianie Kubernetesa ...", + "Launching proxy ...": "Uruchamianie proxy ...", "List all available images from the local cache.": "", - "List existing minikube nodes.": "", + "List existing minikube nodes.": "Wylistuj istniejące węzły minikube", "List image names the addon w/ADDON_NAME used. For a list of available addons use: minikube addons list": "", - "List images": "", - "List nodes.": "", + "List images": "Wylistuj obrazy", + "List nodes.": "Wylistuj węzły", "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "", - "List of ports that should be exposed (docker and podman driver only)": "", + "List of ports that should be exposed (docker and podman driver only)": "Lista portów, które powinny zostać wystawione (tylko dla sterowników docker i podman)", "Listening to 0.0.0.0 on external docker host {{.host}}. Please be advised": "", - "Listening to {{.listenAddr}}. This is not recommended and can cause a security vulnerability. Use at your own risk": "", - "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "", + "Listening to {{.listenAddr}}. This is not recommended and can cause a security vulnerability. Use at your own risk": "Nasłuchiwanie na adresie {{.listenAddr}}. Jest to niezalecane i może spowodować powstanie podaności bezpieczeństwa. Używaj na własne ryzyko", + "Lists all available minikube addons as well as their current statuses (enabled/disabled)": "Wylistuj wszystkie dostępne addony minikube razem z ich obecnymi statusami (włączony/wyłączony)", "Lists all minikube profiles.": "Wylistuj wszystkie profile minikube", - "Lists all valid default values for PROPERTY_NAME": "", - "Lists all valid minikube profiles and detects all possible invalid profiles.": "", - "Lists the URLs for the services in your local cluster": "", - "Load a image into minikube": "", - "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "", + "Lists all valid default values for PROPERTY_NAME": "Wylistuj wszystkie prawidłowe domyślne wartości dla opcji konfiguracyjnej PROPERTY_NAME", + "Lists all valid minikube profiles and detects all possible invalid profiles.": "Wylistuj wszystkie prawidłowe profile minikube i wykryj wszystkie nieprawidłowe profile.", + "Lists the URLs for the services in your local cluster": "Wylistuj adresy URL serwisów w twoim lokalnym klastrze", + "Load a image into minikube": "Załaduj obraz do minikube", + "Local folders to share with Guest via NFS mounts (hyperkit driver only)": "Lokalne katalogi do współdzielenia z Guestem poprzez NFS (tylko sterownik hyperkit)", "Local proxy ignored: not passing {{.name}}={{.value}} to docker env.": "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "", "Location of the minikube iso": "Ścieżka do obrazu iso minikube", "Location of the minikube iso.": "Ścieżka do obrazu iso minikube", - "Locations to fetch the minikube ISO from.": "", + "Locations to fetch the minikube ISO from.": "Ścieżki, z których pobrany będzie obra ISO minikube", "Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'": "Zaloguj się i wykonaj polecenie w maszynie za pomocą ssh. Podobne do 'docker-machine ssh'", "Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'.": "Zaloguj się i wykonaj polecenie w maszynie za pomocą ssh. Podobne do 'docker-machine ssh'", - "Log into the minikube environment (for debugging)": "", - "Manage images": "", - "Message Size: {{.size}}": "", - "Modify persistent configuration values": "", - "More information: https://docs.docker.com/engine/install/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities": "", - "Most users should use the newer 'docker' driver instead, which does not require root!": "", + "Log into the minikube environment (for debugging)": "Zaloguj się do środowiska minikube (do debugowania)", + "Manage images": "Zarządzaj obrazami", + "Message Size: {{.size}}": "Rozmiar wiadomości: {{.size}}", + "Modify persistent configuration values": "Modyfikuj globalne opcje konfiguracyjne", + "More information: https://docs.docker.com/engine/install/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities": "Więcej informacji: https://docs.docker.com/engine/install/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities", + "Most users should use the newer 'docker' driver instead, which does not require root!": "Większość użytkowników powinna używać nowszego sterownika docker, ktory nie wymaga uruchamiania z poziomu roota!", "Mount type: {{.name}}": "", "Mounting host path {{.sourcePath}} into VM as {{.destinationPath}} ...": "", "Mounts the specified directory into minikube": "Montuje podany katalog wewnątrz minikube", "Mounts the specified directory into minikube.": "Montuje podany katalog wewnątrz minikube", - "Multiple errors deleting profiles": "", - "Multiple minikube profiles were found - ": "", + "Multiple errors deleting profiles": "Wystąpiło wiele błędów podczas usuwania profili", + "Multiple minikube profiles were found - ": "Znaleziono wiele profili minikube - ", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", "NOTE: This process must stay alive for the mount to be accessible ...": "", "Networking and Connectivity Commands:": "", - "No IP address provided. Try specifying --ssh-ip-address, or see https://minikube.sigs.k8s.io/docs/drivers/ssh/": "", - "No changes required for the \"{{.context}}\" context": "", - "No minikube profile was found. ": "", - "No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/": "", - "No such addon {{.name}}": "", - "Node {{.name}} failed to start, deleting and trying again.": "", - "Node {{.name}} was successfully deleted.": "", - "Node {{.nodeName}} does not exist.": "", - "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", - "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "", + "No IP address provided. Try specifying --ssh-ip-address, or see https://minikube.sigs.k8s.io/docs/drivers/ssh/": "Nie znaleziono adresu IP. Spróbuj przekazać adres IP za pomocą flagi --ssh-ip-address lub odwiedź https://minikube.sigs.k8s.io/docs/drivers/ssh/", + "No changes required for the \"{{.context}}\" context": "Żadne zmiany nie są wymagane dla kontekstu \"{{.context}}\"", + "No minikube profile was found. ": "Nie znaleziono żadnego profilu minikube", + "No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/": "Nie znaleziono żadnego możliwego sterownika. Spróbuj przekazać sterownik za pomocą flagi --driver lub odwiedź https://minikube.sigs.k8s.io/docs/start/", + "No such addon {{.name}}": "Nie istnieje addon {{.name}}", + "Node {{.name}} failed to start, deleting and trying again.": "Węzeł {{.name}} nie uruchomił się pomyślnie. Usuwam i próbuję uruchomić węzeł ponownie", + "Node {{.name}} was successfully deleted.": "Węzeł {{.name}} został pomyślnie usunięty", + "Node {{.nodeName}} does not exist.": "Węzeł {{.nodeName}} nie istnieje", + "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "Żadne znane repozytorium nie jest osiągalne. Rozważ wyspecyfikowanie alternatywnego repozytorium za pomocą flagi --image-repository", + "None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "Żadne znane repozytorium w twojej lokalizacji nie jest osiągalne. Używam zamiast tego {{.image_repository_name}}", "Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "", "Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "", - "Number of CPUs allocated to Kubernetes.": "", + "Number of CPUs allocated to Kubernetes.": "Liczba procesorów przypisana do Kubernetesa", "Number of CPUs allocated to the minikube VM": "Liczba procesorów przypisana do maszyny wirtualnej minikube", - "Number of CPUs allocated to the minikube VM.": "Liczba procesorów przypisana do maszyny wirtualnej minikube.", + "Number of CPUs allocated to the minikube VM.": "Liczba procesorów przypisana do maszyny wirtualnej minikube", "Number of lines back to go within the log": "", - "OS release is {{.pretty_name}}": "", - "One of 'yaml' or 'json'.": "", - "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "", - "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "", - "Open the addons URL with https instead of http": "", - "Open the service URL with https instead of http (defaults to \\\"false\\\")": "", - "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "", - "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "", - "Opening {{.url}} in your default browser...": "", + "OS release is {{.pretty_name}}": "Wersja systemu operacyjnego to {{.pretty_name}}", + "One of 'yaml' or 'json'.": "Jeden z dwóćh formatów - 'yaml' lub 'json'", + "Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "Tylko znaki alfanumeryczne oraz myślniki '-' są dozwolone. Co najmniej jeden znak, zaczynając od znaku alfanumerycznego", + "Only alphanumeric and dashes '-' are permitted. Minimum 2 characters, starting with alphanumeric.": "Tylko znaki alfanumeryczne oraz myślniki '-' są dozwolone. Co najmniej dwa znaki, zaczynając od znaku alfanumerycznego", + "Open the addons URL with https instead of http": "Otwórz URL addonów używając protokołu https zamiast http", + "Open the service URL with https instead of http (defaults to \\\"false\\\")": "Otwórz URL serwisu używając protokołu https zamiast http (domyślnie ma wartość fałsz)", + "Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "Otwieranie serwisu Kubernetesa {{.namespace_name}}/{{.service_name}} w domyślnej przeglądarce...", + "Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "Otwieranie serwisu {{.namespace_name}}/{{.service_name}} w domyślnej przeglądarce...", + "Opening {{.url}} in your default browser...": "Otwieranie {{.url}} w domyślnej przeglądarce...", "Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "", - "Operations on nodes": "", - "Options: {{.options}}": "", - "Output format. Accepted values: [json]": "", + "Operations on nodes": "Operacje na węzłach", + "Options: {{.options}}": "Opcje: {{.options}}", + "Output format. Accepted values: [json]": "Format wyjściowy. Akceptowane wartości: [json]", "Outputs minikube shell completion for the given shell (bash or zsh)": "Zwraca autouzupełnianie poleceń minikube dla danej powłoki (bash, zsh)", "Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash_completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "", - "Overwrite image even if same image:tag name exists": "", - "Path to the Dockerfile to use (optional)": "", - "Pause": "", - "Paused {{.count}} containers": "", - "Paused {{.count}} containers in: {{.namespaces}}": "", - "Pausing node {{.name}} ... ": "", + "Overwrite image even if same image:tag name exists": "Nadpisuje obraz nawet jeśli istnieje obraz o tej samej nazwie i tagu.", + "Path to the Dockerfile to use (optional)": "Ścieżka pliku Dockerfile, którego należy użyć (opcjonalne)", + "Pause": "Stop", + "Paused {{.count}} containers": "Zatrzymane kontenery: {{.count}}", + "Paused {{.count}} containers in: {{.namespaces}}": "Zatrzymane kontenery: {{.count}} w przestrzeniach nazw: {{.namespaces}}", + "Pausing node {{.name}} ... ": "Zatrzymywanie węzła {{.name}} ... ", "Permissions: {{.octalMode}} ({{.writtenMode}})": "", - "Please attach the following file to the GitHub issue:": "", - "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", - "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", + "Please attach the following file to the GitHub issue:": "Dołącz następujący plik do zgłoszenia problemu na GitHubie:", + "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "Utwórz klaster z większym rozmiarem dysku: `minikube start --disk SIZE_MB`", + "Please either authenticate to the registry or use --base-image flag to use a different registry.": "Uwierzytelnij się w rejestrze lub użyć flagi --base-image w celu użycia innego rejestru.", "Please enter a value:": "Wprowadź wartość", - "Please free up disk or prune images.": "", - "Please increse Desktop's disk size.": "", - "Please install the minikube hyperkit VM driver, or select an alternative --driver": "", - "Please install the minikube kvm2 VM driver, or select an alternative --driver": "", + "Please free up disk or prune images.": "Zwolnij miejsce na dysku lub usuń niepotrzebne obrazy", + "Please increse Desktop's disk size.": "Zwiększ miejsce na dysku dla programu Docker Desktop", + "Please install the minikube hyperkit VM driver, or select an alternative --driver": "Zainstaluj sterownik hyperkit lub wybierz inny sterownik używając flagi --driver", + "Please install the minikube kvm2 VM driver, or select an alternative --driver": "Zainstaluj sterownik kvm2 lub wybierz inny sterownik używając flagi --driver", "Please make sure the service you are looking for is deployed or is in the correct namespace.": "Proszę upewnij się, że serwis którego szukasz znajduje się w prawidłowej przestrzeni nazw", "Please provide a path or url to build": "", "Please provide an image in your local daemon to load into minikube via \u003cminikube image load IMAGE_NAME\u003e": "", "Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "", "Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "", - "Please see {{.documentation_url}} for more details": "", - "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "", + "Please see {{.documentation_url}} for more details": "Zobacz {{.documentation_url}} żeby uzyskać więcej informacji", + "Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "Sprecyzuj katalog, który ma być zamontowany: \n\tminikube mount \u003ckatalog źródłowy\u003e:\u003ckatalog docelowy\u003e (przykład: \"/host-home:/vm-home\")", "Please specify the path to copy: \n\tminikube cp \u003csource file path\u003e \u003ctarget file absolute path\u003e (example: \"minikube cp a/b.txt /copied.txt\")": "", - "Please try purging minikube using `minikube delete --all --purge`": "", + "Please try purging minikube using `minikube delete --all --purge`": "Spróbuj wyczyścic minikube używając: `minikube delete --all --purge`", "Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "Proszę zaktualizować '{{.driver_executable}}'. {{.documentation_url}}", "Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "", - "Populates the specified folder with documentation in markdown about minikube": "", - "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "", - "Powering off \"{{.profile_name}}\" via SSH ...": "", + "Populates the specified folder with documentation in markdown about minikube": "Umieszcza dokumentację minikube w formacie markdown w podanym katalogu", + "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "PowerShell jest uruchomiony w trybie ograniczonym, co jest niekompatybilne ze skryptowaniem w wirtualizacji z użyciem Hyper-V", + "Powering off \"{{.profile_name}}\" via SSH ...": "Wyłączanie klastra \"{{.profile_name}}\" przez SSH ...", "Preparing Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}} ...": "Przygotowywanie Kubernetesa {{.k8sVersion}} na {{.runtime}} {{.runtimeVersion}}...", "Print current and latest version number": "Wyświetl aktualną i najnowszą wersję", - "Print just the version number.": "", + "Print just the version number.": "Wyświetl tylko numer wersji", "Print the version of minikube": "Wyświetl wersję minikube", "Print the version of minikube.": "Wyświetl wersję minikube.", "Problems detected in {{.entry}}:": "Wykryto problem w {{.name}}", @@ -644,7 +642,7 @@ "The heapster addon is depreciated. please try to disable metrics-server instead": "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "", "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "", - "The image you are trying to add {{.imageName}} doesn't exist!": "", + "The image '{{.imageName}}' was not found; unable to add it to cache.": "", "The initial time interval for each check that wait performs in seconds": "", "The kubeadm binary within the Docker container is not executable": "", "The kubernetes version that the minikube VM will use (ex: v1.2.3)": "Wersja kubernetesa, która zostanie użyta przez wirtualną maszynę minikube (np. v1.2.3)", @@ -865,10 +863,10 @@ "failed to start node": "", "fish completion failed": "", "fish completion.": "", - "if true, will embed the certs in kubeconfig.": "", + "if true, will embed the certs in kubeconfig.": "Jeśli ta opcja będzie miała wartoś true, zakodowane w base64 certyfikaty zostaną osadzone w pliku konfiguracyjnym kubeconfig zamiast ścieżek do plików z certyfikatami", "if you want to create a profile you can by this command: minikube start -p {{.profile_name}}": "", "initialization failed, will try again: {{.error}}": "", - "invalid kubernetes version": "", + "invalid kubernetes version": "Nieprawidłowa wersja Kubernetesa", "keep the kube-context active after cluster is stopped. Defaults to false.": "", "kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "", "kubectl and minikube configuration will be stored in {{.home_folder}}": "konfiguracja minikube i kubectl będzie przechowywana w katalogu {{.home_dir}}", @@ -877,17 +875,17 @@ "kubectl proxy": "", "libmachine failed": "", "list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "", - "loading profile": "", + "loading profile": "Ładowanie profilu", "max time to wait per Kubernetes or host to be healthy.": "", "minikube addons list --output OUTPUT. json, list": "", "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "", - "minikube is not meant for production use. You are opening non-local traffic": "", - "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "", + "minikube is not meant for production use. You are opening non-local traffic": "minikube nie jest przeznaczony do użycia w środowisku produkcyjnym. Otwierasz klaster na ruch nielokalny", + "minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "uzyskanie dostępu do Google Container Registry poprzez minikube nie powiodło się. Możliwe, że musisz skonfigurować ustawienia proxy HTTP w minikube", "minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "", - "minikube profile was successfully set to {{.profile_name}}": "", - "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", - "minikube quickly sets up a local Kubernetes cluster": "", - "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "", + "minikube profile was successfully set to {{.profile_name}}": "profil minikube został z powodzeniem zmieniony na: {{.profile_name}}", + "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "minikube dostarcza lokalne klastry Kubernetesa zoptymalizowane do celów rozwoju oprogramowania oraz zarządza nimi", + "minikube quickly sets up a local Kubernetes cluster": "minikube szybko inicjalizuje lokalny klaster Kubernetesa", + "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "użycie flagi --force sprawia, że minikube pomija pewne walidacje, co może skutkować niespodziewanym zachowaniem", "minikube status --output OUTPUT. json, text": "", "minikube {{.version}} is available! Download it: {{.url}}": "minikube {{.version}} jest dostępne! Pobierz je z: {{.url}}", "mkcmp is used to compare performance of two minikube binaries": "", @@ -896,8 +894,8 @@ "namespaces to pause": "", "namespaces to unpause": "", "network to run minikube with. Now it is used by docker/podman and KVM drivers. If left empty, minikube will create a new network.": "", - "none driver does not support multi-node clusters": "", - "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "", + "none driver does not support multi-node clusters": "sterownik none nie wspiera klastrów składających się z więcej niż jednego węzła", + "not enough arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "Niewystarczająca ilośc argumentów ({{.ArgCount}}). \\nużycie: minikube config set PROPERTY_NAME PROPERTY_VALUE", "numa node is only supported on k8s v1.18 and later": "", "output layout (EXPERIMENTAL, JSON only): 'nodes' or 'cluster'": "", "pause Kubernetes": "", @@ -906,38 +904,38 @@ "provisioning host for node": "", "reload cached images.": "", "reloads images previously added using the 'cache add' subcommand": "", - "retrieving node": "", + "retrieving node": "przywracanie węzła", "scheduled stop is not supported on the none driver, skipping scheduling": "", "service {{.namespace_name}}/{{.service_name}} has no node port": "", - "stat failed": "", + "stat failed": "wykonanie komendy stat nie powiodło się", "status json failure": "", "status text failure": "", "toom any arguments ({{.ArgCount}}).\\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "", "tunnel creates a route to services deployed with type LoadBalancer and sets their Ingress to their ClusterIP. for a detailed example see https://minikube.sigs.k8s.io/docs/tasks/loadbalancer": "", "unable to bind flags": "", "unable to daemonize: {{.err}}": "", - "unable to delete minikube config folder": "", - "unpause Kubernetes": "", - "unset failed": "", - "unsets PROPERTY_NAME from the minikube config file. Can be overwritten by flags or environmental variables": "", - "unsets an individual value in a minikube config file": "", + "unable to delete minikube config folder": "Usuwanie katalogu z plikami konfiguracyjnymi minikube nie powiodło się", + "unpause Kubernetes": "Wznów działanie Kubernetesa", + "unset failed": "Usuwanie wartości nie powiodło się", + "unsets PROPERTY_NAME from the minikube config file. Can be overwritten by flags or environmental variables": "Usuwa wartość o nazwie PROPERTY_NAME z globalnej konfiguracji minikube. Wartość może zostać nadpisana za pomocą flag lub zmiennych środowiskowych", + "unsets an individual value in a minikube config file": "Usuwa pojedynczą wartość w globalnej konfiguracji minikube", "unsupported driver: {{.name}}": "nie wspierany sterownik: {{.name}}", - "unsupported or missing driver: {{.name}}": "", + "unsupported or missing driver: {{.name}}": "nie wspierany lub brakujący sterownik: {{.name}}", "update config": "", - "usage: minikube addons configure ADDON_NAME": "", - "usage: minikube addons disable ADDON_NAME": "", - "usage: minikube addons enable ADDON_NAME": "", - "usage: minikube addons images ADDON_NAME": "", - "usage: minikube addons list": "", - "usage: minikube addons open ADDON_NAME": "", - "usage: minikube config unset PROPERTY_NAME": "", - "usage: minikube delete": "", - "usage: minikube profile [MINIKUBE_PROFILE_NAME]": "", + "usage: minikube addons configure ADDON_NAME": "użycie: minikube addons configure ADDON_NAME", + "usage: minikube addons disable ADDON_NAME": "użycie: minikube addons disable ADDON_NAME", + "usage: minikube addons enable ADDON_NAME": "użycie: minikube addons enable ADDON_NAME", + "usage: minikube addons images ADDON_NAME": "użycie: minikube addons images ADDON_NAME", + "usage: minikube addons list": "użycie: minikube addons list", + "usage: minikube addons open ADDON_NAME": "użycie: minikube addons open ADDON_NAME", + "usage: minikube config unset PROPERTY_NAME": "użycie: minikube config unset PROPERTY_NAME", + "usage: minikube delete": "użycie: minikube delete", + "usage: minikube profile [MINIKUBE_PROFILE_NAME]": "użycie: minikube profile [MINIKUBE_PROFILE_NAME]", "using metrics-server addon, heapster is deprecated": "", "version json failure": "", "version yaml failure": "", - "zsh completion failed": "", - "zsh completion.": "", + "zsh completion failed": "autouzupełnianie zsh nie powiodło się", + "zsh completion.": "autouzupełnianie zsh", "{{ .name }}: Suggestion: {{ .suggestion}}": "", "{{ .name }}: {{ .rejection }}": "", "{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "", @@ -947,20 +945,20 @@ "{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "", "{{.driver_name}} has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "", "{{.driver_name}} has only {{.container_limit}}MB memory but you specified {{.specified_memory}}MB": "", - "{{.driver}} only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "", + "{{.driver}} only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "sterownik {{.driver}} ma tylko {{.size}}MiB dostępnej przestrzeni dyskowej, to mniej niż wymagane {{.req}}MiB dla Kubernetesa", "{{.extra_option_component_name}}.{{.key}}={{.value}}": "", "{{.name}} cluster does not exist": "Klaster {{.name}} nie istnieje", - "{{.name}} doesn't have images.": "", - "{{.name}} has following images:": "", + "{{.name}} doesn't have images.": "{{.name}} nie ma obrazów.", + "{{.name}} has following images:": "{{.name}} ma następujące obrazy:", "{{.name}} has no available configuration options": "{{.name}} nie posiada opcji konfiguracji", - "{{.name}} is already running": "", + "{{.name}} is already running": "{{.name}} został już wcześniej uruchomiony", "{{.name}} was successfully configured": "{{.name}} skonfigurowano pomyślnie", - "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "", - "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "", - "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "", - "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "", + "{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "{{.n}} prawie nie ma wolnej przestrzeni dyskowej, co może powodować, że wdrożenia nie powiodą się ({{.p}}% zużycia przestrzeni dyskowej)", + "{{.n}} is out of disk space! (/var is at {{.p}}% of capacity)": "{{.n}} nie ma wolnej przestrzeni dyskowej! (/var jest w {{.p}}% pełny)", + "{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "Czas odpowiedzi od {{.ocibin}} jest niespotykanie długi, rozważ ponowne uruchomienie {{.ocibin}}", + "{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "{{.path}} jest w wersji {{.client_version}}, co może być niekompatybilne z Kubernetesem w wersji {{.cluster_version}}.", "{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}minikube {{.version}} na {{.platform}}", - "{{.profile}} profile is not valid: {{.err}}": "", + "{{.profile}} profile is not valid: {{.err}}": "{{.profile}} profil nie jest poprawny: {{.err}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "{{.type}} nie jest wspierany przez system plików. I tak spróbujemy!", - "{{.url}} is not accessible: {{.error}}": "" + "{{.url}} is not accessible: {{.error}}": "{{.url}} nie jest osiągalny: {{.error}}" } \ No newline at end of file diff --git a/translations/strings.txt b/translations/strings.txt index b3a8957bf6f4..4757ac5dced4 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -585,7 +585,7 @@ "The heapster addon is depreciated. please try to disable metrics-server instead": "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "", "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "", - "The image you are trying to add {{.imageName}} doesn't exist!": "", + "The image '{{.imageName}}' was not found; unable to add it to cache.": "", "The initial time interval for each check that wait performs in seconds": "", "The kubeadm binary within the Docker container is not executable": "", "The machine-driver specified is failing to start. Try running 'docker-machine-driver-\u003ctype\u003e version'": "", diff --git a/translations/translations.go b/translations/translations.go new file mode 100644 index 000000000000..2407a74dc210 --- /dev/null +++ b/translations/translations.go @@ -0,0 +1,23 @@ +/* +Copyright 2021 The Kubernetes Authors All rights reserved. + +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 translations + +import "embed" + +// Translations contains all translation JSON files. +//go:embed *.json +var Translations embed.FS diff --git a/translations/zh-CN.json b/translations/zh-CN.json index e5864037741f..2fcb2b1d02e9 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -39,8 +39,7 @@ "A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "一组在为 kubernetes 生成的证书中使用的 apiserver 名称。如果您希望将此 apiserver 设置为可从机器外部访问,则可以使用这组 apiserver 名称", "A set of key=value pairs that describe configuration that may be passed to different components.\nThe key should be '.' separated, and the first part before the dot is the component to apply the configuration to.\nValid components are: kubelet, kubeadm, apiserver, controller-manager, etcd, proxy, scheduler\nValid kubeadm parameters:": "一组用于描述可传递给不同组件的配置的键值对。\n其中键应以英文句点“.”分隔,英文句点前面的第一个部分是应用该配置的组件。\n有效组件包括:kubelet、kubeadm、apiserver、controller-manager、etcd、proxy、scheduler\n有效 kubeadm 参数包括:", "A set of key=value pairs that describe feature gates for alpha/experimental features.": "一组用于描述 alpha 版功能/实验性功能的功能限制的键值对。", - "Access the Kubernetes dashboard running within the minikube cluster": "", - "Access the kubernetes dashboard running within the minikube cluster": "访问在 minikube 集群中运行的 kubernetes dashboard", + "Access the Kubernetes dashboard running within the minikube cluster": "访问在 minikube 集群中运行的 kubernetes dashboard", "Access to ports below 1024 may fail on Windows with OpenSSH clients older than v8.1. For more information, see: https://minikube.sigs.k8s.io/docs/handbook/accessing/#access-to-ports-1024-on-windows-requires-root-permission": "", "Add SSH identity key to SSH authentication agent": "", "Add an image to local cache.": "将 image 添加到本地缓存。", @@ -732,7 +731,7 @@ "The heapster addon is depreciated. please try to disable metrics-server instead": "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "hyperv 虚拟交换机名称。默认为找到的第一个 hyperv 虚拟交换机。(仅限 hyperv 驱动程序)", "The hypervisor does not appear to be configured properly. Run 'minikube start --alsologtostderr -v=1' and inspect the error code": "管理程序似乎配置的不正确。执行 'minikube start --alsologtostderr -v=1' 并且检查错误代码", - "The image you are trying to add {{.imageName}} doesn't exist!": "", + "The image '{{.imageName}}' was not found; unable to add it to cache.": "", "The initial time interval for each check that wait performs in seconds": "", "The kubeadm binary within the Docker container is not executable": "", "The kubernetes version that the minikube VM will use (ex: v1.2.3)": "minikube 虚拟机将使用的 kubernetes 版本(例如 v1.2.3)",