Repository: kubernetes/minikube
Pull request #16317 (2023-04-13 21:49:32)

site: Kubernetes 101 tutorial

k8s-ci-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/kubernetes/minikube/pull/16317#" title="Author self-approved">spowelljr</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=kubernetes%2Fminikube).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/kubernetes/minikube/blob/master/OWNERS)~~ [spowelljr]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->

Patch:
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index f996e80b4..050837101 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -33,7 +33,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.gendocs.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: Update auto-generated docs and translations
diff --git a/.github/workflows/functional_verified.yml b/.github/workflows/functional_verified.yml
index db66f003c..a3c0dc1d3 100644
--- a/.github/workflows/functional_verified.yml
+++ b/.github/workflows/functional_verified.yml
@@ -97,7 +97,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
 
       - name: Docker Info
         shell: bash
diff --git a/.github/workflows/leaderboard.yml b/.github/workflows/leaderboard.yml
index ac562b2fb..2725d4772 100644
--- a/.github/workflows/leaderboard.yml
+++ b/.github/workflows/leaderboard.yml
@@ -34,7 +34,7 @@ jobs:
           GITHUB_TOKEN: ${{ secrets.MINIKUBE_BOT_PAT }}
       - name: Create PR
         if: ${{ steps.leaderboard.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: Update leaderboard
diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml
index 6c7537c66..e2aac504a 100644
--- a/.github/workflows/master.yml
+++ b/.github/workflows/master.yml
@@ -125,7 +125,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Download Binaries
         uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
         with:
@@ -223,7 +223,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Download Binaries
         uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
         with:
@@ -325,7 +325,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Download Binaries
         uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
         with:
@@ -410,7 +410,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Install docker
         shell: bash
         run: |
@@ -526,7 +526,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Set fs.protected_regular
         shell: bash
         run: |
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index aa78ac6d6..c8edbc7d7 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -123,7 +123,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Download Binaries
         uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
         with:
@@ -222,7 +222,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Download Binaries
         uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
         with:
@@ -339,9 +339,9 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Download Binaries
-        uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
+        uses: actions/download-artifact@9782bd6a9848b53b110e712e20e42d89988822b7
         with:
           name: minikube_binaries
           path: minikube_binaries
@@ -381,7 +381,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
+      - uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb
         with:
           name: functional_docker_rootless_containerd_ubuntu
           path: minikube_binaries/report
@@ -442,7 +442,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Download Binaries
         uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
         with:
@@ -528,7 +528,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Install docker
         shell: bash
         run: |
@@ -645,7 +645,7 @@ jobs:
       - name: Install gopogh
         shell: bash
         run: |
-          go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+          go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
       - name: Set fs.protected_regular
         shell: bash
         run: |
diff --git a/.github/workflows/time-to-k8s.yml b/.github/workflows/time-to-k8s.yml
index 20783abc8..e8a595d17 100644
--- a/.github/workflows/time-to-k8s.yml
+++ b/.github/workflows/time-to-k8s.yml
@@ -26,7 +26,7 @@ jobs:
           ./hack/benchmark/time-to-k8s/time-to-k8s.sh
           echo "version=$(minikube version --short)" >> $GITHUB_OUTPUT
       - name: Create PR
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: add time-to-k8s benchmark for ${{ steps.timeToK8sBenchmark.outputs.version }}
diff --git a/.github/workflows/update-buildkit-version.yml b/.github/workflows/update-buildkit-version.yml
index 076d7d865..201bea2f5 100644
--- a/.github/workflows/update-buildkit-version.yml
+++ b/.github/workflows/update-buildkit-version.yml
@@ -32,7 +32,7 @@ jobs:
       - name: Create PR
         id: createPR
         if: ${{ steps.bumpBuildkit.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'Kicbase/ISO: Update buildkit from ${{ steps.bumpBuildkit.outputs.OLD_VERSION }} to ${{ steps.bumpBuildkit.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-cloud-spanner-emulator-version.yml b/.github/workflows/update-cloud-spanner-emulator-version.yml
index b3c07863e..769f343e8 100644
--- a/.github/workflows/update-cloud-spanner-emulator-version.yml
+++ b/.github/workflows/update-cloud-spanner-emulator-version.yml
@@ -31,7 +31,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpCloudSpannerEmulator.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'Addon cloud-spanner: Update cloud-spanner-emulator/emulator image from ${{ steps.bumpCloudSpannerEmulator.outputs.OLD_VERSION }} to ${{ steps.bumpCloudSpannerEmulator.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-containerd-version.yml b/.github/workflows/update-containerd-version.yml
index cd0784f14..7c8fa6bf4 100644
--- a/.github/workflows/update-containerd-version.yml
+++ b/.github/workflows/update-containerd-version.yml
@@ -32,7 +32,7 @@ jobs:
       - name: Create PR
         id: createPR
         if: ${{ steps.bumpContainerd.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'Kicbase/ISO: Update containerd from ${{ steps.bumpContainerd.outputs.OLD_VERSION }} to ${{ steps.bumpContainerd.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-cri-o-version.yml b/.github/workflows/update-cri-o-version.yml
index de8993d55..7c5688896 100644
--- a/.github/workflows/update-cri-o-version.yml
+++ b/.github/workflows/update-cri-o-version.yml
@@ -32,7 +32,7 @@ jobs:
       - name: Create PR
         id: createPR
         if: ${{ steps.bumpCrio.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'Kicbase/ISO: Update cri-o from ${{ steps.bumpCrio.outputs.OLD_VERSION }} to ${{ steps.bumpCrio.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-docker-version.yml b/.github/workflows/update-docker-version.yml
index 0f34b5cd6..50052c6ec 100644
--- a/.github/workflows/update-docker-version.yml
+++ b/.github/workflows/update-docker-version.yml
@@ -6,7 +6,7 @@ on:
     - cron: "0 10 * * 4"
 env:
   GOPROXY: https://proxy.golang.org
-  GO_VERSION: '1.20.3'
+  GO_VERSION: '1.20.2'
 permissions:
   contents: read
 
@@ -32,10 +32,10 @@ jobs:
       - name: Create PR
         id: createPR
         if: ${{ steps.bumpDocker.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
-          commit-message: 'Kicbase/ISO: Update docker from ${{ steps.bumpDocker.outputs.OLD_VERSION }} to ${{ steps.bumpDocker.outputs.NEW_VERSION }}'
+          commit-message: 'Kicbase/ISO: Update docker from ${{ steps.bumpContainerd.outputs.OLD_VERSION }} to ${{ steps.bumpContainerd.outputs.NEW_VERSION }}'
           committer: minikube-bot <minikube-bot@google.com>
           author: minikube-bot <minikube-bot@google.com>
           branch: auto_bump_docker_version
@@ -43,7 +43,7 @@ jobs:
           push-to-fork: minikube-bot/minikube
           base: master
           delete-branch: true
-          title: 'Kicbase/ISO: Update docker from ${{ steps.bumpDocker.outputs.OLD_VERSION }} to ${{ steps.bumpDocker.outputs.NEW_VERSION }}'
+          title: 'Kicbase/ISO: Update docker from ${{ steps.bumpContainerd.outputs.OLD_VERSION }} to ${{ steps.bumpContainerd.outputs.NEW_VERSION }}'
           body: |
             The docker project released a [new version](https://github.com/moby/moby/releases)
 
diff --git a/.github/workflows/update-docsy-version.yml b/.github/workflows/update-docsy-version.yml
index 0b0b2ad2f..4b8f53192 100644
--- a/.github/workflows/update-docsy-version.yml
+++ b/.github/workflows/update-docsy-version.yml
@@ -29,7 +29,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpDocsy.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: bump docsy version
diff --git a/.github/workflows/update-gh-version.yml b/.github/workflows/update-gh-version.yml
index 94eaa83be..426d506ff 100644
--- a/.github/workflows/update-gh-version.yml
+++ b/.github/workflows/update-gh-version.yml
@@ -31,7 +31,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpGh.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'CI: Update gh from ${{ steps.bumpGh.outputs.OLD_VERSION }} to ${{ steps.bumpGh.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-golang-version.yml b/.github/workflows/update-golang-version.yml
index 8d9ebfff3..18fa80600 100644
--- a/.github/workflows/update-golang-version.yml
+++ b/.github/workflows/update-golang-version.yml
@@ -31,7 +31,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpGolang.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'Update go from ${{ steps.bumpGolang.outputs.OLD_VERSION }} to ${{ steps.bumpGolang.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-golint-version.yml b/.github/workflows/update-golint-version.yml
index 038e0fe0c..9a5bf3bf1 100644
--- a/.github/workflows/update-golint-version.yml
+++ b/.github/workflows/update-golint-version.yml
@@ -31,7 +31,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpGolint.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'CI: Update golint from ${{ steps.bumpGolint.outputs.OLD_VERSION }} to ${{ steps.bumpGolint.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-gopogh-version.yml b/.github/workflows/update-gopogh-version.yml
index 7233a4662..9dbad727d 100644
--- a/.github/workflows/update-gopogh-version.yml
+++ b/.github/workflows/update-gopogh-version.yml
@@ -31,7 +31,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpGopogh.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'CI: Update gopogh from ${{ steps.bumpGopogh.outputs.OLD_VERSION }} to ${{ steps.bumpGopogh.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-hugo-version.yml b/.github/workflows/update-hugo-version.yml
index c16c01629..81a6a2af3 100644
--- a/.github/workflows/update-hugo-version.yml
+++ b/.github/workflows/update-hugo-version.yml
@@ -31,7 +31,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpHugo.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'Site: Update hugo from ${{ steps.bumpHugo.outputs.OLD_VERSION }} to ${{ steps.bumpHugo.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-k8s-versions.yml b/.github/workflows/update-k8s-versions.yml
index 4f778135d..a8362d058 100644
--- a/.github/workflows/update-k8s-versions.yml
+++ b/.github/workflows/update-k8s-versions.yml
@@ -34,7 +34,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpk8s.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: bump default/newest kubernetes versions
diff --git a/.github/workflows/update-kubeadm-constants.yml b/.github/workflows/update-kubeadm-constants.yml
index ca235d5c6..8696b7acb 100644
--- a/.github/workflows/update-kubeadm-constants.yml
+++ b/.github/workflows/update-kubeadm-constants.yml
@@ -32,7 +32,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpKubeadmConsts.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: update image constants for kubeadm images
diff --git a/.github/workflows/update-metrics-server-version.yml b/.github/workflows/update-metrics-server-version.yml
index a0be0f9be..84cf5ab7e 100644
--- a/.github/workflows/update-metrics-server-version.yml
+++ b/.github/workflows/update-metrics-server-version.yml
@@ -31,7 +31,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpMetricsServer.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'Addon metrics-server: Update metrics-server/metrics-server image from ${{ steps.bumpMetricsServer.outputs.OLD_VERSION }} to ${{ steps.bumpMetricsServer.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-runc-version.yml b/.github/workflows/update-runc-version.yml
index c6c0ff839..9fd0d35c6 100644
--- a/.github/workflows/update-runc-version.yml
+++ b/.github/workflows/update-runc-version.yml
@@ -24,7 +24,7 @@ jobs:
         run: |
           echo "OLD_VERSION=$(DEP=runc make get-dependency-version)" >> $GITHUB_OUTPUT
           make update-runc-version
-          echo "NEW_VERSION=$(DEP=runc make get-dependency-version)" >> $GITHUB_OUTPUT
+          echo "NEW_VERSION=$(DEP=buildkit 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<<EOF" >> $GITHUB_OUTPUT
           echo "$(git status --porcelain)" >> $GITHUB_OUTPUT
@@ -32,7 +32,7 @@ jobs:
       - name: Create PR
         id: createPR
         if: ${{ steps.bumpRunc.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'Kicbase/ISO: Update runc from ${{ steps.bumpRunc.outputs.OLD_VERSION }} to ${{ steps.bumpRunc.outputs.NEW_VERSION }}'
diff --git a/.github/workflows/update-ubuntu-version.yml b/.github/workflows/update-ubuntu-version.yml
deleted file mode 100644
index da2437625..000000000
--- a/.github/workflows/update-ubuntu-version.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: "update-ubuntu-version"
-on:
-  workflow_dispatch:
-  schedule:
-    # every Monday at around 3 am pacific/10 am UTC
-    - cron: "0 10 * * 1"
-env:
-  GOPROXY: https://proxy.golang.org
-  GO_VERSION: '1.20.3'
-permissions:
-  contents: read
-
-jobs:
-  bump-ubuntu-version:
-    runs-on: ubuntu-20.04
-    steps:
-      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab
-      - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9
-        with:
-          go-version: ${{env.GO_VERSION}}
-          cache-dependency-path: ./go.sum
-      - name: Bump Ubuntu version
-        id: bumpUbuntu
-        run: |
-          make update-ubuntu-version
-          c=$(git status --porcelain)
-          c="${c//$'\n'/'%0A'}"
-          c="${c//$'\r'/'%0D'}"
-          echo "changes<<EOF" >> $GITHUB_OUTPUT
-          echo "$c" >> $GITHUB_OUTPUT
-          echo "EOF" >> $GITHUB_OUTPUT
-      - name: Create PR
-        id: createPR
-        if: ${{ steps.bumpUbuntu.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
-        with:
-          token: ${{ secrets.MINIKUBE_BOT_PAT }}
-          commit-message: update ubuntu:focal image version
-          committer: minikube-bot <minikube-bot@google.com>
-          author: minikube-bot <minikube-bot@google.com>
-          branch: auto_bump_ubuntu_version
-          push-to-fork: minikube-bot/minikube
-          base: master
-          delete-branch: true
-          title: 'Kicbase: Bump ubuntu:focal image version'
-          body: |
-            The ubuntu:focal image released a new version
-
-            This PR was auto-generated by `make update-ubuntu-version` using [update-ubuntu-version.yml](https://github.com/kubernetes/minikube/tree/master/.github/workflows/update-ubuntu-version.yml) CI Workflow.
-      - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410
-        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'
-            })
diff --git a/.github/workflows/yearly-leaderboard.yml b/.github/workflows/yearly-leaderboard.yml
index 4faa72305..cce17e8a2 100644
--- a/.github/workflows/yearly-leaderboard.yml
+++ b/.github/workflows/yearly-leaderboard.yml
@@ -36,7 +36,7 @@ jobs:
           GITHUB_TOKEN: ${{ secrets.MINIKUBE_BOT_PAT }}
       - name: Create PR
         if: ${{ steps.yearlyLeaderboard.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: Update yearly leaderboard
diff --git a/Makefile b/Makefile
index 9f4507829..d1f1d5a55 100644
--- a/Makefile
+++ b/Makefile
@@ -23,7 +23,7 @@ KUBERNETES_VERSION ?= $(shell egrep "DefaultKubernetesVersion =" pkg/minikube/co
 KIC_VERSION ?= $(shell egrep "Version =" pkg/drivers/kic/types.go | cut -d \" -f2)
 
 # Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions
-ISO_VERSION ?= v1.30.1-1683246251-16426
+ISO_VERSION ?= v1.30.1
 
 # Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta
 DEB_VERSION ?= $(subst -,~,$(RAW_VERSION))
@@ -1107,11 +1107,6 @@ update-docker-version:
 	(cd hack/update/docker_version && \
 	 go run update_docker_version.go)
 
-.PHONY: update-ubuntu-version
-update-ubuntu-version:
-	(cd hack/update/ubuntu_version && \
-	 go run update_ubuntu_version.go)
-
 .PHONY: get-dependency-verison
 get-dependency-version:
 	@(cd hack/update/get_version && \
diff --git a/README.md b/README.md
index 390ca3a42..d2b724112 100644
--- a/README.md
+++ b/README.md
@@ -55,7 +55,7 @@ See minikube in action [here](https://minikube.sigs.k8s.io/docs/handbook/control
 
 minikube is a Kubernetes [#sig-cluster-lifecycle](https://github.com/kubernetes/community/tree/master/sig-cluster-lifecycle)  project.
 
-* [**#minikube on Kubernetes Slack**](https://kubernetes.slack.com/messages/minikube) - Live chat with minikube developers!
+* [**#minikube on Kubernetes Slack**](https://kubernetes.slack.com) - Live chat with minikube developers!
 * [minikube-users mailing list](https://groups.google.com/g/minikube-users)
 * [minikube-dev mailing list](https://groups.google.com/g/minikube-dev)
 
diff --git a/cmd/minikube/cmd/delete.go b/cmd/minikube/cmd/delete.go
index 74ecf22bf..acdf12bc6 100644
--- a/cmd/minikube/cmd/delete.go
+++ b/cmd/minikube/cmd/delete.go
@@ -584,10 +584,9 @@ func deleteMachineDirectories(cc *config.ClusterConfig) {
 	}
 }
 
-// killMountProcess looks for the legacy path and for profile path for a pidfile,
-// it then tries to kill all the pids listed in the pidfile (one or more)
+// killMountProcess kills the mount process, if it is running
 func killMountProcess() error {
-	profile := ClusterFlagValue()
+	profile := viper.GetString("profile")
 	paths := []string{
 		localpath.MiniPath(), // legacy mount-process path for backwards compatibility
 		localpath.Profile(profile),
@@ -602,120 +601,49 @@ func killMountProcess() error {
 	return nil
 }
 
-// killProcess takes a path to look for a pidfile (space-separated),
-// it reads the file and converts it to a bunch of pid ints,
-// then it tries to kill each one of them.
-// If no errors were encountered, it cleans the pidfile
 func killProcess(path string) error {
 	pidPath := filepath.Join(path, constants.MountProcessFileName)
 	if _, err := os.Stat(pidPath); os.IsNotExist(err) {
 		return nil
 	}
-	klog.Infof("Found %s ...", pidPath)
 
-	ppp, err := getPids(pidPath)
+	klog.Infof("Found %s ...", pidPath)
+	out, err := os.ReadFile(pidPath)
 	if err != nil {
-		return err
-	}
-
-	// we're trying to kill each process, without stopping at first error encountered
-	// error handling is done below
-	var errs []error
-	for _, pp := range ppp {
-		err := trySigKillProcess(pp)
-		if err != nil {
-			errs = append(errs, err)
-		}
-
-	}
-
-	if len(errs) == 1 {
-		// if we've encountered only one error, we're returning it:
-		return errs[0]
-	} else if len(errs) != 0 {
-		// if multiple errors were encountered, combine them into a single error
-		out.Styled(style.Failure, "Multiple errors encountered:")
-		for _, e := range errs {
-			out.Err("%v\n", e)
-		}
-		return errors.New("multiple errors encountered while closing mount processes")
+		return errors.Wrap(err, "ReadFile")
 	}
-
-	// if no errors were encoutered, it's safe to delete pidFile
-	if err := os.Remove(pidPath); err != nil {
-		return errors.Wrap(err, "while closing mount-pids file")
+	klog.Infof("pidfile contents: %s", out)
+	pid, err := strconv.Atoi(string(out))
+	if err != nil {
+		return errors.Wrap(err, "error parsing pid")
 	}
-
-	return nil
-}
-
-// trySigKillProcess takes a PID as argument and tries to SIGKILL it.
-// It performs an ownership check of the pid,
-// before trying to send a sigkill signal to it
-func trySigKillProcess(pid int) error {
-	itDoes, err := isMinikubeProcess(pid)
+	// os.FindProcess does not check if pid is running :(
+	entry, err := ps.FindProcess(pid)
 	if err != nil {
-		return err
+		return errors.Wrap(err, "ps.FindProcess")
 	}
-
-	if !itDoes {
-		return fmt.Errorf("stale pid: %d", pid)
+	if entry == nil {
+		klog.Infof("Stale pid: %d", pid)
+		if err := os.Remove(pidPath); err != nil {
+			return errors.Wrap(err, "Removing stale pid")
+		}
+		return nil
 	}
 
+	// We found a process, but it still may not be ours.
+	klog.Infof("Found process %d: %s", pid, entry.Executable())
 	proc, err := os.FindProcess(pid)
 	if err != nil {
-		return errors.Wrapf(err, "os.FindProcess: %d", pid)
+		return errors.Wrap(err, "os.FindProcess")
 	}
 
 	klog.Infof("Killing pid %d ...", pid)
 	if err := proc.Kill(); err != nil {
 		klog.Infof("Kill failed with %v - removing probably stale pid...", err)
-		return errors.Wrapf(err, "removing likely stale unkillable pid: %d", pid)
-	}
-
-	return nil
-}
-
-// doesPIDBelongToMinikube tries to find the process with that PID
-// and checks if the executable name contains the string "minikube"
-var isMinikubeProcess = func(pid int) (bool, error) {
-	entry, err := ps.FindProcess(pid)
-	if err != nil {
-		return false, errors.Wrapf(err, "ps.FindProcess for %d", pid)
-	}
-	if entry == nil {
-		klog.Infof("Process not found. pid %d", pid)
-		return false, nil
-	}
-
-	klog.Infof("Found process %d", pid)
-	if !strings.Contains(entry.Executable(), "minikube") {
-		klog.Infof("process %d was not started by minikube", pid)
-		return false, nil
-	}
-
-	return true, nil
-}
-
-// getPids opens the file at PATH and tries to read
-// one or more space separated pids
-func getPids(path string) ([]int, error) {
-	out, err := os.ReadFile(path)
-	if err != nil {
-		return nil, errors.Wrap(err, "ReadFile")
-	}
-	klog.Infof("pidfile contents: %s", out)
-
-	pids := []int{}
-	strPids := strings.Fields(string(out))
-	for _, p := range strPids {
-		intPid, err := strconv.Atoi(p)
-		if err != nil {
-			return nil, err
+		if err := os.Remove(pidPath); err != nil {
+			return errors.Wrap(err, "Removing likely stale unkillable pid")
 		}
-
-		pids = append(pids, intPid)
+		return errors.Wrap(err, fmt.Sprintf("Kill(%d/%s)", pid, entry.Executable()))
 	}
-
-	return pids, nil
+	return nil
 }
diff --git a/cmd/minikube/cmd/mount.go b/cmd/minikube/cmd/mount.go
index dde841f25..fc9fdc120 100644
--- a/cmd/minikube/cmd/mount.go
+++ b/cmd/minikube/cmd/mount.go
@@ -21,7 +21,6 @@ import (
 	"net"
 	"os"
 	"os/signal"
-	"path/filepath"
 	"runtime"
 	"strconv"
 	"strings"
@@ -36,13 +35,11 @@ import (
 	"k8s.io/minikube/pkg/minikube/detect"
 	"k8s.io/minikube/pkg/minikube/driver"
 	"k8s.io/minikube/pkg/minikube/exit"
-	"k8s.io/minikube/pkg/minikube/localpath"
 	"k8s.io/minikube/pkg/minikube/mustload"
 	"k8s.io/minikube/pkg/minikube/out"
 	"k8s.io/minikube/pkg/minikube/reason"
 	"k8s.io/minikube/pkg/minikube/style"
 	pkgnetwork "k8s.io/minikube/pkg/network"
-	"k8s.io/minikube/pkg/util/lock"
 	"k8s.io/minikube/third_party/go9p/ufs"
 )
 
@@ -205,18 +202,15 @@ var mountCmd = &cobra.Command{
 		out.Infof("Bind Address: {{.Address}}", out.V{"Address": net.JoinHostPort(bindIP, fmt.Sprint(port))})
 
 		var wg sync.WaitGroup
-		pidchan := make(chan int)
 		if cfg.Type == nineP {
 			wg.Add(1)
-			go func(pid chan int) {
-				pid <- os.Getpid()
+			go func() {
 				out.Styled(style.Fileserver, "Userspace file server: ")
 				ufs.StartServer(net.JoinHostPort(bindIP, strconv.Itoa(port)), debugVal, hostPath)
 				out.Step(style.Stopped, "Userspace file server is shutdown")
 				wg.Done()
-			}(pidchan)
+			}()
 		}
-		pid := <-pidchan
 
 		// Unmount if Ctrl-C or kill request is received.
 		c := make(chan os.Signal, 1)
@@ -228,17 +222,11 @@ var mountCmd = &cobra.Command{
 				if err != nil {
 					out.FailureT("Failed unmount: {{.error}}", out.V{"error": err})
 				}
-
-				err = removePidFromFile(pid)
-				if err != nil {
-					out.FailureT("Failed removing pid from pidfile: {{.error}}", out.V{"error": err})
-				}
-
 				exit.Message(reason.Interrupted, "Received {{.name}} signal", out.V{"name": sig})
 			}
 		}()
 
-		err = cluster.Mount(co.CP.Runner, ip.String(), vmPath, cfg, pid)
+		err = cluster.Mount(co.CP.Runner, ip.String(), vmPath, cfg)
 		if err != nil {
 			if rtErr, ok := err.(*cluster.MountError); ok && rtErr.ErrorType == cluster.MountErrorConnect {
 				exit.Error(reason.GuestMountCouldNotConnect, "mount could not connect", rtErr)
@@ -278,56 +266,3 @@ func getPort() (int, error) {
 	defer l.Close()
 	return l.Addr().(*net.TCPAddr).Port, nil
 }
-
-// removePidFromFile looks at the default locations for the mount-pids file,
-// for the profile in use. If a file is found and its content shows PID, PID gets removed.
-func removePidFromFile(pid int) error {
-	profile := ClusterFlagValue()
-	paths := []string{
-		localpath.MiniPath(), // legacy mount-process path for backwards compatibility
-		localpath.Profile(profile),
-	}
-
-	for _, path := range paths {
-		err := removePid(path, strconv.Itoa(pid))
-		if err != nil {
-			return err
-		}
-	}
-
-	return nil
-}
-
-// removePid reads the file at PATH and tries to remove PID from it if found
-func removePid(path string, pid string) error {
-	// is it the file we're looking for?
-	pidPath := filepath.Join(path, constants.MountProcessFileName)
-	if _, err := os.Stat(pidPath); os.IsNotExist(err) {
-		return nil
-	}
-
-	// we found the correct file
-	// we're reading the pids...
-	out, err := os.ReadFile(pidPath)
-	if err != nil {
-		return errors.Wrap(err, "readFile")
-	}
-
-	pids := []string{}
-	// we're splitting the mount-pids file content into a slice of strings
-	// so that we can compare each to the PID we're looking for
-	strPids := strings.Fields(string(out))
-	for _, p := range strPids {
-		// If we find the PID, we don't add it to the slice
-		if p == pid {
-			continue
-		}
-
-		// if p doesn't correspond to PID, we add to a list
-		pids = append(pids, p)
-	}
-
-	// we write the slice that we obtained back to the mount-pids file
-	newPids := strings.Join(pids, " ")
-	return lock.WriteFile(pidPath, []byte(newPids), 0o644)
-}
diff --git a/deploy/addons/aliyun_mirror.json b/deploy/addons/aliyun_mirror.json
index 02b471a23..4ce5afae0 100644
--- a/deploy/addons/aliyun_mirror.json
+++ b/deploy/addons/aliyun_mirror.json
@@ -4,7 +4,7 @@
   "gcr.io/k8s-minikube/auto-pause-hook": "registry.cn-hangzhou.aliyuncs.com/google_containers/auto-pause-hook",
   "quay.io/operator-framework/olm": "registry.cn-hangzhou.aliyuncs.com/google_containers/olm",
   "quay.io/operator-framework/upstream-community-operators": "registry.cn-hangzhou.aliyuncs.com/google_containers/upstream-community-operators",
-  "registry.k8s.io/kube-registry-proxy": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-registry-proxy",
+  "k8s.gcr.io/kube-registry-proxy": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-registry-proxy",
   "docker.io/upmcenterprises/registry-creds": "registry.cn-hangzhou.aliyuncs.com/google_containers/registry-creds",
   "quay.io/rhdevelopers/core-dns-patcher": "registry.cn-hangzhou.aliyuncs.com/google_containers/core-dns-patcher",
   "docker.io/nvidia/k8s-device-plugin": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-device-plugin",
@@ -13,75 +13,75 @@
   "quay.io/datawire/ambassador-operator": "registry.cn-hangzhou.aliyuncs.com/google_containers/ambassador-operator",
   "docker.io/jettech/kube-webhook-certgen": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen",
   "gcr.io/k8s-minikube/gcp-auth-webhook": "registry.cn-hangzhou.aliyuncs.com/google_containers/gcp-auth-webhook",
-  "registry.k8s.io/sig-storage/snapshot-controller": "registry.cn-hangzhou.aliyuncs.com/google_containers/snapshot-controller",
-  "registry.k8s.io/sig-storage/csi-attacher": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-attacher",
-  "registry.k8s.io/sig-storage/csi-external-health-monitor-agent": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-external-health-monitor-agent",
-  "registry.k8s.io/sig-storage/csi-external-health-monitor-controller": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-external-health-monitor-controller",
-  "registry.k8s.io/sig-storage/csi-node-driver-registrar": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-node-driver-registrar",
-  "registry.k8s.io/sig-storage/hostpathplugin": "registry.cn-hangzhou.aliyuncs.com/google_containers/hostpathplugin",
-  "registry.k8s.io/sig-storage/livenessprobe": "registry.cn-hangzhou.aliyuncs.com/google_containers/livenessprobe",
-  "registry.k8s.io/sig-storage/csi-resizer": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-resizer",
-  "registry.k8s.io/sig-storage/csi-snapshotter": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-snapshotter",
-  "registry.k8s.io/sig-storage/csi-provisioner": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-provisioner",
+  "k8s.gcr.io/sig-storage/snapshot-controller": "registry.cn-hangzhou.aliyuncs.com/google_containers/snapshot-controller",
+  "k8s.gcr.io/sig-storage/csi-attacher": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-attacher",
+  "k8s.gcr.io/sig-storage/csi-external-health-monitor-agent": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-external-health-monitor-agent",
+  "k8s.gcr.io/sig-storage/csi-external-health-monitor-controller": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-external-health-monitor-controller",
+  "k8s.gcr.io/sig-storage/csi-node-driver-registrar": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-node-driver-registrar",
+  "k8s.gcr.io/sig-storage/hostpathplugin": "registry.cn-hangzhou.aliyuncs.com/google_containers/hostpathplugin",
+  "k8s.gcr.io/sig-storage/livenessprobe": "registry.cn-hangzhou.aliyuncs.com/google_containers/livenessprobe",
+  "k8s.gcr.io/sig-storage/csi-resizer": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-resizer",
+  "k8s.gcr.io/sig-storage/csi-snapshotter": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-snapshotter",
+  "k8s.gcr.io/sig-storage/csi-provisioner": "registry.cn-hangzhou.aliyuncs.com/google_containers/csi-provisioner",
   "docker.io/registry": "registry.cn-hangzhou.aliyuncs.com/google_containers/registry",
   "docker.io/gluster/gluster-centos": "registry.cn-hangzhou.aliyuncs.com/google_containers/glusterfs-server",
   "docker.io/heketi/heketi": "registry.cn-hangzhou.aliyuncs.com/google_containers/heketi",
   "docker.io/coredns/coredns": "registry.cn-hangzhou.aliyuncs.com/google_containers/coredns",
   "docker.io/kindest/kindnetd": "registry.cn-hangzhou.aliyuncs.com/google_containers/kindnetd",
-  "registry.k8s.io/ingress-nginx/controller": "registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller",
+  "k8s.gcr.io/ingress-nginx/controller": "registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller",
   "gcr.io/cloud-builders/gcs-fetcher": "registry.cn-hangzhou.aliyuncs.com/cloud-builders/gcs-fetcher",
   "gcr.io/google-samples/freshpod": "registry.cn-hangzhou.aliyuncs.com/google_containers/freshpod",
   "gcr.io/k8s-minikube/gvisor-addon": "registry.cn-hangzhou.aliyuncs.com/google_containers/gvisor-addon",
   "gcr.io/k8s-minikube/kicbase": "registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase",
   "gcr.io/k8s-minikube/storage-provisioner": "registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner",
   "gcr.io/kubernetes-helm/tiller": "registry.cn-hangzhou.aliyuncs.com/google_containers/tiller",
-  "registry.k8s.io/addon-resizer": "registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer",
-  "registry.k8s.io/busybox": "registry.cn-hangzhou.aliyuncs.com/google_containers/busybox",
-  "registry.k8s.io/cluster-autoscaler": "registry.cn-hangzhou.aliyuncs.com/google_containers/cluster-autoscaler",
-  "registry.k8s.io/coredns/coredns": "registry.cn-hangzhou.aliyuncs.com/google_containers/coredns",
-  "registry.k8s.io/defaultbackend": "registry.cn-hangzhou.aliyuncs.com/google_containers/defaultbackend",
-  "registry.k8s.io/echoserver": "registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver",
-  "registry.k8s.io/elasticsearch": "registry.cn-hangzhou.aliyuncs.com/google_containers/elasticsearch",
-  "registry.k8s.io/etcd": "registry.cn-hangzhou.aliyuncs.com/google_containers/etcd",
-  "registry.k8s.io/etcd-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64",
-  "registry.k8s.io/exechealthz-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/exechealthz-amd64",
-  "registry.k8s.io/flannel-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/flannel-amd64",
-  "registry.k8s.io/fluentd-elasticsearch": "registry.cn-hangzhou.aliyuncs.com/google_containers/fluentd-elasticsearch",
-  "registry.k8s.io/heapster": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster",
-  "registry.k8s.io/heapster_grafana": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster_grafana",
-  "registry.k8s.io/heapster_influxdb": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster_influxdb",
-  "registry.k8s.io/heapster-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-amd64",
-  "registry.k8s.io/heapster-grafana-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-grafana-amd64",
-  "registry.k8s.io/heapster-influxdb-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-influxdb-amd64",
-  "registry.k8s.io/k8s-dns-dnsmasq-nanny-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-dnsmasq-nanny-amd64",
-  "registry.k8s.io/k8s-dns-kube-dns-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-kube-dns-amd64",
-  "registry.k8s.io/k8s-dns-node-cache": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-node-cache",
-  "registry.k8s.io/k8s-dns-sidecar-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-sidecar-amd64",
-  "registry.k8s.io/kube-addon-manager": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager",
-  "registry.k8s.io/kube-addon-manager-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager-amd64",
-  "registry.k8s.io/kube-apiserver": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver",
-  "registry.k8s.io/kube-apiserver-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64",
-  "registry.k8s.io/kube-controller-manager": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager",
-  "registry.k8s.io/kube-controller-manager-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64",
-  "registry.k8s.io/kube-cross": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-cross",
-  "registry.k8s.io/kube-dnsmasq-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-dnsmasq-amd64",
-  "registry.k8s.io/kube-proxy": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy",
-  "registry.k8s.io/kube-proxy-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64",
-  "registry.k8s.io/kube-scheduler": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler",
-  "registry.k8s.io/kube-scheduler-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64",
-  "registry.k8s.io/kube-state-metrics": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-state-metrics",
-  "registry.k8s.io/kubedns-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kubedns-amd64",
-  "registry.k8s.io/kubernetes-dashboard-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64",
-  "registry.k8s.io/metrics-server-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64",
-  "registry.k8s.io/minikube-nvidia-driver-installer": "registry.cn-hangzhou.aliyuncs.com/google_containers/minikube-nvidia-driver-installer",
-  "registry.k8s.io/mongodb-install": "registry.cn-hangzhou.aliyuncs.com/google_containers/mongodb-install",
-  "registry.k8s.io/nginx-slim": "registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-slim",
-  "registry.k8s.io/nvidia-gpu-device-plugin": "registry.cn-hangzhou.aliyuncs.com/google_containers/nvidia-gpu-device-plugin",
-  "registry.k8s.io/pause": "registry.cn-hangzhou.aliyuncs.com/google_containers/pause",
-  "registry.k8s.io/pause-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64",
-  "registry.k8s.io/spark": "registry.cn-hangzhou.aliyuncs.com/google_containers/spark",
-  "registry.k8s.io/spartakus-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/spartakus-amd64",
-  "registry.k8s.io/zeppelin": "registry.cn-hangzhou.aliyuncs.com/google_containers/zeppelin",
+  "k8s.gcr.io/addon-resizer": "registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer",
+  "k8s.gcr.io/busybox": "registry.cn-hangzhou.aliyuncs.com/google_containers/busybox",
+  "k8s.gcr.io/cluster-autoscaler": "registry.cn-hangzhou.aliyuncs.com/google_containers/cluster-autoscaler",
+  "k8s.gcr.io/coredns/coredns": "registry.cn-hangzhou.aliyuncs.com/google_containers/coredns",
+  "k8s.gcr.io/defaultbackend": "registry.cn-hangzhou.aliyuncs.com/google_containers/defaultbackend",
+  "k8s.gcr.io/echoserver": "registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver",
+  "k8s.gcr.io/elasticsearch": "registry.cn-hangzhou.aliyuncs.com/google_containers/elasticsearch",
+  "k8s.gcr.io/etcd": "registry.cn-hangzhou.aliyuncs.com/google_containers/etcd",
+  "k8s.gcr.io/etcd-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64",
+  "k8s.gcr.io/exechealthz-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/exechealthz-amd64",
+  "k8s.gcr.io/flannel-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/flannel-amd64",
+  "k8s.gcr.io/fluentd-elasticsearch": "registry.cn-hangzhou.aliyuncs.com/google_containers/fluentd-elasticsearch",
+  "k8s.gcr.io/heapster": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster",
+  "k8s.gcr.io/heapster_grafana": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster_grafana",
+  "k8s.gcr.io/heapster_influxdb": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster_influxdb",
+  "k8s.gcr.io/heapster-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-amd64",
+  "k8s.gcr.io/heapster-grafana-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-grafana-amd64",
+  "k8s.gcr.io/heapster-influxdb-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/heapster-influxdb-amd64",
+  "k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-dnsmasq-nanny-amd64",
+  "k8s.gcr.io/k8s-dns-kube-dns-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-kube-dns-amd64",
+  "k8s.gcr.io/k8s-dns-node-cache": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-node-cache",
+  "k8s.gcr.io/k8s-dns-sidecar-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-dns-sidecar-amd64",
+  "k8s.gcr.io/kube-addon-manager": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager",
+  "k8s.gcr.io/kube-addon-manager-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager-amd64",
+  "k8s.gcr.io/kube-apiserver": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver",
+  "k8s.gcr.io/kube-apiserver-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64",
+  "k8s.gcr.io/kube-controller-manager": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager",
+  "k8s.gcr.io/kube-controller-manager-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64",
+  "k8s.gcr.io/kube-cross": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-cross",
+  "k8s.gcr.io/kube-dnsmasq-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-dnsmasq-amd64",
+  "k8s.gcr.io/kube-proxy": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy",
+  "k8s.gcr.io/kube-proxy-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64",
+  "k8s.gcr.io/kube-scheduler": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler",
+  "k8s.gcr.io/kube-scheduler-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64",
+  "k8s.gcr.io/kube-state-metrics": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-state-metrics",
+  "k8s.gcr.io/kubedns-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kubedns-amd64",
+  "k8s.gcr.io/kubernetes-dashboard-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64",
+  "k8s.gcr.io/metrics-server-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64",
+  "k8s.gcr.io/minikube-nvidia-driver-installer": "registry.cn-hangzhou.aliyuncs.com/google_containers/minikube-nvidia-driver-installer",
+  "k8s.gcr.io/mongodb-install": "registry.cn-hangzhou.aliyuncs.com/google_containers/mongodb-install",
+  "k8s.gcr.io/nginx-slim": "registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-slim",
+  "k8s.gcr.io/nvidia-gpu-device-plugin": "registry.cn-hangzhou.aliyuncs.com/google_containers/nvidia-gpu-device-plugin",
+  "k8s.gcr.io/pause": "registry.cn-hangzhou.aliyuncs.com/google_containers/pause",
+  "k8s.gcr.io/pause-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64",
+  "k8s.gcr.io/spark": "registry.cn-hangzhou.aliyuncs.com/google_containers/spark",
+  "k8s.gcr.io/spartakus-amd64": "registry.cn-hangzhou.aliyuncs.com/google_containers/spartakus-amd64",
+  "k8s.gcr.io/zeppelin": "registry.cn-hangzhou.aliyuncs.com/google_containers/zeppelin",
   "quay.io/coreos/configmap-reload": "registry.cn-hangzhou.aliyuncs.com/coreos_containers/configmap-reload",
   "quay.io/coreos/grafana-watcher": "registry.cn-hangzhou.aliyuncs.com/coreos_containers/grafana-watcher",
   "quay.io/coreos/hyperkube": "registry.cn-hangzhou.aliyuncs.com/coreos_containers/hyperkube",
@@ -94,9 +94,9 @@
   "quay.io/kubernetes-service-catalog/service-catalog": "registry.cn-hangzhou.aliyuncs.com/kubernetes-service-catalog/service-catalog",
   "quay.io/prometheus/alertmanager": "registry.cn-hangzhou.aliyuncs.com/google_containers/alertmanager",
   "quay.io/prometheus/prometheus": "registry.cn-hangzhou.aliyuncs.com/google_containers/prometheus",
-  "registry.k8s.io/ingress-nginx/kube-webhook-certgen": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen",
+  "k8s.gcr.io/ingress-nginx/kube-webhook-certgen": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen",
   "gcr.io/k8s-minikube/minikube-ingress-dns": "registry.cn-hangzhou.aliyuncs.com/google_containers/minikube-ingress-dns",
   "gcr.io/google_containers/pause": "registry.cn-hangzhou.aliyuncs.com/google_containers/pause",
-  "registry.k8s.io/metrics-server/metrics-server": "registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server",
+  "k8s.gcr.io/metrics-server/metrics-server": "registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server",
   "gcr.io/google_containers/kube-registry-proxy": "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-registry-proxy"
 }
\ No newline at end of file
diff --git a/deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-plugin.yaml.tmpl b/deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-plugin.yaml.tmpl
index 0975149ea..467521d35 100644
--- a/deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-plugin.yaml.tmpl
+++ b/deploy/addons/csi-hostpath-driver/deploy/csi-hostpath-plugin.yaml.tmpl
@@ -137,7 +137,7 @@ spec:
           - --health-port=9898
 
         - name: csi-provisioner
-          image: {{.CustomRegistries.Provisioner  | default .ImageRepository | default .Registries.Provisioner }}{{.Images.Provisioner}}
+          image: registry.k8s.io/sig-storage/csi-provisioner:v3.3.0
           args:
             - -v=5
             - --csi-address=/csi/csi.sock
diff --git a/deploy/addons/kong/kong-ingress-controller.yaml.tmpl b/deploy/addons/kong/kong-ingress-controller.yaml.tmpl
index 39180af7f..8ba9d1d2c 100644
--- a/deploy/addons/kong/kong-ingress-controller.yaml.tmpl
+++ b/deploy/addons/kong/kong-ingress-controller.yaml.tmpl
@@ -7,67 +7,12 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.11.3
-  creationTimestamp: null
-  name: ingressclassparameterses.configuration.konghq.com
-spec:
-  group: configuration.konghq.com
-  names:
-    kind: IngressClassParameters
-    listKind: IngressClassParametersList
-    plural: ingressclassparameterses
-    singular: ingressclassparameters
-  scope: Namespaced
-  versions:
-  - name: v1alpha1
-    schema:
-      openAPIV3Schema:
-        description: IngressClassParameters is the Schema for the IngressClassParameters
-          API.
-        properties:
-          apiVersion:
-            description: 'APIVersion defines the versioned schema of this representation
-              of an object. Servers should convert recognized schemas to the latest
-              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
-            type: string
-          kind:
-            description: 'Kind is a string value representing the REST resource this
-              object represents. Servers may infer this from the endpoint the client
-              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
-            type: string
-          metadata:
-            type: object
-          spec:
-            description: Spec is the IngressClassParameters specification.
-            properties:
-              enableLegacyRegexDetection:
-                default: false
-                description: EnableLegacyRegexDetection automatically detects if ImplementationSpecific
-                  Ingress paths are regular expression paths using the legacy 2.x
-                  heuristic. The controller adds the "~" prefix to those paths if
-                  the Kong version is 3.0 or higher.
-                type: boolean
-              serviceUpstream:
-                default: false
-                description: Offload load-balancing to kube-proxy or sidecar.
-                type: boolean
-            type: object
-        type: object
-    served: true
-    storage: true
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
-  annotations:
-    controller-gen.kubebuilder.io/version: v0.11.3
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   name: kongclusterplugins.configuration.konghq.com
 spec:
   group: configuration.konghq.com
   names:
-    categories:
-    - kong-ingress-controller
     kind: KongClusterPlugin
     listKind: KongClusterPluginList
     plural: kongclusterplugins
@@ -98,7 +43,7 @@ spec:
     name: v1
     schema:
       openAPIV3Schema:
-        description: KongClusterPlugin is the Schema for the kongclusterplugins API.
+        description: KongClusterPlugin is the Schema for the kongclusterplugins API
         properties:
           apiVersion:
             description: 'APIVersion defines the versioned schema of this representation
@@ -106,33 +51,24 @@ spec:
               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
             type: string
           config:
-            description: Config contains the plugin configuration. It's a list of
-              keys and values required to configure the plugin. Please read the documentation
-              of the plugin being configured to set values in here. For any plugin
-              in Kong, anything that goes in the `config` JSON key in the Admin API
-              request, goes into this property. Only one of `config` or `configFrom`
-              may be used in a KongClusterPlugin, not both at once.
+            description: Config contains the plugin configuration.
             type: object
             x-kubernetes-preserve-unknown-fields: true
           configFrom:
             description: ConfigFrom references a secret containing the plugin configuration.
-              This should be used when the plugin configuration contains sensitive
-              information, such as AWS credentials in the Lambda plugin or the client
-              secret in the OIDC plugin. Only one of `config` or `configFrom` may
-              be used in a KongClusterPlugin, not both at once.
             properties:
               secretKeyRef:
-                description: Specifies a name, a namespace, and a key of a secret
-                  to refer to.
+                description: NamespacedSecretValueFromSource represents the source
+                  of a secret value specifying the secret namespace
                 properties:
                   key:
-                    description: The key containing the value.
+                    description: the key containing the value
                     type: string
                   name:
-                    description: The secret containing the key.
+                    description: the secret containing the key
                     type: string
                   namespace:
-                    description: The namespace containing the secret.
+                    description: The namespace containing the secret
                     type: string
                 required:
                 - key
@@ -141,10 +77,10 @@ spec:
                 type: object
             type: object
           consumerRef:
-            description: ConsumerRef is a reference to a particular consumer.
+            description: ConsumerRef is a reference to a particular consumer
             type: string
           disabled:
-            description: Disabled set if the plugin is disabled or not.
+            description: Disabled set if the plugin is disabled or not
             type: boolean
           kind:
             description: 'Kind is a string value representing the REST resource this
@@ -153,42 +89,14 @@ spec:
             type: string
           metadata:
             type: object
-          ordering:
-            description: 'Ordering overrides the normal plugin execution order. It''s
-              only available on Kong Enterprise. `<phase>` is a request processing
-              phase (for example, `access` or `body_filter`) and `<plugin>` is the
-              name of the plugin that will run before or after the KongPlugin. For
-              example, a KongPlugin with `plugin: rate-limiting` and `before.access:
-              ["key-auth"]` will create a rate limiting plugin that limits requests
-              _before_ they are authenticated.'
-            properties:
-              after:
-                additionalProperties:
-                  items:
-                    type: string
-                  type: array
-                description: PluginOrderingPhase indicates which plugins in a phase
-                  should affect the target plugin's order
-                type: object
-              before:
-                additionalProperties:
-                  items:
-                    type: string
-                  type: array
-                description: PluginOrderingPhase indicates which plugins in a phase
-                  should affect the target plugin's order
-                type: object
-            type: object
           plugin:
             description: PluginName is the name of the plugin to which to apply the
-              config.
+              config
             type: string
           protocols:
             description: Protocols configures plugin to run on requests received on
               specific protocols.
             items:
-              description: KongProtocol is a valid Kong protocol. This alias is necessary
-                to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342
               enum:
               - http
               - https
@@ -214,19 +122,23 @@ spec:
     storage: true
     subresources:
       status: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
 ---
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.11.3
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   name: kongconsumers.configuration.konghq.com
 spec:
   group: configuration.konghq.com
   names:
-    categories:
-    - kong-ingress-controller
     kind: KongConsumer
     listKind: KongConsumerList
     plural: kongconsumers
@@ -247,7 +159,7 @@ spec:
     name: v1
     schema:
       openAPIV3Schema:
-        description: KongConsumer is the Schema for the kongconsumers API.
+        description: KongConsumer is the Schema for the kongconsumers API
         properties:
           apiVersion:
             description: 'APIVersion defines the versioned schema of this representation
@@ -261,8 +173,8 @@ spec:
               type: string
             type: array
           custom_id:
-            description: CustomID is a Kong cluster-unique existing ID for the consumer
-              - useful for mapping Kong with users in your existing database.
+            description: CustomID existing unique ID for the consumer - useful for
+              mapping Kong with users in your existing database
             type: string
           kind:
             description: 'Kind is a string value representing the REST resource this
@@ -272,26 +184,30 @@ spec:
           metadata:
             type: object
           username:
-            description: Username is a Kong cluster-unique username of the consumer.
+            description: Username unique username of the consumer.
             type: string
         type: object
     served: true
     storage: true
     subresources:
       status: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
 ---
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.11.3
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   name: kongingresses.configuration.konghq.com
 spec:
   group: configuration.konghq.com
   names:
-    categories:
-    - kong-ingress-controller
     kind: KongIngress
     listKind: KongIngressList
     plural: kongingresses
@@ -303,7 +219,7 @@ spec:
   - name: v1
     schema:
       openAPIV3Schema:
-        description: KongIngress is the Schema for the kongingresses API.
+        description: KongIngress is the Schema for the kongingresses API
         properties:
           apiVersion:
             description: 'APIVersion defines the versioned schema of this representation
@@ -318,25 +234,15 @@ spec:
           metadata:
             type: object
           proxy:
-            description: Proxy defines additional connection options for the routes
-              to be configured in the Kong Gateway, e.g. `connection_timeout`, `retries`,
-              etc.
+            description: KongIngressService contains KongIngress service configuration
             properties:
               connect_timeout:
-                description: "The timeout in milliseconds for\testablishing a connection
-                  to the upstream server. Deprecated: use Service's \"konghq.com/connect-timeout\"
-                  annotation instead."
                 minimum: 0
                 type: integer
               path:
-                description: '(optional) The path to be used in requests to the upstream
-                  server. Deprecated: use Service''s "konghq.com/path" annotation
-                  instead.'
                 pattern: ^/.*$
                 type: string
               protocol:
-                description: 'The protocol used to communicate with the upstream.
-                  Deprecated: use Service''s "konghq.com/protocol" annotation instead.'
                 enum:
                 - http
                 - https
@@ -347,73 +253,39 @@ spec:
                 - udp
                 type: string
               read_timeout:
-                description: 'The timeout in milliseconds between two successive read
-                  operations for transmitting a request to the upstream server. Deprecated:
-                  use Service''s "konghq.com/read-timeout" annotation instead.'
                 minimum: 0
                 type: integer
               retries:
-                description: 'The number of retries to execute upon failure to proxy.
-                  Deprecated: use Service''s "konghq.com/retries" annotation instead.'
                 minimum: 0
                 type: integer
               write_timeout:
-                description: 'The timeout in milliseconds between two successive write
-                  operations for transmitting a request to the upstream server. Deprecated:
-                  use Service''s "konghq.com/write-timeout" annotation instead.'
                 minimum: 0
                 type: integer
             type: object
           route:
-            description: Route define rules to match client requests. Each Route is
-              associated with a Service, and a Service may have multiple Routes associated
-              to it.
+            description: KongIngressRoute contains KongIngress route configuration
             properties:
               headers:
                 additionalProperties:
                   items:
                     type: string
                   type: array
-                description: 'Headers contains one or more lists of values indexed
-                  by header name that will cause this Route to match if present in
-                  the request. The Host header cannot be used with this attribute.
-                  Deprecated: use Ingress'' "konghq.com/headers" annotation instead.'
                 type: object
               https_redirect_status_code:
-                description: 'HTTPSRedirectStatusCode is the status code Kong responds
-                  with when all properties of a Route match except the protocol. Deprecated:
-                  use Ingress'' "ingress.kubernetes.io/force-ssl-redirect" or "konghq.com/https-redirect-status-code"
-                  annotations instead.'
                 type: integer
               methods:
-                description: 'Methods is a list of HTTP methods that match this Route.
-                  Deprecated: use Ingress'' "konghq.com/methods" annotation instead.'
                 items:
                   type: string
                 type: array
               path_handling:
-                description: 'PathHandling controls how the Service path, Route path
-                  and requested path are combined when sending a request to the upstream.
-                  Deprecated: use Ingress'' "konghq.com/path-handling" annotation
-                  instead.'
                 enum:
                 - v0
                 - v1
                 type: string
               preserve_host:
-                description: 'PreserveHost sets When matching a Route via one of the
-                  hosts domain names, use the request Host header in the upstream
-                  request headers. If set to false, the upstream Host header will
-                  be that of the Service’s host. Deprecated: use Ingress'' "konghq.com/preserve-host"
-                  annotation instead.'
                 type: boolean
               protocols:
-                description: 'Protocols is an array of the protocols this Route should
-                  allow. Deprecated: use Ingress'' "konghq.com/protocols" annotation
-                  instead.'
                 items:
-                  description: KongProtocol is a valid Kong protocol. This alias is
-                    necessary to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342
                   enum:
                   - http
                   - https
@@ -425,91 +297,41 @@ spec:
                   type: string
                 type: array
               regex_priority:
-                description: 'RegexPriority is a number used to choose which route
-                  resolves a given request when several routes match it using regexes
-                  simultaneously. Deprecated: use Ingress'' "konghq.com/regex-priority"
-                  annotation instead.'
                 type: integer
               request_buffering:
-                description: 'RequestBuffering sets whether to enable request body
-                  buffering or not. Deprecated: use Ingress'' "konghq.com/request-buffering"
-                  annotation instead.'
                 type: boolean
               response_buffering:
-                description: 'ResponseBuffering sets whether to enable response body
-                  buffering or not. Deprecated: use Ingress'' "konghq.com/response-buffering"
-                  annotation instead.'
                 type: boolean
               snis:
-                description: 'SNIs is a list of SNIs that match this Route when using
-                  stream routing. Deprecated: use Ingress'' "konghq.com/snis" annotation
-                  instead.'
                 items:
                   type: string
                 type: array
               strip_path:
-                description: 'StripPath sets When matching a Route via one of the
-                  paths strip the matching prefix from the upstream request URL. Deprecated:
-                  use Ingress'' "konghq.com/strip-path" annotation instead.'
                 type: boolean
             type: object
           upstream:
-            description: Upstream represents a virtual hostname and can be used to
-              loadbalance incoming requests over multiple targets (e.g. Kubernetes
-              `Services` can be a target, OR `Endpoints` can be targets).
+            description: KongIngressUpstream contains KongIngress upstream configuration
             properties:
               algorithm:
-                description: Algorithm is the load balancing algorithm to use.
                 enum:
                 - round-robin
                 - consistent-hashing
                 - least-connections
                 type: string
               hash_fallback:
-                description: 'HashFallback defines What to use as hashing input if
-                  the primary hash_on does not return a hash. Accepted values are:
-                  "none", "consumer", "ip", "header", "cookie".'
                 type: string
               hash_fallback_header:
-                description: HashFallbackHeader is the header name to take the value
-                  from as hash input. Only required when "hash_fallback" is set to
-                  "header".
-                type: string
-              hash_fallback_query_arg:
-                description: HashFallbackQueryArg is the "hash_fallback" version of
-                  HashOnQueryArg.
-                type: string
-              hash_fallback_uri_capture:
-                description: HashFallbackURICapture is the "hash_fallback" version
-                  of HashOnURICapture.
                 type: string
               hash_on:
-                description: 'HashOn defines what to use as hashing input. Accepted
-                  values are: "none", "consumer", "ip", "header", "cookie", "path",
-                  "query_arg", "uri_capture".'
                 type: string
               hash_on_cookie:
-                description: The cookie name to take the value from as hash input.
-                  Only required when "hash_on" or "hash_fallback" is set to "cookie".
                 type: string
               hash_on_cookie_path:
-                description: The cookie path to set in the response headers. Only
-                  required when "hash_on" or "hash_fallback" is set to "cookie".
                 type: string
               hash_on_header:
-                description: HashOnHeader defines the header name to take the value
-                  from as hash input. Only required when "hash_on" is set to "header".
-                type: string
-              hash_on_query_arg:
-                description: HashOnQueryArg is the query string parameter whose value
-                  is the hash input when "hash_on" is set to "query_arg".
-                type: string
-              hash_on_uri_capture:
-                description: HashOnURICapture is the name of the capture group whose
-                  value is the hash input when "hash_on" is set to "uri_capture".
                 type: string
               healthchecks:
-                description: Healthchecks defines the health check configurations
+                description: Healthcheck represents a health-check config of an upstream
                   in Kong.
                 properties:
                   active:
@@ -615,11 +437,8 @@ spec:
                     type: number
                 type: object
               host_header:
-                description: HostHeader is The hostname to be used as Host header
-                  when proxying requests through Kong.
                 type: string
               slots:
-                description: Slots is the number of slots in the load balancer algorithm.
                 minimum: 10
                 type: integer
             type: object
@@ -628,19 +447,23 @@ spec:
     storage: true
     subresources:
       status: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
 ---
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.11.3
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   name: kongplugins.configuration.konghq.com
 spec:
   group: configuration.konghq.com
   names:
-    categories:
-    - kong-ingress-controller
     kind: KongPlugin
     listKind: KongPluginList
     plural: kongplugins
@@ -671,7 +494,7 @@ spec:
     name: v1
     schema:
       openAPIV3Schema:
-        description: KongPlugin is the Schema for the kongplugins API.
+        description: KongPlugin is the Schema for the kongplugins API
         properties:
           apiVersion:
             description: 'APIVersion defines the versioned schema of this representation
@@ -679,30 +502,21 @@ spec:
               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
             type: string
           config:
-            description: Config contains the plugin configuration. It's a list of
-              keys and values required to configure the plugin. Please read the documentation
-              of the plugin being configured to set values in here. For any plugin
-              in Kong, anything that goes in the `config` JSON key in the Admin API
-              request, goes into this property. Only one of `config` or `configFrom`
-              may be used in a KongPlugin, not both at once.
+            description: Config contains the plugin configuration.
             type: object
             x-kubernetes-preserve-unknown-fields: true
           configFrom:
             description: ConfigFrom references a secret containing the plugin configuration.
-              This should be used when the plugin configuration contains sensitive
-              information, such as AWS credentials in the Lambda plugin or the client
-              secret in the OIDC plugin. Only one of `config` or `configFrom` may
-              be used in a KongPlugin, not both at once.
             properties:
               secretKeyRef:
-                description: Specifies a name and a key of a secret to refer to. The
-                  namespace is implicitly set to the one of referring object.
+                description: SecretValueFromSource represents the source of a secret
+                  value
                 properties:
                   key:
-                    description: The key containing the value.
+                    description: the key containing the value
                     type: string
                   name:
-                    description: The secret containing the key.
+                    description: the secret containing the key
                     type: string
                 required:
                 - key
@@ -710,10 +524,10 @@ spec:
                 type: object
             type: object
           consumerRef:
-            description: ConsumerRef is a reference to a particular consumer.
+            description: ConsumerRef is a reference to a particular consumer
             type: string
           disabled:
-            description: Disabled set if the plugin is disabled or not.
+            description: Disabled set if the plugin is disabled or not
             type: boolean
           kind:
             description: 'Kind is a string value representing the REST resource this
@@ -722,42 +536,14 @@ spec:
             type: string
           metadata:
             type: object
-          ordering:
-            description: 'Ordering overrides the normal plugin execution order. It''s
-              only available on Kong Enterprise. `<phase>` is a request processing
-              phase (for example, `access` or `body_filter`) and `<plugin>` is the
-              name of the plugin that will run before or after the KongPlugin. For
-              example, a KongPlugin with `plugin: rate-limiting` and `before.access:
-              ["key-auth"]` will create a rate limiting plugin that limits requests
-              _before_ they are authenticated.'
-            properties:
-              after:
-                additionalProperties:
-                  items:
-                    type: string
-                  type: array
-                description: PluginOrderingPhase indicates which plugins in a phase
-                  should affect the target plugin's order
-                type: object
-              before:
-                additionalProperties:
-                  items:
-                    type: string
-                  type: array
-                description: PluginOrderingPhase indicates which plugins in a phase
-                  should affect the target plugin's order
-                type: object
-            type: object
           plugin:
             description: PluginName is the name of the plugin to which to apply the
-              config.
+              config
             type: string
           protocols:
             description: Protocols configures plugin to run on requests received on
               specific protocols.
             items:
-              description: KongProtocol is a valid Kong protocol. This alias is necessary
-                to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342
               enum:
               - http
               - https
@@ -783,19 +569,23 @@ spec:
     storage: true
     subresources:
       status: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
 ---
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.11.3
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   name: tcpingresses.configuration.konghq.com
 spec:
   group: configuration.konghq.com
   names:
-    categories:
-    - kong-ingress-controller
     kind: TCPIngress
     listKind: TCPIngressList
     plural: tcpingresses
@@ -814,7 +604,7 @@ spec:
     name: v1beta1
     schema:
       openAPIV3Schema:
-        description: TCPIngress is the Schema for the tcpingresses API.
+        description: TCPIngress is the Schema for the tcpingresses API
         properties:
           apiVersion:
             description: 'APIVersion defines the versioned schema of this representation
@@ -829,7 +619,7 @@ spec:
           metadata:
             type: object
           spec:
-            description: Spec is the TCPIngress specification.
+            description: TCPIngressSpec defines the desired state of TCPIngress
             properties:
               rules:
                 description: A list of rules used to configure the Ingress.
@@ -844,7 +634,6 @@ spec:
                       properties:
                         serviceName:
                           description: Specifies the name of the referenced service.
-                          minLength: 1
                           type: string
                         servicePort:
                           description: Specifies the port of the referenced service.
@@ -858,12 +647,9 @@ spec:
                       type: object
                     host:
                       description: Host is the fully qualified domain name of a network
-                        host, as defined by RFC 3986. If a Host is not specified,
-                        then port-based TCP routing is performed. Kong doesn't care
-                        about the content of the TCP stream in this case. If a Host
-                        is specified, the protocol must be TLS over TCP. A plain-text
-                        TCP request cannot be routed based on Host. It can only be
-                        routed based on Port.
+                        host, as defined by RFC 3986. If a Host is specified, the
+                        protocol must be TLS over TCP. A plain-text TCP request cannot
+                        be routed based on Host. It can only be routed based on Port.
                       type: string
                     port:
                       description: Port is the port on which to accept TCP or TLS
@@ -876,7 +662,6 @@ spec:
                       type: integer
                   required:
                   - backend
-                  - port
                   type: object
                 type: array
               tls:
@@ -904,7 +689,7 @@ spec:
                 type: array
             type: object
           status:
-            description: TCPIngressStatus defines the observed state of TCPIngress.
+            description: TCPIngressStatus defines the observed state of TCPIngress
             properties:
               loadBalancer:
                 description: LoadBalancer contains the current status of the load-balancer.
@@ -937,8 +722,8 @@ spec:
                                   the service port The format of the error shall comply
                                   with the following rules: - built-in error values
                                   shall be specified in this file and those shall
-                                  use CamelCase names - cloud provider specific error
-                                  values must have names that comply with the format
+                                  use   CamelCase names - cloud provider specific
+                                  error values must have names that comply with the   format
                                   foo.example.com/CamelCase. --- The regex it matches
                                   is (dns1123SubdomainFmt/)?(qualifiedNameFmt)'
                                 maxLength: 316
@@ -970,19 +755,23 @@ spec:
     storage: true
     subresources:
       status: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
 ---
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   annotations:
-    controller-gen.kubebuilder.io/version: v0.11.3
+    controller-gen.kubebuilder.io/version: v0.7.0
   creationTimestamp: null
   name: udpingresses.configuration.konghq.com
 spec:
   group: configuration.konghq.com
   names:
-    categories:
-    - kong-ingress-controller
     kind: UDPIngress
     listKind: UDPIngressList
     plural: udpingresses
@@ -1001,7 +790,7 @@ spec:
     name: v1beta1
     schema:
       openAPIV3Schema:
-        description: UDPIngress is the Schema for the udpingresses API.
+        description: UDPIngress is the Schema for the udpingresses API
         properties:
           apiVersion:
             description: 'APIVersion defines the versioned schema of this representation
@@ -1016,7 +805,7 @@ spec:
           metadata:
             type: object
           spec:
-            description: Spec is the UDPIngress specification.
+            description: UDPIngressSpec defines the desired state of UDPIngress
             properties:
               rules:
                 description: A list of rules used to configure the Ingress.
@@ -1031,7 +820,6 @@ spec:
                       properties:
                         serviceName:
                           description: Specifies the name of the referenced service.
-                          minLength: 1
                           type: string
                         servicePort:
                           description: Specifies the port of the referenced service.
@@ -1047,9 +835,6 @@ spec:
                       description: Port indicates the port for the Kong proxy to accept
                         incoming traffic on, which will then be routed to the service
                         Backend.
-                      format: int32
-                      maximum: 65535
-                      minimum: 1
                       type: integer
                   required:
                   - backend
@@ -1058,7 +843,7 @@ spec:
                 type: array
             type: object
           status:
-            description: UDPIngressStatus defines the observed state of UDPIngress.
+            description: UDPIngressStatus defines the observed state of UDPIngress
             properties:
               loadBalancer:
                 description: LoadBalancer contains the current status of the load-balancer.
@@ -1091,8 +876,8 @@ spec:
                                   the service port The format of the error shall comply
                                   with the following rules: - built-in error values
                                   shall be specified in this file and those shall
-                                  use CamelCase names - cloud provider specific error
-                                  values must have names that comply with the format
+                                  use   CamelCase names - cloud provider specific
+                                  error values must have names that comply with the   format
                                   foo.example.com/CamelCase. --- The regex it matches
                                   is (dns1123SubdomainFmt/)?(qualifiedNameFmt)'
                                 maxLength: 316
@@ -1124,6 +909,12 @@ spec:
     storage: true
     subresources:
       status: {}
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
 ---
 apiVersion: v1
 kind: ServiceAccount
@@ -1233,14 +1024,6 @@ rules:
   - get
   - patch
   - update
-- apiGroups:
-  - configuration.konghq.com
-  resources:
-  - ingressclassparameterses
-  verbs:
-  - get
-  - list
-  - watch
 - apiGroups:
   - configuration.konghq.com
   resources:
@@ -1337,14 +1120,6 @@ rules:
   - get
   - patch
   - update
-- apiGroups:
-  - discovery.k8s.io
-  resources:
-  - endpointslices
-  verbs:
-  - get
-  - list
-  - watch
 - apiGroups:
   - extensions
   resources:
@@ -1362,15 +1137,7 @@ rules:
   - patch
   - update
 - apiGroups:
-  - networking.k8s.io
-  resources:
-  - ingressclasses
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - networking.k8s.io
+  - networking.internal.knative.dev
   resources:
   - ingresses
   verbs:
@@ -1378,22 +1145,15 @@ rules:
   - list
   - watch
 - apiGroups:
-  - networking.k8s.io
+  - networking.internal.knative.dev
   resources:
   - ingresses/status
   verbs:
   - get
   - patch
   - update
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  creationTimestamp: null
-  name: kong-ingress-gateway
-rules:
 - apiGroups:
-  - gateway.networking.k8s.io
+  - networking.k8s.io
   resources:
   - gatewayclasses
   verbs:
@@ -1401,46 +1161,27 @@ rules:
   - list
   - watch
 - apiGroups:
-  - gateway.networking.k8s.io
+  - networking.k8s.io
   resources:
   - gatewayclasses/status
   verbs:
   - get
-  - update
 - apiGroups:
-  - gateway.networking.k8s.io
+  - networking.k8s.io
   resources:
   - gateways
   verbs:
   - get
   - list
-  - update
   - watch
 - apiGroups:
-  - gateway.networking.k8s.io
+  - networking.k8s.io
   resources:
   - gateways/status
   verbs:
   - get
-  - update
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - grpcroutes
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - grpcroutes/status
-  verbs:
-  - get
-  - patch
-  - update
 - apiGroups:
-  - gateway.networking.k8s.io
+  - networking.k8s.io
   resources:
   - httproutes
   verbs:
@@ -1448,80 +1189,13 @@ rules:
   - list
   - watch
 - apiGroups:
-  - gateway.networking.k8s.io
+  - networking.k8s.io
   resources:
   - httproutes/status
   verbs:
   - get
-  - update
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - referencegrants
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - referencegrants/status
-  verbs:
-  - get
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - tcproutes
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - tcproutes/status
-  verbs:
-  - get
-  - update
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - tlsroutes
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - tlsroutes/status
-  verbs:
-  - get
-  - update
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - udproutes
-  verbs:
-  - get
-  - list
-  - watch
-- apiGroups:
-  - gateway.networking.k8s.io
-  resources:
-  - udproutes/status
-  verbs:
-  - get
-  - update
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  creationTimestamp: null
-  name: kong-ingress-knative
-rules:
 - apiGroups:
-  - networking.internal.knative.dev
+  - networking.k8s.io
   resources:
   - ingresses
   verbs:
@@ -1529,7 +1203,7 @@ rules:
   - list
   - watch
 - apiGroups:
-  - networking.internal.knative.dev
+  - networking.k8s.io
   resources:
   - ingresses/status
   verbs:
@@ -1564,47 +1238,6 @@ subjects:
   name: kong-serviceaccount
   namespace: kong
 ---
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
-  name: kong-ingress-gateway
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: kong-ingress-gateway
-subjects:
-- kind: ServiceAccount
-  name: kong-serviceaccount
-  namespace: kong
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
-  name: kong-ingress-knative
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: kong-ingress-knative
-subjects:
-- kind: ServiceAccount
-  name: kong-serviceaccount
-  namespace: kong
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: kong-admin
-  namespace: kong
-spec:
-  clusterIP: None
-  ports:
-  - name: admin
-    port: 8444
-    protocol: TCP
-    targetPort: 8444
-  selector:
-    app: proxy-kong
----
 apiVersion: v1
 kind: Service
 metadata:
@@ -1624,7 +1257,7 @@ spec:
     protocol: TCP
     targetPort: 8443
   selector:
-    app: proxy-kong
+    app: ingress-kong
   type: LoadBalancer
 ---
 apiVersion: v1
@@ -1657,115 +1290,18 @@ spec:
     metadata:
       annotations:
         kuma.io/gateway: enabled
-        kuma.io/service-account-token-volume: kong-serviceaccount-token
         traffic.sidecar.istio.io/includeInboundPorts: ""
       labels:
         app: ingress-kong
     spec:
-      automountServiceAccountToken: false
-      containers:
-      - env:
-        - name: CONTROLLER_KONG_ADMIN_SVC
-          value: kong/kong-admin
-        - name: CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY
-          value: "true"
-        - name: CONTROLLER_PUBLISH_SERVICE
-          value: kong/kong-proxy
-        - name: POD_NAME
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.name
-        - name: POD_NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{.CustomRegistries.KongIngress | default .ImageRepository | default .Registries.KongIngress}}{{.Images.KongIngress}}
-        imagePullPolicy: IfNotPresent
-        livenessProbe:
-          failureThreshold: 3
-          httpGet:
-            path: /healthz
-            port: 10254
-            scheme: HTTP
-          initialDelaySeconds: 5
-          periodSeconds: 10
-          successThreshold: 1
-          timeoutSeconds: 1
-        name: ingress-controller
-        ports:
-        - containerPort: 8080
-          name: webhook
-          protocol: TCP
-        - containerPort: 10255
-          name: cmetrics
-          protocol: TCP
-        readinessProbe:
-          failureThreshold: 3
-          httpGet:
-            path: /readyz
-            port: 10254
-            scheme: HTTP
-          initialDelaySeconds: 5
-          periodSeconds: 10
-          successThreshold: 1
-          timeoutSeconds: 1
-        volumeMounts:
-        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
-          name: kong-serviceaccount-token
-          readOnly: true
-      serviceAccountName: kong-serviceaccount
-      volumes:
-      - name: kong-serviceaccount-token
-        projected:
-          sources:
-          - serviceAccountToken:
-              expirationSeconds: 3607
-              path: token
-          - configMap:
-              items:
-              - key: ca.crt
-                path: ca.crt
-              name: kube-root-ca.crt
-          - downwardAPI:
-              items:
-              - fieldRef:
-                  apiVersion: v1
-                  fieldPath: metadata.namespace
-                path: namespace
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  labels:
-    app: proxy-kong
-  name: proxy-kong
-  namespace: kong
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: proxy-kong
-  template:
-    metadata:
-      annotations:
-        kuma.io/gateway: enabled
-        kuma.io/service-account-token-volume: kong-serviceaccount-token
-        traffic.sidecar.istio.io/includeInboundPorts: ""
-      labels:
-        app: proxy-kong
-    spec:
-      automountServiceAccountToken: false
       containers:
       - env:
         - name: KONG_PROXY_LISTEN
-          value: 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport
-            backlog=16384
+          value: 0.0.0.0:8000, 0.0.0.0:8443 ssl http2
         - name: KONG_PORT_MAPS
           value: 80:8000, 443:8443
         - name: KONG_ADMIN_LISTEN
-          value: 0.0.0.0:8444 http2 ssl reuseport backlog=16384
+          value: 127.0.0.1:8444 ssl
         - name: KONG_STATUS_LISTEN
           value: 0.0.0.0:8100
         - name: KONG_DATABASE
@@ -1780,14 +1316,12 @@ spec:
           value: /dev/stderr
         - name: KONG_PROXY_ERROR_LOG
           value: /dev/stderr
-        - name: KONG_ROUTER_FLAVOR
-          value: traditional
-        image: {{.CustomRegistries.Kong | default .ImageRepository | default .Registries.Kong}}{{.Images.Kong}}               
+        image: {{.CustomRegistries.Kong | default .ImageRepository | default .Registries.Kong}}{{.Images.Kong}}
         lifecycle:
           preStop:
             exec:
               command:
-              - /bin/bash
+              - /bin/sh
               - -c
               - kong quit
         livenessProbe:
@@ -1821,29 +1355,51 @@ spec:
           periodSeconds: 10
           successThreshold: 1
           timeoutSeconds: 1
+      - env:
+        - name: CONTROLLER_KONG_ADMIN_URL
+          value: https://127.0.0.1:8444
+        - name: CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY
+          value: "true"
+        - name: CONTROLLER_PUBLISH_SERVICE
+          value: kong/kong-proxy
+        - name: POD_NAME
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.name
+        - name: POD_NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: {{.CustomRegistries.KongIngress | default .ImageRepository | default .Registries.KongIngress}}{{.Images.KongIngress}}
+        imagePullPolicy: IfNotPresent
+        livenessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /healthz
+            port: 10254
+            scheme: HTTP
+          initialDelaySeconds: 5
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 1
+        name: ingress-controller
+        ports:
+        - containerPort: 8080
+          name: webhook
+          protocol: TCP
+        - containerPort: 10255
+          name: cmetrics
+          protocol: TCP
+        readinessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /readyz
+            port: 10254
+            scheme: HTTP
+          initialDelaySeconds: 5
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 1
       serviceAccountName: kong-serviceaccount
-      volumes:
-      - name: kong-serviceaccount-token
-        projected:
-          sources:
-          - serviceAccountToken:
-              expirationSeconds: 3607
-              path: token
-          - configMap:
-              items:
-              - key: ca.crt
-                path: ca.crt
-              name: kube-root-ca.crt
-          - downwardAPI:
-              items:
-              - fieldRef:
-                  apiVersion: v1
-                  fieldPath: metadata.namespace
-                path: namespace
----
-apiVersion: networking.k8s.io/v1
-kind: IngressClass
-metadata:
-  name: kong
-spec:
-  controller: ingress-controllers.konghq.com/kong
\ No newline at end of file
diff --git a/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.hash b/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.hash
index cfa30a64b..c162a05fb 100644
--- a/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.hash
+++ b/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.hash
@@ -2,4 +2,3 @@ sha256 0a834a749e86525e0eb16e7e80ce726e7c6a8e8d26fc5cc36c712305024da4e7  buildki
 sha256 27e974e2b07e087f66f0c9c2b43b6f3df6f7e1746a6252580f164427337d668c  buildkit-v0.10.3.linux-arm64.tar.gz
 sha256 8a8c2274852ea4bac6ccf1862a46679e93c013de8c5c0434a3040bab2e0a42a7  buildkit-v0.11.2.linux-arm64.tar.gz
 sha256 252408105ef1c2256980a105f727912603a831d6c57d3243b5d4cbb25fafb1b1  buildkit-v0.11.4.linux-arm64.tar.gz
-sha256 82b7452ffea166d3ef445597f9dbe3fa57c4d651e51ca7a9a581199116905524  buildkit-v0.11.6.linux-arm64.tar.gz
diff --git a/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.mk b/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.mk
index cb5ecc53f..01c4e6c9a 100644
--- a/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.mk
+++ b/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-BUILDKIT_BIN_AARCH64_VERSION = v0.11.6
-BUILDKIT_BIN_AARCH64_COMMIT = 2951a28cd7085eb18979b1f710678623d94ed578
+BUILDKIT_BIN_AARCH64_VERSION = v0.11.4
+BUILDKIT_BIN_AARCH64_COMMIT = 3abd1ef0c195cdc078d1657cb50f62a2cdc26f8f
 BUILDKIT_BIN_AARCH64_SITE = https://github.com/moby/buildkit/releases/download/$(BUILDKIT_BIN_AARCH64_VERSION)
 BUILDKIT_BIN_AARCH64_SOURCE = buildkit-$(BUILDKIT_BIN_AARCH64_VERSION).linux-arm64.tar.gz
 
diff --git a/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.hash b/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.hash
index 667ef5e33..ac277ad96 100644
--- a/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.hash
+++ b/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.hash
@@ -6,4 +6,3 @@ sha256 1b307268735c8f8e68b55781a6f4c03af38acc1bc29ba39ebaec6d422bccfb25  buildki
 sha256 fbc9c433cf77c5c00db6f797155edc60b44463524ae59a4961699dca15bcee00  buildkit-v0.10.3.linux-amd64.tar.gz
 sha256 6d0fe3f1ec2dce4ed2a5c9baf05fb279225b3b0e3bbee4092304fe284ca7fc47  buildkit-v0.11.2.linux-amd64.tar.gz
 sha256 6de87c88b1da0b1e899371dd4c0b883581401e2ddfb21a065510eeb3a8ac8743  buildkit-v0.11.4.linux-amd64.tar.gz
-sha256 3f66f5bfbe509aadf1c21a26acfa472fe4c19046aa00a2d59b99733da867cd76  buildkit-v0.11.6.linux-amd64.tar.gz
diff --git a/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.mk b/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.mk
index 459bd10ab..337febf17 100644
--- a/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.mk
+++ b/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-BUILDKIT_BIN_VERSION = v0.11.6
-BUILDKIT_BIN_COMMIT = 2951a28cd7085eb18979b1f710678623d94ed578
+BUILDKIT_BIN_VERSION = v0.11.4
+BUILDKIT_BIN_COMMIT = 3abd1ef0c195cdc078d1657cb50f62a2cdc26f8f
 BUILDKIT_BIN_SITE = https://github.com/moby/buildkit/releases/download/$(BUILDKIT_BIN_VERSION)
 BUILDKIT_BIN_SOURCE = buildkit-$(BUILDKIT_BIN_VERSION).linux-amd64.tar.gz
 
diff --git a/deploy/iso/minikube-iso/package/runc-master/runc-master.hash b/deploy/iso/minikube-iso/package/runc-master/runc-master.hash
index 9710791f5..ce8e10338 100644
--- a/deploy/iso/minikube-iso/package/runc-master/runc-master.hash
+++ b/deploy/iso/minikube-iso/package/runc-master/runc-master.hash
@@ -17,4 +17,3 @@ sha256 49fbb25fda9fc416ec79a23e5382d504a8972a88247fe074f63ab71b6f38a0a0 52de29d7
 sha256 9bb3be747237647cd232a47796d855e44fe295493f9661a4013835393ea65d46 a916309fff0f838eb94e928713dbc3c0d0ac7aa4.tar.gz
 sha256 ab2b685fcece3a97ddcb8402879d1e05580a5b94f9d0aa3bae339db1e5dae686 5fd4c4d144137e991c4acebb2146ab1483a97925.tar.gz
 sha256 76cbf30637cbb828794d72d32fb3fd6ff3139cd9743b8b44790fd110f43d96b2 v1.1.5.tar.gz
-sha256 f1885d6dfa188f8112328ac2355e5d67346174a2e2e795ec514a972bcbfcc2fa v1.1.7.tar.gz
diff --git a/deploy/iso/minikube-iso/package/runc-master/runc-master.mk b/deploy/iso/minikube-iso/package/runc-master/runc-master.mk
index efff39d94..464d1b470 100644
--- a/deploy/iso/minikube-iso/package/runc-master/runc-master.mk
+++ b/deploy/iso/minikube-iso/package/runc-master/runc-master.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-RUNC_MASTER_VERSION = v1.1.7
-RUNC_MASTER_COMMIT = 860f061b76bb4fc671f0f9e900f7d80ff93d4eb7
+RUNC_MASTER_VERSION = v1.1.5
+RUNC_MASTER_COMMIT = f19387a6bec4944c770f7668ab51c4348d9c2f38
 RUNC_MASTER_SITE = https://github.com/opencontainers/runc/archive
 RUNC_MASTER_SOURCE = $(RUNC_MASTER_VERSION).tar.gz
 RUNC_MASTER_LICENSE = Apache-2.0
diff --git a/deploy/kicbase/Dockerfile b/deploy/kicbase/Dockerfile
index b1891ab99..22e015366 100644
--- a/deploy/kicbase/Dockerfile
+++ b/deploy/kicbase/Dockerfile
@@ -18,8 +18,6 @@
 # https://systemd.io/CONTAINER_INTERFACE/
 
 
-# this ARG needs to be global to use it in `FROM` & is updated for new versions of ubuntu:focal-*
-ARG UBUNTU_FOCAL_IMAGE="ubuntu:focal-20230308"
 # multi-stage docker build so we can build auto-pause for arm64
 FROM golang:1.20.3 as auto-pause
 WORKDIR /src
@@ -39,9 +37,9 @@ RUN if [ "$PREBUILT_AUTO_PAUSE" != "true" ]; then cd ./cmd/auto-pause/ && go bui
 
 # start from ubuntu 20.04, this image is reasonably small as a starting point
 # for a kubernetes node image, it doesn't contain much we don't need
-FROM ${UBUNTU_FOCAL_IMAGE} as kicbase
+FROM ubuntu:focal-20230308 as kicbase
 
-ARG BUILDKIT_VERSION="v0.11.6"
+ARG BUILDKIT_VERSION="v0.11.4"
 ARG FUSE_OVERLAYFS_VERSION="v1.7.1"
 ARG CONTAINERD_FUSE_OVERLAYFS_VERSION="1.0.3"
 ARG CRIO_VERSION="1.24"
diff --git a/go.mod b/go.mod
index 0bf0ac492..d8d82625e 100644
--- a/go.mod
+++ b/go.mod
@@ -12,16 +12,16 @@ require (
 	github.com/blang/semver/v4 v4.0.0
 	github.com/briandowns/spinner v1.11.1
 	github.com/c4milo/gotoolkit v0.0.0-20190525173301-67483a18c17a // indirect
-	github.com/cenkalti/backoff/v4 v4.2.1
+	github.com/cenkalti/backoff/v4 v4.2.0
 	github.com/cheggaaa/pb/v3 v3.1.2
 	github.com/cloudevents/sdk-go/v2 v2.14.0
-	github.com/docker/docker v23.0.5+incompatible
+	github.com/docker/docker v23.0.3+incompatible
 	github.com/docker/go-units v0.5.0
 	github.com/docker/machine v0.16.2
 	github.com/elazarl/goproxy v0.0.0-20210110162100-a92cc753f88e
 	github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
 	github.com/google/go-cmp v0.5.9
-	github.com/google/go-containerregistry v0.15.0
+	github.com/google/go-containerregistry v0.14.0
 	github.com/google/slowjam v1.0.1
 	github.com/google/uuid v1.3.0
 	github.com/hashicorp/go-getter v1.7.1
@@ -40,7 +40,7 @@ require (
 	github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14
 	github.com/olekukonko/tablewriter v0.0.5
 	github.com/opencontainers/go-digest v1.0.0
-	github.com/otiai10/copy v1.11.0
+	github.com/otiai10/copy v1.10.0
 	github.com/pborman/uuid v1.2.1
 	github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2
 	github.com/pkg/browser v0.0.0-20160118053552-9302be274faa
@@ -48,55 +48,55 @@ require (
 	github.com/pkg/profile v1.7.0
 	github.com/pmezard/go-difflib v1.0.0
 	github.com/samalba/dockerclient v0.0.0-20160414174713-91d7393ff859 // indirect
-	github.com/shirou/gopsutil/v3 v3.23.4
+	github.com/shirou/gopsutil/v3 v3.23.3
 	github.com/spf13/cobra v1.7.0
 	github.com/spf13/pflag v1.0.5
 	github.com/spf13/viper v1.15.0
 	github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097
 	go.opencensus.io v0.24.0
-	go.opentelemetry.io/otel v1.15.1
-	go.opentelemetry.io/otel/sdk v1.15.1
-	go.opentelemetry.io/otel/trace v1.15.1
+	go.opentelemetry.io/otel v1.14.0
+	go.opentelemetry.io/otel/sdk v1.14.0
+	go.opentelemetry.io/otel/trace v1.14.0
 	golang.org/x/build v0.0.0-20190927031335-2835ba2e683f
 	golang.org/x/crypto v0.8.0
 	golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561
 	golang.org/x/mod v0.10.0
 	golang.org/x/oauth2 v0.7.0
-	golang.org/x/sync v0.2.0
-	golang.org/x/sys v0.8.0
-	golang.org/x/term v0.8.0
+	golang.org/x/sync v0.1.0
+	golang.org/x/sys v0.7.0
+	golang.org/x/term v0.7.0
 	golang.org/x/text v0.9.0
 	gonum.org/v1/plot v0.12.0
-	google.golang.org/api v0.121.0
+	google.golang.org/api v0.118.0
 	gopkg.in/yaml.v2 v2.4.0
-	k8s.io/api v0.27.1
-	k8s.io/apimachinery v0.27.1
-	k8s.io/client-go v0.27.1
+	k8s.io/api v0.27.0
+	k8s.io/apimachinery v0.27.0
+	k8s.io/client-go v0.27.0
 	k8s.io/cluster-bootstrap v0.0.0
-	k8s.io/component-base v0.27.1
-	k8s.io/klog/v2 v2.100.1
-	k8s.io/kubectl v0.27.1
+	k8s.io/component-base v0.27.0
+	k8s.io/klog/v2 v2.90.1
+	k8s.io/kubectl v0.27.0
 	k8s.io/utils v0.0.0-20230209194617-a36077c30491
-	libvirt.org/go/libvirt v1.9002.0
+	libvirt.org/go/libvirt v1.9000.0
 	sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0
 )
 
 require (
 	github.com/Xuanwo/go-locale v1.1.0
 	github.com/blang/semver v3.5.1+incompatible
-	github.com/docker/cli v23.0.5+incompatible
+	github.com/docker/cli v23.0.3+incompatible
 	github.com/docker/go-connections v0.4.0
 	github.com/google/go-github/v43 v43.0.0
 	github.com/juju/clock v1.0.3
 	github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b
 	github.com/juju/mutex/v2 v2.0.0
-	github.com/opencontainers/runc v1.1.7
+	github.com/opencontainers/runc v1.1.6
 	github.com/santhosh-tekuri/jsonschema/v5 v5.3.0
 )
 
 require (
 	cloud.google.com/go v0.110.0 // indirect
-	cloud.google.com/go/compute v1.19.1 // indirect
+	cloud.google.com/go/compute v1.19.0 // indirect
 	cloud.google.com/go/compute/metadata v0.2.3 // indirect
 	cloud.google.com/go/iam v0.13.0 // indirect
 	cloud.google.com/go/monitoring v1.13.0 // indirect
@@ -105,7 +105,7 @@ require (
 	github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
 	github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.37.1 // indirect
 	github.com/MakeNowJust/heredoc v1.0.0 // indirect
-	github.com/Microsoft/go-winio v0.6.1 // indirect
+	github.com/Microsoft/go-winio v0.6.0 // indirect
 	github.com/VividCortex/ewma v1.2.0 // indirect
 	github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b // indirect
 	github.com/aws/aws-sdk-go v1.44.122 // indirect
@@ -129,7 +129,7 @@ require (
 	github.com/fvbommel/sortorder v1.0.1 // indirect
 	github.com/go-fonts/liberation v0.2.0 // indirect
 	github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 // indirect
-	github.com/go-logr/logr v1.2.4 // indirect
+	github.com/go-logr/logr v1.2.3 // indirect
 	github.com/go-logr/stdr v1.2.2 // indirect
 	github.com/go-ole/go-ole v1.2.6 // indirect
 	github.com/go-openapi/jsonpointer v0.19.6 // indirect
@@ -145,7 +145,7 @@ require (
 	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.3 // indirect
+	github.com/google/s2a-go v0.1.0 // indirect
 	github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
 	github.com/googleapis/gax-go/v2 v2.8.0 // indirect
 	github.com/gookit/color v1.5.2 // indirect
@@ -160,7 +160,7 @@ require (
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
 	github.com/juju/errors v0.0.0-20220203013757-bd733f3c86b9 // indirect
-	github.com/klauspost/compress v1.16.5 // indirect
+	github.com/klauspost/compress v1.16.0 // indirect
 	github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
 	github.com/magiconair/properties v1.8.7 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect
@@ -181,7 +181,7 @@ require (
 	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/muesli/reflow v0.3.0 // indirect
 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
-	github.com/opencontainers/image-spec v1.1.0-rc3 // indirect
+	github.com/opencontainers/image-spec v1.1.0-rc2 // indirect
 	github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect
 	github.com/pelletier/go-toml/v2 v2.0.6 // indirect
 	github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
@@ -192,7 +192,7 @@ require (
 	github.com/prometheus/prometheus v0.35.0 // indirect
 	github.com/rivo/uniseg v0.2.0 // indirect
 	github.com/russross/blackfriday/v2 v2.1.0 // indirect
-	github.com/shoenig/go-m1cpu v0.1.5 // indirect
+	github.com/shoenig/go-m1cpu v0.1.4 // indirect
 	github.com/sirupsen/logrus v1.9.0 // indirect
 	github.com/spf13/afero v1.9.3 // indirect
 	github.com/spf13/cast v1.5.0 // indirect
@@ -201,7 +201,7 @@ require (
 	github.com/tklauser/go-sysconf v0.3.11 // indirect
 	github.com/tklauser/numcpus v0.6.0 // indirect
 	github.com/ulikunitz/xz v0.5.10 // indirect
-	github.com/vbatts/tar-split v0.11.3 // indirect
+	github.com/vbatts/tar-split v0.11.2 // indirect
 	github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
 	github.com/yusufpapurcu/wmi v1.2.2 // indirect
 	go.uber.org/atomic v1.10.0 // indirect
@@ -210,10 +210,10 @@ require (
 	golang.org/x/image v0.5.0 // indirect
 	golang.org/x/net v0.9.0 // indirect
 	golang.org/x/time v0.1.0 // indirect
-	golang.org/x/tools v0.8.0 // indirect
+	golang.org/x/tools v0.7.0 // indirect
 	golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
 	google.golang.org/appengine v1.6.7 // indirect
-	google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
+	google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd // indirect
 	google.golang.org/grpc v1.54.0 // indirect
 	google.golang.org/protobuf v1.30.0 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
diff --git a/go.sum b/go.sum
index 66d97056f..57e167d93 100644
--- a/go.sum
+++ b/go.sum
@@ -73,8 +73,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz
 cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
 cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
 cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
-cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY=
-cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE=
+cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ=
+cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU=
 cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
 cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
 cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
@@ -241,7 +241,6 @@ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ
 github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
 github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 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=
@@ -262,8 +261,8 @@ github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JP
 github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
 github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
 github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
-github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
-github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
+github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg=
+github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE=
 github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg=
 github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg=
 github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ=
@@ -364,8 +363,8 @@ github.com/c4milo/gotoolkit v0.0.0-20190525173301-67483a18c17a/go.mod h1:txokOny
 github.com/cenkalti/backoff v0.0.0-20141124221459-9831e1e25c87/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
 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.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
+github.com/cenkalti/backoff/v4 v4.2.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,8 +559,8 @@ github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm
 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 v23.0.5+incompatible h1:ufWmAOuD3Vmr7JP2G5K3cyuNC4YZWiAsuDEvFVVDafE=
-github.com/docker/cli v23.0.5+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v23.0.3+incompatible h1:Zcse1DuDqBdgI7OQDV8Go7b83xLgfhW1eza4HfEdxpY=
+github.com/docker/cli v23.0.3+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=
@@ -572,8 +571,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 v23.0.5+incompatible h1:DaxtlTJjFSnLOXVNUBU1+6kXGz2lpDoEAH6QoxaSg8k=
-github.com/docker/docker v23.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v23.0.3+incompatible h1:9GhVsShNWz1hO//9BNg/dpMnZW25KydO4wtVxWAIbho=
+github.com/docker/docker v23.0.3+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=
@@ -677,9 +676,8 @@ github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg
 github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
 github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
-github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI=
 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
@@ -844,8 +842,8 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
 github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0=
-github.com/google/go-containerregistry v0.15.0 h1:kZjY9l3HtwCsgCYWfHQqtkd1jlq8nhAn3eEobc0gee0=
-github.com/google/go-containerregistry v0.15.0/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q=
+github.com/google/go-containerregistry v0.14.0 h1:z58vMqHxuwvAsVwvKEkmVBz2TlgBgH5k6koEXBtlYkw=
+github.com/google/go-containerregistry v0.14.0/go.mod h1:aiJ2fp/SXvkWgmYHioXnbMdlgB8eXiiYOY55gfN91Wk=
 github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
 github.com/google/go-github/v43 v43.0.0 h1:y+GL7LIsAIF2NZlJ46ZoC/D1W1ivZasT0lnWHMYPZ+U=
 github.com/google/go-github/v43 v43.0.0/go.mod h1:ZkTvvmCXBvsfPpTHXnH/d2hP9Y0cTbvN9kr5xqyXOIc=
@@ -882,8 +880,8 @@ github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8I
 github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg=
 github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE=
-github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
+github.com/google/s2a-go v0.1.0 h1:3Qm0liEiCErViKERO2Su5wp+9PfMRiuS6XB5FvpKnYQ=
+github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM=
 github.com/google/slowjam v1.0.1 h1:RrR0qrKELIC1iv7r1FgbtohxDl6QytIj67B9brpgrdg=
 github.com/google/slowjam v1.0.1/go.mod h1:13Ws7TkS56WroVpQFout67W7EjTn+VUVhKxJqPgopWg=
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -1079,8 +1077,8 @@ github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs
 github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
 github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
 github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
-github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
-github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
+github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
+github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
 github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE=
 github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
 github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM=
@@ -1279,8 +1277,8 @@ github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zM
 github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
 github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
 github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
-github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8=
-github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
+github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
+github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
 github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
 github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
 github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
@@ -1288,8 +1286,8 @@ github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rm
 github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0=
 github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0=
 github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc=
-github.com/opencontainers/runc v1.1.7 h1:y2EZDS8sNng4Ksf0GUYNhKbTShZJPJg1FiXJNH/uoCk=
-github.com/opencontainers/runc v1.1.7/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50=
+github.com/opencontainers/runc v1.1.6 h1:XbhB8IfG/EsnhNvZtNdLB0GBw92GYEFvKlhaJk9jUgA=
+github.com/opencontainers/runc v1.1.6/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50=
 github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
 github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
 github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
@@ -1305,8 +1303,8 @@ github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xA
 github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
-github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc=
-github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww=
+github.com/otiai10/copy v1.10.0 h1:znyI7l134wNg/wDktoVQPxPkgvhDfGCYUasey+h0rDQ=
+github.com/otiai10/copy v1.10.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww=
 github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -1429,10 +1427,10 @@ 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.23.4 h1:hZwmDxZs7Ewt75DV81r4pFMqbq+di2cbt9FsQBqLD2o=
-github.com/shirou/gopsutil/v3 v3.23.4/go.mod h1:ZcGxyfzAMRevhUR2+cfhXDH6gQdFYE/t8j1nsU4mPI8=
-github.com/shoenig/go-m1cpu v0.1.5 h1:LF57Z/Fpb/WdGLjt2HZilNnmZOxg/q2bSKTQhgbrLrQ=
-github.com/shoenig/go-m1cpu v0.1.5/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ=
+github.com/shirou/gopsutil/v3 v3.23.3 h1:Syt5vVZXUDXPEXpIBt5ziWsJ4LdSAAxF4l/xZeQgSEE=
+github.com/shirou/gopsutil/v3 v3.23.3/go.mod h1:lSBNN6t3+D6W5e5nXTxc8KIMMVxAcS+6IJlffjRRlMU=
+github.com/shoenig/go-m1cpu v0.1.4 h1:SZPIgRM2sEF9NJy50mRHu9PKGwxyyTTJIWvCtgVbozs=
+github.com/shoenig/go-m1cpu v0.1.4/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ=
 github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c=
 github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
 github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
@@ -1538,10 +1536,9 @@ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijb
 github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
-github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8=
 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
-github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck=
-github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY=
+github.com/vbatts/tar-split v0.11.2 h1:Via6XqJr0hceW4wff3QRzD5gAk/tatMw/4ZA7cTlIME=
+github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI=
 github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
 github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
 github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho=
@@ -1615,8 +1612,8 @@ go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzox
 go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs=
 go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ=
 go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ=
-go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8=
-go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc=
+go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
+go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
 go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM=
 go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4=
 go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40=
@@ -1632,16 +1629,16 @@ go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa
 go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc=
 go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs=
 go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E=
-go.opentelemetry.io/otel/sdk v1.15.1 h1:5FKR+skgpzvhPQHIEfcwMYjCBr14LWzs3uSqKiQzETI=
-go.opentelemetry.io/otel/sdk v1.15.1/go.mod h1:8rVtxQfrbmbHKfqzpQkT5EzZMcbMBwTzNAggbEAM0KA=
+go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY=
+go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM=
 go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE=
 go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE=
 go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw=
 go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk=
 go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE=
 go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0=
-go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY=
-go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8=
+go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M=
+go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ=
 go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
@@ -1698,7 +1695,6 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
 golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
 golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1877,8 +1873,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
-golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -2019,14 +2015,12 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
 golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -2034,8 +2028,8 @@ golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuX
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.0.0-20221017184919-83659145692c/go.mod h1:VTIZ7TEbF0BS9Sv9lPTvGbtW8i4z6GGbJBCM37uMCzY=
 golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
+golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -2045,7 +2039,6 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
@@ -2138,8 +2131,8 @@ golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyj
 golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
 golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y=
-golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
+golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
+golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -2202,8 +2195,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.121.0 h1:8Oopoo8Vavxx6gt+sgs8s8/X60WBAtKQq6JqnkF+xow=
-google.golang.org/api v0.121.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms=
+google.golang.org/api v0.118.0 h1:FNfHq9Z2GKULxu7cEhCaB0wWQHg43UpomrrN+24ZRdE=
+google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E=
 google.golang.org/appengine v0.0.0-20160205025855-6a436539be38/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 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=
@@ -2323,8 +2316,8 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw
 google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
 google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
 google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A=
-google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
+google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd h1:sLpv7bNL1AsX3fdnWh9WVh7ejIzXdOc1RRHGeAmeStU=
+google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
 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=
@@ -2450,8 +2443,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.27.1 h1:Z6zUGQ1Vd10tJ+gHcNNNgkV5emCyW+v2XTmn+CLjSd0=
-k8s.io/api v0.27.1/go.mod h1:z5g/BpAiD+f6AArpqNjkY+cji8ueZDU/WV1jcj5Jk4E=
+k8s.io/api v0.27.0 h1:2owttiA8Oa+J3idFeq8TSnNpm4y6AOGPI3PDbIpp2cE=
+k8s.io/api v0.27.0/go.mod h1:Wl+QRvQlh+T8SK5f4F6YBhhyH6hrFO08nl74xZb1MUE=
 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=
@@ -2460,8 +2453,8 @@ 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.27.1 h1:EGuZiLI95UQQcClhanryclaQE6xjg1Bts6/L3cD7zyc=
-k8s.io/apimachinery v0.27.1/go.mod h1:5ikh59fK3AJ287GUvpUsryoMFtH9zj/ARfWCo3AyXTM=
+k8s.io/apimachinery v0.27.0 h1:vEyy/PVMbPMCPutrssCVHCf0JNZ0Px+YqPi82K2ALlk=
+k8s.io/apimachinery v0.27.0/go.mod h1:5ikh59fK3AJ287GUvpUsryoMFtH9zj/ARfWCo3AyXTM=
 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=
@@ -2472,8 +2465,8 @@ 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.27.1 h1:oXsfhW/qncM1wDmWBIuDzRHNS2tLhK3BZv512Nc59W8=
-k8s.io/client-go v0.27.1/go.mod h1:f8LHMUkVb3b9N8bWturc+EDtVVVwZ7ueTVquFAJb2vA=
+k8s.io/client-go v0.27.0 h1:DyZS1fJkv73tEy7rWv4VF6NwGeJ7SKvNaLRXZBYLA+4=
+k8s.io/client-go v0.27.0/go.mod h1:XVEmpNnM+4JYO3EENoFV/ZDv3KxKVJUnzGo70avk+C4=
 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=
@@ -2481,8 +2474,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.27.1 h1:kEB8p8lzi4gCs5f2SPU242vOumHJ6EOsOnDM3tTuDTM=
-k8s.io/component-base v0.27.1/go.mod h1:UGEd8+gxE4YWoigz5/lb3af3Q24w98pDseXcXZjw+E0=
+k8s.io/component-base v0.27.0 h1:g3/FkscH8Uqg9SiDCEfhfhTVwKiVo4T2+iBwUqiFkMg=
+k8s.io/component-base v0.27.0/go.mod h1:PXyBQd/vYYjqqGB83rnsHffTTG6zlmxZAd0ZSOu6evk=
 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=
@@ -2500,8 +2493,8 @@ k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
 k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
 k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
 k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
-k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
+k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw=
+k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
 k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
 k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM=
 k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
@@ -2509,8 +2502,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-20230308215209-15aac26d736a h1:gmovKNur38vgoWfGtP5QOGNOA7ki4n6qNYoFAgMlNvg=
 k8s.io/kube-openapi v0.0.0-20230308215209-15aac26d736a/go.mod h1:y5VtZWM9sHHc2ZodIH/6SHzXj+TPU5USoA8lcIeKEKY=
-k8s.io/kubectl v0.27.1 h1:9T5c5KdpburYiW8XKQSH0Uly1kMNE90aGSnbYUZNdcA=
-k8s.io/kubectl v0.27.1/go.mod h1:QsAkSmrRsKTPlAFzF8kODGDl4p35BIwQnc9XFhkcsy8=
+k8s.io/kubectl v0.27.0 h1:ZcWS6ufixDXwovWtzF149gd5GzxdpsIl4YqfioSkq5w=
+k8s.io/kubectl v0.27.0/go.mod h1:tyFzo+6WfbUEccm8rFIliQ79FAmm9uTFN+1oC5Ytamo=
 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=
@@ -2521,8 +2514,8 @@ k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/
 k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY=
 k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
 launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM=
-libvirt.org/go/libvirt v1.9002.0 h1:HYuG87txJ0ATlXH93ygKswf/8DF51TzKcVBFxw+Lam8=
-libvirt.org/go/libvirt v1.9002.0/go.mod h1:1WiFE8EjZfq+FCVog+rvr1yatKbKZ9FaFMZgEqxEJqQ=
+libvirt.org/go/libvirt v1.9000.0 h1:u95YEBuk85v2GO6+M3qv+WdAu2JKQSMWhCJ4R+kNDQo=
+libvirt.org/go/libvirt v1.9000.0/go.mod h1:1WiFE8EjZfq+FCVog+rvr1yatKbKZ9FaFMZgEqxEJqQ=
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=
 rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
diff --git a/hack/jenkins/common.ps1 b/hack/jenkins/common.ps1
index 053405bd6..e66941bed 100644
--- a/hack/jenkins/common.ps1
+++ b/hack/jenkins/common.ps1
@@ -68,7 +68,7 @@ gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/installers/check
 ./out/check_install_golang.ps1
 
 # Download gopogh and gotestsum
-go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
 go install gotest.tools/gotestsum@v1.10.0
 # temporary: remove the old install of gopogh & gotestsum as it's taking priority over our current install, preventing updating
 if (Test-Path "C:\Go") {
diff --git a/hack/jenkins/common.sh b/hack/jenkins/common.sh
index 0a1161089..62df575b2 100755
--- a/hack/jenkins/common.sh
+++ b/hack/jenkins/common.sh
@@ -429,7 +429,7 @@ if ! type "jq" > /dev/null; then
 fi
 
 echo ">> Installing gopogh"
-go install github.com/medyagh/gopogh/cmd/gopogh@v0.17.0
+go install github.com/medyagh/gopogh/cmd/gopogh@v0.16.0
 # temporary: remove the old install of gopogh as it's taking priority over our current install, preventing updating
 sudo rm -f /usr/local/bin/gopogh
 
diff --git a/hack/jenkins/cron/cleanup_and_reboot_Linux.sh b/hack/jenkins/cron/cleanup_and_reboot_Linux.sh
index 462fd0274..401924350 100755
--- a/hack/jenkins/cron/cleanup_and_reboot_Linux.sh
+++ b/hack/jenkins/cron/cleanup_and_reboot_Linux.sh
@@ -22,7 +22,7 @@ function check_jenkins() {
   fi
   pstree "${jenkins_pid}" \
         | egrep -i 'bash|integration|e2e|minikube' \
-        && echo "tests are running on pid ${jenkins_pid} ..." \
+        && echo "tests are is running on pid ${jenkins_pid} ..." \
         && exit 1
 }
 
@@ -124,7 +124,4 @@ systemctl list-unit-files --state=enabled \
         | xargs systemctl disable
 
 # update and reboot
-check_jenkins
-apt update -y && apt upgrade -y && apt-get autoclean
-check_jenkins
-reboot
+apt update -y && apt upgrade -y && apt-get autoclean && reboot
diff --git a/hack/jenkins/installers/check_install_cni_plugins.sh b/hack/jenkins/installers/check_install_cni_plugins.sh
deleted file mode 100755
index da5c1550b..000000000
--- a/hack/jenkins/installers/check_install_cni_plugins.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-# Copyright 2023 The Kubernetes Authors All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -eux -o pipefail
-
-CNI_PLUGIN_VERSION="v1.2.0"
-CNI_PLUGIN_TAR="cni-plugins-linux-amd64-$CNI_PLUGIN_VERSION.tgz"
-CNI_PLUGIN_INSTALL_DIR="/opt/cni/bin"
-
-curl -qL -O "https://github.com/containernetworking/plugins/releases/download/$CNI_PLUGIN_VERSION/$CNI_PLUGIN_TAR"
-sudo rm -rf "$CNI_PLUGIN_INSTALL_DIR"
-sudo mkdir -p "$CNI_PLUGIN_INSTALL_DIR"
-sudo tar -xf "$CNI_PLUGIN_TAR" -C "$CNI_PLUGIN_INSTALL_DIR"
-rm "$CNI_PLUGIN_TAR"
diff --git a/hack/jenkins/installers/check_install_gh.sh b/hack/jenkins/installers/check_install_gh.sh
index 0e2d2886d..a2f0431e6 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.28.0"
+GH_VERSION="2.27.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/jenkins/preload_generation.sh b/hack/jenkins/preload_generation.sh
index 459f178bf..2aeddd3aa 100755
--- a/hack/jenkins/preload_generation.sh
+++ b/hack/jenkins/preload_generation.sh
@@ -25,6 +25,5 @@ source ./hack/jenkins/installers/check_install_linux_crons.sh
 # Make sure the right golang version is installed based on Makefile
 ./hack/jenkins/installers/check_install_golang.sh /usr/local
 
-make update-kubeadm-constants
 make upload-preloaded-images-tar
 make clean
diff --git a/hack/update/cri_dockerd_version/update_cri_dockerd_version.go b/hack/update/cri_dockerd_version/update_cri_dockerd_version.go
index ffa6062bc..250b019f9 100644
--- a/hack/update/cri_dockerd_version/update_cri_dockerd_version.go
+++ b/hack/update/cri_dockerd_version/update_cri_dockerd_version.go
@@ -47,7 +47,7 @@ var (
 		},
 		"hack/jenkins/linux_integration_tests_none.sh": {
 			Replace: map[string]string{
-				`CRI_DOCKERD_VERSION=".*"`: `CRI_DOCKERD_VERSION="{{.Version}}"`,
+				`CRI_DOCKERD_VERSION=".*"`: `CRI_DOCKERD_VERSION="v{{.Version}}"`,
 				`CRI_DOCKERD_COMMIT=".*"`:  `CRI_DOCKERD_COMMIT="{{.FullCommit}}"`,
 			},
 		},
diff --git a/hack/update/golang_version/update_golang_version.go b/hack/update/golang_version/update_golang_version.go
index 5e6f12a03..f21e6513b 100644
--- a/hack/update/golang_version/update_golang_version.go
+++ b/hack/update/golang_version/update_golang_version.go
@@ -110,11 +110,6 @@ var (
 				`GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`,
 			},
 		},
-		".github/workflows/update-ubuntu-version.yml": {
-			Replace: map[string]string{
-				`GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`,
-			},
-		},
 		".github/workflows/update-cloud-spanner-emulator-version.yml": {
 			Replace: map[string]string{
 				`GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`,
diff --git a/hack/update/kubeadm_constants/update_kubeadm_constants.go b/hack/update/kubeadm_constants/update_kubeadm_constants.go
index ced262b9a..46e08d0cd 100644
--- a/hack/update/kubeadm_constants/update_kubeadm_constants.go
+++ b/hack/update/kubeadm_constants/update_kubeadm_constants.go
@@ -24,7 +24,6 @@ import (
 	"net/http"
 	"os"
 	"os/exec"
-	"runtime"
 	"strings"
 	"text/template"
 	"time"
@@ -39,8 +38,8 @@ import (
 const (
 	// default context timeout
 	cxTimeout                 = 5 * time.Minute
-	kubeadmReleaseURL         = "https://dl.k8s.io/release/%s/bin/linux/%s/kubeadm"
-	kubeadmBinaryName         = "kubeadm-linux-%s-%s"
+	kubeadmReleaseURL         = "https://dl.k8s.io/release/%s/bin/linux/amd64/kubeadm"
+	kubeadmBinaryName         = "kubeadm-linux-amd64-%s"
 	minikubeConstantsFilePath = "pkg/minikube/constants/constants_kubeadm_images.go"
 	kubeadmImagesTemplate     = `
 		{{- range $version, $element := .}}
@@ -110,9 +109,8 @@ func main() {
 }
 
 func getKubeadmImagesMapString(version string) (string, error) {
-	arch := runtime.GOARCH
-	url := fmt.Sprintf(kubeadmReleaseURL, version, arch)
-	fileName := fmt.Sprintf(kubeadmBinaryName, arch, version)
+	url := fmt.Sprintf(kubeadmReleaseURL, version)
+	fileName := fmt.Sprintf(kubeadmBinaryName, version)
 	if err := downloadFile(url, fileName); err != nil {
 		klog.Errorf("failed to download kubeadm binary %s", err.Error())
 		return "", err
diff --git a/hack/update/ubuntu_version/update_ubuntu_version.go b/hack/update/ubuntu_version/update_ubuntu_version.go
deleted file mode 100644
index 48768e88e..000000000
--- a/hack/update/ubuntu_version/update_ubuntu_version.go
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-Copyright 2023 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.
-*/
-
-/*
-Copyright 2022 The Kubernetes Authors All rights reserved.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-    http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
-	"encoding/json"
-	"fmt"
-	"io"
-	"net/http"
-	"strings"
-
-	"k8s.io/klog/v2"
-
-	"k8s.io/minikube/hack/update"
-)
-
-const (
-	dockerHubUbuntuBaseURL = "https://hub.docker.com/v2/repositories/library/ubuntu/tags"
-)
-
-var (
-	schema = map[string]update.Item{
-		"deploy/kicbase/Dockerfile": {
-			Replace: map[string]string{
-				`UBUNTU_FOCAL_IMAGE=.*`: `UBUNTU_FOCAL_IMAGE="{{.LatestVersion}}"`,
-			},
-		},
-	}
-)
-
-// Data holds latest Ubuntu focal version in semver format.
-type Data struct {
-	LatestVersion string
-}
-
-// Response is used to unmarshal the response from Docker Hub
-type Response struct {
-	Results []struct {
-		Name string `json:"name"`
-	}
-}
-
-func getLatestVersion() (string, error) {
-	resp, err := http.Get(dockerHubUbuntuBaseURL)
-	if err != nil {
-		return "", fmt.Errorf("unable to get Ubuntu focal's latest version: %v", err)
-	}
-	defer resp.Body.Close()
-
-	body, err := io.ReadAll(resp.Body)
-	if err != nil {
-		return "", fmt.Errorf("unable to read HTTP response from Docker Hub: %v", err)
-	}
-
-	var content Response
-	err = json.Unmarshal(body, &content)
-	if err != nil {
-		return "", fmt.Errorf("unable to unmarshal response from Docker Hub: %v", err)
-	}
-
-	for _, i := range content.Results {
-		if strings.Contains(i.Name, "focal-") {
-			return i.Name, nil
-		}
-	}
-
-	return "", fmt.Errorf("response from Docker Hub does not contain a latest focal image")
-}
-
-func main() {
-	// get Ubuntu Focal latest version
-	latest, err := getLatestVersion()
-	if err != nil {
-		klog.Fatalf("Unable to find latest ubuntu:focal version: %v\n", err)
-	}
-	data := Data{LatestVersion: fmt.Sprintf("ubuntu:%s", latest)}
-	klog.Infof("Ubuntu focal latest version: %s", latest)
-
-	update.Apply(schema, data)
-}
diff --git a/pkg/addons/addons.go b/pkg/addons/addons.go
index c45356246..1bc1a57f7 100644
--- a/pkg/addons/addons.go
+++ b/pkg/addons/addons.go
@@ -439,7 +439,7 @@ func enableOrDisableAddonInternal(cc *config.ClusterConfig, addon *assets.Addon,
 
 	// Retry, because sometimes we race against an apiserver restart
 	apply := func() error {
-		ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
+		ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
 		defer cancel()
 		_, err := runner.RunCmd(kubectlCommand(ctx, cc, deployFiles, enable, force))
 		if err != nil {
diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go
index e92f728a0..931f26874 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.39-1683246328-16426"
+	Version = "v0.0.39-1680813808-16252"
 
 	// SHA of the kic base image
-	baseImageSHA = "c063371f0e8933096fec0d2952100c31c4e17f2898a91dfbf036ee0048f9ee72"
+	baseImageSHA = "4d62d233cf4143189be209981d7b5b8b7fbf20ac03586d159c4c05276e84e45f"
 	// 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 40df50455..6bff6fac9 100644
--- a/pkg/minikube/assets/addons.go
+++ b/pkg/minikube/assets/addons.go
@@ -293,9 +293,9 @@ var Addons = map[string]*Addon{
 			vmpath.GuestAddonsDir,
 			"kong-ingress-controller.yaml",
 			"0640"),
-	}, false, "kong", "3rd party (Kong HQ)", "@gAmUssA", "https://minikube.sigs.k8s.io/docs/handbook/addons/kong-ingress/", map[string]string{
-		"Kong":        "kong:3.2@sha256:f5f51af49fa1f5a7600e60bb51ebd760b16fd020bb16bba2b70d36a54f3d6ac8",
-		"KongIngress": "kong/kubernetes-ingress-controller:2.9.3@sha256:debe488e0f1ac0019f5f36d8185476526cdcec972486886a5e23e27e00960814",
+	}, false, "kong", "3rd party (Kong HQ)", "", "https://minikube.sigs.k8s.io/docs/handbook/addons/kong-ingress/", map[string]string{
+		"Kong":        "kong:2.7@sha256:4d3e93207305ace881fe9e95ac27717b6fbdd9e0ec1873c34e94908a4f4c9335",
+		"KongIngress": "kong/kubernetes-ingress-controller:2.1.1@sha256:60e4102ab2da7f61e9c478747f0762d06a6166b5f300526b237ed7354c3cb4c8",
 	}, map[string]string{
 		"Kong":        "docker.io",
 		"KongIngress": "docker.io",
@@ -736,7 +736,7 @@ var Addons = map[string]*Addon{
 		MustBinAsset(addons.HeadlampAssets, "headlamp/headlamp-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "headlamp-clusterrolebinding.yaml", "6040"),
 	}, false, "headlamp", "3rd party (kinvolk.io)", "yolossn", "https://minikube.sigs.k8s.io/docs/handbook/addons/headlamp/",
 		map[string]string{
-			"Headlamp": "headlamp-k8s/headlamp:v0.17.0@sha256:945b59342f792e90666d4eb3fb537c7f66c63e8e4ae661c9624136d2e8c37f78",
+			"Headlamp": "headlamp-k8s/headlamp:v0.16.0@sha256:f6f50c4fea1520a465b9d75a399245e2aea727d64bcc533442b668757d11a947",
 		},
 		map[string]string{
 			"Headlamp": "ghcr.io",
@@ -744,7 +744,7 @@ var Addons = map[string]*Addon{
 	"cloud-spanner": NewAddon([]*BinAsset{
 		MustBinAsset(addons.CloudSpanner, "cloud-spanner/deployment.yaml", vmpath.GuestAddonsDir, "deployment.yaml", "6040"),
 	}, false, "cloud-spanner", "Google", "", "https://minikube.sigs.k8s.io/docs/handbook/addons/cloud-spanner/", map[string]string{
-		"CloudSpanner": "cloud-spanner-emulator/emulator:1.5.4@sha256:026cec4d30c4b75ab49e01b1f7b43c4b97485b1df9f79b8a0be3ab156fb6bb68",
+		"CloudSpanner": "cloud-spanner-emulator/emulator:1.5.3@sha256:a5c86eba021e0f30f43e5fa604b23fbe297e0ada34e01a8ca694d1830f925a9f",
 	}, map[string]string{
 		"CloudSpanner": "gcr.io",
 	}),
diff --git a/pkg/minikube/bootstrapper/bsutil/files.go b/pkg/minikube/bootstrapper/bsutil/files.go
index 9a6b7d96d..28e91dff4 100644
--- a/pkg/minikube/bootstrapper/bsutil/files.go
+++ b/pkg/minikube/bootstrapper/bsutil/files.go
@@ -19,12 +19,17 @@ package bsutil
 
 import (
 	"os/exec"
+	"path"
 
 	"github.com/pkg/errors"
 	"k8s.io/minikube/pkg/minikube/assets"
 	"k8s.io/minikube/pkg/minikube/command"
+	"k8s.io/minikube/pkg/minikube/vmpath"
 )
 
+// KubeadmYamlPath is the path to the kubeadm configuration
+var KubeadmYamlPath = path.Join(vmpath.GuestEphemeralDir, "kubeadm.yaml")
+
 const (
 	// KubeletServiceFile is the file for the systemd kubelet.service
 	KubeletServiceFile = "/lib/systemd/system/kubelet.service"
diff --git a/pkg/minikube/bootstrapper/certs.go b/pkg/minikube/bootstrapper/certs.go
index 766655a5d..8b4b11b76 100644
--- a/pkg/minikube/bootstrapper/certs.go
+++ b/pkg/minikube/bootstrapper/certs.go
@@ -140,10 +140,6 @@ func SetupCerts(cmd command.Runner, k8s config.ClusterConfig, n config.Node) err
 	if err := installCertSymlinks(cmd, caCerts); err != nil {
 		return errors.Wrapf(err, "certificate symlinks")
 	}
-
-	if err := generateKubeadmCerts(cmd, k8s); err != nil {
-		return fmt.Errorf("failed to renew kubeadm certs: %v", err)
-	}
 	return nil
 }
 
@@ -348,38 +344,6 @@ func generateProfileCerts(cfg config.ClusterConfig, n config.Node, ccs CACerts,
 	return xfer, nil
 }
 
-func generateKubeadmCerts(cmd command.Runner, cc config.ClusterConfig) error {
-	if _, err := cmd.RunCmd(exec.Command("ls", path.Join(vmpath.GuestPersistentDir, "certs", "etcd"))); err != nil {
-		klog.Infof("certs directory doesn't exist, likely first start: %v", err)
-		return nil
-	}
-
-	expiredCerts := false
-	certs := []string{"apiserver-etcd-client", "apiserver-kubelet-client", "etcd-server", "etcd-healthcheck-client", "etcd-peer", "front-proxy-client"}
-	for _, cert := range certs {
-		certPath := []string{vmpath.GuestPersistentDir, "certs"}
-		// certs starting with "etcd-" are in the "etcd" dir
-		// ex: etcd-server => etcd/server
-		if strings.HasPrefix(cert, "etcd-") {
-			certPath = append(certPath, "etcd")
-		}
-		certPath = append(certPath, strings.TrimPrefix(cert, "etcd-")+".crt")
-		if !isKubeadmCertValid(cmd, path.Join(certPath...)) {
-			expiredCerts = true
-		}
-	}
-	if !expiredCerts {
-		return nil
-	}
-	out.WarningT("kubeadm certificates have expired. Generating new ones...")
-	kubeadmPath := path.Join(vmpath.GuestPersistentDir, "binaries", cc.KubernetesConfig.KubernetesVersion)
-	bashCmd := fmt.Sprintf("sudo env PATH=\"%s:$PATH\" kubeadm certs renew all --config %s", kubeadmPath, constants.KubeadmYamlPath)
-	if _, err := cmd.RunCmd(exec.Command("/bin/bash", "-c", bashCmd)); err != nil {
-		return fmt.Errorf("failed to renew kubeadm certs: %v", err)
-	}
-	return nil
-}
-
 // isValidPEMCertificate checks whether the input file is a valid PEM certificate (with at least one CERTIFICATE block)
 func isValidPEMCertificate(filePath string) (bool, error) {
 	fileBytes, err := os.ReadFile(filePath)
@@ -581,11 +545,3 @@ func isValid(certPath, keyPath string) bool {
 
 	return true
 }
-
-func isKubeadmCertValid(cmd command.Runner, certPath string) bool {
-	_, err := cmd.RunCmd(exec.Command("openssl", "x509", "-noout", "-in", certPath, "-checkend", "86400"))
-	if err != nil {
-		klog.Infof("%v", err)
-	}
-	return err == nil
-}
diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go
index 3497863e5..ad2742751 100644
--- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go
+++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go
@@ -238,7 +238,7 @@ func (k *Bootstrapper) init(cfg config.ClusterConfig) error {
 		return errors.Wrap(err, "clearing stale configs")
 	}
 
-	conf := constants.KubeadmYamlPath
+	conf := bsutil.KubeadmYamlPath
 	ctx, cancel := context.WithTimeout(context.Background(), initTimeoutMinutes*time.Minute)
 	defer cancel()
 	kr, kw := io.Pipe()
@@ -429,7 +429,7 @@ func (k *Bootstrapper) StartCluster(cfg config.ClusterConfig) error {
 		// Fall-through to init
 	}
 
-	conf := constants.KubeadmYamlPath
+	conf := bsutil.KubeadmYamlPath
 	if _, err := k.c.RunCmd(exec.Command("sudo", "cp", conf+".new", conf)); err != nil {
 		return errors.Wrap(err, "cp")
 	}
@@ -678,7 +678,7 @@ func (k *Bootstrapper) restartControlPlane(cfg config.ClusterConfig) error {
 	}
 
 	// If the cluster is running, check if we have any work to do.
-	conf := constants.KubeadmYamlPath
+	conf := bsutil.KubeadmYamlPath
 
 	if !k.needsReconfigure(conf, hostname, port, client, cfg.KubernetesConfig.KubernetesVersion) {
 		klog.Infof("Taking a shortcut, as the cluster seems to be properly configured")
@@ -982,7 +982,7 @@ func (k *Bootstrapper) UpdateNode(cfg config.ClusterConfig, n config.Node, r cru
 	}
 
 	if n.ControlPlane {
-		files = append(files, assets.NewMemoryAssetTarget(kubeadmCfg, constants.KubeadmYamlPath+".new", "0640"))
+		files = append(files, assets.NewMemoryAssetTarget(kubeadmCfg, bsutil.KubeadmYamlPath+".new", "0640"))
 	}
 
 	// Installs compatibility shims for non-systemd environments
diff --git a/pkg/minikube/cluster/mount.go b/pkg/minikube/cluster/mount.go
index 147729905..9e8163c58 100644
--- a/pkg/minikube/cluster/mount.go
+++ b/pkg/minikube/cluster/mount.go
@@ -19,20 +19,13 @@ package cluster
 import (
 	"fmt"
 	"os/exec"
-	"path/filepath"
 	"sort"
 	"strconv"
 	"strings"
 
 	"github.com/pkg/errors"
-	"github.com/spf13/viper"
 	"k8s.io/klog/v2"
 	"k8s.io/minikube/pkg/minikube/command"
-	"k8s.io/minikube/pkg/minikube/constants"
-	"k8s.io/minikube/pkg/minikube/exit"
-	"k8s.io/minikube/pkg/minikube/localpath"
-	"k8s.io/minikube/pkg/minikube/reason"
-	"k8s.io/minikube/pkg/util/lock"
 )
 
 // MountConfig defines the options available to the Mount command
@@ -80,7 +73,7 @@ func (m *MountError) Error() string {
 }
 
 // Mount runs the mount command from the 9p client on the VM to the 9p server on the host
-func Mount(r mountRunner, source string, target string, c *MountConfig, pid int) error {
+func Mount(r mountRunner, source string, target string, c *MountConfig) error {
 	if err := Unmount(r, target); err != nil {
 		return &MountError{ErrorType: MountErrorUnknown, UnderlyingError: errors.Wrap(err, "umount")}
 	}
@@ -97,11 +90,6 @@ func Mount(r mountRunner, source string, target string, c *MountConfig, pid int)
 		return &MountError{ErrorType: MountErrorUnknown, UnderlyingError: errors.Wrapf(err, "mount with cmd %s ", rr.Command())}
 	}
 
-	profile := viper.GetString("profile")
-	if err := lock.AppendToFile(filepath.Join(localpath.Profile(profile), constants.MountProcessFileName), []byte(fmt.Sprintf(" %s", strconv.Itoa(pid))), 0o644); err != nil {
-		exit.Error(reason.HostMountPid, "Error writing mount pid", err)
-	}
-
 	klog.Infof("mount successful: %q", rr.Output())
 	return nil
 }
diff --git a/pkg/minikube/cni/flannel.yaml b/pkg/minikube/cni/flannel.yaml
index 362f8eb8b..378def674 100644
--- a/pkg/minikube/cni/flannel.yaml
+++ b/pkg/minikube/cni/flannel.yaml
@@ -130,8 +130,8 @@ spec:
       serviceAccountName: flannel
       initContainers:
       - name: install-cni-plugin
-        image: docker.io/flannel/flannel-cni-plugin:v1.1.2
-       #image: docker.io/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.2
+        #image: flannelcni/flannel-cni-plugin:v1.1.2 #for ppc64le and mips64le (dockerhub limitations may apply)
+        image: docker.io/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.2
         command:
         - cp
         args:
@@ -142,8 +142,8 @@ spec:
         - name: cni-plugin
           mountPath: /opt/cni/bin
       - name: install-cni
-        image: docker.io/flannel/flannel:v0.21.4
-       #image: docker.io/rancher/mirrored-flannelcni-flannel:v0.21.4
+       #image: flannelcni/flannel:v0.20.2 #for ppc64le and mips64le (dockerhub limitations may apply)
+        image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2
         command:
         - cp
         args:
@@ -157,8 +157,8 @@ spec:
           mountPath: /etc/kube-flannel/
       containers:
       - name: kube-flannel
-        image: docker.io/flannel/flannel:v0.21.4
-       #image: docker.io/rancher/mirrored-flannelcni-flannel:v0.21.4
+       #image: flannelcni/flannel:v0.20.2 #for ppc64le and mips64le (dockerhub limitations may apply)
+        image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2
         command:
         - /opt/bin/flanneld
         args:
diff --git a/pkg/minikube/constants/constants.go b/pkg/minikube/constants/constants.go
index bf40edfc9..e97a8740a 100644
--- a/pkg/minikube/constants/constants.go
+++ b/pkg/minikube/constants/constants.go
@@ -18,13 +18,11 @@ package constants
 
 import (
 	"errors"
-	"path"
 	"path/filepath"
 	"time"
 
 	"k8s.io/client-go/tools/clientcmd"
 	"k8s.io/client-go/util/homedir"
-	"k8s.io/minikube/pkg/minikube/vmpath"
 )
 
 var (
@@ -34,10 +32,10 @@ var (
 
 const (
 	// DefaultKubernetesVersion is the default Kubernetes version
-	DefaultKubernetesVersion = "v1.27.1"
+	DefaultKubernetesVersion = "v1.26.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.27.1"
+	NewestKubernetesVersion = "v1.27.0-rc.1"
 	// OldestKubernetesVersion is the oldest Kubernetes version to test against
 	OldestKubernetesVersion = "v1.16.0"
 	// NoKubernetesVersion is the version used when users does NOT want to install kubernetes
@@ -205,7 +203,4 @@ var (
 
 	// ErrMachineMissing is returned when virtual machine does not exist due to user interrupt cancel(i.e. Ctrl + C)
 	ErrMachineMissing = errors.New("machine does not exist")
-
-	// KubeadmYamlPath is the path to the kubeadm configuration
-	KubeadmYamlPath = path.Join(vmpath.GuestEphemeralDir, "kubeadm.yaml")
 )
diff --git a/pkg/minikube/constants/constants_kubeadm_images.go b/pkg/minikube/constants/constants_kubeadm_images.go
index 2649190e3..4603a0117 100644
--- a/pkg/minikube/constants/constants_kubeadm_images.go
+++ b/pkg/minikube/constants/constants_kubeadm_images.go
@@ -18,11 +18,6 @@ package constants
 
 var (
 	KubeadmImages = map[string]map[string]string{
-		"v1.27.1": {
-			"coredns/coredns": "v1.10.1",
-			"etcd":            "3.5.7-0",
-			"pause":           "3.9",
-		},
 		"v1.26.4": {
 			"coredns/coredns": "v1.9.3",
 			"etcd":            "3.5.6-0",
diff --git a/pkg/minikube/cruntime/containerd.go b/pkg/minikube/cruntime/containerd.go
index 9746ffda8..58633d8f4 100644
--- a/pkg/minikube/cruntime/containerd.go
+++ b/pkg/minikube/cruntime/containerd.go
@@ -462,7 +462,13 @@ func (r *Containerd) CGroupDriver() (string, error) {
 
 // KubeletOptions returns kubelet options for a containerd
 func (r *Containerd) KubeletOptions() map[string]string {
-	return kubeletCRIOptions(r, r.KubernetesVersion)
+	opts := map[string]string{
+		"container-runtime-endpoint": fmt.Sprintf("unix://%s", r.SocketPath()),
+	}
+	if r.KubernetesVersion.LT(semver.MustParse("1.24.0-alpha.0")) {
+		opts["container-runtime"] = "remote"
+	}
+	return opts
 }
 
 // ListContainers returns a list of managed by this container runtime
diff --git a/pkg/minikube/cruntime/cri.go b/pkg/minikube/cruntime/cri.go
index 9a7f86869..448099e5d 100644
--- a/pkg/minikube/cruntime/cri.go
+++ b/pkg/minikube/cruntime/cri.go
@@ -25,7 +25,6 @@ import (
 	"path"
 	"strings"
 
-	"github.com/blang/semver/v4"
 	"github.com/pkg/errors"
 	"k8s.io/klog/v2"
 	"k8s.io/minikube/pkg/minikube/command"
@@ -338,14 +337,3 @@ func addRepoTagToImageName(imgName string) string {
 	} // else it already has repo name dont add anything
 	return imgName
 }
-
-// kubeletCRIOptions returns the container runtime options for the kubelet
-func kubeletCRIOptions(cr Manager, kubernetesVersion semver.Version) map[string]string {
-	opts := map[string]string{
-		"container-runtime-endpoint": fmt.Sprintf("unix://%s", cr.SocketPath()),
-	}
-	if kubernetesVersion.LT(semver.MustParse("1.24.0-alpha.0")) {
-		opts["container-runtime"] = "remote"
-	}
-	return opts
-}
diff --git a/pkg/minikube/cruntime/crio.go b/pkg/minikube/cruntime/crio.go
index aec689f7d..930aae5eb 100644
--- a/pkg/minikube/cruntime/crio.go
+++ b/pkg/minikube/cruntime/crio.go
@@ -358,7 +358,13 @@ func (r *CRIO) CGroupDriver() (string, error) {
 
 // KubeletOptions returns kubelet options for a runtime.
 func (r *CRIO) KubeletOptions() map[string]string {
-	return kubeletCRIOptions(r, r.KubernetesVersion)
+	opts := map[string]string{
+		"container-runtime-endpoint": fmt.Sprintf("unix://%s", r.SocketPath()),
+	}
+	if r.KubernetesVersion.LT(semver.MustParse("1.24.0-alpha.0")) {
+		opts["container-runtime"] = "remote"
+	}
+	return opts
 }
 
 // ListContainers returns a list of managed by this container runtime
diff --git a/pkg/minikube/cruntime/docker.go b/pkg/minikube/cruntime/docker.go
index 93eb33c64..c6b2a65f2 100644
--- a/pkg/minikube/cruntime/docker.go
+++ b/pkg/minikube/cruntime/docker.go
@@ -389,7 +389,13 @@ func (r *Docker) CGroupDriver() (string, error) {
 // KubeletOptions returns kubelet options for a runtime.
 func (r *Docker) KubeletOptions() map[string]string {
 	if r.UseCRI {
-		return kubeletCRIOptions(r, r.KubernetesVersion)
+		opts := map[string]string{
+			"container-runtime-endpoint": fmt.Sprintf("unix://%s", r.SocketPath()),
+		}
+		if r.KubernetesVersion.LT(semver.MustParse("1.24.0-alpha.0")) {
+			opts["container-runtime"] = "remote"
+		}
+		return opts
 	}
 	return map[string]string{
 		"container-runtime": "docker",
diff --git a/pkg/minikube/download/iso.go b/pkg/minikube/download/iso.go
index 1d6cd4ca4..9b22af405 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/16426"
+	isoBucket := "minikube/iso"
 
 	return []string{
 		fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s-%s.iso", isoBucket, v, runtime.GOARCH),
diff --git a/pkg/minikube/node/config.go b/pkg/minikube/node/config.go
index f58839aa5..b2f51740f 100644
--- a/pkg/minikube/node/config.go
+++ b/pkg/minikube/node/config.go
@@ -89,7 +89,7 @@ func configureMounts(wg *sync.WaitGroup, cc config.ClusterConfig) {
 	if err := mountCmd.Start(); err != nil {
 		exit.Error(reason.GuestMount, "Error starting mount", err)
 	}
-	if err := lock.AppendToFile(filepath.Join(localpath.Profile(profile), constants.MountProcessFileName), []byte(fmt.Sprintf(" %s", strconv.Itoa(mountCmd.Process.Pid))), 0o644); err != nil {
+	if err := lock.WriteFile(filepath.Join(localpath.Profile(profile), constants.MountProcessFileName), []byte(strconv.Itoa(mountCmd.Process.Pid)), 0o644); err != nil {
 		exit.Error(reason.HostMountPid, "Error writing mount pid", err)
 	}
 }
diff --git a/pkg/util/lock/lock.go b/pkg/util/lock/lock.go
index 54154ff83..efb8dc01b 100644
--- a/pkg/util/lock/lock.go
+++ b/pkg/util/lock/lock.go
@@ -43,27 +43,6 @@ func WriteFile(filename string, data []byte, perm os.FileMode) error {
 	return os.WriteFile(filename, data, perm)
 }
 
-// AppendToFile appends DATA bytes to the specified FILENAME in a mutually exclusive way.
-// The file is created if it does not exist, using the specified PERM (before umask)
-func AppendToFile(filename string, data []byte, perm os.FileMode) error {
-	spec := PathMutexSpec(filename)
-	klog.Infof("WriteFile acquiring %s: %+v", filename, spec)
-	releaser, err := mutex.Acquire(spec)
-	if err != nil {
-		return errors.Wrapf(err, "failed to acquire lock for %s: %+v", filename, spec)
-	}
-
-	defer releaser.Release()
-
-	fd, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, perm)
-	if err != nil {
-		return errors.Wrapf(err, "failed to open %s: %+v", filename, spec)
-	}
-
-	_, err = fd.Write(data)
-	return err
-}
-
 // PathMutexSpec returns a mutex spec for a path
 func PathMutexSpec(path string) mutex.Spec {
 	s := mutex.Spec{
diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md
index 45a512dfc..38a0c2a73 100644
--- a/site/content/en/docs/commands/start.md
+++ b/site/content/en/docs/commands/start.md
@@ -26,7 +26,7 @@ minikube start [flags]
       --apiserver-names strings           A set of apiserver names which are used in the generated certificate for kubernetes.  This can be used if you want to make the apiserver available from outside the machine
       --apiserver-port int                The apiserver listening port (default 8443)
       --auto-update-drivers               If set, automatically updates drivers to the latest version. Defaults to true. (default true)
-      --base-image string                 The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.39-1683246328-16426@sha256:c063371f0e8933096fec0d2952100c31c4e17f2898a91dfbf036ee0048f9ee72")
+      --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.39-1680813808-16252@sha256:4d62d233cf4143189be209981d7b5b8b7fbf20ac03586d159c4c05276e84e45f")
       --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)
@@ -71,7 +71,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.27.1, 'latest' for v1.27.1). Defaults to 'stable'.
+      --kubernetes-version string         The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.26.3, 'latest' for v1.27.0-rc.1). 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/contrib/leaderboard/2023.html b/site/content/en/docs/contrib/leaderboard/2023.html
index 8e81e109a..36f22562e 100644
--- a/site/content/en/docs/contrib/leaderboard/2023.html
+++ b/site/content/en/docs/contrib/leaderboard/2023.html
@@ -87,7 +87,7 @@ weight: -99992023
 </head>
 <body>
     <h1>kubernetes/minikube</h1>
-    <div class="subtitle">2023-01-01 &mdash; 2023-04-30</div>
+    <div class="subtitle">2023-01-01 &mdash; 2023-03-31</div>
 
     
         <h2>Reviewers</h2>
@@ -103,14 +103,14 @@ weight: -99992023
                 function drawreviewCounts() {
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: '# of Merged PRs reviewed', type: 'number'}, { role: 'annotation' }],
-                    ["medyagh", 39, "39"],
-                    ["spowelljr", 22, "22"],
+                    ["medyagh", 36, "36"],
+                    ["spowelljr", 20, "20"],
                     ["afbjorklund", 5, "5"],
                     ["sharifelgamal", 2, "2"],
-                    ["tstromberg", 1, "1"],
-                    ["AkihiroSuda", 1, "1"],
                     ["neersighted", 1, "1"],
                     ["shu-mutou", 1, "1"],
+                    ["tstromberg", 1, "1"],
+                    ["AkihiroSuda", 1, "1"],
                     ["profnandaa", 1, "1"],
                     
                     ]);
@@ -144,8 +144,8 @@ weight: -99992023
                 function drawreviewWords() {
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: '# of words written in merged PRs', type: 'number'}, { role: 'annotation' }],
-                    ["spowelljr", 2878, "2878"],
-                    ["medyagh", 1666, "1666"],
+                    ["spowelljr", 2495, "2495"],
+                    ["medyagh", 1633, "1633"],
                     ["neersighted", 295, "295"],
                     ["afbjorklund", 157, "157"],
                     ["shu-mutou", 137, "137"],
@@ -185,15 +185,15 @@ weight: -99992023
                 function drawreviewComments() {
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: '# of Review Comments in merged PRs', type: 'number'}, { role: 'annotation' }],
-                    ["spowelljr", 76, "76"],
-                    ["medyagh", 49, "49"],
+                    ["spowelljr", 49, "49"],
+                    ["medyagh", 46, "46"],
                     ["neersighted", 4, "4"],
                     ["afbjorklund", 2, "2"],
                     ["AkihiroSuda", 1, "1"],
                     ["tstromberg", 1, "1"],
-                    ["shu-mutou", 0, "0"],
                     ["sharifelgamal", 0, "0"],
                     ["profnandaa", 0, "0"],
+                    ["shu-mutou", 0, "0"],
                     
                     ]);
 
@@ -230,21 +230,21 @@ weight: -99992023
                 function drawprCounts() {
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: '# of Pull Requests Merged', type: 'number'}, { role: 'annotation' }],
-                    ["spowelljr", 110, "110"],
-                    ["afbjorklund", 10, "10"],
+                    ["spowelljr", 85, "85"],
+                    ["afbjorklund", 8, "8"],
                     ["medyagh", 7, "7"],
-                    ["jeffmaury", 5, "5"],
-                    ["syxunion", 4, "4"],
+                    ["jeffmaury", 4, "4"],
                     ["prezha", 4, "4"],
-                    ["yolossn", 3, "3"],
-                    ["ComradeProgrammer", 3, "3"],
                     ["shubhbapna", 3, "3"],
+                    ["ComradeProgrammer", 3, "3"],
                     ["OmSaran", 2, "2"],
-                    ["jmloyola", 2, "2"],
                     ["ben-krieger", 2, "2"],
+                    ["syxunion", 2, "2"],
+                    ["yolossn", 2, "2"],
                     ["p2c2e", 2, "2"],
-                    ["zdxgs", 2, "2"],
-                    ["denisok", 1, "1"],
+                    ["psschwei", 1, "1"],
+                    ["maxbrunet", 1, "1"],
+                    ["maxsxu", 1, "1"],
                     
                     ]);
 
@@ -277,21 +277,21 @@ weight: -99992023
                 function drawprDeltas() {
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: 'Lines of code (delta)', type: 'number'}, { role: 'annotation' }],
-                    ["spowelljr", 5527, "5527"],
+                    ["spowelljr", 4755, "4755"],
                     ["prezha", 3865, "3865"],
                     ["denisok", 693, "693"],
-                    ["afbjorklund", 421, "421"],
-                    ["x7upLime", 398, "398"],
+                    ["afbjorklund", 404, "404"],
                     ["shubhbapna", 301, "301"],
                     ["ComradeProgrammer", 239, "239"],
                     ["OmSaran", 216, "216"],
                     ["AkihiroSuda", 192, "192"],
                     ["medyagh", 53, "53"],
                     ["elizabeth-dev", 48, "48"],
-                    ["oldium", 47, "47"],
                     ["ben-krieger", 36, "36"],
-                    ["jmloyola", 34, "34"],
                     ["kadern0", 23, "23"],
+                    ["nickmancari", 15, "15"],
+                    ["kushmansingh", 14, "14"],
+                    ["axrav", 12, "12"],
                     
                     ]);
 
@@ -325,20 +325,20 @@ weight: -99992023
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: 'Average PR size (added+changed)', type: 'number'}, { role: 'annotation' }],
                     ["prezha", 603, "603"],
-                    ["x7upLime", 366, "366"],
                     ["denisok", 324, "324"],
                     ["AkihiroSuda", 190, "190"],
                     ["OmSaran", 99, "99"],
                     ["ComradeProgrammer", 72, "72"],
                     ["shubhbapna", 70, "70"],
-                    ["oldium", 44, "44"],
                     ["elizabeth-dev", 41, "41"],
-                    ["spowelljr", 29, "29"],
-                    ["afbjorklund", 22, "22"],
+                    ["spowelljr", 31, "31"],
+                    ["afbjorklund", 26, "26"],
                     ["kadern0", 19, "19"],
                     ["ben-krieger", 17, "17"],
                     ["nickmancari", 13, "13"],
-                    ["jmloyola", 11, "11"],
+                    ["kushmansingh", 7, "7"],
+                    ["swastik959", 7, "7"],
+                    ["medyagh", 5, "5"],
                     
                     ]);
 
@@ -375,21 +375,21 @@ weight: -99992023
                 function drawcomments() {
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: '# of comments', type: 'number'}, { role: 'annotation' }],
-                    ["afbjorklund", 141, "141"],
-                    ["spowelljr", 35, "35"],
-                    ["kundan2707", 23, "23"],
-                    ["medyagh", 16, "16"],
-                    ["BenTheElder", 10, "10"],
+                    ["afbjorklund", 116, "116"],
+                    ["spowelljr", 28, "28"],
+                    ["kundan2707", 21, "21"],
+                    ["medyagh", 14, "14"],
                     ["nirs", 8, "8"],
+                    ["BenTheElder", 8, "8"],
                     ["kant777", 6, "6"],
-                    ["sftim", 6, "6"],
                     ["ComradeProgrammer", 6, "6"],
                     ["prezha", 6, "6"],
-                    ["uos-ljtian", 5, "5"],
-                    ["termdew", 5, "5"],
-                    ["pjnssn", 5, "5"],
-                    ["x7upLime", 5, "5"],
-                    ["pidumenk", 4, "4"],
+                    ["x7upLime", 4, "4"],
+                    ["pjnssn", 4, "4"],
+                    ["sftim", 4, "4"],
+                    ["salasberryfin", 4, "4"],
+                    ["Gorgeous-Patrick", 4, "4"],
+                    ["heitorPB", 4, "4"],
                     
                     ]);
 
@@ -422,21 +422,21 @@ weight: -99992023
                 function drawcommentWords() {
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: '# of words (excludes authored)', type: 'number'}, { role: 'annotation' }],
-                    ["afbjorklund", 6668, "6668"],
+                    ["afbjorklund", 4993, "4993"],
                     ["prasanna-desikank", 2363, "2363"],
-                    ["spowelljr", 1663, "1663"],
+                    ["spowelljr", 1433, "1433"],
                     ["pluveto", 1042, "1042"],
-                    ["BenTheElder", 974, "974"],
-                    ["x7upLime", 775, "775"],
+                    ["BenTheElder", 889, "889"],
+                    ["x7upLime", 735, "735"],
                     ["prezha", 642, "642"],
                     ["nirs", 638, "638"],
-                    ["mprimeaux", 587, "587"],
                     ["jackjie2016", 469, "469"],
                     ["blacksd", 448, "448"],
                     ["rogeriomm", 413, "413"],
-                    ["termdew", 410, "410"],
                     ["NitishKumar06", 381, "381"],
-                    ["medyagh", 376, "376"],
+                    ["msagi", 357, "357"],
+                    ["medyagh", 309, "309"],
+                    ["sourabhyadavgit", 275, "275"],
                     
                     ]);
 
@@ -469,9 +469,9 @@ weight: -99992023
                 function drawissueCloser() {
                     var data = new google.visualization.arrayToDataTable([
                     [{label:'',type:'string'},{label: '# of issues closed (excludes authored)', type: 'number'}, { role: 'annotation' }],
-                    ["spowelljr", 41, "41"],
-                    ["medyagh", 20, "20"],
-                    ["afbjorklund", 4, "4"],
+                    ["spowelljr", 36, "36"],
+                    ["medyagh", 18, "18"],
+                    ["afbjorklund", 3, "3"],
                     
                     ]);
 
diff --git a/site/content/en/docs/drivers/includes/none_usage.inc b/site/content/en/docs/drivers/includes/none_usage.inc
index 0d62547fa..e8bc7b794 100644
--- a/site/content/en/docs/drivers/includes/none_usage.inc
+++ b/site/content/en/docs/drivers/includes/none_usage.inc
@@ -3,11 +3,8 @@
 A Linux VM with the following:
 
 * systemd or OpenRC
-* a Container Runtime Interface (CRI), such as Docker or CRI-O
-
-If using Kubernetes v1.24+ & Docker CRI you will also need the following:
-* [cri-dockerd](https://github.com/Mirantis/cri-dockerd)
-* [containernetworking-plugins](https://github.com/containernetworking/plugins)
+* a container runtime, such as Docker or CRIO
+* [cri-dockerd](https://github.com/Mirantis/cri-dockerd) (if using Kubernetes +v1.24 & `docker` container-runtime)
 
 This VM must also meet the [kubeadm requirements](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/), such as:
 
diff --git a/site/content/en/docs/handbook/addons/kong-ingress.md b/site/content/en/docs/handbook/addons/kong-ingress.md
index f197d073b..75ee7e76e 100644
--- a/site/content/en/docs/handbook/addons/kong-ingress.md
+++ b/site/content/en/docs/handbook/addons/kong-ingress.md
@@ -61,17 +61,17 @@ $ curl -v localhost
 * Connected to localhost (127.0.0.1) port 80 (#0)
 > GET / HTTP/1.1
 > Host: localhost
-> User-Agent: curl/7.86.0
+> User-Agent: curl/7.77.0
 > Accept: */*
 >
 * Mark bundle as not supporting multiuse
 < HTTP/1.1 404 Not Found
-< Date: Wed, 03 May 2023 01:34:31 GMT
+< Date: Tue, 25 Jan 2022 22:35:27 GMT
 < Content-Type: application/json; charset=utf-8
 < Connection: keep-alive
 < Content-Length: 48
 < X-Kong-Response-Latency: 0
-< Server: kong/3.2.2
+< Server: kong/2.7.0
 <
 * Connection #0 to host localhost left intact
 {"message":"no Route matched with those values"}%
@@ -79,125 +79,70 @@ $ curl -v localhost
 
 ## Creating Ingress object
 
-To proxy requests, you need an upstream application to proxy to. 
-Deploying this echo server provides a simple application that returns information about the Pod it’s running in:
+Let's create a service.
+As an example, we use `type=ExternalName` to point to https://httpbin.org
 
 ```bash
 echo "
-apiVersion: v1
 kind: Service
+apiVersion: v1
 metadata:
-  labels:
-    app: echo
-  name: echo
+  name: proxy-to-httpbin
 spec:
   ports:
-  - port: 1025
-    name: tcp
-    protocol: TCP
-    targetPort: 1025
-  - port: 1026
-    name: udp
-    protocol: TCP
-    targetPort: 1026
-  - port: 1027
-    name: http
-    protocol: TCP
-    targetPort: 1027
-  selector:
-    app: echo
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  labels:
-    app: echo
-  name: echo
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: echo
-  strategy: {}
-  template:
-    metadata:
-      creationTimestamp: null
-      labels:
-        app: echo
-    spec:
-      containers:
-      - image: kong/go-echo:latest
-        name: echo
-        ports:
-        - containerPort: 1027
-        env:
-          - name: NODE_NAME
-            valueFrom:
-              fieldRef:
-                fieldPath: spec.nodeName
-          - name: POD_NAME
-            valueFrom:
-              fieldRef:
-                fieldPath: metadata.name
-          - name: POD_NAMESPACE
-            valueFrom:
-              fieldRef:
-                fieldPath: metadata.namespace
-          - name: POD_IP
-            valueFrom:
-              fieldRef:
-                fieldPath: status.podIP
-        resources: {}
-" | kubectl apply -f -
+  - protocol: TCP
+    port: 80
+  type: ExternalName
+  externalName: httpbin.org
+" | kubectl create -f -
 ```
 
-Next, we will create routing configuration to proxy `/echo` requests to the echo server:
+Next, we will create the ingress object points to httpbin service.
 
 ```bash
-echo "
+echo '
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
-  name: echo
+  name: proxy-from-k8s-to-httpbin
   annotations:
-    konghq.com/strip-path: 'true'
+    konghq.com/strip-path: "true"
 spec:
   ingressClassName: kong
   rules:
-  - host: kong.example
-    http:
+  - http:
       paths:
-      - path: /echo
+      - path: /foo
         pathType: ImplementationSpecific
         backend:
           service:
-            name: echo
+            name: proxy-to-httpbin
             port:
-              number: 1027
-" | kubectl apply -f -
+              number: 80
+' | kubectl create -f -
 ```
 
 Let's test our ingress object.
 
 ```bash
-$ curl -i localhost/echo -H "Host: kong.example"
+$ curl -i localhost/foo -H "Host: httpbin.org"
+
 
 HTTP/1.1 200 OK
 Content-Type: text/plain; charset=utf-8
-Content-Length: 133
+Content-Length: 4
 Connection: keep-alive
-Date: Wed, 03 May 2023 01:59:25 GMT
+X-App-Name:
+X-App-Version: 0.2.4
+Date: Tue, 25 Jan 2022 22:44:57 GMT
 X-Kong-Upstream-Latency: 1
 X-Kong-Proxy-Latency: 1
-Via: kong/3.2.2
+Via: kong/2.7.0
 
-Welcome, you are connected to node minikube.
-Running on Pod echo-f4fdf987c-qdv7s.
-In namespace default.
-With IP address 10.244.0.6.
+foo
 ```
 
 ## Next
 
 **Note:** Read more about KIC and different use cases in official
-[documentation](https://docs.konghq.com/kubernetes-ingress-controller/latest/guides/overview/).
+[documentation](https://docs.konghq.com/kubernetes-ingress-controller/2.1.x/guides/overview/).
diff --git a/site/content/en/docs/tutorials/kubernetes_101/_index.md b/site/content/en/docs/tutorials/kubernetes_101/_index.md
new file mode 100644
index 000000000..0e626323c
--- /dev/null
+++ b/site/content/en/docs/tutorials/kubernetes_101/_index.md
@@ -0,0 +1,6 @@
+---
+title: "Kubernetes 101"
+weight: -1
+description: >     
+  Tutorial showing how to deploy, explore, expose, scale, and update your applications
+--- 
diff --git a/site/content/en/docs/tutorials/kubernetes_101/module1.md b/site/content/en/docs/tutorials/kubernetes_101/module1.md
new file mode 100644
index 000000000..fdcf12e5a
--- /dev/null
+++ b/site/content/en/docs/tutorials/kubernetes_101/module1.md
@@ -0,0 +1,53 @@
+---
+title: "Module 1 - Create a Kubernetes Cluster"
+weight: 1
+--- 
+
+**Difficulty**: Beginner
+**Estimated Time:** 10 minutes
+
+The goal of this scenario is to deploy a local development Kubernetes cluster using minikube
+
+## Step 1 - Cluster up and running
+
+If you haven't already, first [install minikube]({{< ref "/docs/start" >}}). Check that it is properly installed, by running the *minikube version* command:
+
+```shell
+minikube version
+```
+
+Once minikube is installed, start the cluster, by running the *minikube start* command:
+
+```shell
+minikube start
+```
+
+Great! You now have a runnning Kubernetes cluster in your terminal. minikube started a virtual environment for you, and a Kubernetes cluster is now running in that environment.
+
+## Step 2 - Cluster version
+
+To interact with Kubernetes during this bootcamp we'll use the command line interface, kubectl. We'll explain kubectl in detail in the next modules, but for now, we're just going to look at some cluster information. To check if kubectl is installed you can run the *kubectl version* command:
+
+```shell
+kubectl version
+```
+
+OK, kubectl is configured and we can see both the version of the client and as well as the server. The client version is the kubectl version; the server version is the Kubernetes version installed on the master. You can also see details about the build.
+
+## Step 3 - Cluster details
+
+Let's view the cluster details. We'll do that by running *kubectl cluster-info*:
+
+```shell
+kubectl cluster-info
+```
+
+During this tutorial, we'll be focusing on the command line for deploying and exploring our application. To view the nodes in the cluster, run the *kubectl get nodes* command:
+
+```shell
+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).
+
+{{% button link="/docs/tutorials/kubernetes_101/module2" %}}
diff --git a/site/content/en/docs/tutorials/kubernetes_101/module2.md b/site/content/en/docs/tutorials/kubernetes_101/module2.md
new file mode 100644
index 000000000..a3bda9c5c
--- /dev/null
+++ b/site/content/en/docs/tutorials/kubernetes_101/module2.md
@@ -0,0 +1,93 @@
+---
+title: "Module 2 - Deploy an app"                  
+weight: 2
+--- 
+
+**Difficulty**: Beginner
+**Estimated Time:** 10 minutes
+
+The goal of this scenario is to help you deploy your first app on Kubernetes using kubectl. You will learn the basics about kubectl cli and how to interact with your application.
+
+## Step 1 - kubectl basics
+
+Type kubectl in the terminal to see its usage. The common format of a kubectl command is: kubectl action resource. This performs the specified action (like create, describe) on the specified resource (like node, container). You can use `--help` after the command to get additional info about possible parameters (`kubectl get nodes --help`).
+
+Check the kubectl is configured to talk to your cluster, by running the `kubectl version` command:
+
+```shell
+kubectl version
+```
+
+OK, kubectl is installed and you can see both the client and the server versions.
+
+To view the nodes in the cluster, run the `kubectl get nodes` command:
+
+```shell
+kubectl get nodes
+```
+
+Here we see the available nodes (1 in our case). Kubernetes will choose where to deploy our application based on Node available resources.
+
+## Step 2 - Deploy our app
+
+Let's deploy our first app on Kubernetes with the `kubectl create deployment` command. We need to provide the deployment name and app image location (include the full repository url for images hosted outside Docker Hub).
+
+```shell
+kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
+```
+
+Great! You just deployed your first application by creating a deployment. This performed a few things for you:
+
+- searched for a suitable node where an instance of the application could be run (we have only 1 available node)
+- scheduled the application to run on that Node
+- configured the cluster to reschedule the instance on a new Node when needed
+
+To list your deployments use the `get deployments` command:
+
+```shell
+kubectl get deployments
+```
+
+We see that there is 1 deployment running a single instance of your app. The instance is running inside a Docker container on your node.
+
+## Step 3 - View our app
+
+Pods that are running inside Kubernetes are running on a private, isolated network. By default they are visible from other pods and services within the same Kubernetes cluster, but not outside that network. When we use `kubectl`, we're interacting through an API endpoint to communicate with our application.
+
+We will cover other options on how to expose your application outside the Kubernetes cluster in Module 4.
+
+The `kubectl` command can create a proxy that will forward communications into the cluster-wide, private network. The proxy can be terminiated by pressing control-C and won't show any output while its running.
+
+We will open a second terminal window to run the proxy.
+
+```shell
+echo -e "Starting Proxy. After starting it will not output a response. Please return to your original terminal window\n"; kubectl proxy
+```
+
+We now have a connection between our host (the online terminal) and the Kubernetes cluster. The proxy enabled direct access to the API from these terminals.
+
+You can see all those APIs hosted through the proxy endpoint. For example, we can query the version directly through the API using the `curl` command:
+```shell
+curl http://localhost:8001/version
+```
+
+*Note: The proxy was run in a new tab, and the recent commands were executed in the original tab. The proxy still runs in the second tab, and this allowed our curl command to work using `localhost:8001`.*
+
+**If Port 8001 is not accessible, ensure that the `kubectl proxy` started above is running.**
+
+The API server will automatically create an endpoint for each pod, based on the pod name, that is also accessible through the proxy.
+
+First we need to get the Pod name, and we'll store in the environment variable POD_NAME:
+```shell
+export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
+echo Name of the Pod: $POD_NAME
+```
+
+You can access the Pod through the API by running:
+```shell
+curl http://localhost:8001/api/v1/namespaces/default/pods/$PODNAME
+```
+
+In order for the new deployment to be accessible without using the Proxy, a Service is required which will be explained in the next modules.
+
+{{% button link="/docs/tutorials/kubernetes_101/module3" %}}
diff --git a/site/content/en/docs/tutorials/kubernetes_101/module3.md b/site/content/en/docs/tutorials/kubernetes_101/module3.md
new file mode 100644
index 000000000..794d00183
--- /dev/null
+++ b/site/content/en/docs/tutorials/kubernetes_101/module3.md
@@ -0,0 +1,96 @@
+---
+title: "Module 3 - Explore your app"                                
+weight: 3
+--- 
+
+**Difficulty**: Beginner
+**Estimated Time:** 10 minutes
+
+In this scenario you will learn how to troubleshoot Kubernetes applications using the kubectl get, describe, logs and exec commands.
+
+## Step 1 - Check application configuration
+
+Let's verify that the application we deployed in the previous scenario is running. We'll use the `kubectl get` command and look for existing Pods:
+
+```shell
+kubectl get pods
+```
+
+Next, to view what containers are inside that Pod and what images are used to build those containers we run the `describe pods` command:
+
+```shell
+kubectl describe pods
+```
+
+We see here details about the Pod's container: IP address, the ports used and a list of events related to the lifecycle of the Pod.
+
+The output of the `describe` command is extensive and covers some concepts that we didn't explain yet, but don't worry, they will become familiar by the end of this bootcamp.
+
+*Note: the describe command can be used to get detailed information about most of the Kubernetes primitives: node, pods, deployments. The describe output is designed to be human readable, not to be scripted against.*
+
+## Step 2 - Show the app in the terminal
+
+Recall that Pods are running in an isolated, private network - so we need to proxy access to them so we can debug and interact with them. To do this, we'll use the `kubectl proxy` command to run a proxy in a second terminal window. Run the command below in a new terminal window to run the proxy:
+
+```shell
+echo -e "Starting Proxy. After starting it will not output a response. Please return to your original terminal window\n"; kubectl proxy
+```
+
+Now again, we'll get the Pod name and query that pod directly through the proxy. To get the Pod name and store it in the POD_NAME ennvironment variable:
+
+```shell
+export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
+echo Name of the Pod: $POD_NAME
+```
+
+To see the output of our application, run a `curl` request.
+
+```shell
+curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME
+```
+
+The url is the route to the API of the Pod.
+
+## Step 3 - View the container logs
+
+Anything that the application would normally send to `STDOUT` becomes logs for the container within the Pod. We can retrieve these logs using the `kubectl logs` command:
+
+```shell
+kubectl logs $POD_NAME
+```
+
+*Note: We don't need to specify the container name, because we only have one container inside the pod.
+
+## Step 4 - Executing command on the container
+
+We can execute commands directly on the container once the Pod is up and running. For this, we use the `exec` command and use the name of the Pod as a paramater. Let's list the environment variables:
+
+```shell
+kubectl exec $POD_NAME -- env
+```
+
+Again, worth mentioning that the name of the container itself can be omitted since we only have a single container in the Pod.
+
+Next let's start a bash session in the Pod's container:
+
+```shell
+kubectl exec -ti $POD_NAME -- bash
+```
+
+We have now an open console on the container where we run our NodeJS application. The source code of the app is in the server.js file:
+
+```shell
+cat server.js
+```
+
+You can check that the application is up by running a curl command:
+
+```shell
+curl localhost:8080
+```
+
+*Note: here we used localhost because we executed the command inside the NodeJS Pod. If you cannot connect to localhost:8080, check to make sure you have run the kubectl exec command and are launching the command from within the Pod*
+
+To close your container connection type `exit`.
+
+{{% button link="/docs/tutorials/kubernetes_101/module4" %}}
diff --git a/site/content/en/docs/tutorials/kubernetes_101/module4.md b/site/content/en/docs/tutorials/kubernetes_101/module4.md
new file mode 100644
index 000000000..3561655af
--- /dev/null
+++ b/site/content/en/docs/tutorials/kubernetes_101/module4.md
@@ -0,0 +1,137 @@
+---
+title: "Module 4 - Expose your app publicly"                                
+weight: 4
+--- 
+
+**Difficulty**: Beginner
+**Estimated Time:** 10 minutes
+
+In this scenario you will learn how to expose Kubernetes applications outside the cluster using the kubectl expose command. You will also learn how to view and apply labels to objects with the kubectl label command.
+
+## Step 1 - Create a new service
+
+Let's verify that our application is running. We'll use the `kubectl get` command and look for existing Pods:
+
+```shell
+kubectl get pods
+```
+
+Next, let's list the current Services from our cluster:
+
+```shell
+kubectl get services
+```
+
+We have a Service called Kubernetes that is created by default when minikube starts the cluster. To create a new service and expose it to external traffic we'll use the expose command with NodePort as parameter.
+
+```shell
+kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
+```
+
+Let's run again the `get services` command:
+
+```shell
+kubectl get services
+```
+
+**Note for Docker Desktop users:** Due to Docker Desktop networking limitations, by default you're unable to access pods directly from the host. Run `minikube service kubernetes-bootcamp`, this will create a SSH tunnel from the pod to your host and open a window in your default browser that's connected to the service. The tunnel can be terminated by pressing control-C, then continue on to Step 2.
+
+We have now a running Service called kubernetes-bootcamp. Here we see that the Service received a unique cluster-IP, an internal port and an external-IP (the IP of the Node).
+
+To find out what port was opened externally (by the NodePort option) we'll run the `describe service` command:
+
+```shell
+kubectl describe services/kubernetes-bootcamp
+```
+
+Create an environment variable called NODE_PORT that has the value of the Node port assigned:
+
+```shell
+export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
+echo NODE_PORT=$NODE_PORT
+```
+
+Now we can test that the app is exposed outside of the cluster using `curl`, the IP of the Node and the externally exposed port:
+
+```shell
+curl $(minikube ip):$NODE_PORT
+```
+
+And we get a response from the server. The Service is exposed.
+
+## Step 2 - Using labels
+
+The Deployment created automatically a label for our Pod. With `describe deployment` command you can see the name of the label:
+
+```shell
+kubectl describe deployment
+```
+
+Let's use this label to query our list of Pods. We'll use the `kubectl get pods` command with `-l` as a parameter, followed by the label values:
+
+```shell
+kubectl get pods -l app=kubernetes-bootcamp
+```
+
+You can do the same to list the existing services:
+
+```shell
+kubectl get services -l app=kubernetes-bootcamp
+```
+
+Get the name of the Pod and store it in the POD_NAME environment variable:
+
+```shell
+export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
+echo Name of the Pod: $POD_NAME
+```
+
+To apply a new label we use the label command followed by the object type, object name and the new label:
+
+```shell
+kubectl label pods $POD_NAME version=v1
+```
+
+This will apply a new label to our Pod (we pinned the application version to the Pod), and we can check it with the describe pod command:
+
+```shell
+kubectl describe pods $POD_NAME
+```
+
+We see here that the label is attached new to our Pod. And we can query now the list of pods using the new label:
+
+```shell
+kubectl get pods -l version=v1
+```
+
+And we see the Pod.
+
+## Step 3 - Deleting a service
+
+To delete Services you can use the `delete service` command. Labels can be used also here:
+
+```shell
+kubectl delete service -l app=kubernetes-bootcamp
+```
+
+Confirm that the service is gone:
+
+```shell
+kubectl get services
+```
+
+This confirms that our Service was removed. To confirm that route is not exposed anymore you can `curl` the previously exposed IP and port:
+
+```shell
+curl $(minikube ip):$NODE_PORT
+```
+
+This proces that the app is not reachable anymore from outside of the cluster. You can confirm that the app is still running with a curl inside the pod:
+
+```shell
+kubectl exec -ti $POD_NAME -- curl localhost:8080
+```
+
+We see here that the application is up. This is because the Deployment is managing the application. To shut down the application, you would need to delete the Deployment as well.
+
+{{% button link="/docs/tutorials/kubernetes_101/module5" %}}
diff --git a/site/content/en/docs/tutorials/kubernetes_101/module5.md b/site/content/en/docs/tutorials/kubernetes_101/module5.md
new file mode 100644
index 000000000..a149bbf8b
--- /dev/null
+++ b/site/content/en/docs/tutorials/kubernetes_101/module5.md
@@ -0,0 +1,126 @@
+---
+title: "Module 5 - Scale up your app"
+weight: 5
+---
+
+**Difficulty**: Beginner
+**Estimated Time:** 10 minutes
+
+The goal of this scenario is to scale a deployment with kubectl scale and to see the load balancing in action
+
+## Step 1 - Scaling a deployment
+
+First, let's recreate the Deployment we deleted in the previous module:
+
+```shell
+kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
+```
+
+To list your deployments use the `get deployment` command:
+
+```shell
+kubectl get deployments
+```
+
+The output should be similar to:
+
+```shell
+NAME                  READY   UP-TO_DATE   AVAILABLE   AGE
+kubernetes-bootcamp   1/1     1            1           11m
+```
+
+We should have 1 Pod. If not, run the command again. This shows:
+
+- *NAME* lists the names of the Deployments in the cluster.
+- *READY* shows the ratio of CURRENT/DESIRED replicas
+- *UP-TO-DATE* displays the number of replicas that have been updated to achieve the desired state.
+- *AVAILABLE* displays how many replicas of the application are available to your users.
+- *AGE* displays the amount of time that the application has been running.
+
+To see the ReplicaSet created by the Deployment, run:
+
+```shell
+kubectl get rs
+```
+
+Notice that the name of the ReplicaSet is always formatted as `[DEPLOYMENT-NAME]-[RANDOM-STRING]`. The random string is randomly generated and uses the pod-template-hash as a seed.
+
+Two important columns of this command are:
+
+- *DESIRED* displays the desired number of replicas of the application, which you define when you create the Deployment. This is the desired state.
+- *CURRENT* displays how many replicas are currently running.
+
+Next, let's scan the Deployment to 4 replicas. We'll use the `kubectl scale` command, following by the deployment type, name and desired number of instances:
+
+```shell
+kubectl scale deployments/kubernetes-bootcamp --replicas=4
+```
+
+To list your Deployments once again, use `get deployments`:
+
+```shell
+kubectl get deployments
+```
+
+The change was applied, and we have 4 instances of the application available. Next, let's check if the number of Pods changed:
+
+```shell
+kubectl get pods -o wide
+```
+
+There are 4 Pods now, with different IP addresses. The change was registered in the Deployment events log. The check that, use the describe command:
+
+```shell
+kubectl describe deployments/kubernetes-bootcamp
+```
+
+You can also view in the output of this command that there are 4 replicas now.
+
+## Step 2 - Load Balancing
+
+Let's check that the Service is load-balancing the traffic. To find out the exposed IP and Port we can use the describe service as we learned in the previous Module:
+
+```shell
+kubectl describe services/kubernetes-bootcamp
+```
+
+**Note for Docker Desktop users:** Due to Docker Desktop networking limitations, by default you're unable to access pods directly from the host. Run `minikube service kubernetes-bootcamp`, this will create a SSH tunnel from the pod to your host and open a window in your default browser that's connected to the service. Refresh the browser page to see the load-balancing working. The tunnel can be terminated by pressing control-C, then continue on to Step 3.
+
+Create an environment variable called NODE_PORT that has a value as the Node port:
+
+```shell
+export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
+echo NODE_PORT=$NODE_PORT
+```
+
+Next, we'll do a `curl` to the exposed IP and port. Execute the command mulitple times:
+
+```shell
+curl $(minikube ip):$NODE_PORT
+```
+
+We hit a different Pod with every request. This demonstrates that the load-balancing is working.
+
+## Step 3 - Scale Down
+
+To scale down the Service to 2 replicas, run again the `scale` command:
+
+```shell
+kubectl scale deployments/kubernetes-bootcamp --replicas=2
+```
+
+List the Deployments to check if the change was applied with the `get deployments` command:
+
+```shell
+kubectl get deployments
+```
+
+The number of replicas decreased to 2. List the number of Pods, with `get pods`:
+
+```shell
+kubectl get pods -o wide
+```
+
+This confirms that 2 Pods were terminated.
+
+{{% button link="/docs/tutorials/kubernetes_101/module6" %}}
diff --git a/site/content/en/docs/tutorials/kubernetes_101/module6.md b/site/content/en/docs/tutorials/kubernetes_101/module6.md
new file mode 100644
index 000000000..37f6ddee0
--- /dev/null
+++ b/site/content/en/docs/tutorials/kubernetes_101/module6.md
@@ -0,0 +1,133 @@
+---
+title: "Module 6 - Update your app"
+weight: 6
+---
+
+**Difficulty:** Beginner
+**Estimated Time:** 10 minutes
+
+The goal of this scenario is to update a deployed application with kubectl set image and to rollback with the rollout undo command.
+
+## Step 1 - Update the version of the app
+
+To list your deployments, run the `get deployments` command:
+
+```shell
+kubectl get deployments
+```
+
+To list the running Pods, run the `get pods` command:
+
+```shell
+kubectl get pods
+```
+
+To view the current image version of the app, run the `describe pods` command and look for the `Image` field:
+
+```shell
+kubectl describe pods
+```
+
+To update the image of the application to version 2, use the `set image` command, followed by the deployment name and the new image version:
+
+```shell
+kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
+```
+
+The command notified the Deployment to use a different image for your app and initiated a rolling update. Check the status of the new Pods, and view the old one terminating with the `get pods` command:
+
+```shell
+kubectl get pods
+```
+
+## Step 2 - Verify an update
+
+First, check that the app is running. To find the exposed IP and Port, run the `describe service` command:
+
+```shell
+kubectl describe services/kubernetes-bootcamp
+```
+
+**Note for Docker Desktop users:** Due to Docker Desktop networking limitations, by default you're unable to access pods directly from the host. Run `minikube service kubernetes-bootcamp`, this will create a SSH tunnel from the pod to your host and open a window in your default browser that's connected to the service. The tunnel can be terminated by pressing control-C, then continue the tutorial after the `curl $(minikube ip):$NODE_PORT` command.
+
+Create an environment variable called `NODE_PORT` that has the value of the Node port assigned:
+
+```shell
+export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
+echo NODE_PORT=$NODE_PORT
+```
+
+Next, do a `curl` to the exposed IP and port:
+
+```shell
+curl $(minikube ip):$NODE_PORT
+```
+
+Every time you run the `curl` command, you will hit a different Pod. Notice that all Pods are running the latest version (v2).
+
+You can also confirm the update by running the `rollout status` command:
+
+```shell
+kubectl rollout status deployments/kubernetes-bootcamp
+```
+
+To view the current image version of the app, run the `describe pods` command:
+
+```shell
+kubectl describe pods
+```
+
+In the `Image` field of the output, verify that you are running the latest image version (v2).
+
+
+## Step 3 - Rollback an update
+
+Let's perform another update, and deploy an image tagged with `v10`:
+
+```shell
+kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10
+```
+
+Use `get deployments` to see the status of the deployment:
+
+```shell
+kubectl get deployments
+```
+
+Notice that the output doesn't list the desired number of available Pods. Run the `get pods` command to list all Pods:
+
+```shell
+kubectl get pods
+```
+
+Notice that some of the Pods have a status of `ImagePullBackOff`.
+
+To get more insight into the problem, run the `describe pods` command:
+
+```shell
+kubectl describe pods
+```
+
+In the `Events` section of the output for the affected Pods, notice that the `v10` image version did not exist in the repository.
+
+To roll back the deployment to your last working version, use the `rollout undo` command:
+
+```shell
+kubectl rollout undo deployments/kubernetes-bootcamp
+```
+
+The `rollout undo` command reverts the deployment to the previous known state (v2 of the image). Updates are versioned and you can revert to any previously known state of a deployment.
+
+Use the `get pods` commands to list the Pods again:
+
+```shell
+kubectl get pods
+```
+
+Four Pods are running. To check the image deployed on these Pods, use the `describe pods` command:
+
+```shell
+kubectl describe pods
+```
+
+The deployment is once again using a stable version of the app (v2). The rollback was successful.
diff --git a/site/layouts/partials/hooks/head-end.html b/site/layouts/partials/hooks/head-end.html
index 3561d7343..55c9fedf8 100644
--- a/site/layouts/partials/hooks/head-end.html
+++ b/site/layouts/partials/hooks/head-end.html
@@ -1,6 +1,7 @@
 <!-- start: minikube override head-end partial -->
 <link href="https://fonts.googleapis.com/css2?family=Lora:wght@400;500;600;700&family=Open+Sans:wght@600;700&display=swap" rel="stylesheet">
 <link href="/css/tabs.css" rel="stylesheet">
+<link href="/css/button.css" rel="stylesheet">
 <script src="/js/tabs.js"></script>
 <script src="/js/quiz.js"></script>
 <!-- end: minikube override head-end partial -->
diff --git a/site/layouts/shortcodes/button.html b/site/layouts/shortcodes/button.html
new file mode 100644
index 000000000..095e30b37
--- /dev/null
+++ b/site/layouts/shortcodes/button.html
@@ -0,0 +1,1 @@
+<a href="{{ .Get "link" }}"><button type="button" class="module-button">Next Module ➔</button></a>
diff --git a/site/static/css/button.css b/site/static/css/button.css
new file mode 100644
index 000000000..5b1a0ea4a
--- /dev/null
+++ b/site/static/css/button.css
@@ -0,0 +1,13 @@
+.module-button {
+  color: #fff;
+  background: #306EE5;
+  border-radius: 0.5rem;
+  font-size: 2rem;
+  border: none;
+  padding: 0.5rem 1rem;
+  margin: 2rem 0;
+}
+
+.module-button:hover {
+  background: #164cb2;
+}
diff --git a/translations/de.json b/translations/de.json
index 6b359f6ab..12ea4e025 100644
--- a/translations/de.json
+++ b/translations/de.json
@@ -249,7 +249,6 @@
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "Port, der für das über den Proxy erreichbare Dashboard freigegeben wird. Wenn man 0 angibt, wird ein zufälliger Port ausgewählt.",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "Externer Adapter, auf dem der externe Switch erzeugt wird, wenn kein externer Switch gefunden wurde. (nur hyperv Treiber)",
 	"Fail check if container paused": "Schlägt fehl, wenn der Container pausiert ist",
-	"Failed removing pid from pidfile: {{.error}}": "",
 	"Failed runtime": "Runtime fehlgeschlagen",
 	"Failed to build image": "Bau des Images fehlgeschlagen",
 	"Failed to cache and load images": "Cachen und laden der Images fehlgeschlagen",
@@ -432,7 +431,6 @@
 	"Mounts the specified directory into minikube": "Mounted das angegebene Verzeichnis in Minikube",
 	"Mounts the specified directory into minikube.": "Mounted das angegebene Verzeichnis in Minikube.",
 	"Multiple errors deleting profiles": "Es sind mehrere Fehler beim Löschen der Profile aufgetreten",
-	"Multiple errors encountered:": "",
 	"Multiple minikube profiles were found - ": "Es wurden mehrere Minikube Profile gefunden - ",
 	"NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "NIC Type der fürs Host only Netzwerk verwendet wird. Einer aus Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, oder virtio (nur virtualbox Treiber)",
 	"NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "NIC Type der fürs NAT Network verwendet wird. Einer aus Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (Nur virtualbox Treiber)",
@@ -980,7 +978,6 @@
 	"invalid kubernetes version": "Invalide Kubernetes Version",
 	"json encoding failure": "",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "Halte den kube-context aktiv, wenn der Cluster gestoppt ist. Default: false",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "kubeadm erkannte einen TCP Port Konflikt mit anderen Prozessen: wahrscheinlich eine andere lokale Kubernetes Installation. Führe lsof -p\u003cport\u003e aus um den Prozess zu finden und zu töten",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "Konfiguration von Kubectl und minikube wird in {{.home_folder}} gespeichert",
 	"kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "kubectl nicht gefunden. Falls Sie es benötigen, versuchen Sie 'minikube kubectl -- get pods -A' aufzurufen",
diff --git a/translations/es.json b/translations/es.json
index b64ab2715..97c950087 100644
--- a/translations/es.json
+++ b/translations/es.json
@@ -258,7 +258,6 @@
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
 	"Fail check if container paused": "",
-	"Failed removing pid from pidfile: {{.error}}": "",
 	"Failed runtime": "",
 	"Failed to build image": "No se pudo construir la imagen",
 	"Failed to cache and load images": "",
@@ -440,7 +439,6 @@
 	"Mounts the specified directory into minikube": "",
 	"Mounts the specified directory into minikube.": "",
 	"Multiple errors deleting profiles": "",
-	"Multiple errors encountered:": "",
 	"Multiple minikube profiles were found - ": "",
 	"NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
 	"NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
@@ -976,7 +974,6 @@
 	"invalid kubernetes version": "",
 	"json encoding failure": "",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "La configuración de kubectl y de minikube se almacenará en {{.home_folder}}",
 	"kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "",
diff --git a/translations/fr.json b/translations/fr.json
index e1eefcb86..af3d6a585 100644
--- a/translations/fr.json
+++ b/translations/fr.json
@@ -245,7 +245,6 @@
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "Port exposé du tableau de bord proxyfié. Réglez sur 0 pour choisir un port aléatoire.",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "L'adaptateur externe sur lequel un commutateur externe sera créé si aucun commutateur externe n'est trouvé. (pilote hyperv uniquement)",
 	"Fail check if container paused": "Échec de la vérification si le conteneur est en pause",
-	"Failed removing pid from pidfile: {{.error}}": "",
 	"Failed runtime": "Échec de l'exécution",
 	"Failed to build image": "Échec de la création de l'image",
 	"Failed to cache and load images": "Échec de la mise en cache et du chargement des images",
@@ -423,7 +422,6 @@
 	"Mounts the specified directory into minikube": "Monte le répertoire spécifié dans minikube",
 	"Mounts the specified directory into minikube.": "Monte le répertoire spécifié dans minikube.",
 	"Multiple errors deleting profiles": "Plusieurs erreurs lors de la suppression des profils",
-	"Multiple errors encountered:": "",
 	"Multiple minikube profiles were found - ": "Plusieurs profils minikube ont été trouvés -",
 	"NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "Type de carte réseau utilisé pour le réseau hôte uniquement. Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM ou virtio (pilote virtualbox uniquement)",
 	"NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "Type de carte réseau utilisé pour le réseau nat. Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM ou virtio (pilote virtualbox uniquement)",
@@ -961,7 +959,6 @@
 	"invalid kubernetes version": "version kubernetes invalide",
 	"json encoding failure": "échec de l'encodage json",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "garder le kube-context actif après l'arrêt du cluster. La valeur par défaut est false.",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "kubeadm a détecté un conflit de port TCP avec un autre processus : probablement une autre installation locale de Kubernetes. Exécutez lsof -p\u003cport\u003e pour trouver le processus et le tuer",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "Les configurations kubectl et minikube seront stockées dans le dossier {{.home_folder}}.",
 	"kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "kubectl introuvable. Si vous en avez besoin, essayez : 'minikube kubectl -- get pods -A'",
diff --git a/translations/ja.json b/translations/ja.json
index ba8ab7754..52f00c68e 100644
--- a/translations/ja.json
+++ b/translations/ja.json
@@ -235,7 +235,6 @@
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "プロキシー化されたダッシュボードの公開ポート。0 に設定すると、ランダムなポートが選ばれます。",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "外部スイッチが見つからない場合に、外部スイッチが作成される外部アダプター (hyperv ドライバーのみ)。",
 	"Fail check if container paused": "コンテナーが一時停止しているかどうかのチェックに失敗しました",
-	"Failed removing pid from pidfile: {{.error}}": "",
 	"Failed runtime": "ランタイムが失敗しました",
 	"Failed to build image": "イメージのビルドに失敗しました",
 	"Failed to cache and load images": "イメージのキャッシュとロードに失敗しました",
@@ -409,7 +408,6 @@
 	"Mounts the specified directory into minikube": "minikube に指定されたディレクトリーをマウントします",
 	"Mounts the specified directory into minikube.": "minikube に指定されたディレクトリーをマウントします。",
 	"Multiple errors deleting profiles": "プロファイル削除中に複数のエラーが発生しました",
-	"Multiple errors encountered:": "",
 	"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)": "ホストオンリーネットワークに使用する NIC タイプ。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)": "NAT ネットワークに使用する NIC タイプ。Am79C970A、Am79C973、82540EM、82543GC、82545EM、virtio のいずれか (virtualbox ドライバーのみ)",
@@ -918,7 +916,6 @@
 	"invalid kubernetes version": "無効な Kubernetes バージョン",
 	"json encoding failure": "json エンコード失敗",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "クラスター停止後に kube-context をアクティブのままにします。デフォルトは false です。",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "kubeadm が他のプロセス (おそらくローカルにインストールされた他の Kubernetes) との TCP ポート衝突を検出しました。 lsof -p\u003cport\u003e を実行してそのプロセスを特定し、停止してください",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "kubectl と minikube の構成は {{.home_folder}} に保存されます",
 	"kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "kubectl が見つかりません。kubectl が必要な場合、'minikube kubectl -- get pods -A' を試してください",
diff --git a/translations/ko.json b/translations/ko.json
index 2384b0b84..ec8cca1a2 100644
--- a/translations/ko.json
+++ b/translations/ko.json
@@ -267,7 +267,6 @@
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
 	"Fail check if container paused": "",
-	"Failed removing pid from pidfile: {{.error}}": "",
 	"Failed runtime": "런타임이 실패하였습니다",
 	"Failed to build image": "",
 	"Failed to cache ISO": "ISO 캐싱에 실패하였습니다",
@@ -455,7 +454,6 @@
 	"Mounts the specified directory into minikube": "특정 디렉토리를 minikube 에 마운트합니다",
 	"Mounts the specified directory into minikube.": "",
 	"Multiple errors deleting profiles": "",
-	"Multiple errors encountered:": "",
 	"Multiple minikube profiles were found - ": "",
 	"NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
 	"NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
@@ -980,7 +978,6 @@
 	"invalid kubernetes version": "",
 	"json encoding failure": "",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "kubectl 과 minikube 환경 정보는 {{.home_folder}} 에 저장될 것입니다",
 	"kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/": "kubectl 이 PATH 에 없습니다, 하지만 이는 대시보드에서 필요로 합니다. 설치 가이드:https://kubernetes.io/docs/tasks/tools/install-kubectl/",
diff --git a/translations/pl.json b/translations/pl.json
index 78456bc1f..c300a992b 100644
--- a/translations/pl.json
+++ b/translations/pl.json
@@ -258,7 +258,6 @@
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
 	"Fail check if container paused": "",
-	"Failed removing pid from pidfile: {{.error}}": "",
 	"Failed runtime": "",
 	"Failed to build image": "",
 	"Failed to cache and load images": "",
@@ -444,7 +443,6 @@
 	"Mounts the specified directory into minikube": "Montuje podany katalog wewnątrz minikube",
 	"Mounts the specified directory into minikube.": "Montuje podany katalog wewnątrz minikube",
 	"Multiple errors deleting profiles": "Wystąpiło wiele błędów podczas usuwania profili",
-	"Multiple errors encountered:": "",
 	"Multiple minikube profiles were found - ": "Znaleziono wiele profili minikube - ",
 	"NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
 	"NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
@@ -988,7 +986,6 @@
 	"invalid kubernetes version": "Nieprawidłowa wersja Kubernetesa",
 	"json encoding failure": "",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "konfiguracja minikube i kubectl będzie przechowywana w katalogu {{.home_folder}}",
 	"kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/": "kubectl nie zostało odnalezione w zmiennej środowiskowej ${PATH}. Instrukcja instalacji:  https://kubernetes.io/docs/tasks/tools/install-kubectl/",
diff --git a/translations/ru.json b/translations/ru.json
index 7d27908a6..095293e49 100644
--- a/translations/ru.json
+++ b/translations/ru.json
@@ -232,7 +232,6 @@
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
 	"Fail check if container paused": "",
-	"Failed removing pid from pidfile: {{.error}}": "",
 	"Failed runtime": "",
 	"Failed to build image": "",
 	"Failed to cache and load images": "",
@@ -405,7 +404,6 @@
 	"Mounts the specified directory into minikube": "",
 	"Mounts the specified directory into minikube.": "",
 	"Multiple errors deleting profiles": "",
-	"Multiple errors encountered:": "",
 	"Multiple minikube profiles were found - ": "",
 	"NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
 	"NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
@@ -908,7 +906,6 @@
 	"invalid kubernetes version": "",
 	"json encoding failure": "",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "",
 	"kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "",
diff --git a/translations/strings.txt b/translations/strings.txt
index 662a1ec39..953366b39 100644
--- a/translations/strings.txt
+++ b/translations/strings.txt
@@ -232,7 +232,6 @@
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
 	"Fail check if container paused": "",
-	"Failed removing pid from pidfile: {{.error}}": "",
 	"Failed runtime": "",
 	"Failed to build image": "",
 	"Failed to cache and load images": "",
@@ -405,7 +404,6 @@
 	"Mounts the specified directory into minikube": "",
 	"Mounts the specified directory into minikube.": "",
 	"Multiple errors deleting profiles": "",
-	"Multiple errors encountered:": "",
 	"Multiple minikube profiles were found - ": "",
 	"NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
 	"NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
@@ -908,7 +906,6 @@
 	"invalid kubernetes version": "",
 	"json encoding failure": "",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "",
 	"kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "",
diff --git a/translations/zh-CN.json b/translations/zh-CN.json
index faa1aa358..9848a096d 100644
--- a/translations/zh-CN.json
+++ b/translations/zh-CN.json
@@ -315,24 +315,23 @@
 	"Exiting.": "正在退出。",
 	"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
 	"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
-	"Fail check if container paused": "如果容器已挂起，则检查失败",
-	"Failed removing pid from pidfile: {{.error}}": "",
-	"Failed runtime": "运行时失败",
-	"Failed to build image": "构建镜像失败",
+	"Fail check if container paused": "",
+	"Failed runtime": "",
+	"Failed to build image": "",
 	"Failed to cache ISO": "缓存ISO 时失败",
 	"Failed to cache and load images": "缓存以及导入镜像失败",
 	"Failed to cache binaries": "缓存二进制文件失败",
 	"Failed to cache images": "缓存镜像时失败",
 	"Failed to cache images to tar": "缓存镜像到 tar 压缩包时出错",
-	"Failed to cache kubectl": "缓存 kubectl 失败",
+	"Failed to cache kubectl": "",
 	"Failed to change permissions for {{.minikube_dir_path}}: {{.error}}": "未能更改 {{.minikube_dir_path}} 的权限：{{.error}}",
 	"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 metallb IP {{.profile}}": "",
 	"Failed to configure registry-aliases {{.profile}}": "",
-	"Failed to create file": "文件创建失败",
-	"Failed to create runtime": "运行时创建失败",
+	"Failed to create file": "",
+	"Failed to create runtime": "",
 	"Failed to delete cluster {{.name}}, proceeding with retry anyway.": "",
 	"Failed to delete cluster {{.name}}.": "",
 	"Failed to delete cluster: {{.error}}": "未能删除集群：{{.error}}",
@@ -340,13 +339,13 @@
 	"Failed to delete images": "删除镜像时失败",
 	"Failed to delete images from config": "无法删除配置的镜像",
 	"Failed to download kubectl": "下载 kubectl 失败",
-	"Failed to download licenses": "licenses 下载失败",
-	"Failed to enable container runtime": "容器运行时启用失败",
+	"Failed to download licenses": "",
+	"Failed to enable container runtime": "",
 	"Failed to generate config": "无法生成配置",
 	"Failed to get bootstrapper": "获取 bootstrapper 失败",
-	"Failed to get command runner": "获取命令运行程序失败",
+	"Failed to get command runner": "",
 	"Failed to get driver URL": "获取 driver URL 失败",
-	"Failed to get image map": "获取镜像映射失败",
+	"Failed to get image map": "",
 	"Failed to get service URL: {{.error}}": "获取 service URL 失败：{{.error}}",
 	"Failed to get temp": "",
 	"Failed to kill mount process: {{.error}}": "未能终止装载进程：{{.error}}",
@@ -519,7 +518,6 @@
 	"Mounts the specified directory into minikube": "将指定的目录挂载到 minikube",
 	"Mounts the specified directory into minikube.": "将指定的目录挂载到 minikube。",
 	"Multiple errors deleting profiles": "删除配置文件时出现多个错误",
-	"Multiple errors encountered:": "",
 	"Multiple minikube profiles were found -": "发现了多个 minikube 配置文件 -",
 	"Multiple minikube profiles were found - ": "",
 	"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 驱动程序)",
@@ -1096,7 +1094,6 @@
 	"invalid kubernetes version": "",
 	"json encoding failure": "",
 	"keep the kube-context active after cluster is stopped. Defaults to false.": "",
-	"kubeadm certificates have expired. Generating new ones...": "",
 	"kubeadm detected a TCP port conflict with another process: probably another local Kubernetes installation. Run lsof -p\u003cport\u003e to find the process and kill it": "kubeadm 检测一个到与其他进程的 TCP 端口冲突：或许是另外的本地安装的 Kubernetes 导致。执行 lsof -p\u003cport\u003e  查找并杀死这些进程",
 	"kubectl and minikube configuration will be stored in {{.home_folder}}": "kubectl 和 minikube 配置将存储在 {{.home_folder}} 中",
 	"kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "",


Test patch:
diff --git a/.github/workflows/update-gotestsum-version.yml b/.github/workflows/update-gotestsum-version.yml
index 970984b06..a5710ee06 100644
--- a/.github/workflows/update-gotestsum-version.yml
+++ b/.github/workflows/update-gotestsum-version.yml
@@ -31,7 +31,7 @@ jobs:
           echo "EOF" >> $GITHUB_OUTPUT
       - name: Create PR
         if: ${{ steps.bumpGotestsum.outputs.changes != '' }}
-        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666
+        uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5
         with:
           token: ${{ secrets.MINIKUBE_BOT_PAT }}
           commit-message: 'CI: Update gotestsum from ${{ steps.bumpGotestsum.outputs.OLD_VERSION }} to ${{ steps.bumpGotestsum.outputs.NEW_VERSION }}'
diff --git a/cmd/minikube/cmd/delete_test.go b/cmd/minikube/cmd/delete_test.go
index 36adc1cb4..d91f6d5b3 100644
--- a/cmd/minikube/cmd/delete_test.go
+++ b/cmd/minikube/cmd/delete_test.go
@@ -19,9 +19,7 @@ package cmd
 import (
 	"fmt"
 	"os"
-	"os/exec"
 	"path/filepath"
-	"strings"
 	"testing"
 
 	"github.com/docker/machine/libmachine"
@@ -222,64 +220,3 @@ func TestDeleteAllProfiles(t *testing.T) {
 
 	viper.Set(config.ProfileName, "")
 }
-
-// TestTryKillOne spawns a go child process that waits to be SIGKILLed,
-// then tries to execute the tryKillOne function on it;
-// if after tryKillOne the process still exists, we consider it a failure
-func TestTryKillOne(t *testing.T) {
-
-	var waitForSig = []byte(`
-package main
-
-import (
-	"os"
-	"os/signal"
-	"syscall"
-)
-
-// This is used to unit test functions that send termination
-// signals to processes, in a cross-platform way.
-func main() {
-	ch := make(chan os.Signal, 1)
-	done := make(chan struct{})
-	defer close(ch)
-
-	signal.Notify(ch, syscall.SIGHUP)
-	defer signal.Stop(ch)
-
-	go func() {
-		<-ch
-		close(done)
-	}()
-
-	<-done
-}
-`)
-	td := t.TempDir()
-	tmpfile := filepath.Join(td, "waitForSig.go")
-
-	if err := os.WriteFile(tmpfile, waitForSig, 0o600); err != nil {
-		t.Fatalf("copying source to %s: %v\n", tmpfile, err)
-	}
-
-	processToKill := exec.Command("go", "run", tmpfile)
-	err := processToKill.Start()
-	if err != nil {
-		t.Fatalf("while execing child process: %v\n", err)
-	}
-	pid := processToKill.Process.Pid
-
-	isMinikubeProcess = func(int) (bool, error) {
-		return true, nil
-	}
-
-	err = trySigKillProcess(pid)
-	if err != nil {
-		t.Fatalf("while trying to kill child proc %d: %v\n", pid, err)
-	}
-
-	// waiting for process to exit
-	if err := processToKill.Wait(); !strings.Contains(err.Error(), "killed") {
-		t.Fatalf("unable to kill process: %v\n", err)
-	}
-}
diff --git a/hack/conformance_tests.sh b/hack/conformance_tests.sh
index 34f7f721d..2b5f40907 100755
--- a/hack/conformance_tests.sh
+++ b/hack/conformance_tests.sh
@@ -73,10 +73,9 @@ documentation_url: https://minikube.sigs.k8s.io/docs/
 product_logo_url: https://raw.githubusercontent.com/kubernetes/minikube/master/images/logo/logo.svg
 type: installer
 description: minikube runs a local Kubernetes cluster on macOS, Linux, and Windows.
-contact_email_address: minikube-dev@googlegroups.com
 EOF
 
-cat <<"EOF" >README.md
+cat <<EOF >README.md
 # Reproducing the test results
 
 ## Run minikube with docker driver
diff --git a/hack/jenkins/cloud_shell_functional_tests_docker.sh b/hack/jenkins/cloud_shell_functional_tests_docker.sh
index 2d142f05c..bf4fbc24f 100755
--- a/hack/jenkins/cloud_shell_functional_tests_docker.sh
+++ b/hack/jenkins/cloud_shell_functional_tests_docker.sh
@@ -40,7 +40,6 @@ gcloud cloud-shell ssh --authorize-session << EOF
  ROOT_JOB_ID=$ROOT_JOB_ID
 
  # Prevent cloud-shell is ephemeral warnings on apt-get
- mkdir ~/.cloudshell
  touch ~/.cloudshell/no-apt-get-warning
 
  gsutil -m cp -r gs://minikube-builds/${MINIKUBE_LOCATION}/installers .
diff --git a/hack/jenkins/linux_integration_tests_none.sh b/hack/jenkins/linux_integration_tests_none.sh
index dedb14fae..9bce63c99 100755
--- a/hack/jenkins/linux_integration_tests_none.sh
+++ b/hack/jenkins/linux_integration_tests_none.sh
@@ -69,34 +69,26 @@ if ! which socat &>/dev/null; then
   sudo apt-get -qq -y install socat
 fi
 
-# cri-dockerd is required for Kubernetes v1.24+ with none driver
-CRI_DOCKERD_VERSION="0.3.1"
-if [[ $(cri-dockerd --version 2>&1) != *"$CRI_DOCKERD_VERSION"* ]]; then
-  echo "WARNING: expected version of cri-dockerd is not installed. will try to install."
-  sudo systemctl stop cri-docker.socket || true
-  sudo systemctl stop cri-docker.service || true
+# cri-dockerd is required for Kubernetes 1.24 and higher for none driver
+if ! cri-dockerd --version &>/dev/null; then
+  echo "WARNING: cri-dockerd is not installed. will try to install."
+  CRI_DOCKERD_VERSION="v0.3.1"
   CRI_DOCKERD_COMMIT="9a87d6ae274ecf0f23776920964d6484bd679282"
   CRI_DOCKERD_BASE_URL="https://storage.googleapis.com/kicbase-artifacts/cri-dockerd/${CRI_DOCKERD_COMMIT}"
   sudo curl -L "${CRI_DOCKERD_BASE_URL}/amd64/cri-dockerd" -o /usr/bin/cri-dockerd
   sudo curl -L "${CRI_DOCKERD_BASE_URL}/cri-docker.socket" -o /usr/lib/systemd/system/cri-docker.socket
   sudo curl -L "${CRI_DOCKERD_BASE_URL}/cri-docker.service" -o /usr/lib/systemd/system/cri-docker.service
   sudo chmod +x /usr/bin/cri-dockerd
-  sudo systemctl daemon-reload
-  sudo systemctl enable cri-docker.service
-  sudo systemctl enable --now cri-docker.socket
 fi
 
-# crictl is required for Kubernetes v1.24+ with none driver
-CRICTL_VERSION="v1.17.0"
-if [[ $(crictl --version) != *"$CRICTL_VERSION"* ]]; then
-  echo "WARNING: expected version of crictl is not installed. will try to install."
+# crictl is required for Kubernetes 1.24 and higher for none driver
+if ! crictl &>/dev/null; then
+  echo "WARNING: crictl is not installed. will try to install."
+  CRICTL_VERSION="v1.17.0"
   curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$CRICTL_VERSION/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz --output crictl-${CRICTL_VERSION}-linux-amd64.tar.gz
   sudo tar zxvf crictl-$CRICTL_VERSION-linux-amd64.tar.gz -C /usr/local/bin
 fi
 
-# cni-plugins is required for Kubernetes v1.24+ with none driver
-./installers/check_install_cni_plugins.sh
-
 # We need this for reasons now
 sudo sysctl fs.protected_regular=0
 
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd-api-port.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd-api-port.yaml
index 9c66e8115..28ab4193b 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd-api-port.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd-api-port.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd-pod-network-cidr.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd-pod-network-cidr.yaml
index fa6f78d2f..d7ed3067f 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd-pod-network-cidr.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd-pod-network-cidr.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: cluster.local
   podSubnet: "192.168.32.0/20"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd.yaml
index f7b988d9c..3c942544f 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/containerd.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/crio-options-gates.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/crio-options-gates.yaml
index 3c314f68c..1917e5f92 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/crio-options-gates.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/crio-options-gates.yaml
@@ -44,7 +44,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/crio.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/crio.yaml
index 92cc612d9..5964c1db0 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/crio.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/crio.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/default.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/default.yaml
index f4cd34ba3..543df91cb 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/default.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/default.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/dns.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/dns.yaml
index a527103e4..04260d265 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/dns.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/dns.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: minikube.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/image-repository.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/image-repository.yaml
index 3ffc93e85..63b4b3873 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/image-repository.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/image-repository.yaml
@@ -39,7 +39,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/options.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/options.yaml
index 57bf6a75d..828d67dcc 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/options.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.27/options.yaml
@@ -41,7 +41,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.27.0
+kubernetesVersion: v1.27.0-rc.1
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/certs_test.go b/pkg/minikube/bootstrapper/certs_test.go
index 277fbdf7d..e46a32a82 100644
--- a/pkg/minikube/bootstrapper/certs_test.go
+++ b/pkg/minikube/bootstrapper/certs_test.go
@@ -20,7 +20,6 @@ import (
 	"os"
 	"path/filepath"
 	"testing"
-	"time"
 
 	"k8s.io/minikube/pkg/minikube/command"
 	"k8s.io/minikube/pkg/minikube/config"
@@ -56,7 +55,6 @@ func TestSetupCerts(t *testing.T) {
 	expected := map[string]string{
 		`sudo /bin/bash -c "test -s /usr/share/ca-certificates/mycert.pem && ln -fs /usr/share/ca-certificates/mycert.pem /etc/ssl/certs/mycert.pem"`:             "-",
 		`sudo /bin/bash -c "test -s /usr/share/ca-certificates/minikubeCA.pem && ln -fs /usr/share/ca-certificates/minikubeCA.pem /etc/ssl/certs/minikubeCA.pem"`: "-",
-		`date -u +%d-%m-%y-%T`: time.Now().Format("02-01-06-15:04:05"),
 	}
 	f := command.NewFakeCommandRunner()
 	f.SetCommandToOutput(expected)
diff --git a/site/content/en/docs/contrib/tests.en.md b/site/content/en/docs/contrib/tests.en.md
index 1d3ff3407..2c17563f3 100644
--- a/site/content/en/docs/contrib/tests.en.md
+++ b/site/content/en/docs/contrib/tests.en.md
@@ -399,10 +399,6 @@ Note: This test will fail on release PRs as the licenses file for the new versio
 
 #### validateMountCmd
 verifies the minikube mount command works properly
-for the platforms that support it, we're testing:
-- a generic 9p mount
-- a 9p mount on a specific port
-- cleaning-mechanism for profile-specific mounts
 
 #### validatePersistentVolumeClaim
 makes sure PVCs work properly
diff --git a/test/integration/functional_test_mount_test.go b/test/integration/functional_test_mount_test.go
index a04e2a800..b09491d42 100644
--- a/test/integration/functional_test_mount_test.go
+++ b/test/integration/functional_test_mount_test.go
@@ -45,10 +45,6 @@ const (
 )
 
 // validateMountCmd verifies the minikube mount command works properly
-// for the platforms that support it, we're testing:
-// - a generic 9p mount
-// - a 9p mount on a specific port
-// - cleaning-mechanism for profile-specific mounts
 func validateMountCmd(ctx context.Context, t *testing.T, profile string) { // nolint
 	if NoneDriver() {
 		t.Skip("skipping: none driver does not support mount")
@@ -120,7 +116,7 @@ func validateMountCmd(ctx context.Context, t *testing.T, profile string) { // no
 		if err := retry.Expo(checkMount, time.Millisecond*500, Seconds(15)); err != nil {
 			// For local testing, allow macOS users to click prompt. If they don't, skip the test.
 			if runtime.GOOS == "darwin" {
-				t.Skip("skipping: mount did not appear, likely because macOS requires prompt to allow non-code signed binaries to listen on non-localhost port")
+				t.Skip("skipping: mount did not appear, likely because macOS requires prompt to allow non-codesigned binaries to listen on non-localhost port")
 			}
 			t.Fatalf("/mount-9p did not appear within %s: %v", time.Since(start), err)
 		}
@@ -248,7 +244,7 @@ func validateMountCmd(ctx context.Context, t *testing.T, profile string) { // no
 		if err := retry.Expo(checkMount, time.Millisecond*500, Seconds(15)); err != nil {
 			// For local testing, allow macOS users to click prompt. If they don't, skip the test.
 			if runtime.GOOS == "darwin" {
-				t.Skip("skipping: mount did not appear, likely because macOS requires prompt to allow non-code signed binaries to listen on non-localhost port")
+				t.Skip("skipping: mount did not appear, likely because macOS requires prompt to allow non-codesigned binaries to listen on non-localhost port")
 			}
 			t.Fatalf("/mount-9p did not appear within %s: %v", time.Since(start), err)
 		}
@@ -284,95 +280,4 @@ func validateMountCmd(ctx context.Context, t *testing.T, profile string) { // no
 			t.Fatalf("failed to find bind address with port 46464. Mount command out: \n%v", mountText)
 		}
 	})
-
-	t.Run("VerifyCleanup", func(t *testing.T) {
-		tempDir := t.TempDir()
-
-		ctx, cancel := context.WithTimeout(ctx, Minutes(10))
-
-		guestMountPaths := []string{"/mount1", "/mount2", "/mount3"}
-
-		var mntProcs []*StartSession
-		for _, guestMount := range guestMountPaths {
-			args := []string{"mount", "-p", profile, fmt.Sprintf("%s:%s", tempDir, guestMount), "--alsologtostderr", "-v=1"}
-			mntProc, err := Start(t, exec.CommandContext(ctx, Target(), args...))
-			if err != nil {
-				t.Fatalf("%v failed: %v", args, err)
-			}
-
-			mntProcs = append(mntProcs, mntProc)
-
-		}
-
-		defer func() {
-			// Still trying to stop mount processes that could otherwise
-			// (if something weird happens...) leave the test run hanging
-			// The worst thing that could happen is that we try to kill
-			// something that was aleardy killed...
-			for _, mp := range mntProcs {
-				mp.Stop(t)
-			}
-
-			cancel()
-			if *cleanup {
-				os.RemoveAll(tempDir)
-			}
-		}()
-
-		// are the mounts alive yet..?
-		checkMount := func() error {
-			for _, mnt := range guestMountPaths {
-				rr, err := Run(t, exec.CommandContext(ctx, Target(), "-p", profile, "ssh", "findmnt -T", mnt))
-				if err != nil {
-					// if something weird has happened from previous tests..
-					// this could at least spare us some waiting
-					if strings.Contains(rr.Stdout.String(), fmt.Sprintf("Profile \"%s\" not found.", profile)) {
-						t.Fatalf("profile was deleted, cancelling the test")
-					}
-					return err
-				}
-			}
-			return nil
-		}
-		if err := retry.Expo(checkMount, time.Millisecond*500, Seconds(15)); err != nil {
-			// For local testing, allow macOS users to click prompt. If they don't, skip the test.
-			if runtime.GOOS == "darwin" {
-				t.Skip("skipping: mount did not appear, likely because macOS requires prompt to allow non-code signed binaries to listen on non-localhost port")
-			}
-			t.Fatalf("mount was not ready in time: %v", err)
-		}
-
-		checkProcsAlive := func(end chan bool) {
-			for _, mntp := range mntProcs {
-				// Trying to wait for process end
-				// if the wait fail with ExitError we know that the process
-				// doesn't exist anymore..
-				go func(end chan bool) {
-					err := mntp.cmd.Wait()
-					if _, ok := err.(*exec.ExitError); ok {
-						end <- true
-					}
-				}(end)
-
-				// Either we know that the mount process has ended
-				// or we fail after 1 second
-				// TODO: is there a better way? rather than waiting..
-				select {
-				case <-time.After(1 * time.Second):
-					t.Fatalf("1s TIMEOUT: Process %d is still running\n", mntp.cmd.Process.Pid)
-				case <-end:
-					continue
-				}
-			}
-		}
-
-		// exec the mount killer
-		_, err := Run(t, exec.Command(Target(), "mount", "-p", profile, "--kill=true"))
-		if err != nil {
-			t.Fatalf("failed while trying to kill mounts")
-		}
-
-		end := make(chan bool, 1)
-		checkProcsAlive(end)
-	})
 }