diff --git a/.github/workflows/sbom.yml b/.github/workflows/sbom.yml index 1427d97ed142..31d80cf12801 100644 --- a/.github/workflows/sbom.yml +++ b/.github/workflows/sbom.yml @@ -13,7 +13,7 @@ jobs: - name: Checkout repository uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - name: Install bom - uses: kubernetes-sigs/release-actions/setup-bom@10fecc1c66829d291b2f2fb1a27329d152f212e6 # main + uses: kubernetes-sigs/release-actions/setup-bom@841d76a188a7c121231a863572e27012805715a2 # main - name: Generage SBOM run: | bom generate -o minikube_${{github.ref_name}}_sbom.spdx \ diff --git a/.github/workflows/update-crun-version.yml b/.github/workflows/update-crun-version.yml new file mode 100644 index 000000000000..8b134388264c --- /dev/null +++ b/.github/workflows/update-crun-version.yml @@ -0,0 +1,72 @@ +name: "update-crun-version" +on: + workflow_dispatch: + schedule: + # every Wednesday at around 3 am pacific/10 am UTC + - cron: "0 10 * * 3" +env: + GOPROXY: https://proxy.golang.org + GO_VERSION: '1.22.1' +permissions: + contents: read + +jobs: + bump-crun-version: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 + with: + go-version: ${{env.GO_VERSION}} + cache-dependency-path: ./go.sum + - name: Bump crun Version + id: bumpCrun + run: | + echo "OLD_VERSION=$(DEP=crun make get-dependency-version)" >> "$GITHUB_OUTPUT" + make update-crun-version + echo "NEW_VERSION=$(DEP=crun make get-dependency-version)" >> "$GITHUB_OUTPUT" + # The following is to support multiline with GITHUB_OUTPUT, see https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings + echo "changes<> "$GITHUB_OUTPUT" + echo "$(git status --porcelain)" >> "$GITHUB_OUTPUT" + echo "EOF" >> "$GITHUB_OUTPUT" + - name: Create PR + id: createPR + if: ${{ steps.bumpCrun.outputs.changes != '' }} + uses: peter-evans/create-pull-request@70a41aba780001da0a30141984ae2a0c95d8704e + with: + token: ${{ secrets.MINIKUBE_BOT_PAT }} + commit-message: 'Kicbase/ISO: Update crun from ${{ steps.bumpCrun.outputs.OLD_VERSION }} to ${{ steps.bumpCrun.outputs.NEW_VERSION }}' + committer: minikube-bot + author: minikube-bot + branch: auto_bump_crun_version + branch-suffix: short-commit-hash + push-to-fork: minikube-bot/minikube + base: master + delete-branch: true + title: 'Kicbase/ISO: Update crun from ${{ steps.bumpCrun.outputs.OLD_VERSION }} to ${{ steps.bumpCrun.outputs.NEW_VERSION }}' + body: | + The crun project released a [new version](https://github.com/containers/crun/releases) + + This PR was auto-generated by `make update-crun-version` using [update-crun-version.yml](https://github.com/kubernetes/minikube/tree/master/.github/workflows/update-crun-version.yml) CI Workflow. + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea + if: ${{ steps.bumpCrun.outputs.changes != '' }} + with: + github-token: ${{ secrets.MINIKUBE_BOT_PAT }} + script: | + github.rest.issues.createComment({ + issue_number: ${{ steps.createPR.outputs.pull-request-number }}, + owner: context.repo.owner, + repo: context.repo.repo, + body: 'ok-to-build-image' + }) + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea + if: ${{ steps.bumpCrun.outputs.changes != '' }} + with: + github-token: ${{ secrets.MINIKUBE_BOT_PAT }} + script: | + github.rest.issues.createComment({ + issue_number: ${{ steps.createPR.outputs.pull-request-number }}, + owner: context.repo.owner, + repo: context.repo.repo, + body: 'ok-to-build-iso' + }) diff --git a/.github/workflows/update-iso-image-versions.yml b/.github/workflows/update-iso-image-versions.yml index cdc1156e6ab5..46b724872ef8 100644 --- a/.github/workflows/update-iso-image-versions.yml +++ b/.github/workflows/update-iso-image-versions.yml @@ -23,6 +23,7 @@ jobs: OLD_CONTAINERD=$(DEP=containerd make get-dependency-version) OLD_CRIO=$(DEP=cri-o make get-dependency-version) OLD_CRICTL=$(DEP=crictl make get-dependency-version) + OLD_CRUN=$(DEP=crun make get-dependency-version) OLD_DOCKER=$(DEP=docker make get-dependency-version) OLD_GO=$(DEP=go make get-dependency-version) OLD_NERDCTL=$(DEP=nerdctl make get-dependency-version) @@ -35,6 +36,7 @@ jobs: # Uncomment after crictl/cri-o issue resolved: https://github.com/kubernetes/minikube/issues/18359 # make update-cri-o-version # make update-crictl-version + make update-crun-version make update-docker-version make update-golang-version make update-nerdctl-version @@ -46,6 +48,7 @@ jobs: NEW_CONTAINERD=$(DEP=containerd make get-dependency-version) NEW_CRIO=$(DEP=cri-o make get-dependency-version) NEW_CRICTL=$(DEP=crictl make get-dependency-version) + NEW_CRUN=$(DEP=crun make get-dependency-version) NEW_DOCKER=$(DEP=docker make get-dependency-version) NEW_GO=$(DEP=go make get-dependency-version) NEW_NERDCTL=$(DEP=nerdctl make get-dependency-version) @@ -73,6 +76,10 @@ jobs: echo "### Update crictl from $OLD_CRICTL to $NEW_CRICTL" >> "$GITHUB_OUTPUT" echo "[Release notes](https://github.com/kubernetes-sigs/cri-tools/releases)" >> "$GITHUB_OUTPUT" fi + if [ "$OLD_CRUN" != "$NEW_CRUN" ]; then + echo "### Update crun from $OLD_CRUN to $NEW_CRUN" >> "$GITHUB_OUTPUT" + echo "[Release notes](https://github.com/containers/crun/releases)" >> "$GITHUB_OUTPUT" + fi if [ "$OLD_DOCKER" != "$NEW_DOCKER" ]; then echo "### Update Docker from $OLD_DOCKER to $NEW_DOCKER" >> "$GITHUB_OUTPUT" echo "[Release notes](https://github.com/moby/moby/releases)" >> "$GITHUB_OUTPUT" diff --git a/CHANGELOG.md b/CHANGELOG.md index c38801033e75..92a4dede847d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,146 @@ # Release Notes +## Version 1.33.0-beta.0 - 2024-03-26 + +Features: +* Support multi-control plane - HA clusters `--ha` [#17909](https://github.com/kubernetes/minikube/pull/17909) +* Addon gvisor: Add arm64 support [#18063](https://github.com/kubernetes/minikube/pull/18063) [#18453](https://github.com/kubernetes/minikube/pull/18453) +* New Addon: YAKD - Kubernetes Dashboard addon [#17775](https://github.com/kubernetes/minikube/pull/17775) + +Minor Improvements: +* Addon auto-pause: Remove memory leak & add configurable interval [#17936](https://github.com/kubernetes/minikube/pull/17936) +* image build: Add `docker.io/library` to image short names [#16214](https://github.com/kubernetes/minikube/pull/16214) +* cp: Create directory if not present [#17715](https://github.com/kubernetes/minikube/pull/17715) +* Move errors getting logs into log output itself [#18007](https://github.com/kubernetes/minikube/pull/18007) +* Add default sysctls to allow privileged ports with no capabilities [#18421](https://github.com/kubernetes/minikube/pull/18421) +* Include extended attributes in preload tarballs [#17829](https://github.com/kubernetes/minikube/pull/17829) +* Apply `kubeadm.applyNodeLabels` label to all nodes [#16416](https://github.com/kubernetes/minikube/pull/16416) +* Limit driver status check to 20s [#17553](https://github.com/kubernetes/minikube/pull/17553) +* Include journalctl logs if systemd service fails to start [#17659](https://github.com/kubernetes/minikube/pull/17659) +* ISO: Add CONFIG_DM_MULTIPATH [#18277](https://github.com/kubernetes/minikube/pull/18277) +* ISO: Add CONFIG_QFMT_V2 for arm64 [#17991](https://github.com/kubernetes/minikube/pull/17991) +* ISO: Add CONFIG_CEPH_FS for arm64 [#18213](https://github.com/kubernetes/minikube/pull/18213) +* ISO: Add CONFIG_BPF for arm64 [#17206](https://github.com/kubernetes/minikube/pull/17206) + +Bugs: +* Fix "Failed to enable container runtime: sudo systemctl restart cri-docker" [#17907](https://github.com/kubernetes/minikube/pull/17907) +* Fix containerd redownloading existing images on start [#17671](https://github.com/kubernetes/minikube/pull/17671) +* Fix kvm2 not detecting containerd preload [#17658](https://github.com/kubernetes/minikube/pull/17658) +* Fix modifying Docker binfmt config [#17830](https://github.com/kubernetes/minikube/pull/17830) +* Fix auto-pause addon [#17866](https://github.com/kubernetes/minikube/pull/17866) +* Fix not using preload with overlayfs storage driver [#18333](https://github.com/kubernetes/minikube/pull/18333) +* Fix image repositories not allowing subdomains with numbers [#17496](https://github.com/kubernetes/minikube/pull/17496) +* Fix stopping cluster when using kvm2 with containerd [#17967](https://github.com/kubernetes/minikube/pull/17967) +* Fix starting more than one cluster on kvm2 arm64 [#18241](https://github.com/kubernetes/minikube/pull/18241) +* Fix starting kvm2 clusters using Linux on arm64 Mac [#18239](https://github.com/kubernetes/minikube/pull/18239) +* Fix displaying error when deleting non-existing cluster [#17713](https://github.com/kubernetes/minikube/pull/17713) +* Fix no-limit not being respected on restart [#17598](https://github.com/kubernetes/minikube/pull/17598) +* Fix not applying `kubeadm.applyNodeLabels` label to nodes added after inital start [#16416](https://github.com/kubernetes/minikube/pull/16416) +* Fix logs delimiter output [#17734](https://github.com/kubernetes/minikube/pull/17734) + +Version Upgrades: +* Bump Kubernetes version default: v1.29.3 and latest: v1.30.0-beta.0 [#17786](https://github.com/kubernetes/minikube/pull/17786) +* Addon cloud-spanner: Update cloud-spanner-emulator/emulator image from 1.5.11 to 1.5.15 [#17595](https://github.com/kubernetes/minikube/pull/17595) [#17847](https://github.com/kubernetes/minikube/pull/17847) [#18165](https://github.com/kubernetes/minikube/pull/18165) [#18431](https://github.com/kubernetes/minikube/pull/18431) +* Addon gcp-auth: Update k8s-minikube/gcp-auth-webhook image from v0.1.0 to v0.1.2 [#18222](https://github.com/kubernetes/minikube/pull/18222) [#18384](https://github.com/kubernetes/minikube/pull/18384) +* Addon headlamp: Update headlamp-k8s/headlamp image from v0.20.1 to v0.23.0 [#17586](https://github.com/kubernetes/minikube/pull/17586) [#17846](https://github.com/kubernetes/minikube/pull/17846) [#18320](https://github.com/kubernetes/minikube/pull/18320) +* Addon ingress: Update ingress-nginx/controller image from v1.9.4 to v1.10.0 [#17848](https://github.com/kubernetes/minikube/pull/17848) [#18166](https://github.com/kubernetes/minikube/pull/18166) [#18284](https://github.com/kubernetes/minikube/pull/18284) +* Addon inspektor-gadget: Update inspektor-gadget/inspektor-gadget image from v0.22.0 to v0.26.0 [#17740](https://github.com/kubernetes/minikube/pull/17740) [#17885](https://github.com/kubernetes/minikube/pull/17885) [#18169](https://github.com/kubernetes/minikube/pull/18169) [#18358](https://github.com/kubernetes/minikube/pull/18358) +* Addon istio-provisioner: Update istio/operator image from 1.19.3 to 1.21.0 [#17651](https://github.com/kubernetes/minikube/pull/17651) [#17777](https://github.com/kubernetes/minikube/pull/17777) [#17957](https://github.com/kubernetes/minikube/pull/17957) [#18168](https://github.com/kubernetes/minikube/pull/18168) [#18429](https://github.com/kubernetes/minikube/pull/18429) +* Addon kong: Update kong image from 3.4.2 to 3.6.1 [#17605](https://github.com/kubernetes/minikube/pull/17605) [#18200](https://github.com/kubernetes/minikube/pull/18200) [#18350](https://github.com/kubernetes/minikube/pull/18350) +* Addon kubevirt: Update bitnami/kubectl image from 1.24.7 to 1.29.3 [#18170](https://github.com/kubernetes/minikube/pull/18170) [#18187](https://github.com/kubernetes/minikube/pull/18187) [#18427](https://github.com/kubernetes/minikube/pull/18427) +* Addon metrics-server: Update metrics-server/metrics-server image from v0.6.4 to v0.7.0 [#18051](https://github.com/kubernetes/minikube/pull/18051) +* Addon nvidia-device-plugin: Update nvidia/k8s-device-plugin image from v0.14.2 to v0.14.5 [#17623](https://github.com/kubernetes/minikube/pull/17623) [#18171](https://github.com/kubernetes/minikube/pull/18171) [#18283](https://github.com/kubernetes/minikube/pull/18283) +* Addon registry: Update k8s-minikube/kube-registry-proxy image from 0.0.5 to 0.0.6 [#18454](https://github.com/kubernetes/minikube/pull/18454) +* CNI: Update calico from v3.26.3 to v3.27.0 [#17644](https://github.com/kubernetes/minikube/pull/17644) [#17824](https://github.com/kubernetes/minikube/pull/17824) +* CNI: Update cilium from v1.12.3 to v1.15.1 [#18259](https://github.com/kubernetes/minikube/pull/18259) +* CNI: Update flannel from v0.22.3 to v0.24.4 [#17837](https://github.com/kubernetes/minikube/pull/17837) [#17975](https://github.com/kubernetes/minikube/pull/17975) [#18014](https://github.com/kubernetes/minikube/pull/18014) [#18500](https://github.com/kubernetes/minikube/pull/18500) +* CNI: Update kindnetd from v20230809-80a64d96 to v20240202-8f1494ea [#18167](https://github.com/kubernetes/minikube/pull/18167) +* Kicbase/ISO: Update buildkit from v0.12.3 to v0.13.0 [#17738](https://github.com/kubernetes/minikube/pull/17738) [#18375](https://github.com/kubernetes/minikube/pull/18375) +* Kicbase/ISO: Update cni-plugins from v1.3.0 to v1.4.1 [#17761](https://github.com/kubernetes/minikube/pull/17761) [#18375](https://github.com/kubernetes/minikube/pull/18375) +* Kicbase/ISO: Update containerd from v1.7.8 to v1.7.14 [#17634](https://github.com/kubernetes/minikube/pull/17634) [#17711](https://github.com/kubernetes/minikube/pull/17711) [#17765](https://github.com/kubernetes/minikube/pull/17765) [#18375](https://github.com/kubernetes/minikube/pull/18375) +* Kicbase/ISO: Update docker from 24.0.7 to 25.0.4 [#18375](https://github.com/kubernetes/minikube/pull/18375) +* Kicbase/ISO: Update Go from 1.21.3 to 1.22.1 [#17619](https://github.com/kubernetes/minikube/pull/17619) [#17760](https://github.com/kubernetes/minikube/pull/17760) [#17953](https://github.com/kubernetes/minikube/pull/17953) [#18197](https://github.com/kubernetes/minikube/pull/18197) [#18375](https://github.com/kubernetes/minikube/pull/18375) +* Kicbase/ISO: Update nerdctl from 1.6.2 to 1.7.4 [#17565](https://github.com/kubernetes/minikube/pull/17565) [#17703](https://github.com/kubernetes/minikube/pull/17703) [#17806](https://github.com/kubernetes/minikube/pull/17806) [#18375](https://github.com/kubernetes/minikube/pull/18375) +* Kicbase/ISO: Update runc from v1.1.9 to v1.1.12 [#17581](https://github.com/kubernetes/minikube/pull/17581) [#18020](https://github.com/kubernetes/minikube/pull/18020) [#18375](https://github.com/kubernetes/minikube/pull/18375) +* Kicbase: Update nerdctld from 0.2.0 to 0.5.1 [#17764](https://github.com/kubernetes/minikube/pull/17764) [#17857](https://github.com/kubernetes/minikube/pull/17857) +* Kicbase: Update ubuntu:jammy from 20231004 to 20240227 [#17719](https://github.com/kubernetes/minikube/pull/17719) [#17822](https://github.com/kubernetes/minikube/pull/17822) [#18244](https://github.com/kubernetes/minikube/pull/18244) [#18375](https://github.com/kubernetes/minikube/pull/18375) +* ISO: Update cri-o from v1.24.1 to v1.29.1 [#18020](https://github.com/kubernetes/minikube/pull/18020) + +For a more detailed changelog, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md). + +Thank you to our contributors for this release! + +- Alberto Faria +- Anders F Björklund +- Blaine Gardner +- Camille Clayton +- Chase, Justin M +- Dani +- Eng Zer Jun +- Francis Laniel +- Jan Klippel +- Jeff MAURY +- Jin Li +- Jongwoo Han +- Marc Nuri +- Marcell Martini +- Marcus Dunn +- Mark Moretto +- Martin Jirku +- Medya Ghazizadeh +- Nir Soffer +- Predrag Rogic +- Pris Nasrat +- Raiden Shogun +- Sandipan Panda +- Sonu Kumar Singh +- Steven Powell +- Tarishi Jain +- Timothée Ravier +- Yuri Astrakhan +- andy +- chahatjaink +- coderrick +- joaquimrocha +- lixin18 +- ljtian +- mahmut +- mattrobinsonsre +- prnvkv +- shixiuguo +- sunyuxuan +- sunyuxuna +- syxunion +- tianlj +- zdxgs +- zjx20 + +Thank you to our PR reviewers for this release! + +- spowelljr (55 comments) +- medyagh (27 comments) +- afbjorklund (14 comments) +- liangyuanpeng (11 comments) +- prezha (4 comments) +- ComradeProgrammer (3 comments) +- acumino (2 comments) +- aiyijing (2 comments) +- Fenrur (1 comments) +- allenhaozi (1 comments) +- dharmit (1 comments) +- maximiliankolb (1 comments) +- neolit123 (1 comments) + +Thank you to our triage members for this release! + +- afbjorklund (70 comments) +- caerulescens (37 comments) +- T-Lakshmi (31 comments) +- spowelljr (22 comments) +- kundan2707 (20 comments) + +Check out our [contributions leaderboard](https://minikube.sigs.k8s.io/docs/contrib/leaderboard/v1.33.0-beta.0/) for this release! + ## Version 1.32.0 - 2023-11-07 Features: @@ -44,7 +185,7 @@ Thank you to our triage members for this release! - ceelian (1 comments) - idoly (1 comments) -## Version 1.32.0-beta0 - 2023-10-27 +## Version 1.32.0-beta.0 - 2023-10-27 Features: * NVIDIA GPU support with new `--gpus=nvidia` flag for docker driver [#15927](https://github.com/kubernetes/minikube/pull/15927) [#17314](https://github.com/kubernetes/minikube/pull/17314) [#17488](https://github.com/kubernetes/minikube/pull/17488) diff --git a/Makefile b/Makefile index af529262ee31..15455e13382d 100644 --- a/Makefile +++ b/Makefile @@ -14,8 +14,8 @@ # Bump these on release - and please check ISO_VERSION for correctness. VERSION_MAJOR ?= 1 -VERSION_MINOR ?= 32 -VERSION_BUILD ?= 0 +VERSION_MINOR ?= 33 +VERSION_BUILD ?= 0-beta.0 RAW_VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD) VERSION ?= v$(RAW_VERSION) @@ -24,7 +24,7 @@ KIC_VERSION ?= $(shell grep -E "Version =" pkg/drivers/kic/types.go | cut -d \" HUGO_VERSION ?= $(shell grep -E "HUGO_VERSION = \"" netlify.toml | cut -d \" -f2) # Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions -ISO_VERSION ?= v1.32.1-1710520390-17991 +ISO_VERSION ?= v1.33.0-1711559712-18485 # Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta DEB_VERSION ?= $(subst -,~,$(RAW_VERSION)) @@ -79,7 +79,7 @@ MINIKUBE_RELEASES_URL=https://github.com/kubernetes/minikube/releases/download KERNEL_VERSION ?= 5.10.207 # latest from https://github.com/golangci/golangci-lint/releases # update this only by running `make update-golint-version` -GOLINT_VERSION ?= v1.56.2 +GOLINT_VERSION ?= v1.57.2 # Limit number of default jobs, to avoid the CI builds running out of memory GOLINT_JOBS ?= 4 # see https://github.com/golangci/golangci-lint#memory-usage-of-golangci-lint @@ -108,7 +108,7 @@ SHA512SUM=$(shell command -v sha512sum || echo "shasum -a 512") # gvisor tag to automatically push changes to # to update minikubes default, update deploy/addons/gvisor -GVISOR_TAG ?= latest +GVISOR_TAG ?= v0.0.1 # auto-pause-hook tag to push changes to AUTOPAUSE_HOOK_TAG ?= v0.0.5 @@ -787,13 +787,15 @@ out/gvisor-addon: ## Build gvisor addon $(Q)GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o $@ cmd/gvisor/gvisor.go .PHONY: gvisor-addon-image -gvisor-addon-image: out/gvisor-addon ## Build docker image for gvisor - docker build --platform=linux/amd64 -t $(REGISTRY)/gvisor-addon:$(GVISOR_TAG) -f deploy/gvisor/Dockerfile . +gvisor-addon-image: + docker build -t $(REGISTRY)/gvisor-addon:$(GVISOR_TAG) -f deploy/gvisor/Dockerfile . .PHONY: push-gvisor-addon-image -push-gvisor-addon-image: gvisor-addon-image +push-gvisor-addon-image: docker-multi-arch-build docker login gcr.io/k8s-minikube - $(MAKE) push-docker IMAGE=$(REGISTRY)/gvisor-addon:$(GVISOR_TAG) + docker buildx create --name multiarch --bootstrap + docker buildx build --push --builder multiarch --platform linux/amd64,linux/arm64 -t $(REGISTRY)/gvisor-addon:$(GVISOR_TAG) -t $(REGISTRY)/gvisor-addon:latest -f deploy/gvisor/Dockerfile . + docker buildx rm multiarch .PHONY: release-iso release-iso: minikube-iso-aarch64 minikube-iso-x86_64 checksum ## Build and release .iso files diff --git a/cmd/minikube/cmd/config/profile_list.go b/cmd/minikube/cmd/config/profile_list.go index 55304240d9a6..2c9faac95c64 100644 --- a/cmd/minikube/cmd/config/profile_list.go +++ b/cmd/minikube/cmd/config/profile_list.go @@ -190,7 +190,7 @@ func profileStatus(p *config.Profile, api libmachine.API) string { func renderProfilesTable(ps [][]string) { table := tablewriter.NewWriter(os.Stdout) - table.SetHeader([]string{"Profile", "VM Driver", "Runtime", "IP", "Port", "Version", "Status", "Nodes", "Active"}) + table.SetHeader([]string{"Profile", "VM Driver", "Runtime", "IP", "Port", "Version", "Status", "Nodes", "Active Profile", "Active Kubecontext"}) table.SetAutoFormatHeaders(false) table.SetBorders(tablewriter.Border{Left: true, Top: true, Right: true, Bottom: true}) table.SetCenterSeparator("|") @@ -217,11 +217,14 @@ func profilesToTableData(profiles []*config.Profile) [][]string { if k8sVersion == constants.NoKubernetesVersion { // for --no-kubernetes flag k8sVersion = "N/A" } - var c string + var c, k string if p.Name == currentProfile { c = "*" } - data = append(data, []string{p.Name, p.Config.Driver, p.Config.KubernetesConfig.ContainerRuntime, cpIP, strconv.Itoa(cpPort), k8sVersion, p.Status, strconv.Itoa(len(p.Config.Nodes)), c}) + if p.ActiveKubeContext { + k = "*" + } + data = append(data, []string{p.Name, p.Config.Driver, p.Config.KubernetesConfig.ContainerRuntime, cpIP, strconv.Itoa(cpPort), k8sVersion, p.Status, strconv.Itoa(len(p.Config.Nodes)), c, k}) } return data } diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go index b881c6d84d4f..20ccbd1c0c85 100644 --- a/cmd/minikube/cmd/delete.go +++ b/cmd/minikube/cmd/delete.go @@ -94,7 +94,7 @@ var hostAndDirsDeleter = func(api libmachine.API, cc *config.ClusterConfig, prof if err := killMountProcess(); err != nil { out.FailureT("Failed to kill mount process: {{.error}}", out.V{"error": err}) } - if err := sshagent.Stop(profileName); err != nil { + if err := sshagent.Stop(profileName); err != nil && !config.IsNotExist(err) { out.FailureT("Failed to stop ssh-agent process: {{.error}}", out.V{"error": err}) } diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 1d186623c017..add01e155567 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -1596,7 +1596,7 @@ func validateRegistryMirror() { // args match the format of registry.cn-hangzhou.aliyuncs.com/google_containers // also "[:]" func validateImageRepository(imageRepo string) (validImageRepo string) { - expression := regexp.MustCompile(`^(?:(\w+)\:\/\/)?([-a-zA-Z0-9]{1,}(?:\.[-a-zA-Z]{1,}){0,})(?:\:(\d+))?(\/.*)?$`) + expression := regexp.MustCompile(`^(?:(\w+)\:\/\/)?([-a-zA-Z0-9]{1,}(?:\.[-a-zA-Z0-9]{1,}){0,})(?:\:(\d+))?(\/.*)?$`) if strings.ToLower(imageRepo) == "auto" { imageRepo = "auto" diff --git a/cmd/minikube/cmd/start_test.go b/cmd/minikube/cmd/start_test.go index 7f11deaeff34..6a5b799c304f 100644 --- a/cmd/minikube/cmd/start_test.go +++ b/cmd/minikube/cmd/start_test.go @@ -384,6 +384,22 @@ func TestValidateImageRepository(t *testing.T) { imageRepository: "registry.test.com:6666/google_containers", validImageRepository: "registry.test.com:6666/google_containers", }, + { + imageRepository: "registry.1test.com:6666/google_containers", + validImageRepository: "registry.1test.com:6666/google_containers", + }, + { + imageRepository: "registry.t1est.com:6666/google_containers", + validImageRepository: "registry.t1est.com:6666/google_containers", + }, + { + imageRepository: "registry.test1.com:6666/google_containers", + validImageRepository: "registry.test1.com:6666/google_containers", + }, + { + imageRepository: "abc.xyz1.example.com", + validImageRepository: "abc.xyz1.example.com", + }, } for _, test := range tests { @@ -395,7 +411,6 @@ func TestValidateImageRepository(t *testing.T) { } }) } - } func TestValidateDiskSize(t *testing.T) { diff --git a/deploy/gvisor/Dockerfile b/deploy/gvisor/Dockerfile index dbe6d37aa938..b128bbcc8baf 100644 --- a/deploy/gvisor/Dockerfile +++ b/deploy/gvisor/Dockerfile @@ -12,8 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +FROM golang:1.22.1 AS builder +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +COPY ./ ./ +RUN GOOS=linux CGO_ENABLED=0 go build -o gvisor-addon cmd/gvisor/gvisor.go + # Need an image with chroot FROM alpine:3 RUN apk -U add ca-certificates -COPY out/gvisor-addon /gvisor-addon +COPY --from=builder /app/gvisor-addon /gvisor-addon CMD ["/gvisor-addon"] diff --git a/deploy/iso/minikube-iso/arch/aarch64/package/docker-bin-aarch64/docker-bin.hash b/deploy/iso/minikube-iso/arch/aarch64/package/docker-bin-aarch64/docker-bin.hash index e88da918a9db..9848678ee65b 100644 --- a/deploy/iso/minikube-iso/arch/aarch64/package/docker-bin-aarch64/docker-bin.hash +++ b/deploy/iso/minikube-iso/arch/aarch64/package/docker-bin-aarch64/docker-bin.hash @@ -15,3 +15,4 @@ sha256 ba911d9ff8a54a7afc8f91e998984f78a704bcb4932134c4dda2c401209a9921 docker- sha256 d9f58aecc42451503e82e6e0562cafa1812b334c92186a7f486e111e70a0f5bd docker-24.0.6.tgz sha256 fe6cf4b509307665af542a89454c2ecfbbd62670fc5a5d17bac7150a6f6a6776 docker-24.0.7.tgz sha256 ce7b2ffb522cde59f2bb4b67a17db4aaf66b058532effcd583ab85d02ede529f docker-25.0.4.tgz +sha256 f01642695115d8ceca64772ea65336ef7210ddc36096f1e533145f443bc718b3 docker-26.0.0.tgz diff --git a/deploy/iso/minikube-iso/arch/aarch64/package/docker-bin-aarch64/docker-bin.mk b/deploy/iso/minikube-iso/arch/aarch64/package/docker-bin-aarch64/docker-bin.mk index 83060d7ec0d9..f5edbc2999c3 100644 --- a/deploy/iso/minikube-iso/arch/aarch64/package/docker-bin-aarch64/docker-bin.mk +++ b/deploy/iso/minikube-iso/arch/aarch64/package/docker-bin-aarch64/docker-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -DOCKER_BIN_AARCH64_VERSION = 25.0.4 +DOCKER_BIN_AARCH64_VERSION = 26.0.0 DOCKER_BIN_AARCH64_SITE = https://download.docker.com/linux/static/stable/aarch64 DOCKER_BIN_AARCH64_SOURCE = docker-$(DOCKER_BIN_AARCH64_VERSION).tgz diff --git a/deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.hash b/deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.hash index 13dfa4a19d18..6a68eb5c86a5 100644 --- a/deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.hash +++ b/deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.hash @@ -51,3 +51,4 @@ sha256 0a5f3157ce25532c5c1261a97acf3b25065cfe25940ef491fa01d5bea18ddc86 docker- sha256 99792dec613df93169a118b05312a722a63604b868e4c941b1b436abcf3bb70f docker-24.0.6.tgz sha256 984d59a77fa6acab97ea725a966facd33725e0e09c2fee975397fe1c6379bd3d docker-24.0.7.tgz sha256 23db817b99aac6d5d7fcb1f706e50b5a412d78a9438975d6b4a54c58dc409bfb docker-25.0.4.tgz +sha256 d69e8eedc72d6d219933ab53b8e7f2dbd9e64695d5db68a2df17333db433c456 docker-26.0.0.tgz diff --git a/deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.mk b/deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.mk index 40921924cc57..80109dde314b 100644 --- a/deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.mk +++ b/deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -DOCKER_BIN_VERSION = 25.0.4 +DOCKER_BIN_VERSION = 26.0.0 DOCKER_BIN_SITE = https://download.docker.com/linux/static/stable/x86_64 DOCKER_BIN_SOURCE = docker-$(DOCKER_BIN_VERSION).tgz diff --git a/deploy/iso/minikube-iso/board/minikube/aarch64/linux_aarch64_defconfig b/deploy/iso/minikube-iso/board/minikube/aarch64/linux_aarch64_defconfig index a169a923645b..ea798feed3ea 100644 --- a/deploy/iso/minikube-iso/board/minikube/aarch64/linux_aarch64_defconfig +++ b/deploy/iso/minikube-iso/board/minikube/aarch64/linux_aarch64_defconfig @@ -435,6 +435,7 @@ CONFIG_BLK_DEV_MD=m CONFIG_BLK_DEV_DM=m CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=y CONFIG_NETDEVICES=y CONFIG_MACVLAN=m CONFIG_MACVTAP=m diff --git a/deploy/iso/minikube-iso/board/minikube/x86_64/linux_x86_64_defconfig b/deploy/iso/minikube-iso/board/minikube/x86_64/linux_x86_64_defconfig index df37e4890912..118d161e434a 100644 --- a/deploy/iso/minikube-iso/board/minikube/x86_64/linux_x86_64_defconfig +++ b/deploy/iso/minikube-iso/board/minikube/x86_64/linux_x86_64_defconfig @@ -358,6 +358,7 @@ CONFIG_DM_SNAPSHOT=y CONFIG_DM_THIN_PROVISIONING=y CONFIG_DM_MIRROR=y CONFIG_DM_ZERO=y +CONFIG_DM_MULTIPATH=y CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m diff --git a/deploy/minikube/releases-beta-v2.json b/deploy/minikube/releases-beta-v2.json index 194ea1f19e90..4a31231d6080 100644 --- a/deploy/minikube/releases-beta-v2.json +++ b/deploy/minikube/releases-beta-v2.json @@ -1,4 +1,30 @@ [ + { + "checksums": { + "amd64": { + "darwin": "ba00e508d6694f8e792bf5f238f5609407f1862f4fd8c0e08d1de9319b7131d5", + "linux": "e1c32fb33b4fe35f719b52309f8d981392ad7672f9fef3307d188f004aee5a2d", + "windows": "74fbadfb00a7a1ecfa2a24ea2ee77997a41a6cb61e797b6c62a1d28558c61260" + }, + "arm": { + "linux": "7724724767ba1f144605d4289c098e5fcd4fcc55be0876d77591d05f43f22876" + }, + "arm64": { + "darwin": "7a672fa0a266d0c649d114b2135ee6222d8366bc0ac87e2fafb4c714e20b26a3", + "linux": "fa09cb8e228711e557a0f933e819c2cea98bc96749a4c77635a341d0ed530163" + }, + "ppc64le": { + "linux": "6f013e03419d8c5149e1998a1f492e1693d780e883aeb37325f0cc42854cccd5" + }, + "s390x": { + "linux": "1ec274865030a0b13d191d41e53c66be3f047a34e30c8fa637e74aa7cff31c71" + }, + "darwin": "ba00e508d6694f8e792bf5f238f5609407f1862f4fd8c0e08d1de9319b7131d5", + "linux": "e1c32fb33b4fe35f719b52309f8d981392ad7672f9fef3307d188f004aee5a2d", + "windows": "74fbadfb00a7a1ecfa2a24ea2ee77997a41a6cb61e797b6c62a1d28558c61260" + }, + "name": "v1.33.0-beta.0" + }, { "checksums": { "amd64": { diff --git a/deploy/minikube/releases-beta.json b/deploy/minikube/releases-beta.json index d1ac5f349f81..faa51c742782 100644 --- a/deploy/minikube/releases-beta.json +++ b/deploy/minikube/releases-beta.json @@ -1,4 +1,12 @@ [ + { + "checksums": { + "darwin": "ba00e508d6694f8e792bf5f238f5609407f1862f4fd8c0e08d1de9319b7131d5", + "linux": "e1c32fb33b4fe35f719b52309f8d981392ad7672f9fef3307d188f004aee5a2d", + "windows": "74fbadfb00a7a1ecfa2a24ea2ee77997a41a6cb61e797b6c62a1d28558c61260" + }, + "name": "v1.33.0-beta.0" + }, { "checksums": { "darwin": "964b216dc4156b87cc570ee8f8ee5d0a90815fd100b11dcff6884fee2a945101", diff --git a/go.mod b/go.mod index 66f59ec91b55..1f42f69e2995 100644 --- a/go.mod +++ b/go.mod @@ -3,22 +3,22 @@ module k8s.io/minikube go 1.22 require ( - cloud.google.com/go/storage v1.39.1 + cloud.google.com/go/storage v1.40.0 contrib.go.opencensus.io/exporter/stackdriver v0.13.14 github.com/Delta456/box-cli-maker/v2 v2.3.0 - github.com/GoogleCloudPlatform/cloudsql-proxy v1.34.0 - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.21.0 + github.com/GoogleCloudPlatform/cloudsql-proxy v1.34.1 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.22.0 github.com/Parallels/docker-machine-parallels/v2 v2.0.1 github.com/VividCortex/godaemon v1.0.0 github.com/Xuanwo/go-locale v1.1.0 github.com/blang/semver/v4 v4.0.0 github.com/briandowns/spinner v1.11.1 - github.com/cenkalti/backoff/v4 v4.2.1 + github.com/cenkalti/backoff/v4 v4.3.0 github.com/cheggaaa/pb/v3 v3.1.5 github.com/cloudevents/sdk-go/v2 v2.15.2 - github.com/distribution/reference v0.5.0 - github.com/docker/cli v25.0.4+incompatible - github.com/docker/docker v25.0.4+incompatible + github.com/distribution/reference v0.6.0 + github.com/docker/cli v26.0.0+incompatible + github.com/docker/docker v26.0.0+incompatible github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 github.com/docker/machine v0.16.2 @@ -55,7 +55,7 @@ require ( github.com/pkg/profile v1.7.0 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 - github.com/shirou/gopsutil/v3 v3.24.2 + github.com/shirou/gopsutil/v3 v3.24.3 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.18.2 @@ -74,15 +74,15 @@ require ( golang.org/x/term v0.18.0 golang.org/x/text v0.14.0 gonum.org/v1/plot v0.14.0 - google.golang.org/api v0.170.0 + google.golang.org/api v0.172.0 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.29.2 - k8s.io/apimachinery v0.29.2 - k8s.io/client-go v0.29.2 + k8s.io/api v0.29.3 + k8s.io/apimachinery v0.29.3 + k8s.io/client-go v0.29.3 k8s.io/cluster-bootstrap v0.0.0 - k8s.io/component-base v0.29.2 + k8s.io/component-base v0.29.3 k8s.io/klog/v2 v2.120.1 - k8s.io/kubectl v0.29.2 + k8s.io/kubectl v0.29.3 k8s.io/utils v0.0.0-20230726121419-3b25d923346b libvirt.org/go/libvirt v1.10001.0 sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0 @@ -92,12 +92,12 @@ require ( cloud.google.com/go v0.112.1 // indirect cloud.google.com/go/compute v1.24.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/iam v1.1.7 // indirect cloud.google.com/go/monitoring v1.18.0 // indirect cloud.google.com/go/trace v1.10.5 // indirect git.sr.ht/~sbinet/gg v0.5.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.45.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.46.0 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/VividCortex/ewma v1.2.0 // indirect @@ -138,14 +138,14 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/gookit/color v1.5.2 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -176,6 +176,7 @@ require ( github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/spdystream v0.2.0 // indirect github.com/moby/sys/mountinfo v0.6.2 // indirect github.com/moby/sys/sequential v0.5.0 // indirect @@ -224,14 +225,14 @@ require ( golang.org/x/tools v0.16.1 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240304161311-37d4d3c04a78 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/cli-runtime v0.29.2 // indirect + k8s.io/cli-runtime v0.29.3 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect diff --git a/go.sum b/go.sum index e7a2e27b246e..9a2c57a1df71 100644 --- a/go.sum +++ b/go.sum @@ -113,8 +113,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iam v1.1.7 h1:z4VHOhwKLF/+UYXAJDFwGtNF0b6gjsW1Pk9Ml0U/IoM= +cloud.google.com/go/iam v1.1.7/go.mod h1:J4PMPg8TtyurAUvSmPj8FF3EDgY1SPRZxcUGrn7WXGA= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -181,8 +181,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY= -cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= +cloud.google.com/go/storage v1.40.0 h1:VEpDQV5CJxFmJ6ueWNsKxcr1QAYOXEgxDa+sBbJahPw= +cloud.google.com/go/storage v1.40.0/go.mod h1:Rrj7/hKlG87BLqDJYtwR0fbPld8uJPbQ2ucUMY7Ir0g= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/trace v1.10.5 h1:0pr4lIKJ5XZFYD9GtxXEWr0KkVeigc3wlGpZco0X1oA= @@ -199,6 +199,8 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS contrib.go.opencensus.io/exporter/stackdriver v0.13.14 h1:zBakwHardp9Jcb8sQHcHpXy/0+JIb1M8KjigCJzx7+4= contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= git.sr.ht/~sbinet/cmpimg v0.1.0 h1:E0zPRk2muWuCqSKSVZIWsgtU9pjsw3eKHi8VmQeScxo= git.sr.ht/~sbinet/cmpimg v0.1.0/go.mod h1:FU12psLbF4TfNXkKH2ZZQ29crIqoiqTZmeQ7dkp/pxE= git.sr.ht/~sbinet/gg v0.5.0 h1:6V43j30HM623V329xA9Ntq+WJrMjDxRjuAB1LFWF5m8= @@ -246,14 +248,14 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Delta456/box-cli-maker/v2 v2.3.0 h1:rGdoK/Qt3shdT1uqRMGgPqrhtisGD7PamTW8vY5MyCA= github.com/Delta456/box-cli-maker/v2 v2.3.0/go.mod h1:Uv/kSX95LuNQn3C8wWazEIETE6MunPuYN+/knckbPQc= -github.com/GoogleCloudPlatform/cloudsql-proxy v1.34.0 h1:JGaDAt7aiz9casDxojbzFLI+3Mfj19R/+4twAKNGubk= -github.com/GoogleCloudPlatform/cloudsql-proxy v1.34.0/go.mod h1:XNDFTVaBS0jJYam3A88dpdzImNh0RRhBF4k05CNEENs= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.21.0 h1:OEgjQy1rH4Fbn5IpuI9d0uhLl+j6DkDvh9Q2Ucd6GK8= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.21.0/go.mod h1:EUfJ8lb3pjD8VasPPwqIvG2XVCE6DOT8tY5tcwbWA+A= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.45.0 h1:/BF7rO6PYcmFoyJrq6HA3LqQpFSQei9aNuO1fvV3OqU= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.45.0/go.mod h1:WntFIMzxcU+PMBuekFc34UOsEZ9sP+vsnBYTyaNBkOs= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.45.0 h1:o/Nf55GfyLwGDaHkVAkRGgBXeExce73L6N9w2PZTB3k= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.45.0/go.mod h1:qkFPtMouQjW5ugdHIOthiTbweVHUTqbS0Qsu55KqXks= +github.com/GoogleCloudPlatform/cloudsql-proxy v1.34.1 h1:90Jox0L8bVNGamrVXYhDB7QTA6QPA5VEF1jjb8lcouc= +github.com/GoogleCloudPlatform/cloudsql-proxy v1.34.1/go.mod h1:it45nTiDFKCsdKU+zc0Ae90YNYETK8yenKbzDD5fjdw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.22.0 h1:xl4IRfBXPZxwu7dIza8n6wdX5zEJpi0boF5dX22MbYE= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.22.0/go.mod h1:P69hhmQh4zwnU5iEdGVowFWg1DiP9x2KsCYBOIaP4us= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.46.0 h1:vaXjFX09ygxNxAiHwByzPBVKltYFVZR8HN4U3TR4vn8= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.46.0/go.mod h1:V28hx+cUCZC9e3qcqszMb+Sbt8cQZtHTiXOmyDzoDOg= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.46.0 h1:xlfPHZ5QFvHad9KmrVDoaPpJUT/XluwNDMNHn+k7z/s= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.46.0/go.mod h1:mzI44HpPp75Z8/a1sJP1asdHdu7Wui7t10SZ9EEPPnM= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= @@ -364,8 +366,8 @@ github.com/campoy/embedmd v1.0.0 h1:V4kI2qTJJLf4J29RzI/MAt2c3Bl4dQSYPuflzwFH2hY= github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= @@ -560,13 +562,13 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= -github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= -github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v25.0.4+incompatible h1:DatRkJ+nrFoYL2HZUzjM5Z5sAmcA5XGp+AW0oEw2+cA= -github.com/docker/cli v25.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v26.0.0+incompatible h1:90BKrx1a1HKYpSnnBFR6AgDq/FqkHxwlUyzJVPxD30I= +github.com/docker/cli v26.0.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= 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/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= @@ -577,8 +579,8 @@ github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r 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 v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v25.0.4+incompatible h1:XITZTrq+52tZyZxUOtFIahUf3aH367FLxJzt9vZeAF8= -github.com/docker/docker v25.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v26.0.0+incompatible h1:Ng2qi+gdKADUa/VM+6b6YaY2nlZhk/lVJiKR/2bMudU= +github.com/docker/docker v26.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= @@ -733,8 +735,8 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= -github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.8.0 h1:UtktXaU2Nb64z/pLiGIxY4431SJ4/dR5cjMmlVHgnT4= +github.com/go-sql-driver/mysql v1.8.0/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -825,8 +827,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -915,8 +917,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= @@ -1221,6 +1223,8 @@ github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/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/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= 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/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= @@ -1460,8 +1464,8 @@ github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/shirou/gopsutil/v3 v3.24.2 h1:kcR0erMbLg5/3LcInpw0X/rrPSqq4CDPyI6A6ZRC18Y= -github.com/shirou/gopsutil/v3 v3.24.2/go.mod h1:tSg/594BcA+8UdQU2XcW803GWYgdtauFFPgJCJKZlVk= +github.com/shirou/gopsutil/v3 v3.24.3 h1:eoUGJSmdfLzJ3mxIhmOAhgKEKgQkeOwKpz1NbhVnuPE= +github.com/shirou/gopsutil/v3 v3.24.3/go.mod h1:JpND7O217xa72ewWz9zN2eIIkPWsDN/3pl0H8Qt0uwg= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= @@ -1528,6 +1532,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -1538,8 +1543,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= @@ -2056,7 +2062,6 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -2237,8 +2242,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.170.0 h1:zMaruDePM88zxZBG+NG8+reALO2rfLhe/JShitLyT48= -google.golang.org/api v0.170.0/go.mod h1:/xql9M2btF85xac/VAm4PsLMTLVGUOpq4BE9R8jyNy8= +google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk= +google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis= 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= @@ -2358,10 +2363,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y= google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= -google.golang.org/genproto/googleapis/api v0.0.0-20240304161311-37d4d3c04a78 h1:SzXBGiWM1LNVYLCRP3e0/Gsze804l4jGoJ5lYysEO5I= -google.golang.org/genproto/googleapis/api v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2 h1:9IZDv+/GcI6u+a4jRFRLxQs0RUCfavGfoOgEW6jpkI0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= +google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc= +google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= 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= @@ -2487,8 +2492,8 @@ k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.22.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk= k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= -k8s.io/api v0.29.2 h1:hBC7B9+MU+ptchxEqTNW2DkUosJpp1P+Wn6YncZ474A= -k8s.io/api v0.29.2/go.mod h1:sdIaaKuU7P44aoyyLlikSLayT6Vb7bvJNCX105xZXY0= +k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= +k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= k8s.io/apimachinery v0.19.1/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= @@ -2497,22 +2502,22 @@ k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0= k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= -k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= -k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= +k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= +k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= -k8s.io/cli-runtime v0.29.2 h1:smfsOcT4QujeghsNjECKN3lwyX9AwcFU0nvJ7sFN3ro= -k8s.io/cli-runtime v0.29.2/go.mod h1:KLisYYfoqeNfO+MkTWvpqIyb1wpJmmFJhioA0xd4MW8= +k8s.io/cli-runtime v0.29.3 h1:r68rephmmytoywkw2MyJ+CxjpasJDQY7AGc3XY2iv1k= +k8s.io/cli-runtime v0.29.3/go.mod h1:aqVUsk86/RhaGJwDhHXH0jcdqBrgdF3bZWk4Z9D4mkM= k8s.io/client-go v0.19.1/go.mod h1:AZOIVSI9UUtQPeJD3zJFp15CEhSjRgAuQP5PWRJrCIQ= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= -k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= -k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= +k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= +k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= k8s.io/cluster-bootstrap v0.22.4 h1:2ZhV/1K4GiCrnmDHHbBnN3bERWn+Nxrtxmxp6uYYThI= k8s.io/cluster-bootstrap v0.22.4/go.mod h1:fTQZ6u9G6fg2LHhB8nEgZLnXIhCDSRYuLUUS5pgW8RY= k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= @@ -2520,8 +2525,8 @@ k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeY k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= -k8s.io/component-base v0.29.2 h1:lpiLyuvPA9yV1aQwGLENYyK7n/8t6l3nn3zAtFTJYe8= -k8s.io/component-base v0.29.2/go.mod h1:BfB3SLrefbZXiBfbM+2H1dlat21Uewg/5qtKOl8degM= +k8s.io/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo= +k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio= k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= @@ -2548,8 +2553,8 @@ k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2R k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/kubectl v0.29.2 h1:uaDYaBhumvkwz0S2XHt36fK0v5IdNgL7HyUniwb2IUo= -k8s.io/kubectl v0.29.2/go.mod h1:BhizuYBGcKaHWyq+G7txGw2fXg576QbPrrnQdQDZgqI= +k8s.io/kubectl v0.29.3 h1:RuwyyIU42MAISRIePaa8Q7A3U74Q9P4MoJbDFz9o3us= +k8s.io/kubectl v0.29.3/go.mod h1:yCxfY1dbwgVdEt2zkJ6d5NNLOhhWgTyrqACIoFhpdd4= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= diff --git a/hack/jenkins/installers/check_install_gh.sh b/hack/jenkins/installers/check_install_gh.sh index d3f0462bbde6..e3020618e487 100755 --- a/hack/jenkins/installers/check_install_gh.sh +++ b/hack/jenkins/installers/check_install_gh.sh @@ -16,7 +16,7 @@ set -eux -o pipefail -GH_VERSION="2.45.0" +GH_VERSION="2.46.0" echo "Installing latest version of gh" curl -qLO "https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_amd64.tar.gz" diff --git a/hack/update/get_version/get_version.go b/hack/update/get_version/get_version.go index 91e940815b05..9a5a2bfa0455 100644 --- a/hack/update/get_version/get_version.go +++ b/hack/update/get_version/get_version.go @@ -41,6 +41,7 @@ var dependencies = map[string]dependency{ "cri-dockerd": {dockerfile, `CRI_DOCKERD_VERSION="(.*)"`}, "cri-o": {"deploy/iso/minikube-iso/package/crio-bin/crio-bin.mk", `CRIO_BIN_VERSION = (.*)`}, "crictl": {"deploy/iso/minikube-iso/arch/x86_64/package/crictl-bin/crictl-bin.mk", `CRICTL_BIN_VERSION = (.*)`}, + "crun": {"deploy/iso/minikube-iso/package/crun-latest/crun-latest.mk", `CRUN_LATEST_VERSION = (.*)`}, "docker": {"deploy/iso/minikube-iso/arch/x86_64/package/docker-bin/docker-bin.mk", `DOCKER_BIN_VERSION = (.*)`}, "flannel": {"pkg/minikube/cni/flannel.yaml", `flannel:(.*)`}, "gcp-auth": {addonsFile, `k8s-minikube/gcp-auth-webhook:(.*)@`}, @@ -50,6 +51,7 @@ var dependencies = map[string]dependency{ "golint": {"Makefile", `GOLINT_VERSION \?= (.*)`}, "gopogh": {"hack/jenkins/installers/check_install_gopogh.sh", `github.com/medyagh/gopogh/cmd/gopogh@(.*)`}, "gotestsum": {"hack/jenkins/installers/check_install_gotestsum.sh", `gotest\.tools/gotestsum@(.*)`}, + "headlamp": {addonsFile, `headlamp-k8s/headlamp:(.*)@`}, "hugo": {"netlify.toml", `HUGO_VERSION = "(.*)"`}, "ingress": {addonsFile, `ingress-nginx/controller:(.*)@`}, "inspektor-gadget": {addonsFile, `inspektor-gadget/inspektor-gadget:(.*)@`}, diff --git a/hack/update/golang_version/update_golang_version.go b/hack/update/golang_version/update_golang_version.go index f7d5f79ac6be..22a6223aca7c 100644 --- a/hack/update/golang_version/update_golang_version.go +++ b/hack/update/golang_version/update_golang_version.go @@ -69,6 +69,11 @@ var ( `golang:.* AS`: `golang:{{.StableVersion}} AS`, }, }, + "deploy/gvisor/Dockerfile": { + Replace: map[string]string{ + `golang:.* AS`: `golang:{{.StableVersion}} AS`, + }, + }, } ) diff --git a/netlify.toml b/netlify.toml index c089aacd94ae..1475f4ff23a2 100644 --- a/netlify.toml +++ b/netlify.toml @@ -4,8 +4,8 @@ publish = "site/public/" command = "pwd && cd themes/docsy && npm install && git submodule update -f --init && cd ../.. && hugo" [build.environment] -NODE_VERSION = "20.11.1" -HUGO_VERSION = "v0.123.8" +NODE_VERSION = "20.12.0" +HUGO_VERSION = "v0.124.1" [context.production.environment] HUGO_ENV = "production" diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 074db34f4964..0aa055b079e4 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -24,10 +24,10 @@ import ( const ( // Version is the current version of kic - Version = "v0.0.42-1710284843-18375" + Version = "v0.0.43-1711559786-18485" // SHA of the kic base image - baseImageSHA = "d67c38c9fc2ad14c48d95e17cbac49314325db5758d8f7b3de60b927e62ce94f" + baseImageSHA = "2dcab64da240d825290a528fa79ad3c32db45fe5f8be5150468234a7114eff82" // The name of the GCR kicbase repository gcrRepo = "gcr.io/k8s-minikube/kicbase-builds" // The name of the Dockerhub kicbase repository diff --git a/pkg/minikube/assets/addons.go b/pkg/minikube/assets/addons.go index b7f0a0e446ff..7fe3a12a4ab0 100644 --- a/pkg/minikube/assets/addons.go +++ b/pkg/minikube/assets/addons.go @@ -294,7 +294,7 @@ var Addons = map[string]*Addon{ "istio-operator.yaml", "0640"), }, false, "istio-provisioner", "3rd party (Istio)", "", "https://istio.io/latest/docs/setup/platform-setup/minikube/", map[string]string{ - "IstioOperator": "istio/operator:1.20.3@sha256:c0c04a762fa037c6e249ee08a33a740e115b6774f02b5b32e60a11727c632714", + "IstioOperator": "istio/operator:1.21.0@sha256:1018753fa29de7d40423d2e8bde1ebb246ca308e7621a914e2549ec5ec2c0aca", }, map[string]string{ "IstioOperator": "docker.io", }), @@ -340,7 +340,7 @@ var Addons = map[string]*Addon{ "pod.yaml", "0640"), }, false, "kubevirt", "3rd party (KubeVirt)", "", "https://minikube.sigs.k8s.io/docs/tutorials/kubevirt/", map[string]string{ - "Kubectl": "bitnami/kubectl:1.29.2@sha256:c74b703deed247e544a3feca13be7ecb0b091e4d2c3b825c870164bfa4d534ac", + "Kubectl": "bitnami/kubectl:1.29.3@sha256:030eecfae01810d0b0930a809532159554e4e263fd38afcefb5ee45bd014b75e", }, map[string]string{ "Kubectl": "docker.io", }), @@ -366,7 +366,7 @@ var Addons = map[string]*Addon{ "metrics-server-service.yaml", "0640"), }, false, "metrics-server", "Kubernetes", "", "", map[string]string{ - "MetricsServer": "metrics-server/metrics-server:v0.7.0@sha256:1c0419326500f1704af580d12a579671b2c3a06a8aa918cd61d0a35fb2d6b3ce", + "MetricsServer": "metrics-server/metrics-server:v0.7.1@sha256:db3800085a0957083930c3932b17580eec652cfb6156a05c0f79c7543e80d17a", }, map[string]string{ "MetricsServer": "registry.k8s.io", }), @@ -406,8 +406,8 @@ var Addons = map[string]*Addon{ "registry-proxy.yaml", "0640"), }, false, "registry", "minikube", "", "", map[string]string{ - "Registry": "registry:2.8.3@sha256:f4e1b878d4bc40a1f65532d68c94dcfbab56aa8cba1f00e355a206e7f6cc9111", - "KubeRegistryProxy": "k8s-minikube/kube-registry-proxy:0.0.5@sha256:f107ecd58728a2df5f2bb7e087f65f5363d0019b1e1fd476e4ef16065f44abfb", + "Registry": "registry:2.8.3@sha256:fb9c9aef62af3955f6014613456551c92e88a67dcf1fc51f5f91bcbd1832813f", + "KubeRegistryProxy": "k8s-minikube/kube-registry-proxy:0.0.6@sha256:b3fa0b2df8737fdb85ad5918a7e2652527463e357afff83a5e5bb966bcedc367", }, map[string]string{ "KubeRegistryProxy": "gcr.io", "Registry": "docker.io", @@ -521,7 +521,7 @@ var Addons = map[string]*Addon{ "gvisor-runtimeclass.yaml", "0640"), }, false, "gvisor", "minikube", "", "https://github.com/kubernetes/minikube/blob/master/deploy/addons/gvisor/README.md", map[string]string{ - "GvisorAddon": "k8s-minikube/gvisor-addon:4@sha256:4bdc0bec3f36a32e534d9da98552810c832dd58fd0a361e5c0b836606b164bc2", + "GvisorAddon": "k8s-minikube/gvisor-addon:v0.0.1@sha256:d29adbddc7a44dab4c675c0eaea398907fe1f33f5f723274b0d40195b3076cae", }, map[string]string{ "GvisorAddon": "gcr.io", }), @@ -764,7 +764,7 @@ var Addons = map[string]*Addon{ MustBinAsset(addons.HeadlampAssets, "headlamp/headlamp-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "headlamp-clusterrolebinding.yaml", "0640"), }, false, "headlamp", "3rd party (kinvolk.io)", "yolossn", "https://minikube.sigs.k8s.io/docs/handbook/addons/headlamp/", map[string]string{ - "Headlamp": "headlamp-k8s/headlamp:v0.23.0@sha256:94e00732e1b43057a9135dafc7483781aea4a73a26cec449ed19f4d8794308d5", + "Headlamp": "headlamp-k8s/headlamp:v0.23.1@sha256:dd9e2ad6ae6d23761372bc9cc0dbcb47aacd6a31986827b43ac207cecb25c39f", }, map[string]string{ "Headlamp": "ghcr.io", @@ -772,7 +772,7 @@ var Addons = map[string]*Addon{ "cloud-spanner": NewAddon([]*BinAsset{ MustBinAsset(addons.CloudSpanner, "cloud-spanner/deployment.yaml.tmpl", vmpath.GuestAddonsDir, "deployment.yaml", "0640"), }, false, "cloud-spanner", "Google", "", "https://minikube.sigs.k8s.io/docs/handbook/addons/cloud-spanner/", map[string]string{ - "CloudSpanner": "cloud-spanner-emulator/emulator:1.5.14@sha256:41d5dccfcf13817a2348beba0ca7c650ffdd795f7fcbe975b7822c9eed262e15", + "CloudSpanner": "cloud-spanner-emulator/emulator:1.5.15@sha256:538fb31f832e76c93f10035cb609c56fc5cd18b3cd85a3ba50699572c3c5dc50", }, map[string]string{ "CloudSpanner": "gcr.io", }), diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd-api-port.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd-api-port.yaml index 47f371b30101..3dc628bc241d 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd-api-port.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd-api-port.yaml @@ -38,7 +38,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: cluster.local podSubnet: "10.244.0.0/16" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd-pod-network-cidr.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd-pod-network-cidr.yaml index 9b26c75e7c6c..884020b080aa 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd-pod-network-cidr.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd-pod-network-cidr.yaml @@ -38,7 +38,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: cluster.local podSubnet: "192.168.32.0/20" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd.yaml index a527a0a5bd7b..d22fbc8bd35a 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/containerd.yaml @@ -38,7 +38,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: cluster.local podSubnet: "10.244.0.0/16" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/crio-options-gates.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/crio-options-gates.yaml index 2a03d33906e6..369af8cdfd55 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/crio-options-gates.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/crio-options-gates.yaml @@ -44,7 +44,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: cluster.local podSubnet: "10.244.0.0/16" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/crio.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/crio.yaml index 725519fa30d1..d13ec3551697 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/crio.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/crio.yaml @@ -38,7 +38,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: cluster.local podSubnet: "10.244.0.0/16" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/default.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/default.yaml index 3b0247bc9e97..caff8b3ff7cf 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/default.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/default.yaml @@ -38,7 +38,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: cluster.local podSubnet: "10.244.0.0/16" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/dns.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/dns.yaml index ed17755b7744..52e0e0498380 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/dns.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/dns.yaml @@ -38,7 +38,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: minikube.local podSubnet: "10.244.0.0/16" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/image-repository.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/image-repository.yaml index 2a3a6b266eac..3254625f5f18 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/image-repository.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/image-repository.yaml @@ -39,7 +39,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: cluster.local podSubnet: "10.244.0.0/16" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/options.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/options.yaml index f8620d6585bc..1d90dcdd2f6e 100644 --- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/options.yaml +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.29/options.yaml @@ -41,7 +41,7 @@ etcd: dataDir: /var/lib/minikube/etcd extraArgs: proxy-refresh-interval: "70000" -kubernetesVersion: v1.29.0-rc.2 +kubernetesVersion: v1.29.0 networking: dnsDomain: cluster.local podSubnet: "10.244.0.0/16" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd-api-port.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd-api-port.yaml new file mode 100644 index 000000000000..e4c9bada2a96 --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd-api-port.yaml @@ -0,0 +1,75 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 12345 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///run/containerd/containerd.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + leader-elect: "false" +scheduler: + extraArgs: + leader-elect: "false" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:12345 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: cluster.local + podSubnet: "10.244.0.0/16" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///run/containerd/containerd.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "cluster.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "10.244.0.0/16" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd-pod-network-cidr.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd-pod-network-cidr.yaml new file mode 100644 index 000000000000..29c6138d9c5f --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd-pod-network-cidr.yaml @@ -0,0 +1,75 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 8443 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///run/containerd/containerd.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + leader-elect: "false" +scheduler: + extraArgs: + leader-elect: "false" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:8443 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: cluster.local + podSubnet: "192.168.32.0/20" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///run/containerd/containerd.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "cluster.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "192.168.32.0/20" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd.yaml new file mode 100644 index 000000000000..bcc8167ee339 --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/containerd.yaml @@ -0,0 +1,75 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 8443 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///run/containerd/containerd.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + leader-elect: "false" +scheduler: + extraArgs: + leader-elect: "false" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:8443 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: cluster.local + podSubnet: "10.244.0.0/16" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///run/containerd/containerd.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "cluster.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "10.244.0.0/16" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/crio-options-gates.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/crio-options-gates.yaml new file mode 100644 index 000000000000..cfac855610fb --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/crio-options-gates.yaml @@ -0,0 +1,82 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 8443 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///var/run/crio/crio.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" + fail-no-swap: "true" + feature-gates: "a=b" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + feature-gates: "a=b" + kube-api-burst: "32" + leader-elect: "false" +scheduler: + extraArgs: + feature-gates: "a=b" + leader-elect: "false" + scheduler-name: "mini-scheduler" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:8443 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: cluster.local + podSubnet: "10.244.0.0/16" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///var/run/crio/crio.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "cluster.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "10.244.0.0/16" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s +mode: "iptables" diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/crio.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/crio.yaml new file mode 100644 index 000000000000..b48b6216a1e4 --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/crio.yaml @@ -0,0 +1,75 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 8443 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///var/run/crio/crio.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + leader-elect: "false" +scheduler: + extraArgs: + leader-elect: "false" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:8443 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: cluster.local + podSubnet: "10.244.0.0/16" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///var/run/crio/crio.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "cluster.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "10.244.0.0/16" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/default.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/default.yaml new file mode 100644 index 000000000000..2fa9d3d296c3 --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/default.yaml @@ -0,0 +1,75 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 8443 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///var/run/dockershim.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + leader-elect: "false" +scheduler: + extraArgs: + leader-elect: "false" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:8443 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: cluster.local + podSubnet: "10.244.0.0/16" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///var/run/dockershim.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "cluster.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "10.244.0.0/16" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/dns.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/dns.yaml new file mode 100644 index 000000000000..fd240988318c --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/dns.yaml @@ -0,0 +1,75 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 8443 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///var/run/dockershim.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + leader-elect: "false" +scheduler: + extraArgs: + leader-elect: "false" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:8443 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: minikube.local + podSubnet: "10.244.0.0/16" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///var/run/dockershim.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "minikube.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "10.244.0.0/16" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/image-repository.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/image-repository.yaml new file mode 100644 index 000000000000..26055dd8ec11 --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/image-repository.yaml @@ -0,0 +1,76 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 8443 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///var/run/dockershim.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +imageRepository: test/repo +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + leader-elect: "false" +scheduler: + extraArgs: + leader-elect: "false" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:8443 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: cluster.local + podSubnet: "10.244.0.0/16" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///var/run/dockershim.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "cluster.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "10.244.0.0/16" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/options.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/options.yaml new file mode 100644 index 000000000000..b103d11a54c7 --- /dev/null +++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.30/options.yaml @@ -0,0 +1,79 @@ +apiVersion: kubeadm.k8s.io/v1beta3 +kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: 1.1.1.1 + bindPort: 8443 +bootstrapTokens: + - groups: + - system:bootstrappers:kubeadm:default-node-token + ttl: 24h0m0s + usages: + - signing + - authentication +nodeRegistration: + criSocket: unix:///var/run/dockershim.sock + name: "mk" + kubeletExtraArgs: + node-ip: 1.1.1.1 + taints: [] +--- +apiVersion: kubeadm.k8s.io/v1beta3 +kind: ClusterConfiguration +apiServer: + certSANs: ["127.0.0.1", "localhost", "1.1.1.1"] + extraArgs: + enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" + fail-no-swap: "true" +controllerManager: + extraArgs: + allocate-node-cidrs: "true" + kube-api-burst: "32" + leader-elect: "false" +scheduler: + extraArgs: + leader-elect: "false" + scheduler-name: "mini-scheduler" +certificatesDir: /var/lib/minikube/certs +clusterName: mk +controlPlaneEndpoint: control-plane.minikube.internal:8443 +etcd: + local: + dataDir: /var/lib/minikube/etcd + extraArgs: + proxy-refresh-interval: "70000" +kubernetesVersion: v1.30.0-rc.0 +networking: + dnsDomain: cluster.local + podSubnet: "10.244.0.0/16" + serviceSubnet: 10.96.0.0/12 +--- +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +authentication: + x509: + clientCAFile: /var/lib/minikube/certs/ca.crt +cgroupDriver: systemd +containerRuntimeEndpoint: unix:///var/run/dockershim.sock +hairpinMode: hairpin-veth +runtimeRequestTimeout: 15m +clusterDomain: "cluster.local" +# disable disk resource management by default +imageGCHighThresholdPercent: 100 +evictionHard: + nodefs.available: "0%" + nodefs.inodesFree: "0%" + imagefs.available: "0%" +failSwapOn: false +staticPodPath: /etc/kubernetes/manifests +--- +apiVersion: kubeproxy.config.k8s.io/v1alpha1 +kind: KubeProxyConfiguration +clusterCIDR: "10.244.0.0/16" +metricsBindAddress: 0.0.0.0:10249 +conntrack: + maxPerCore: 0 +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established" + tcpEstablishedTimeout: 0s +# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close" + tcpCloseWaitTimeout: 0s +mode: "iptables" diff --git a/pkg/minikube/cni/flannel.yaml b/pkg/minikube/cni/flannel.yaml index 2b2a8d03c2f1..381f38db68d9 100644 --- a/pkg/minikube/cni/flannel.yaml +++ b/pkg/minikube/cni/flannel.yaml @@ -150,7 +150,7 @@ spec: - name: cni-plugin mountPath: /opt/cni/bin - name: install-cni - image: docker.io/flannel/flannel:v0.24.3 + image: docker.io/flannel/flannel:v0.24.4 command: - cp args: @@ -164,7 +164,7 @@ spec: mountPath: /etc/kube-flannel/ containers: - name: kube-flannel - image: docker.io/flannel/flannel:v0.24.3 + image: docker.io/flannel/flannel:v0.24.4 command: - /opt/bin/flanneld args: diff --git a/pkg/minikube/config/profile.go b/pkg/minikube/config/profile.go index 50111ca5bd83..65ac95d5128b 100644 --- a/pkg/minikube/config/profile.go +++ b/pkg/minikube/config/profile.go @@ -27,6 +27,7 @@ import ( "github.com/spf13/viper" "k8s.io/klog/v2" "k8s.io/minikube/pkg/drivers/kic/oci" + "k8s.io/minikube/pkg/minikube/kubeconfig" "k8s.io/minikube/pkg/minikube/localpath" "k8s.io/minikube/pkg/util/lock" ) @@ -200,6 +201,10 @@ func ListProfiles(miniHome ...string) (validPs []*Profile, inValidPs []*Profile, pDirs = append(pDirs, cs...) } + activeKubeContext, err := kubeconfig.GetCurrentContext(kubeconfig.PathFromEnv()) + if err != nil { + return nil, nil, err + } nodeNames := map[string]bool{} for _, n := range removeDupes(pDirs) { p, err := LoadProfile(n, miniHome...) @@ -215,6 +220,9 @@ func ListProfiles(miniHome ...string) (validPs []*Profile, inValidPs []*Profile, if p.Name == activeP { p.Active = true } + if p.Name == activeKubeContext { + p.ActiveKubeContext = true + } for _, child := range p.Config.Nodes { nodeNames[MachineName(*p.Config, child)] = true } diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index ee4cba6a5782..d8dc05281e78 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -25,10 +25,11 @@ import ( // Profile represents a minikube profile type Profile struct { - Name string - Status string // running, stopped, paused, unknown - Config *ClusterConfig - Active bool + Name string + Status string // running, stopped, paused, unknown + Config *ClusterConfig + Active bool + ActiveKubeContext bool } // ClusterConfig contains the parameters used to start a cluster. diff --git a/pkg/minikube/constants/constants.go b/pkg/minikube/constants/constants.go index 404a2359f4f2..8a78c039a48c 100644 --- a/pkg/minikube/constants/constants.go +++ b/pkg/minikube/constants/constants.go @@ -34,10 +34,10 @@ var ( const ( // DefaultKubernetesVersion is the default Kubernetes version - DefaultKubernetesVersion = "v1.28.4" + DefaultKubernetesVersion = "v1.29.3" // NewestKubernetesVersion is the newest Kubernetes version to test against // NOTE: You may need to update coreDNS & etcd versions in pkg/minikube/bootstrapper/images/images.go - NewestKubernetesVersion = "v1.29.0-rc.2" + NewestKubernetesVersion = "v1.30.0-rc.0" // OldestKubernetesVersion is the oldest Kubernetes version to test against OldestKubernetesVersion = "v1.20.0" // NoKubernetesVersion is the version used when users does NOT want to install kubernetes diff --git a/pkg/minikube/constants/constants_kubeadm_images.go b/pkg/minikube/constants/constants_kubeadm_images.go index 5c5a7e58a2a5..218ca8333a23 100644 --- a/pkg/minikube/constants/constants_kubeadm_images.go +++ b/pkg/minikube/constants/constants_kubeadm_images.go @@ -18,6 +18,11 @@ package constants var ( KubeadmImages = map[string]map[string]string{ + "v1.30.0-rc.0": { + "coredns/coredns": "v1.11.1", + "etcd": "3.5.12-0", + "pause": "3.9", + }, "v1.28.8": { "coredns/coredns": "v1.10.1", "etcd": "3.5.12-0", diff --git a/pkg/minikube/constants/constants_kubernetes_versions.go b/pkg/minikube/constants/constants_kubernetes_versions.go index 53342e39d8a8..f88480194959 100644 --- a/pkg/minikube/constants/constants_kubernetes_versions.go +++ b/pkg/minikube/constants/constants_kubernetes_versions.go @@ -21,6 +21,7 @@ package constants // ValidKubernetesVersions is a list of Kubernetes versions in order from newest to oldest // This is used when outputting Kubernetes versions and to select the latest patch version when unspecified var ValidKubernetesVersions = []string{ + "v1.30.0-rc.0", "v1.30.0-beta.0", "v1.30.0-alpha.3", "v1.30.0-alpha.2", diff --git a/pkg/minikube/cruntime/containerd.go b/pkg/minikube/cruntime/containerd.go index b79af909b54a..73df60d4c042 100644 --- a/pkg/minikube/cruntime/containerd.go +++ b/pkg/minikube/cruntime/containerd.go @@ -177,6 +177,21 @@ func generateContainerdConfig(cr CommandRunner, imageRepository string, kv semve return errors.Wrap(err, "update conf_dir") } + // enable 'enable_unprivileged_ports' so that containers that run with non-root user can bind to otherwise privilege ports (like coredns v1.11.0+) + // note: 'net.ipv4.ip_unprivileged_port_start' sysctl was marked as safe since kubernetes v1.22 (Aug 4, 2021) (ref: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.22.md#feature-9) + // note: containerd supports 'enable_unprivileged_ports' option since v1.6.0-beta.3 (Nov 19, 2021) (ref: https://github.com/containerd/containerd/releases/tag/v1.6.0-beta.3; https://github.com/containerd/containerd/pull/6170) + // note: minikube bumped containerd version to greater than v1.6.0 on May 19, 2022 (ref: https://github.com/kubernetes/minikube/pull/14152) + if kv.GTE(semver.Version{Major: 1, Minor: 22}) { + // remove any existing 'enable_unprivileged_ports' settings + if _, err := cr.RunCmd(exec.Command("sh", "-c", fmt.Sprintf(`sudo sed -i '/^ *enable_unprivileged_ports = .*/d' %s`, containerdConfigFile))); err != nil { + return errors.Wrap(err, "removing enable_unprivileged_ports") + } + // add 'enable_unprivileged_ports' with value 'true' + if _, err := cr.RunCmd(exec.Command("sh", "-c", fmt.Sprintf(`sudo sed -i -r 's|^( *)\[plugins."io.containerd.grpc.v1.cri"\]|&\n\1 enable_unprivileged_ports = true|' %s`, containerdConfigFile))); err != nil { + return errors.Wrap(err, "configuring enable_unprivileged_ports") + } + } + for _, registry := range insecureRegistry { addr := registry if strings.HasPrefix(strings.ToLower(registry), "http://") || strings.HasPrefix(strings.ToLower(registry), "https://") { diff --git a/pkg/minikube/cruntime/cri.go b/pkg/minikube/cruntime/cri.go index 1244defb0ee5..fa3b2c1cb49c 100644 --- a/pkg/minikube/cruntime/cri.go +++ b/pkg/minikube/cruntime/cri.go @@ -140,7 +140,7 @@ func listCRIContainers(cr CommandRunner, root string, o ListContainersOptions) ( return fids, nil } -// pauseContainers pauses a list of containers +// pauseCRIContainers pauses a list of containers func pauseCRIContainers(cr CommandRunner, root string, ids []string) error { baseArgs := []string{"runc"} if root != "" { diff --git a/pkg/minikube/cruntime/crio.go b/pkg/minikube/cruntime/crio.go index 62970afc4d23..4896e9a550ec 100644 --- a/pkg/minikube/cruntime/crio.go +++ b/pkg/minikube/cruntime/crio.go @@ -89,6 +89,24 @@ func generateCRIOConfig(cr CommandRunner, imageRepository string, kv semver.Vers klog.Warningf("unable to remove /etc/cni/net.mk directory: %v", err) } + // add 'net.ipv4.ip_unprivileged_port_start=0' sysctl so that containers that run with non-root user can bind to otherwise privilege ports (like coredns v1.11.0+) + // note: 'net.ipv4.ip_unprivileged_port_start' sysctl was marked as safe since Kubernetes v1.22 (Aug 4, 2021) (ref: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.22.md#feature-9) + // note: cri-o supports 'default_sysctls' option since v1.12.0 (Oct 19, 2018) (ref: https://github.com/cri-o/cri-o/releases/tag/v1.12.0; https://github.com/cri-o/cri-o/pull/1721) + if kv.GTE(semver.Version{Major: 1, Minor: 22}) { + // remove any existing 'net.ipv4.ip_unprivileged_port_start' settings + if _, err := cr.RunCmd(exec.Command("sh", "-c", fmt.Sprintf(`sudo sed -i '/^ *"net.ipv4.ip_unprivileged_port_start=.*"/d' %s`, crioConfigFile))); err != nil { + return errors.Wrap(err, "removing net.ipv4.ip_unprivileged_port_start") + } + // insert 'default_sysctls' list, if not already present + if _, err := cr.RunCmd(exec.Command("sh", "-c", fmt.Sprintf(`sudo grep -q "^ *default_sysctls" %s || sudo sed -i '/conmon_cgroup = .*/a default_sysctls = \[\n\]' %s`, crioConfigFile, crioConfigFile))); err != nil { + return errors.Wrap(err, "inserting default_sysctls") + } + // add 'net.ipv4.ip_unprivileged_port_start' to 'default_sysctls' list + if _, err := cr.RunCmd(exec.Command("sh", "-c", fmt.Sprintf(`sudo sed -i -r 's|^default_sysctls *= *\[|&\n "net.ipv4.ip_unprivileged_port_start=0",|' %s`, crioConfigFile))); err != nil { + return errors.Wrap(err, "configuring net.ipv4.ip_unprivileged_port_start") + } + } + return nil } diff --git a/pkg/minikube/download/download.go b/pkg/minikube/download/download.go index cfc4a9cb5901..a4404cbf458e 100644 --- a/pkg/minikube/download/download.go +++ b/pkg/minikube/download/download.go @@ -111,7 +111,7 @@ func download(src, dst string) error { return os.Rename(tmpDst, dst) } -// withinUnitTset detects if we are in running within a unit-test +// withinUnitTest detects if we are in running within a unit-test func withinUnitTest() bool { // Nope, it's the integration test if flag.Lookup("minikube-start-args") != nil || strings.HasPrefix(filepath.Base(os.Args[0]), "e2e-") { diff --git a/pkg/minikube/download/iso.go b/pkg/minikube/download/iso.go index 6a468599b9af..5fd5996fcab9 100644 --- a/pkg/minikube/download/iso.go +++ b/pkg/minikube/download/iso.go @@ -41,7 +41,7 @@ const fileScheme = "file" // DefaultISOURLs returns a list of ISO URL's to consult by default, in priority order func DefaultISOURLs() []string { v := version.GetISOVersion() - isoBucket := "minikube-builds/iso/17991" + isoBucket := "minikube-builds/iso/18485" return []string{ fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s-%s.iso", isoBucket, v, runtime.GOARCH), diff --git a/pkg/minikube/kubeconfig/context.go b/pkg/minikube/kubeconfig/context.go index 8b3d584643fc..9436aab4385c 100644 --- a/pkg/minikube/kubeconfig/context.go +++ b/pkg/minikube/kubeconfig/context.go @@ -45,6 +45,20 @@ func UnsetCurrentContext(machineName string, configPath ...string) error { return nil } +// GetCurrentContext gets the kubectl's current-context +func GetCurrentContext(configPath ...string) (string, error) { + fPath := PathFromEnv() + if configPath != nil { + fPath = configPath[0] + } + kcfg, err := readOrNew(fPath) + if err != nil { + return "", errors.Wrap(err, "Error getting kubeconfig status") + } + + return kcfg.CurrentContext, err +} + // SetCurrentContext sets the kubectl's current-context func SetCurrentContext(name string, configPath ...string) error { fPath := PathFromEnv() diff --git a/pkg/minikube/machine/fix.go b/pkg/minikube/machine/fix.go index fc66e2320490..63faa5acb1e3 100644 --- a/pkg/minikube/machine/fix.go +++ b/pkg/minikube/machine/fix.go @@ -186,7 +186,7 @@ func maybeWarnAboutEvalEnv(drver string, name string) { } } -// ensureGuestClockSync ensures that the guest system clock is relatively in-sync +// ensureSyncedGuestClock ensures that the guest system clock is relatively in-sync func ensureSyncedGuestClock(h hostRunner, drv string) error { if !driver.IsVM(drv) { return nil @@ -230,7 +230,7 @@ func guestClockDelta(h hostRunner, local time.Time) (time.Duration, error) { return d, nil } -// adjustSystemClock adjusts the guest system clock to be nearer to the host system clock +// adjustGuestClock adjusts the guest system clock to be nearer to the host system clock func adjustGuestClock(h hostRunner, t time.Time) error { out, err := h.RunSSHCommand(fmt.Sprintf("sudo date -s @%d", t.Unix())) klog.Infof("clock set: %s (err=%v)", out, err) diff --git a/pkg/minikube/node/config.go b/pkg/minikube/node/config.go index e7f271a6584a..0ef66c916083 100644 --- a/pkg/minikube/node/config.go +++ b/pkg/minikube/node/config.go @@ -21,9 +21,7 @@ import ( "os" "os/exec" "path/filepath" - "regexp" "strconv" - "strings" "sync" "github.com/spf13/viper" @@ -38,46 +36,16 @@ import ( "k8s.io/minikube/pkg/minikube/out/register" "k8s.io/minikube/pkg/minikube/reason" "k8s.io/minikube/pkg/minikube/style" + "k8s.io/minikube/pkg/util" "k8s.io/minikube/pkg/util/lock" ) -func maskProxyPassword(v string) string { - parts := strings.Split(v, "=") - // Is it an attribution variable? - if len(parts) == 2 { - key := strings.ToUpper(parts[0]) - // Is it a proxy setting? - if key == "HTTP_PROXY" || key == "HTTPS_PROXY" { - proxyValue := parts[1] - // Proxy variable values SHOULD have a value like - // https(s):// - proxyAddressParts := strings.Split(proxyValue, "://") - if len(proxyAddressParts) == 2 { - proxyURL := "" - proxyURL = proxyAddressParts[1] - // Let's store the username, the URL and and optional port address - pattern := `([^:]+):.+(@[\w\.]+)(:\d+)?` - regexpPattern := regexp.MustCompile(pattern) - matches := regexpPattern.FindStringSubmatch(proxyURL) - mask := "*****" - if len(matches) == 4 { - proxyValue = fmt.Sprintf("%s://%s:%s%s%s", proxyAddressParts[0], matches[1], mask, matches[2], matches[3]) - } else if len(matches) == 3 { - proxyValue = fmt.Sprintf("%s//%s:%s@%s", proxyAddressParts[0], matches[1], mask, matches[2]) - } - } - v = key + "=" + proxyValue - } - } - return v -} - func showVersionInfo(k8sVersion string, cr cruntime.Manager) { version, _ := cr.Version() register.Reg.SetStep(register.PreparingKubernetes) out.Step(cr.Style(), "Preparing Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}} ...", out.V{"k8sVersion": k8sVersion, "runtime": cr.Name(), "runtimeVersion": version}) for _, v := range config.DockerOpt { - v = maskProxyPassword(v) + v = util.MaskProxyPasswordWithKey(v) out.Infof("opt {{.docker_option}}", out.V{"docker_option": v}) } for _, v := range config.DockerEnv { diff --git a/pkg/minikube/node/config_test.go b/pkg/minikube/node/config_test.go deleted file mode 100644 index c40df55b50a9..000000000000 --- a/pkg/minikube/node/config_test.go +++ /dev/null @@ -1,72 +0,0 @@ -/* -Copyright 2016 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 node - -import ( - "testing" -) - -func Test_maskProxyPassword(t *testing.T) { - type dockerOptTest struct { - input string - output string - } - var tests = []dockerOptTest{ - { - input: "cats", - output: "cats", - }, - { - input: "myDockerOption=value", - output: "myDockerOption=value", - }, - { - input: "http_proxy=http://minikube.sigs.k8s.io", - output: "HTTP_PROXY=http://minikube.sigs.k8s.io", - }, - { - input: "https_proxy=http://jdoe@minikube.sigs.k8s.io:8080", - output: "HTTPS_PROXY=http://jdoe@minikube.sigs.k8s.io:8080", - }, - { - input: "https_proxy=https://mary:iam$Fake!password@minikube.sigs.k8s.io:8080", - output: "HTTPS_PROXY=https://mary:*****@minikube.sigs.k8s.io:8080", - }, - { - input: "http_proxy=http://jdoe:%n0tRe@al:Password!@minikube.sigs.k8s.io:8080", - output: "HTTP_PROXY=http://jdoe:*****@minikube.sigs.k8s.io:8080", - }, - { - input: "http_proxy=http://jo@han:n0tRe@al:&Password!@minikube.sigs.k8s.io:8080", - output: "HTTP_PROXY=http://jo@han:*****@minikube.sigs.k8s.io:8080", - }, - { - input: "http_proxy=http://k@r3n!:an0th3erF@akeP@55word@minikube.sigs.k8s.io", - output: "HTTP_PROXY=http://k@r3n!:*****@minikube.sigs.k8s.io", - }, - { - input: "https_proxy=https://fr@ank5t3in:an0th3erF@akeP@55word@minikube.sigs.k8s.io", - output: "HTTPS_PROXY=https://fr@ank5t3in:*****@minikube.sigs.k8s.io", - }, - } - for _, test := range tests { - got := maskProxyPassword(test.input) - if got != test.output { - t.Errorf("maskProxyPassword(\"%v\"): got %v, expected %v", test.input, got, test.output) - } - } -} diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go index c382a4304fd5..7cd789c770fc 100755 --- a/pkg/minikube/node/start.go +++ b/pkg/minikube/node/start.go @@ -767,9 +767,7 @@ func validateNetwork(h *host.Host, r command.Runner, imageRepository string) (st k = strings.ToUpper(k) // let's get the key right away to mask password from output // If http(s)_proxy contains password, let's not splatter on the screen if k == "HTTP_PROXY" || k == "HTTPS_PROXY" { - pattern := `//(\w+):\w+@` - regexpPattern := regexp.MustCompile(pattern) - v = regexpPattern.ReplaceAllString(v, "//$1:*****@") + v = util.MaskProxyPassword(v) } out.Infof("{{.key}}={{.value}}", out.V{"key": k, "value": v}) ipExcluded := proxy.IsIPExcluded(ip) // Skip warning if minikube ip is already in NO_PROXY diff --git a/pkg/minikube/sshagent/sshagent.go b/pkg/minikube/sshagent/sshagent.go index dc066907c339..73ac75876373 100644 --- a/pkg/minikube/sshagent/sshagent.go +++ b/pkg/minikube/sshagent/sshagent.go @@ -106,7 +106,7 @@ func isRunning(cc *config.ClusterConfig) (bool, error) { func Stop(profile string) error { cc, err := config.Load(profile) if err != nil { - return fmt.Errorf("failed loading config: %v", err) + return err } running, err := isRunning(cc) if err != nil { diff --git a/pkg/minikube/tunnel/kic/ssh_tunnel.go b/pkg/minikube/tunnel/kic/ssh_tunnel.go index bcc355c1bf42..001639ef766e 100644 --- a/pkg/minikube/tunnel/kic/ssh_tunnel.go +++ b/pkg/minikube/tunnel/kic/ssh_tunnel.go @@ -187,7 +187,7 @@ func (t *SSHTunnel) stopMarkedConnections() { } } -// sshConnName creates a uniq name for the tunnel, using its name/clusterIP/ports. +// sshConnUniqName creates a uniq name for the tunnel, using its name/clusterIP/ports. // This allows a new process to be created if an existing service was changed, // the new process will support the IP/Ports change occurred. func sshConnUniqName(service v1.Service) string { diff --git a/pkg/util/utils.go b/pkg/util/utils.go index e7a6a7dc10b2..234155237e7d 100644 --- a/pkg/util/utils.go +++ b/pkg/util/utils.go @@ -21,7 +21,9 @@ import ( "os" "os/user" "path/filepath" + "regexp" "strconv" + "strings" "github.com/blang/semver/v4" units "github.com/docker/go-units" @@ -123,3 +125,41 @@ func RemoveDuplicateStrings(initial []string) []string { } return result } + +// MaskProxyPassword masks the password in a proxy URL +func MaskProxyPassword(proxyURL string) string { + // Proxy variable values SHOULD have a value like + // https(s):// + parts := strings.Split(proxyURL, "://") + if len(parts) == 2 { + proxyAddress := parts[1] + // Let's store the username, the URL and an optional port address + pattern := `([^:]+):.+(@[\w\.]+)(:\d+)?` + re := regexp.MustCompile(pattern) + matches := re.FindStringSubmatch(proxyAddress) + mask := "*****" + switch len(matches) { + case 4: + return fmt.Sprintf("%s://%s:%s%s%s", parts[0], matches[1], mask, matches[2], matches[3]) + case 3: + return fmt.Sprintf("%s//%s:%s@%s", parts[0], matches[1], mask, matches[2]) + } + } + return proxyURL +} + +// MaskProxyPasswordWithKey masks the password in a proxy URL specified by a key-value pair +func MaskProxyPasswordWithKey(v string) string { + parts := strings.Split(v, "=") + // Is it an attribution variable? + if len(parts) == 2 { + key := strings.ToUpper(parts[0]) + // Is it a proxy setting? + if key == "HTTP_PROXY" || key == "HTTPS_PROXY" { + proxyValue := parts[1] + maskedProxyValue := MaskProxyPassword(proxyValue) + return key + "=" + maskedProxyValue + } + } + return v +} diff --git a/pkg/util/utils_test.go b/pkg/util/utils_test.go index 195a64d258cb..8c8a96faa3dc 100644 --- a/pkg/util/utils_test.go +++ b/pkg/util/utils_test.go @@ -208,3 +208,105 @@ func TestRemoveDuplicateStrings(t *testing.T) { }) } } + +func TestMaskProxyPassword(t *testing.T) { + type dockerOptTest struct { + input string + output string + } + var tests = []dockerOptTest{ + { + input: "cats", + output: "cats", + }, + { + input: "myDockerOption=value", + output: "myDockerOption=value", + }, + { + input: "http://minikube.sigs.k8s.io", + output: "http://minikube.sigs.k8s.io", + }, + { + input: "http://jdoe@minikube.sigs.k8s.io:8080", + output: "http://jdoe@minikube.sigs.k8s.io:8080", + }, + { + input: "https://mary:iam$Fake!password@minikube.sigs.k8s.io:8080", + output: "https://mary:*****@minikube.sigs.k8s.io:8080", + }, + { + input: "http://jdoe:%n0tRe@al:Password!@minikube.sigs.k8s.io:8080", + output: "http://jdoe:*****@minikube.sigs.k8s.io:8080", + }, + { + input: "http://jo@han:n0tRe@al:&Password!@minikube.sigs.k8s.io:8080", + output: "http://jo@han:*****@minikube.sigs.k8s.io:8080", + }, + { + input: "http://k@r3n!:an0th3erF@akeP@55word@minikube.sigs.k8s.io", + output: "http://k@r3n!:*****@minikube.sigs.k8s.io", + }, + { + input: "https://fr@ank5t3in:an0th3erF@akeP@55word@minikube.sigs.k8s.io", + output: "https://fr@ank5t3in:*****@minikube.sigs.k8s.io", + }, + } + for _, test := range tests { + got := MaskProxyPassword(test.input) + if got != test.output { + t.Errorf("MaskProxyPassword(\"%v\"): got %v, expected %v", test.input, got, test.output) + } + } +} + +func TestMaskProxyPasswordWithKey(t *testing.T) { + type dockerOptTest struct { + input string + output string + } + var tests = []dockerOptTest{ + { + input: "cats", + output: "cats", + }, + { + input: "myDockerOption=value", + output: "myDockerOption=value", + }, + { + input: "http_proxy=http://minikube.sigs.k8s.io", + output: "HTTP_PROXY=http://minikube.sigs.k8s.io", + }, + { + input: "https_proxy=http://jdoe@minikube.sigs.k8s.io:8080", + output: "HTTPS_PROXY=http://jdoe@minikube.sigs.k8s.io:8080", + }, + { + input: "https_proxy=https://mary:iam$Fake!password@minikube.sigs.k8s.io:8080", + output: "HTTPS_PROXY=https://mary:*****@minikube.sigs.k8s.io:8080", + }, + { + input: "http_proxy=http://jdoe:%n0tRe@al:Password!@minikube.sigs.k8s.io:8080", + output: "HTTP_PROXY=http://jdoe:*****@minikube.sigs.k8s.io:8080", + }, + { + input: "http_proxy=http://jo@han:n0tRe@al:&Password!@minikube.sigs.k8s.io:8080", + output: "HTTP_PROXY=http://jo@han:*****@minikube.sigs.k8s.io:8080", + }, + { + input: "http_proxy=http://k@r3n!:an0th3erF@akeP@55word@minikube.sigs.k8s.io", + output: "HTTP_PROXY=http://k@r3n!:*****@minikube.sigs.k8s.io", + }, + { + input: "https_proxy=https://fr@ank5t3in:an0th3erF@akeP@55word@minikube.sigs.k8s.io", + output: "HTTPS_PROXY=https://fr@ank5t3in:*****@minikube.sigs.k8s.io", + }, + } + for _, test := range tests { + got := MaskProxyPasswordWithKey(test.input) + if got != test.output { + t.Errorf("MaskProxyPasswordWithKey(\"%v\"): got %v, expected %v", test.input, got, test.output) + } + } +} diff --git a/site/content/en/docs/benchmarks/imageBuild/weekly-benchmark.md b/site/content/en/docs/benchmarks/imageBuild/weekly-benchmark.md index b1c2ccb50caf..e9eed050287c 100644 --- a/site/content/en/docs/benchmarks/imageBuild/weekly-benchmark.md +++ b/site/content/en/docs/benchmarks/imageBuild/weekly-benchmark.md @@ -12,3 +12,6 @@ Benchmarking machine specs: Standard Github Action Runner ![Docker](https://time-to-k8s.s3.us-west-1.amazonaws.com/image-benchmark/Iterative_buildpacksFewLargeFiles_docker_chart.png) ![Containerd](https://time-to-k8s.s3.us-west-1.amazonaws.com/image-benchmark/Iterative_buildpacksFewLargeFiles_containerd_chart.png) + + +*[Raw Test Data Link](https://time-to-k8s.s3.us-west-1.amazonaws.com/image-benchmark/record.json)* \ No newline at end of file diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index 260ff4e02ab3..74d062abbcf0 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -27,7 +27,7 @@ minikube start [flags] --apiserver-port int The apiserver listening port (default 8443) --auto-pause-interval duration Duration of inactivity before the minikube VM is paused (default 1m0s) (default 1m0s) --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.42-1710284843-18375@sha256:d67c38c9fc2ad14c48d95e17cbac49314325db5758d8f7b3de60b927e62ce94f") + --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.43-1711559786-18485@sha256:2dcab64da240d825290a528fa79ad3c32db45fe5f8be5150468234a7114eff82") --binary-mirror string Location to fetch kubectl, kubelet, & kubeadm binaries from. --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cert-expiration duration Duration until minikube certificate expiration, defaults to three years (26280h). (default 26280h0m0s) @@ -74,7 +74,7 @@ minikube start [flags] --interactive Allow user prompts for more information (default true) --iso-url strings Locations to fetch the minikube ISO from. The list depends on the machine architecture. --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.28.4, 'latest' for v1.29.0-rc.2). Defaults to 'stable'. + --kubernetes-version string The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.29.3, 'latest' for v1.30.0-rc.0). Defaults to 'stable'. --kvm-gpu Enable experimental NVIDIA GPU support in minikube --kvm-hidden Hide the hypervisor signature from the guest in minikube (kvm2 driver only) --kvm-network string The KVM default network name. (kvm2 driver only) (default "default") diff --git a/site/content/en/docs/drivers/virtualbox.md b/site/content/en/docs/drivers/virtualbox.md index 8247c76c345f..c3207b80cec0 100644 --- a/site/content/en/docs/drivers/virtualbox.md +++ b/site/content/en/docs/drivers/virtualbox.md @@ -26,3 +26,8 @@ minikube start supports some VirtualBox specific flags: ## Troubleshooting * Run `minikube start --alsologtostderr -v=7` to debug crashes +* If you experience slow network performance with the VirtualBox driver, changing the Network Interface Card (NIC) type may improve speed. Use the following command to start minikube with the AMD PCNet FAST III (Am79C973) for both NAT and host-only network interfaces: + + ```shell + minikube start --vm-driver=virtualbox --nat-nic-type=Am79C973 --host-only-nic-type=Am79C973 + ``` diff --git a/site/content/en/docs/start/_index.md b/site/content/en/docs/start/_index.md index 09b14ecb8355..ea764be8b8bd 100644 --- a/site/content/en/docs/start/_index.md +++ b/site/content/en/docs/start/_index.md @@ -139,7 +139,7 @@ Click on the buttons that describe your target platform. For other architectures {{% quiz_instruction id="/Linux/x86-64/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -sudo install minikube-linux-amd64 /usr/local/bin/minikube +sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64 ``` {{% /quiz_instruction %}} @@ -147,7 +147,7 @@ sudo install minikube-linux-amd64 /usr/local/bin/minikube ```shell r=https://api.github.com/repos/kubernetes/minikube/releases curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-amd64' | head -n1) -sudo install minikube-linux-amd64 /usr/local/bin/minikube +sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64 ``` {{% /quiz_instruction %}} @@ -184,7 +184,7 @@ curl -L $u > minikube-beta.x86_64.rpm && sudo rpm -Uvh minikube-beta.x86_64.rpm {{% quiz_instruction id="/Linux/ARM64/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64 -sudo install minikube-linux-arm64 /usr/local/bin/minikube +sudo install minikube-linux-arm64 /usr/local/bin/minikube && rm minikube-linux-arm64 ``` {{% /quiz_instruction %}} @@ -192,7 +192,7 @@ sudo install minikube-linux-arm64 /usr/local/bin/minikube ```shell r=https://api.github.com/repos/kubernetes/minikube/releases curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-arm64' | head -n1) -sudo install minikube-linux-arm64 /usr/local/bin/minikube +sudo install minikube-linux-arm64 /usr/local/bin/minikube && rm minikube-linux-arm64 ``` {{% /quiz_instruction %}} @@ -229,7 +229,7 @@ curl -L $u > minikube-beta.aarch64.rpm && sudo rpm -Uvh minikube-beta.aarch64.rp {{% quiz_instruction id="/Linux/ppc64/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-ppc64le -sudo install minikube-linux-ppc64le /usr/local/bin/minikube +sudo install minikube-linux-ppc64le /usr/local/bin/minikube && rm minikube-linux-ppc64le ``` {{% /quiz_instruction %}} @@ -237,7 +237,7 @@ sudo install minikube-linux-ppc64le /usr/local/bin/minikube ```shell r=https://api.github.com/repos/kubernetes/minikube/releases curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-ppc64le' | head -n1) -sudo install minikube-linux-ppc64le /usr/local/bin/minikube +sudo install minikube-linux-ppc64le /usr/local/bin/minikube && rm minikube-linux-ppc64le ``` {{% /quiz_instruction %}} @@ -274,7 +274,7 @@ curl -L $u > minikube-beta.ppc64el.rpm && sudo rpm -Uvh minikube-beta.ppc64el.rp {{% quiz_instruction id="/Linux/S390x/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-s390x -sudo install minikube-linux-s390x /usr/local/bin/minikube +sudo install minikube-linux-s390x /usr/local/bin/minikube && rm minikube-linux-s390x ``` {{% /quiz_instruction %}} @@ -282,7 +282,7 @@ sudo install minikube-linux-s390x /usr/local/bin/minikube ```shell r=https://api.github.com/repos/kubernetes/minikube/releases curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-s390x' | head -n1) -sudo install minikube-linux-s390x /usr/local/bin/minikube +sudo install minikube-linux-s390x /usr/local/bin/minikube && rm minikube-linux-s390x ``` {{% /quiz_instruction %}} @@ -319,7 +319,7 @@ curl -L $u > minikube-beta.s390x.rpm && sudo rpm -Uvh minikube-beta.s390x.rpm {{% quiz_instruction id="/Linux/ARMv7/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm -sudo install minikube-linux-arm /usr/local/bin/minikube +sudo install minikube-linux-arm /usr/local/bin/minikube && rm minikube-linux-arm ``` {{% /quiz_instruction %}} @@ -327,7 +327,7 @@ sudo install minikube-linux-arm /usr/local/bin/minikube ```shell r=https://api.github.com/repos/kubernetes/minikube/releases curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-arm' | head -n1) -sudo install minikube-linux-arm /usr/local/bin/minikube +sudo install minikube-linux-arm /usr/local/bin/minikube && rm minikube-linux-arm ``` {{% /quiz_instruction %}} diff --git a/site/content/en/docs/tutorials/kubernetes_101/module1.md b/site/content/en/docs/tutorials/kubernetes_101/module1.md index fdcf12e5aecc..865d873d8f5a 100644 --- a/site/content/en/docs/tutorials/kubernetes_101/module1.md +++ b/site/content/en/docs/tutorials/kubernetes_101/module1.md @@ -48,6 +48,6 @@ During this tutorial, we'll be focusing on the command line for deploying and ex kubectl get nodes ``` -This command shows all nodes that can be used to host our applications. Now we have only one node, and we can see that its status it ready (it is ready to accept applications for deployment). +This command shows all nodes that can be used to host our applications. Now we have only one node, and we can see that its status is ready (it is ready to accept applications for deployment). {{% button link="/docs/tutorials/kubernetes_101/module2" %}} diff --git a/site/content/en/docs/tutorials/multi_control_plane_ha_clusters.md b/site/content/en/docs/tutorials/multi_control_plane_ha_clusters.md new file mode 100644 index 000000000000..9861518567b0 --- /dev/null +++ b/site/content/en/docs/tutorials/multi_control_plane_ha_clusters.md @@ -0,0 +1,444 @@ +--- +title: "Using Multi-Control Plane - HA Clusters" +linkTitle: "Using Multi-Control Plane - HA Clusters" +weight: 1 +date: 2024-03-10 +--- + +## Overview + +minikube implements Kubernetes highly available cluster topology using [stacked control plane nodes with colocated etcd nodes](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/#stacked-etcd-topology) using [kube-vip](https://kube-vip.io/) in [ARP](https://kube-vip.io/#arp) mode. + +This tutorial will show you how to start and explore a multi-control plane - HA cluster on minikube. + +## Prerequisites + +- minikube > v1.32.0 +- kubectl + +### Optional + +- ip_vs kernel modules: ip_vs, ip_vs_rr and nf_conntrack + +rationale: + +kube-vip supports the [control-plane load-balancing](https://kube-vip.io/docs/about/architecture/?query=load-balanc#control-plane-load-balancing) by distributing API requests across control-plane nodes using IPVS (IP Virtual Server) and Layer 4 (TCP-based) round-robin. + +minikube will try to automatically enable control-plane load-balancing if these ip_vs kernel modules are available, whereas (see the [drivers]({{}}) section for more details): + +- for VM-based drivers (eg, kvm2 or qemu): minikube will automatically try to load ip_vs kernel modules +- for container-based or bare-metal-based drivers (eg, docker or "none"): minikube will only check if ip_vs kernel modules are already loaded, but will not try to load them automatically (to avoid unintentional modification of the underlying host's os/kernel), so it's up to the user to make them available, if applicable and desired + +## Caveat + +While a minikube HA cluster will continue to operate (although in degraded mode) after loosing any one control-plane node, keep in mind that there might be some components that are attached only to the primary control-plane node, like the storage-provisioner. + +## Tutorial + +- optional: if you plan on using a container-based or bare-metal-based driver on top of a Linux OS, check if the ip_vs kernel modules are already loaded + +```shell +lsmod | grep ip_vs +``` +``` +ip_vs_rr 12288 1 +ip_vs 233472 3 ip_vs_rr +nf_conntrack 217088 9 xt_conntrack,nf_nat,nf_conntrack_tftp,nft_ct,xt_nat,nf_nat_tftp,nf_conntrack_netlink,xt_MASQUERADE,ip_vs +nf_defrag_ipv6 24576 2 nf_conntrack,ip_vs +libcrc32c 12288 5 nf_conntrack,nf_nat,btrfs,nf_tables,ip_vs +``` + +- Start a HA cluster with the driver and container runtime of your choice (here we chose docker driver and containerd container runtime): + +```shell +minikube start --ha --driver=docker --container-runtime=containerd --profile ha-demo +``` +``` +😄 [ha-demo] minikube v1.32.0 on Opensuse-Tumbleweed 20240311 +✨ Using the docker driver based on user configuration +📌 Using Docker driver with root privileges +👍 Starting "ha-demo" primary control-plane node in "ha-demo" cluster +🚜 Pulling base image v0.0.42-1710284843-18375 ... +🔥 Creating docker container (CPUs=2, Memory=5266MB) ... +📦 Preparing Kubernetes v1.28.4 on containerd 1.6.28 ... + ▪ Generating certificates and keys ... + ▪ Booting up control plane ... + ▪ Configuring RBAC rules ... +🔗 Configuring CNI (Container Networking Interface) ... + ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5 +🌟 Enabled addons: storage-provisioner, default-storageclass + +👍 Starting "ha-demo-m02" control-plane node in "ha-demo" cluster +🚜 Pulling base image v0.0.42-1710284843-18375 ... +🔥 Creating docker container (CPUs=2, Memory=5266MB) ... +🌐 Found network options: + ▪ NO_PROXY=192.168.49.2 +📦 Preparing Kubernetes v1.28.4 on containerd 1.6.28 ... + ▪ env NO_PROXY=192.168.49.2 +🔎 Verifying Kubernetes components... + +👍 Starting "ha-demo-m03" control-plane node in "ha-demo" cluster +🚜 Pulling base image v0.0.42-1710284843-18375 ... +🔥 Creating docker container (CPUs=2, Memory=5266MB) ... +🌐 Found network options: + ▪ NO_PROXY=192.168.49.2,192.168.49.3 +📦 Preparing Kubernetes v1.28.4 on containerd 1.6.28 ... + ▪ env NO_PROXY=192.168.49.2 + ▪ env NO_PROXY=192.168.49.2,192.168.49.3 +🔎 Verifying Kubernetes components... +🏄 Done! kubectl is now configured to use "ha-demo" cluster and "default" namespace by default +``` + +- List your HA cluster nodes: + +```shell +kubectl get nodes -owide +``` +``` +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +ha-demo Ready control-plane 4m21s v1.28.4 192.168.49.2 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +ha-demo-m02 Ready control-plane 4m v1.28.4 192.168.49.3 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +ha-demo-m03 Ready control-plane 3m37s v1.28.4 192.168.49.4 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +``` + +- Check the status of your HA cluster: + +```shell +minikube profile list +``` +``` +|---------|-----------|------------|----------------|------|---------|--------|-------|--------| +| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes | Active | +|---------|-----------|------------|----------------|------|---------|--------|-------|--------| +| ha-demo | docker | containerd | 192.168.49.254 | 8443 | v1.28.4 | HAppy | 3 | | +|---------|-----------|------------|----------------|------|---------|--------|-------|--------| +``` + +- Check the status of your HA cluster nodes: + +```shell +minikube status -p ha-demo +``` +``` +ha-demo +type: Control Plane +host: Running +kubelet: Running +apiserver: Running +kubeconfig: Configured + +ha-demo-m02 +type: Control Plane +host: Running +kubelet: Running +apiserver: Running +kubeconfig: Configured + +ha-demo-m03 +type: Control Plane +host: Running +kubelet: Running +apiserver: Running +kubeconfig: Configured +``` + +- For a HA cluster, kubeconfig points to the Virual Kubernetes API Server IP + +```shell +kubectl config view --context ha-demo +``` +``` +apiVersion: v1 +clusters: +- cluster: + certificate-authority: /home/prezha/.minikube/ca.crt + extensions: + - extension: + last-update: Thu, 14 Mar 2024 21:38:07 GMT + provider: minikube.sigs.k8s.io + version: v1.32.0 + name: cluster_info + server: https://192.168.49.254:8443 + name: ha-demo +contexts: +- context: + cluster: ha-demo + extensions: + - extension: + last-update: Thu, 14 Mar 2024 21:38:07 GMT + provider: minikube.sigs.k8s.io + version: v1.32.0 + name: context_info + namespace: default + user: ha-demo + name: ha-demo +current-context: ha-demo +kind: Config +preferences: {} +users: +- name: ha-demo + user: + client-certificate: /home/prezha/.minikube/profiles/ha-demo/client.crt + client-key: /home/prezha/.minikube/profiles/ha-demo/client.key +``` + +- Overview of the current leader and follower API servers + +```shell +minikube ssh -p ha-demo -- 'sudo /var/lib/minikube/binaries/v1.28.4/kubectl --kubeconfig=/var/lib/minikube/kubeconfig logs -n kube-system pod/kube-vip-ha-demo' +``` +``` +time="2024-03-14T21:38:34Z" level=info msg="Starting kube-vip.io [v0.7.1]" +time="2024-03-14T21:38:34Z" level=info msg="namespace [kube-system], Mode: [ARP], Features(s): Control Plane:[true], Services:[false]" +time="2024-03-14T21:38:34Z" level=info msg="prometheus HTTP server started" +time="2024-03-14T21:38:34Z" level=info msg="Starting Kube-vip Manager with the ARP engine" +time="2024-03-14T21:38:34Z" level=info msg="Beginning cluster membership, namespace [kube-system], lock name [plndr-cp-lock], id [ha-demo]" +I0314 21:38:34.042420 1 leaderelection.go:250] attempting to acquire leader lease kube-system/plndr-cp-lock... +I0314 21:38:34.069509 1 leaderelection.go:260] successfully acquired lease kube-system/plndr-cp-lock +time="2024-03-14T21:38:34Z" level=info msg="Node [ha-demo] is assuming leadership of the cluster" +time="2024-03-14T21:38:34Z" level=info msg="Starting IPVS LoadBalancer" +time="2024-03-14T21:38:34Z" level=info msg="IPVS Loadbalancer enabled for 1.2.1" +time="2024-03-14T21:38:34Z" level=info msg="Gratuitous Arp broadcast will repeat every 3 seconds for [192.168.49.254]" +time="2024-03-14T21:38:34Z" level=info msg="Kube-Vip is watching nodes for control-plane labels" +time="2024-03-14T21:38:34Z" level=info msg="Added backend for [192.168.49.254:8443] on [192.168.49.3:8443]" +time="2024-03-14T21:38:48Z" level=info msg="Added backend for [192.168.49.254:8443] on [192.168.49.4:8443]" +``` + +```shell +minikube ssh -p ha-demo -- 'sudo /var/lib/minikube/binaries/v1.28.4/kubectl --kubeconfig=/var/lib/minikube/kubeconfig logs -n kube-system pod/kube-vip-ha-demo-m02' +``` +``` +time="2024-03-14T21:38:25Z" level=info msg="Starting kube-vip.io [v0.7.1]" +time="2024-03-14T21:38:25Z" level=info msg="namespace [kube-system], Mode: [ARP], Features(s): Control Plane:[true], Services:[false]" +time="2024-03-14T21:38:25Z" level=info msg="prometheus HTTP server started" +time="2024-03-14T21:38:25Z" level=info msg="Starting Kube-vip Manager with the ARP engine" +time="2024-03-14T21:38:25Z" level=info msg="Beginning cluster membership, namespace [kube-system], lock name [plndr-cp-lock], id [ha-demo-m02]" +I0314 21:38:25.990817 1 leaderelection.go:250] attempting to acquire leader lease kube-system/plndr-cp-lock... +time="2024-03-14T21:38:34Z" level=info msg="Node [ha-demo] is assuming leadership of the cluster" +``` + +```shell +minikube ssh -p ha-demo -- 'sudo /var/lib/minikube/binaries/v1.28.4/kubectl --kubeconfig=/var/lib/minikube/kubeconfig logs -n kube-system pod/kube-vip-ha-demo-m03' +``` +``` +time="2024-03-14T21:38:48Z" level=info msg="Starting kube-vip.io [v0.7.1]" +time="2024-03-14T21:38:48Z" level=info msg="namespace [kube-system], Mode: [ARP], Features(s): Control Plane:[true], Services:[false]" +time="2024-03-14T21:38:48Z" level=info msg="prometheus HTTP server started" +time="2024-03-14T21:38:48Z" level=info msg="Starting Kube-vip Manager with the ARP engine" +time="2024-03-14T21:38:48Z" level=info msg="Beginning cluster membership, namespace [kube-system], lock name [plndr-cp-lock], id [ha-demo-m03]" +I0314 21:38:48.856781 1 leaderelection.go:250] attempting to acquire leader lease kube-system/plndr-cp-lock... +time="2024-03-14T21:38:48Z" level=info msg="Node [ha-demo] is assuming leadership of the cluster" +``` + +- Overview of multi-etcd instances + +```shell +minikube ssh -p ha-demo -- 'sudo /var/lib/minikube/binaries/v1.28.4/kubectl --kubeconfig=/var/lib/minikube/kubeconfig exec -ti pod/etcd-ha-demo -n kube-system -- /bin/sh -c "ETCDCTL_API=3 etcdctl member list --write-out=table --cacert=/var/lib/minikube/certs/etcd/ca.crt --cert=/var/lib/minikube/certs/etcd/server.crt --key=/var/lib/minikube/certs/etcd/server.key"' +``` +``` ++------------------+---------+-------------+---------------------------+---------------------------+------------+ +| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER | ++------------------+---------+-------------+---------------------------+---------------------------+------------+ +| 3c464e4a52eb93c5 | started | ha-demo-m03 | https://192.168.49.4:2380 | https://192.168.49.4:2379 | false | +| 59bde6852118b2a5 | started | ha-demo-m02 | https://192.168.49.3:2380 | https://192.168.49.3:2379 | false | +| aec36adc501070cc | started | ha-demo | https://192.168.49.2:2380 | https://192.168.49.2:2379 | false | ++------------------+---------+-------------+---------------------------+---------------------------+------------+ +``` + +- Loosing a control-plane node - degrades cluster, but not a problem! + +```shell +minikube node delete m02 -p ha-demo +``` +``` +🔥 Deleting node m02 from cluster ha-demo +✋ Stopping node "ha-demo-m02" ... +🛑 Powering off "ha-demo-m02" via SSH ... +🔥 Deleting "ha-demo-m02" in docker ... +💀 Node m02 was successfully deleted. +``` +```shell +kubectl get nodes -owide +``` +``` +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +ha-demo Ready control-plane 7m16s v1.28.4 192.168.49.2 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +ha-demo-m03 Ready control-plane 6m32s v1.28.4 192.168.49.4 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +``` +```shell +minikube profile list +``` +``` +|---------|-----------|------------|----------------|------|---------|----------|-------|--------| +| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes | Active | +|---------|-----------|------------|----------------|------|---------|----------|-------|--------| +| ha-demo | docker | containerd | 192.168.49.254 | 8443 | v1.28.4 | Degraded | 2 | | +|---------|-----------|------------|----------------|------|---------|----------|-------|--------| +``` + +- Add a control-plane node + +```shell +minikube node add --control-plane -p ha-demo +``` +``` +😄 Adding node m04 to cluster ha-demo as [worker control-plane] +👍 Starting "ha-demo-m04" control-plane node in "ha-demo" cluster +🚜 Pulling base image v0.0.42-1710284843-18375 ... +🔥 Creating docker container (CPUs=2, Memory=5266MB) ... +📦 Preparing Kubernetes v1.28.4 on containerd 1.6.28 ... +🔎 Verifying Kubernetes components... +🏄 Successfully added m04 to ha-demo! +``` +```shell +kubectl get nodes -owide +``` +``` +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +ha-demo Ready control-plane 8m34s v1.28.4 192.168.49.2 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +ha-demo-m03 Ready control-plane 7m50s v1.28.4 192.168.49.4 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +ha-demo-m04 Ready control-plane 36s v1.28.4 192.168.49.5 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +``` +```shell +minikube profile list +``` +``` +|---------|-----------|------------|----------------|------|---------|--------|-------|--------| +| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes | Active | +|---------|-----------|------------|----------------|------|---------|--------|-------|--------| +| ha-demo | docker | containerd | 192.168.49.254 | 8443 | v1.28.4 | HAppy | 3 | | +|---------|-----------|------------|----------------|------|---------|--------|-------|--------| +``` + +- Add a worker node + +```shell +minikube node add -p ha-demo +``` +``` +😄 Adding node m05 to cluster ha-demo as [worker] +👍 Starting "ha-demo-m05" worker node in "ha-demo" cluster +🚜 Pulling base image v0.0.42-1710284843-18375 ... +🔥 Creating docker container (CPUs=2, Memory=5266MB) ... +📦 Preparing Kubernetes v1.28.4 on containerd 1.6.28 ... +🔎 Verifying Kubernetes components... +🏄 Successfully added m05 to ha-demo! +``` + +```shell +kubectl get nodes -owide +``` +``` +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +ha-demo Ready control-plane 9m35s v1.28.4 192.168.49.2 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +ha-demo-m03 Ready control-plane 8m51s v1.28.4 192.168.49.4 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +ha-demo-m04 Ready control-plane 97s v1.28.4 192.168.49.5 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +ha-demo-m05 Ready 22s v1.28.4 192.168.49.6 Ubuntu 22.04.4 LTS 6.7.7-1-default containerd://1.6.28 +``` + +- Test by deploying a hello service, which just spits back the IP address the request was served from: + +```shell +kubectl apply -f - < +hello-7bf57d9696-7gtlk 1/1 Running 0 18s 10.244.2.2 ha-demo-m03 +hello-7bf57d9696-99qsw 1/1 Running 0 18s 10.244.0.4 ha-demo +``` + +- Look at our service, to know what URL to hit + +```shell +minikube service list -p ha-demo +``` +``` +|-------------|------------|--------------|---------------------------| +| NAMESPACE | NAME | TARGET PORT | URL | +|-------------|------------|--------------|---------------------------| +| default | hello | 80 | http://192.168.49.2:31000 | +| default | kubernetes | No node port | | +| kube-system | kube-dns | No node port | | +|-------------|------------|--------------|---------------------------| +``` + +- Let's hit the URL a few times and see what comes back + +```shell +curl http://192.168.49.2:31000 +``` +``` +Hello from hello-7bf57d9696-99qsw (10.244.0.4) + +curl http://192.168.49.2:31000 +Hello from hello-7bf57d9696-7gtlk (10.244.2.2) + +curl http://192.168.49.2:31000 +Hello from hello-7bf57d9696-7gtlk (10.244.2.2) + +curl http://192.168.49.2:31000 +Hello from hello-7bf57d9696-64v6m (10.244.3.2) +``` diff --git a/translations/zh-CN.json b/translations/zh-CN.json index 79b712fcfeca..d0a05e33d89c 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -224,8 +224,8 @@ "Downloading {{.name}} {{.version}}": "正在下载 {{.name}} {{.version}}", "Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "由于 DNS 问题,你的集群可能在启动时遇到问题,你可能无法拉取镜像\n更多详细信息请参阅:https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues", "Due to changes in macOS 13+ minikube doesn't currently support VirtualBox. You can use alternative drivers such as docker or {{.driver}}.\n https://minikube.sigs.k8s.io/docs/drivers/docker/\n https://minikube.sigs.k8s.io/docs/drivers/{{.driver}}/\n\n For more details on the issue see: https://github.com/kubernetes/minikube/issues/15274\n": "由于 macOS 13+ 的变化,minikube 目前不支持 VirtualBox。你可以使用 docker 或 {{.driver}} 等替代驱动程序。\n https://minikube.sigs.k8s.io/docs/drivers/docker/\n https://minikube.sigs.k8s.io/docs/drivers/{{.driver}}/\n\n 有关此问题的更多详细信息,请参阅:https://github.com/kubernetes/minikube/issues/15274\n", - "Duration of inactivity before the minikube VM is paused (default 1m0s)": "", - "Duration of inactivity before the minikube VM is paused (default 1m0s). To disable, set to 0s": "在minikube虚拟机暂停之前的不活动时间(默认为1分钟)。要禁用,请设置为0秒。", + "Duration of inactivity before the minikube VM is paused (default 1m0s)": "在 minikube 虚拟机暂停之前的不活动时间(默认为1分钟)", + "Duration of inactivity before the minikube VM is paused (default 1m0s). To disable, set to 0s": "在 minikube 虚拟机暂停之前的不活动时间(默认为1分钟)。要禁用,请设置为0秒。", "Duration until minikube certificate expiration, defaults to three years (26280h).": "minikube 证书有效期,默认为三年(26280小时)。", "ERROR creating `registry-creds-acr` secret": "创建 `registry-creds-acr` secret 时出错", "ERROR creating `registry-creds-dpr` secret": "创建 `registry-creds-dpr` secret 时出错", @@ -281,7 +281,7 @@ "Error getting cluster bootstrapper": "获取 cluster bootstrapper 时出错", "Error getting cluster config": "获取 cluster config 时出错", "Error getting config": "获取 config 时出错", - "Error getting control-plane node": "", + "Error getting control-plane node": "获取 control-plane node 时出错", "Error getting host": "获取 host 时出错", "Error getting host status": "获取 host status 时出错", "Error getting machine logs": "获取 machine logs 时出错", @@ -338,7 +338,7 @@ "Failed to check if machine exists": "无法检测机器是否存在", "Failed to check main repository and mirrors for images": "无法检查主仓库和镜像的图像", "Failed to check main repository and mirrors for images for images": "无法检测主仓库和镜像仓库中的镜像", - "Failed to configure auto-pause {{.profile}}": "", + "Failed to configure auto-pause {{.profile}}": "配置自动暂停 {{.profile}} 失败", "Failed to configure metallb IP {{.profile}}": "配置 metallb IP {{.profile}} 失败", "Failed to configure registry-aliases {{.profile}}": "配置 registry-aliases {{.profile}} 失败", "Failed to create file": "文件创建失败", @@ -349,7 +349,7 @@ "Failed to delete cluster: {{.error}}__1": "未能删除集群:{{.error}}", "Failed to delete images": "删除镜像时失败", "Failed to delete images from config": "无法删除配置的镜像", - "Failed to delete profile(s): {{.error}}": "", + "Failed to delete profile(s): {{.error}}": "删除配置文件失败:{{.error}}", "Failed to download kubectl": "下载 kubectl 失败", "Failed to download licenses": "licenses 下载失败", "Failed to enable container runtime": "容器运行时启用失败", @@ -359,7 +359,7 @@ "Failed to get command runner": "获取命令运行程序失败", "Failed to get driver URL": "获取 driver URL 失败", "Failed to get image map": "获取镜像映射失败", - "Failed to get service URL - check that minikube is running and that you have specified the correct namespace (-n flag) if required: {{.error}}": "", + "Failed to get service URL - check that minikube is running and that you have specified the correct namespace (-n flag) if required: {{.error}}": "获取服务 URL 失败 - 请检查 minikube 是否正在运行,并确保已经指定了正确的命名空间(如果需要,请使用 -n 标志):{{.error}}", "Failed to get service URL: {{.error}}": "获取 service URL 失败:{{.error}}", "Failed to get temp": "获取临时目录失败", "Failed to kill mount process: {{.error}}": "未能终止装载进程:{{.error}}", @@ -387,7 +387,7 @@ "Failed to start container runtime": "容器运行时启动失败", "Failed to start {{.driver}} {{.driver_type}}. Running \"{{.cmd}}\" may fix it: {{.error}}": "启动 {{.driver}} {{.driver_type}} 失败。运行 \"{{.cmd}}\" 可能需要修复它: {{.error}} ", "Failed to stop node {{.name}}": "停止节点 {{.name}} 失败", - "Failed to stop node {{.name}}: {{.error}}": "", + "Failed to stop node {{.name}}: {{.error}}": "停止节点 {{.name}} 失败:{{.error}}", "Failed to stop ssh-agent process: {{.error}}": "停止 ssh-agent 程序失败:{{.error}}", "Failed to tag images": "无法打标签给镜像", "Failed to update cluster": "更新 cluster 失败", @@ -437,9 +437,9 @@ "Go template format string for the config view output. The format for Go templates can be found here: https://pkg.go.dev/text/template\nFor the list of accessible variables for the template, see the struct values here: https://pkg.go.dev/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "Go模板格式字符串,用于配置视图输出。Go模板的格式可以在此链接找到:https://pkg.go.dev/text/template\n要查看模板中可访问的变量列表,请参见此链接中的结构值:https://pkg.go.dev/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://pkg.go.dev/text/template\nFor the list accessible variables for the template, see the struct values here: https://pkg.go.dev/k8s.io/minikube/cmd/minikube/cmd#Status": "状态输出的 Go 模板格式字符串。Go 模板的格式可以在此处找到:https://pkg.go.dev/text/template\n关于模板中可访问的变量列表,请参阅此处的定义:https://pkg.go.dev/k8s.io/minikube/cmd/minikube/cmd#Status", "Group ID: {{.groupID}}": "组 ID:{{.groupID}}", - "HA (multi-control plane) clusters require 3 or more control-plane nodes": "", - "Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\n": "", - "Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "安装metrics-server后,Headlamp可以显示更详细的信息。 要安装它,请运行\n\nminikube{{.profileArg}} 插件启用指标服务器\t\n\n", + "HA (multi-control plane) clusters require 3 or more control-plane nodes": "HA(多控制平面)集群需要 3 个或更多控制平面节点", + "Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\n": "Headlamp 在安装了 metrics-server 后可以显示更详细的信息。要安装它,请运行:\n\n\tminikube{{.profileArg}} addons enable metrics-server\n\n", + "Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "安装metrics-server后,Headlamp可以显示更详细的信息。 要安装它,请运行:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "向 minikube 中的访客隐藏管理程序签名(仅限 kvm2 驱动程序)", "Hyper-V requires that memory MB be an even number, {{.memory}}MB was specified, try passing `--memory {{.suggestMemory}}`": "Hyper-V 要求内存的 MB 值是偶数,{{.memory}}MB 被指定,尝试传递 `--memory {{.suggestMemory}}`", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Hyperkit 已损坏。升级到最新的 hyperkit 版本以及/或者 Docker 桌面版。或者,你可以通过 --driver 切换其他选项", @@ -449,8 +449,8 @@ "IP Address to use to expose ports (docker and podman driver only)": "用于暴露端口的IP地址(仅适用于docker和podman驱动程序)", "IP address (ssh driver only)": "ssh 主机IP地址(仅适用于SSH驱动程序)", "If present, writes to the provided file instead of stdout.": "如果存在,则写入所提供的文件,而不是标准输出。", - "If set, added node will be available as worker. Defaults to true.": "", - "If set, added node will become a control-plane. Defaults to false. Currently only supported for existing HA (multi-control plane) clusters.": "", + "If set, added node will be available as worker. Defaults to true.": "如果设置,则添加的节点将作为 worker 可用。默认值为 true。", + "If set, added node will become a control-plane. Defaults to false. Currently only supported for existing HA (multi-control plane) clusters.": "如果设置,则添加的节点将成为控制平面。默认值为 false。目前仅支持现有的 HA(多控制平面)集群。", "If set, automatically updates drivers to the latest version. Defaults to true.": "如果设置为 true,将自动更新驱动到最新版本。默认为 true。", "If set, delete the current cluster if start fails and try again. Defaults to false.": "如果设置为 true,则在启动失败时删除当前群集,然后重试。默认为 false。", "If set, disables metrics reporting (CPU and memory usage), this can improve CPU usage. Defaults to false.": "如果设置为 true,则禁用指标报告(CPU和内存使用率),这可以提高 CPU 利用率。默认为 false。", @@ -530,7 +530,7 @@ "Locations to fetch the minikube ISO from.": "minikube ISO镜像源。", "Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'.": "使用SSH登录或在机器上运行命令;类似于 'docker-machine ssh'。", "Log into the minikube environment (for debugging)": "登录到 minikube 环境(用于调试)", - "Logs file created ({{.logPath}}), remember to include it when reporting issues!": "", + "Logs file created ({{.logPath}}), remember to include it when reporting issues!": "日志文件已创建({{.logPath}}),在报告问题时请记得将其包含在内!", "Manage cache for images": "管理 images 缓存", "Manage images": "管理 images", "Message Size: {{.size}}": "消息大小:{{.size}}", @@ -540,29 +540,30 @@ "Modify minikube's kubernetes addons": "修改 minikube 的 kubernetes 插件", "Modify persistent configuration values": "修改持久配置值", "More information: https://docs.docker.com/engine/install/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities": "更多信息请参阅: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!": "", + "Most users should use the newer 'docker' driver instead, which does not require root!": "大多数用户应该使用更新后的“docker”驱动程序,该驱动程序不需要root用户运行!", "Mount type: {{.name}}": "挂载类型: {{.name}}", "Mounting host path {{.sourcePath}} into VM as {{.destinationPath}} ...": "将主机路径 {{.sourcePath}} 挂载到虚拟机中作为 {{.destinationPath}} ...", "Mounts the specified directory into minikube": "将指定的目录挂载到 minikube", "Mounts the specified directory into minikube.": "将指定的目录挂载到 minikube。", "Multiple errors deleting profiles": "删除配置文件时出现多个错误", - "Multiple errors encountered:": "", + "Multiple errors encountered:": "遇到了多个错误:", "Multiple minikube profiles were found -": "发现了多个 minikube 配置文件 -", "Multiple minikube profiles were found - ": "找到多个 minikube 配置文件 - ", "NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "网卡类型仅用于主机网络。Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM 之一,或 virtio(仅限 VirtualBox 驱动程序)", - "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "", - "NOTE: Please do not close this terminal as this process must stay alive for the tunnel to be accessible ...": "", - "NOTE: This process must stay alive for the mount to be accessible ...": "", + "NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "用于 nat 网络的 NIC 类型。 Am79C970A、Am79C973、82540EM、82543GC、82545EM 或 virtio 之一(仅限 virtualbox 驱动程序)", + "NOTE: Please do not close this terminal as this process must stay alive for the tunnel to be accessible ...": "注意:请不要关闭此终端,因为此进程必须保持活动状态才能访问隧道......", + "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/": "未提供 IP 地址。尝试指定 --ssh-ip-address,或参见 https://minikube.sigs.k8s.io/docs/drivers/ssh/", - "No changes required for the \"{{.context}}\" context": "", + "No changes required for the \"{{.context}}\" context": "不需要对“{{.context}}”上下文进行任何更改", "No control-plane nodes found.": "", "No minikube profile was found.": "", + "No minikube profile was found. ": "未找到 minikube 配置文件。", "No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/": "未检测到可用的驱动程序。尝试指定 --driver,或查看 https://minikube.sigs.k8s.io/docs/start/", - "No such addon {{.name}}": "", + "No such addon {{.name}}": "没有此类插件 {{.name}}", "No valid URL found for tunnel.": "未找到有效的隧道URL。", - "No valid port found for tunnel.": "", - "Node {{.name}} failed to start, deleting and trying again.": "", + "No valid port found for tunnel.": "没有找到隧道的有效端口。", + "Node {{.name}} failed to start, deleting and trying again.": "节点 {{.name}} 启动失败,删除后重试。", "Node {{.name}} was successfully deleted.": "节点 {{.name}} 已成功删除。", "Node {{.nodeName}} does not exist.": "", "None of the known repositories are accessible. Consider specifying an alternative image repository with --image-repository flag": "", @@ -995,8 +996,8 @@ "Unable to verify SSH connectivity: {{.error}}. Will retry...": "无法验证 SSH 连接: {{.error}}。即将重试...", "Unfortunately, could not download the base image {{.image_name}} ": "", "Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "正在使用 {{.bootstrapper_name}} 卸载 Kubernetes {{.kubernetes_version}}…", - "Unmounting {{.path}} ...": "", - "Unpause": "", + "Unmounting {{.path}} ...": "取消挂载 {{.path}} ...", + "Unpause": "取消暂停", "Unpaused {{.count}} containers": "已取消暂停 {{.count}} 个容器", "Unpaused {{.count}} containers in: {{.namespaces}}": "已取消暂停在命名空间:{{.namespaces}} 中 {{.count}} 个容器", "Unpausing node {{.name}} ... ": "取消暂停节点 {{.name}} ...", @@ -1004,9 +1005,9 @@ "Unset variables instead of setting them": "取消设置变量,而不是设置它们", "Update Docker to the latest minor version, this version is unsupported": "将 Docker 更新到最新的小版本,此版本不受支持", "Update kubeconfig in case of an IP or port change": "IP或端口更改的情况下更新 kubeconfig 配置文件", - "Update server returned an empty list": "", + "Update server returned an empty list": "更新服务器返回了一个空列表", "Updating the running {{.driver_name}} \"{{.cluster}}\" {{.machine_type}} ...": "正在更新运行中的 {{.driver_name}} \"{{.cluster}}\" {{.machine_type}} ...", - "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.": "升级到 QEMU v3.1.0+,运行 'virt-host-validate',或者确保您不是在嵌套的 VM 环境中运行", "Upgrading from Kubernetes {{.old}} to {{.new}}": "正在从 Kubernetes {{.old}} 升级到 {{.new}}", "Usage": "使用方法", "Usage: minikube completion SHELL": "使用方法:minikube completion SHELL", @@ -1014,23 +1015,23 @@ "Usage: minikube delete --all --purge": "使用方法:minikube delete --all --purge", "Usage: minikube node [add|start|stop|delete]": "使用方法:minikube node [add|start|stop|delete]", "Usage: minikube node [add|start|stop|delete|list]": "用法:minikube node [add|start|stop|delete|list]", - "Usage: minikube node delete [name]": "", + "Usage: minikube node delete [name]": "用法:minikube node delete [name]", "Usage: minikube node list": "用法:minikube node list", - "Usage: minikube node start [name]": "", - "Usage: minikube node stop [name]": "", + "Usage: minikube node start [name]": "用法:minikube node start [name]", + "Usage: minikube node stop [name]": "用法:minikube node stop [name]", "Use \"{{.CommandPath}} [command] --help\" for more information about a command.": "使用 \"{{.CommandPath}} [command] --help\" 可以获取有关命令的更多信息", "Use 'kubectl get po -A' to find the correct and namespace name": "使用 'kubectl get po -A' 来查询正确的命名空间名称", "Use -A to specify all namespaces": "使用 -A 指定所有 namespaces", "Use SSH connection instead of HTTPS (port 2376)": "使用 SSH 连接而不是 HTTPS 连接(端口2376)", - "Use SSH for running kubernetes client on the node": "", + "Use SSH for running kubernetes client on the node": "使用 SSH 在节点上运行 kubernetes 客户端", "Use VirtualBox to remove the conflicting VM and/or network interfaces": "使用 VirtualBox 删除有冲突的 虚拟机 和/或 网络接口", "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'.": "使用原生的Golang SSH客户端(默认为true)。将其设置为 'false' 以在访问 Docker 机器时使用命令行的 'ssh' 命令。对于那些不以 'Waiting for SSH' 开头的机器驱动程序来说非常有用。", "User ID: {{.userID}}": "用户 ID: {{.userID}}", "User name '{{.username}}' is not valid": "用户名 '{{.username}}' 不是有效的", "User name must be 60 chars or less.": "用户名必须为 60 个字符或更少。", - "Userspace file server is shutdown": "", - "Userspace file server: ": "", - "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", + "Userspace file server is shutdown": "用户空间文件服务器已关闭", + "Userspace file server: ": "用户空间文件服务器", + "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "基于 Docker 运行时使用 Kubernetes v1.24+ 需要安装 cri-doker", "Using Kubernetes {{.version}} since patch version was unspecified": "使用 Kubernetes {{.version}},因为未指定修补程序版本", "Using image repository {{.name}}": "正在使用镜像存储库 {{.name}}", "Using image {{.registry}}{{.image}}": "正在使用镜像 {{.registry}}{{.image}}", @@ -1081,15 +1082,15 @@ "You can create one using 'minikube start'.\n\t\t": "您可以使用 'minikube start' 创建一个.\n\t\t", "You can delete them using the following command(s): ": "您可以使用以下命令删除他们:", "You can force an unsupported Kubernetes version via the --force flag": "你可以通过 --force 标志强制使用不支持的 Kubernetes 版本", - "You cannot add or remove extra disks for an existing minikube cluster. Please first delete the cluster.": "", - "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 add or remove extra disks for an existing minikube cluster. Please first delete the cluster.": "您不能为已存在的 minikube 集群添加或删除额外的磁盘。请先删除集群。", + "You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "您不能对已存在的 minikube 集群修改 CPU。请先删除集群。", + "You cannot change the disk size for an existing minikube cluster. Please first delete the cluster.": "您不能更改现有 minikube 集群的磁盘大小。请先删除集群。", "You cannot change the memory size for an existing minikube cluster. Please first delete the cluster.": "您无法更改现有 minikube 集群的内存大小。请先删除集群。", - "You cannot change the number of nodes for an existing minikube cluster. Please use 'minikube node add' to add nodes to an existing cluster.": "", + "You cannot change the number of nodes for an existing minikube cluster. Please use 'minikube node add' to add nodes to an existing cluster.": "您不能更改现有 minikube 集群的节点数。请使用 'minikube node add' 向现有集群添加节点。", "You cannot change the static IP of an existing minikube cluster. Please first delete the cluster.": "您不能更改现有 minikube 集群的静态 IP。请先删除集群。", - "You cannot enable addons on a cluster without Kubernetes, to enable Kubernetes on your cluster, run: minikube start --kubernetes-version=stable": "", - "You have authenticated with a service account that does not have an associated JSON file. The GCP Auth addon requires credentials with a JSON file in order to continue.": "", - "You have chosen to disable the CNI but the \"{{.name}}\" container runtime requires CNI": "", + "You cannot enable addons on a cluster without Kubernetes, to enable Kubernetes on your cluster, run: minikube start --kubernetes-version=stable": "您不能在没有 Kubernetes 的集群上启用插件,要在你的集群上启用 Kubernetes,运行:minikube start --kubernetes-version=stable", + "You have authenticated with a service account that does not have an associated JSON file. The GCP Auth addon requires credentials with a JSON file in order to continue.": "您已经使用一个没有关联 JSON 文件的服务帐户进行了身份验证。GCP 认证插件需要凭据和 JSON 文件才能继续。", + "You have chosen to disable the CNI but the \"{{.name}}\" container runtime requires CNI": "您已选择禁用 CNI,但是 {{.name}} 容器运行时需要 CNI", "You have selected \"virtualbox\" driver, but there are better options !\nFor better performance and support consider using a different driver: {{.drivers}}\n\nTo turn off this warning run:\n\n\t$ minikube config set WantVirtualBoxDriverWarning false\n\n\nTo learn more about on minikube drivers checkout https://minikube.sigs.k8s.io/docs/drivers/\nTo see benchmarks checkout https://minikube.sigs.k8s.io/docs/benchmarks/cpuusage/\n\n": "", "You may need to manually remove the \"{{.name}}\" VM from your hypervisor": "您可能需要从管理程序中手动移除“{{.name}}”虚拟机", "You may need to stop the Hyper-V Manager and run `minikube delete` again.": "您可能需要停止 Hyper-V 管理器并再次运行 `minikube delete`。", @@ -1097,14 +1098,14 @@ "You must specify service name(s) or --all": "您必须指定服务的名称或 --all", "Your GCP credentials will now be mounted into every pod created in the {{.name}} cluster.": "你的 GCP 凭证现在将被挂载到 {{.name}} 集群中创建的每个 Pod 中。", "Your cgroup does not allow setting memory.": "您的 cgroup 不允许设置内存", - "Your firewall is blocking bootpd which is required for socket_vmnet. The following commands will be executed to unblock bootpd:\n\n{{.commands}}\n": "", + "Your firewall is blocking bootpd which is required for socket_vmnet. The following commands will be executed to unblock bootpd:\n\n{{.commands}}\n": "您的防火墙正在阻止 socket_vmnet 所需的 bootpd。将执行以下命令来解除对 bootpd 的阻塞:\n\n{{.commands}}\n", "Your firewall is likely blocking bootpd, to unblock it run:\n\tsudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/bootpd\n\tsudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblock /usr/libexec/bootpd": "", "Your host does not support KVM virtualization. Ensure that qemu-kvm is installed, and run 'virt-host-validate' to debug the problem": "您的主机不支持 KVM 虚拟化。确保已安装 qemu-kvm,并运行 'virt-host-validate' 来调试问题", "Your host does not support virtualization. If you are running minikube within a VM, try '--driver=docker'. Otherwise, enable virtualization in your BIOS": "你的主机不支持虚拟化。如果你在虚拟机内运行 minikube,请尝试使用 '--driver=docker'。否则,请在 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.": "您的 minikube 配置引用了一个不受支持的驱动程序。删除 ~/.minikube,然后重试。", "Your minikube vm is not running, try minikube start.": "您的 minikube 虚拟机未运行,请尝试运行 minikube start。", - "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "", + "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "您的用户缺少 minikube 配置文件目录的权限。运行:'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.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": "[警告] 为了实现完整功能,'csi-hostpath-driver' 插件需要启用 'volumesnapshots' 插件。\n\n您可以通过运行 'minikube addons enable volumesnapshots' 来启用 'volumesnapshots' 插件。", "addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "插件 '{{.name}}' 当前未启用。\n要启用此插件,请运行:minikube addons enable {{.name}}", "addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "插件 '{{.name}}' 不是 minikube 打包的有效插件。\n要查看可用插件列表,请运行:minikube addons list", @@ -1113,7 +1114,7 @@ "arm64 VM drivers do not currently support the crio container runtime. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", "auto-pause addon is an alpha feature and still in early development. Please file issues to help us make it better.": "auto-pause 插件是一个 Alpha 版功能,仍处于早期开发阶段。请提交问题以帮助我们改进它。", "bash completion failed": "bash 自动补全失败", - "bash completion.": "", + "bash completion.": "bash 自动补全", "call with cleanup=true to remove old tunnels": "使用 cleanup=true 参数调用以删除旧的隧道", "cancel any existing scheduled stop requests": "取消任何已存在的计划停止请求", "cannot specify --kubernetes-version with --no-kubernetes,\nto unset a global config run:\n\n$ minikube config unset kubernetes-version": "不能同时指定 --kubernetes-version 和 --no-kubernetes,要取消全局配置,请运行:$ minikube config unset kubernetes-version", @@ -1125,9 +1126,9 @@ "deleting node": "正在删除节点", "disable failed": "禁用失败", "dry-run mode. Validates configuration, but does not mutate system state": "dry-run 模式。仅验证配置,不改变系统状态", - "dry-run validation complete!": "", + "dry-run validation complete!": "dry-run 验证完成!", "enable failed": "开启失败", - "enabled failed": "", + "enabled failed": "开启失败", "error creating clientset": "clientset 创建失败", "error creating urls": "url 创建失败", "error fetching Kubernetes version list from GitHub": "", @@ -1213,7 +1214,7 @@ "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "设置隧道绑定地址,'' 或 '*' 表示隧道应该对所有接口都可用", "socket_vmnet was installed with an incorrect group, delete this cluster 'minikube delete' and update the group 'sudo chown root:$(id -ng) /var/run/socket_vmnet' and try again.": "socket_vmnet 安装时使用了错误的组,请删除此集群 'minikube delete' 并更新组 'sudo chown root:$(id -ng) /var/run/socket_vmnet',然后重试。", "socket_vmnet was not found on the system, resolve by:\n\n\t\tOption 1) Installing socket_vmnet:\n\n\t\t https://minikube.sigs.k8s.io/docs/drivers/qemu/#networking\n\n\t\tOption 2) Using the user network:\n\n\t\t minikube start{{.profile}} --driver qemu --network user": "在系统上找不到 socket_vmnet,请通过以下方法解决:\n\n\t\t选项 1) 安装 socket_vmnet:\n\n\t\t https://minikube.sigs.k8s.io/docs/drivers/qemu/#networking\n\n\t\t选项 2) 使用用户网络:\n\n\t\t minikube start{{.profile}} --driver qemu --network user", - "stat failed": "", + "stat failed": "stat 失败", "status json failure": "json 状态错误", "status text failure": "text 状态错误", "too many arguments ({{.ArgCount}}).\nusage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "参数过多({{.ArgCount}})。\n用法:minikube config set PROPERTY_NAME PROPERTY_VALUE",