Merge branch 'master' into k8s1.24

pull/14197/head
Steven Powell 2022-06-22 10:24:15 -07:00 committed by GitHub
commit 912226e73f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
56 changed files with 649 additions and 139 deletions

View File

@ -24,7 +24,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Download Dependencies - name: Download Dependencies
run: go mod download run: go mod download
- name: Build Binaries - name: Build Binaries
@ -51,7 +50,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt - name: Install libvirt
run: | run: |
sudo apt-get update sudo apt-get update
@ -70,7 +68,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt - name: Install libvirt
run: | run: |
sudo apt-get update sudo apt-get update

View File

@ -19,7 +19,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Generate Docs - name: Generate Docs
id: gendocs id: gendocs
run: | run: |

View File

@ -38,7 +38,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Download Dependencies - name: Download Dependencies
run: go mod download run: go mod download
- name: Build Binaries - name: Build Binaries
@ -118,7 +117,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Download Binaries - name: Download Binaries
uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95 uses: actions/download-artifact@fdafc3f9f2e2a522dc1d230e6a03de57a1e71c95

View File

@ -20,7 +20,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Update Leaderboard - name: Update Leaderboard
id: leaderboard id: leaderboard
run: | run: |

View File

@ -28,7 +28,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Download Dependencies - name: Download Dependencies
run: go mod download run: go mod download
- name: Build Binaries - name: Build Binaries
@ -55,7 +54,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt - name: Install libvirt
run: | run: |
sudo apt-get update sudo apt-get update
@ -74,7 +72,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt - name: Install libvirt
run: | run: |
sudo apt-get update sudo apt-get update
@ -122,7 +119,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh - name: Install gopogh
shell: bash shell: bash
@ -222,7 +218,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh - name: Install gopogh
shell: bash shell: bash
@ -326,7 +321,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh - name: Install gopogh
shell: bash shell: bash
run: | run: |
@ -412,7 +406,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh - name: Install gopogh
shell: bash shell: bash
@ -511,7 +504,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
# conntrack is required for kubernetes 1.18 and higher # conntrack is required for kubernetes 1.18 and higher
# socat is required for kubectl port forward which is used in some tests such as validateHelmTillerAddon # socat is required for kubectl port forward which is used in some tests such as validateHelmTillerAddon
# cri-dockerd is required for Kubernetes 1.24 and higher for none driver # cri-dockerd is required for Kubernetes 1.24 and higher for none driver

View File

@ -26,7 +26,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Download Dependencies - name: Download Dependencies
run: go mod download run: go mod download
- name: Build Binaries - name: Build Binaries
@ -53,7 +52,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt - name: Install libvirt
run: | run: |
sudo apt-get update sudo apt-get update
@ -72,7 +70,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt - name: Install libvirt
run: | run: |
sudo apt-get update sudo apt-get update
@ -120,7 +117,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh - name: Install gopogh
shell: bash shell: bash
run: | run: |
@ -220,7 +216,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh - name: Install gopogh
shell: bash shell: bash
@ -325,7 +320,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh - name: Install gopogh
shell: bash shell: bash
run: | run: |
@ -412,7 +406,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh - name: Install gopogh
shell: bash shell: bash
@ -512,7 +505,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
# conntrack is required for kubernetes 1.18 and higher # conntrack is required for kubernetes 1.18 and higher
# socat is required for kubectl port forward which is used in some tests such as validateHelmTillerAddon # socat is required for kubectl port forward which is used in some tests such as validateHelmTillerAddon
# cri-dockerd is required for Kubernetes 1.24 and higher for none driver # cri-dockerd is required for Kubernetes 1.24 and higher for none driver

View File

@ -23,7 +23,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Benchmark time-to-k8s for Docker driver with Docker runtime - name: Benchmark time-to-k8s for Docker driver with Docker runtime
run: | run: |
./hack/benchmark/time-to-k8s/public-chart/public-chart.sh docker docker ./hack/benchmark/time-to-k8s/public-chart/public-chart.sh docker docker
@ -48,7 +47,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Disable firewall - name: Disable firewall
run: | run: |
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

View File

@ -19,7 +19,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: time-to-k8s Benchmark - name: time-to-k8s Benchmark
id: timeToK8sBenchmark id: timeToK8sBenchmark
run: | run: |

View File

@ -18,7 +18,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt - name: Install libvirt
run: | run: |
sudo apt-get update sudo apt-get update

View File

@ -18,7 +18,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Bump Golang Versions - name: Bump Golang Versions
id: bumpGolang id: bumpGolang
run: | run: |

View File

@ -18,7 +18,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Bump Golint Versions - name: Bump Golint Versions
id: bumpGolint id: bumpGolint
run: | run: |

View File

@ -18,7 +18,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Bump gopogh Versions - name: Bump gopogh Versions
id: bumpGopogh id: bumpGopogh
run: | run: |

View File

@ -18,7 +18,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Bump Gotestsum Versions - name: Bump Gotestsum Versions
id: bumpGotestsum id: bumpGotestsum
run: | run: |

View File

@ -18,7 +18,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923 - uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with: with:
go-version: ${{env.GO_VERSION}} go-version: ${{env.GO_VERSION}}
stable: true
- name: Bump Kubeadm Constants for Kubernetes Images - name: Bump Kubeadm Constants for Kubernetes Images
id: bumpKubAdmConsts id: bumpKubAdmConsts
run: | run: |

View File

@ -0,0 +1,47 @@
name: "update-yearly-leaderboard"
on:
workflow_dispatch:
schedule:
# The 2nd of every month
- cron: "0 0 2 * *"
env:
GOPROXY: https://proxy.golang.org
GO_VERSION: '1.18.3'
permissions:
contents: read
jobs:
update-yearly-leaderboard:
if: github.repository == 'kubernetes/minikube'
runs-on: ubuntu-20.04
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: 'us-west-1'
steps:
- uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
- name: Update Yearly Leaderboard
id: yearly-leaderboard
run: |
make update-yearly-leaderboard
env:
GITHUB_TOKEN: ${{ secrets.MINIKUBE_BOT_PAT }}
- name: Create PR
if: ${{ steps.leaderboard.outputs.changes != '' }}
uses: peter-evans/create-pull-request@923ad837f191474af6b1721408744feb989a4c27
with:
token: ${{ secrets.MINIKUBE_BOT_PAT }}
commit-message: Update yearly leaderboard
committer: minikube-bot <minikube-bot@google.com>
author: minikube-bot <minikube-bot@google.com>
branch: yearly-leaderboard
push-to-fork: minikube-bot/minikube
base: master
delete-branch: true
title: 'Update Yearly Leaderboard'
body: |
Committing changes resulting from `make update-yearly-leaderboard`.
This PR is auto-generated by the [update-yearly-leaderboard](https://github.com/kubernetes/minikube/blob/master/.github/workflows/yearly-leaderboard.yml) CI workflow.

View File

@ -9,7 +9,7 @@ QEMU driver enhancements:
Features: Features:
* Add configure option to registry-aliases addon [#13912](https://github.com/kubernetes/minikube/pull/13912) * Add configure option to registry-aliases addon [#13912](https://github.com/kubernetes/minikube/pull/13912)
For a more detailed changelog, including changes occuring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md). For a more detailed changelog, including changes occurring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md).
Thank you to our contributors for this release! Thank you to our contributors for this release!
@ -75,7 +75,7 @@ Version Upgrades:
* ISO: Upgrade Podman from 2.2.1 to 3.4.2 [#13126](https://github.com/kubernetes/minikube/pull/13126) * ISO: Upgrade Podman from 2.2.1 to 3.4.2 [#13126](https://github.com/kubernetes/minikube/pull/13126)
* ISO: Add packaging for crun [#11679](https://github.com/kubernetes/minikube/pull/11679) * ISO: Add packaging for crun [#11679](https://github.com/kubernetes/minikube/pull/11679)
For a more detailed changelog, including changes occuring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md). For a more detailed changelog, including changes occurring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md).
Thank you to our contributors for this release! Thank you to our contributors for this release!
@ -161,7 +161,7 @@ Version Upgrades:
* ISO: Add packaging for cri-dockerd [#13191](https://github.com/kubernetes/minikube/pull/13191) * ISO: Add packaging for cri-dockerd [#13191](https://github.com/kubernetes/minikube/pull/13191)
For a more detailed changelog, including changes occuring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md). For a more detailed changelog, including changes occurring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md).
Thank you to our contributors for this release! Thank you to our contributors for this release!

View File

@ -813,6 +813,10 @@ release-notes:
update-leaderboard: update-leaderboard:
hack/update_contributions.sh hack/update_contributions.sh
.PHONY: update-yearly-leaderboard
update-yearly-leaderboard:
hack/yearly-leaderboard.sh
out/docker-machine-driver-kvm2: out/docker-machine-driver-kvm2-$(GOARCH) out/docker-machine-driver-kvm2: out/docker-machine-driver-kvm2-$(GOARCH)
$(if $(quiet),@echo " CP $@") $(if $(quiet),@echo " CP $@")
$(Q)cp $< $@ $(Q)cp $< $@

View File

@ -77,7 +77,7 @@ func TestAddonsList(t *testing.T) {
Ambassador *interface{} `json:"ambassador"` Ambassador *interface{} `json:"ambassador"`
} }
b := make([]byte, 557) b := make([]byte, 571)
r, w, err := os.Pipe() r, w, err := os.Pipe()
if err != nil { if err != nil {
t.Fatalf("failed to create pipe: %v", err) t.Fatalf("failed to create pipe: %v", err)

View File

@ -67,6 +67,29 @@ var addonsEnableCmd = &cobra.Command{
minikube{{.profileArg}} addons enable metrics-server minikube{{.profileArg}} addons enable metrics-server
`, out.V{"profileArg": tipProfileArg})
}
if addon == "headlamp" {
out.Styled(style.Tip, `To access Headlamp, use the following command:
minikube service headlamp -n headlamp
`)
out.Styled(style.Tip, `To authenticate in Headlamp, fetch the Authentication Token using the following command:
export SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=":metadata.name" | grep "headlamp-token")
kubectl get secret $SECRET --namespace headlamp --template=\{\{.data.token\}\} | base64 --decode
`)
tipProfileArg := ""
if ClusterFlagValue() != constants.DefaultClusterName {
tipProfileArg = fmt.Sprintf(" -p %s", ClusterFlagValue())
}
out.Styled(style.Tip, `Headlamp can display more detailed information when metrics-server is installed. To install it, run:
minikube{{.profileArg}} addons enable metrics-server
`, out.V{"profileArg": tipProfileArg}) `, out.V{"profileArg": tipProfileArg})
} }

View File

@ -50,8 +50,13 @@ var nodeAddCmd = &cobra.Command{
name := node.Name(len(cc.Nodes) + 1) name := node.Name(len(cc.Nodes) + 1)
out.Step(style.Happy, "Adding node {{.name}} to cluster {{.cluster}}", out.V{"name": name, "cluster": cc.Name}) // for now control-plane feature is not supported
if cp {
out.Step(style.Unsupported, "Adding a control-plane node is not yet supported, setting control-plane flag to false")
cp = false
}
out.Step(style.Happy, "Adding node {{.name}} to cluster {{.cluster}}", out.V{"name": name, "cluster": cc.Name})
// TODO: Deal with parameters better. Ideally we should be able to acceot any node-specific minikube start params here. // TODO: Deal with parameters better. Ideally we should be able to acceot any node-specific minikube start params here.
n := config.Node{ n := config.Node{
Name: name, Name: name,
@ -89,7 +94,7 @@ var nodeAddCmd = &cobra.Command{
func init() { func init() {
// TODO(https://github.com/kubernetes/minikube/issues/7366): We should figure out which minikube start flags to actually import // TODO(https://github.com/kubernetes/minikube/issues/7366): We should figure out which minikube start flags to actually import
nodeAddCmd.Flags().BoolVar(&cp, "control-plane", false, "If true, the node added will also be a control plane in addition to a worker.") nodeAddCmd.Flags().BoolVar(&cp, "control-plane", false, "This flag is currently unsupported.")
nodeAddCmd.Flags().BoolVar(&worker, "worker", true, "If true, the added node will be marked for work. Defaults to true.") nodeAddCmd.Flags().BoolVar(&worker, "worker", true, "If true, the added node will be marked for work. Defaults to true.")
nodeAddCmd.Flags().Bool(deleteOnFailure, false, "If set, delete the current cluster if start fails and try again. Defaults to false.") nodeAddCmd.Flags().Bool(deleteOnFailure, false, "If set, delete the current cluster if start fails and try again. Defaults to false.")

View File

@ -23,7 +23,6 @@ import (
"path/filepath" "path/filepath"
"runtime" "runtime"
"strings" "strings"
"time"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/pflag" "github.com/spf13/pflag"
@ -84,8 +83,16 @@ var RootCmd = &cobra.Command{
// Execute adds all child commands to the root command sets flags appropriately. // Execute adds all child commands to the root command sets flags appropriately.
// This is called by main.main(). It only needs to happen once to the rootCmd. // This is called by main.main(). It only needs to happen once to the rootCmd.
func Execute() { func Execute() {
defer audit.Log(time.Now()) auditID, err := audit.LogCommandStart()
if err != nil {
klog.Errorf("failed to log command start to audit: %v", err)
}
defer func() {
err := audit.LogCommandEnd(auditID)
if err != nil {
klog.Errorf("failed to log command end to audit: %v", err)
}
}()
// Check whether this is a windows binary (.exe) running inisde WSL. // Check whether this is a windows binary (.exe) running inisde WSL.
if runtime.GOOS == "windows" && detect.IsMicrosoftWSL() { if runtime.GOOS == "windows" && detect.IsMicrosoftWSL() {
var found = false var found = false

View File

@ -147,4 +147,8 @@ var (
// InAccelAssets assets for inaccel addon // InAccelAssets assets for inaccel addon
//go:embed inaccel/fpga-operator.yaml.tmpl //go:embed inaccel/fpga-operator.yaml.tmpl
InAccelAssets embed.FS InAccelAssets embed.FS
// HeadlampAssets assets for headlamp addon
//go:embed headlamp/*.yaml headlamp/*.tmpl
HeadlampAssets embed.FS
) )

View File

@ -0,0 +1,18 @@
---
# ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: headlamp-admin
namespace: headlamp
labels:
app.kubernetes.io/name: headlamp
app.kubernetes.io/instance: headlamp
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: headlamp
namespace: headlamp

View File

@ -0,0 +1,42 @@
---
# Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: headlamp
namespace: headlamp
labels:
app.kubernetes.io/name: headlamp
app.kubernetes.io/instance: headlamp
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: headlamp
app.kubernetes.io/instance: headlamp
template:
metadata:
labels:
app.kubernetes.io/name: headlamp
app.kubernetes.io/instance: headlamp
spec:
serviceAccountName: headlamp
containers:
- name: headlamp
image: {{.CustomRegistries.Headlamp | default .ImageRepository | default .Registries.Headlamp }}{{.Images.Headlamp}}
imagePullPolicy: IfNotPresent
args:
- "-in-cluster"
- "-plugins-dir=/headlamp/plugins"
ports:
- name: http
containerPort: 4466
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http

View File

@ -0,0 +1,6 @@
---
# Namespace
apiVersion: v1
kind: Namespace
metadata:
name: headlamp

View File

@ -0,0 +1,21 @@
---
# Service
apiVersion: v1
kind: Service
metadata:
name: headlamp
namespace: headlamp
labels:
app.kubernetes.io/name: headlamp
app.kubernetes.io/instance: headlamp
kubernetes.io/minikube-addons-endpoint: headlamp
spec:
type: NodePort
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: headlamp
app.kubernetes.io/instance: headlamp

View File

@ -0,0 +1,10 @@
---
# ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
name: headlamp
namespace: headlamp
labels:
app.kubernetes.io/name: headlamp
app.kubernetes.io/instance: headlamp

29
go.mod
View File

@ -7,7 +7,7 @@ require (
contrib.go.opencensus.io/exporter/stackdriver v0.13.12 contrib.go.opencensus.io/exporter/stackdriver v0.13.12
github.com/Delta456/box-cli-maker/v2 v2.2.2 github.com/Delta456/box-cli-maker/v2 v2.2.2
github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2 github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.1 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.2
github.com/Microsoft/hcsshim v0.8.17 // indirect github.com/Microsoft/hcsshim v0.8.17 // indirect
github.com/Parallels/docker-machine-parallels/v2 v2.0.1 github.com/Parallels/docker-machine-parallels/v2 v2.0.1
github.com/VividCortex/godaemon v1.0.0 github.com/VividCortex/godaemon v1.0.0
@ -62,7 +62,7 @@ require (
github.com/russross/blackfriday v1.6.0 // indirect github.com/russross/blackfriday v1.6.0 // indirect
github.com/samalba/dockerclient v0.0.0-20160414174713-91d7393ff859 // indirect github.com/samalba/dockerclient v0.0.0-20160414174713-91d7393ff859 // indirect
github.com/shirou/gopsutil/v3 v3.22.5 github.com/shirou/gopsutil/v3 v3.22.5
github.com/spf13/cobra v1.4.0 github.com/spf13/cobra v1.5.0
github.com/spf13/pflag v1.0.5 github.com/spf13/pflag v1.0.5
github.com/spf13/viper v1.12.0 github.com/spf13/viper v1.12.0
github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097 github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097
@ -76,20 +76,20 @@ require (
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3
golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f
golang.org/x/sys v0.0.0-20220608164250-635b8c9b7f68 golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
golang.org/x/text v0.3.7 golang.org/x/text v0.3.7
gonum.org/v1/plot v0.11.0 gonum.org/v1/plot v0.11.0
google.golang.org/api v0.83.0 google.golang.org/api v0.85.0
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.24.1 k8s.io/api v0.24.2
k8s.io/apimachinery v0.24.1 k8s.io/apimachinery v0.24.2
k8s.io/client-go v0.24.1 k8s.io/client-go v0.24.2
k8s.io/cluster-bootstrap v0.0.0 k8s.io/cluster-bootstrap v0.0.0
k8s.io/component-base v0.24.1 k8s.io/component-base v0.24.2
k8s.io/klog/v2 v2.60.1 k8s.io/klog/v2 v2.60.1
k8s.io/kubectl v0.24.1 k8s.io/kubectl v0.24.2
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
libvirt.org/go/libvirt v1.8004.0 libvirt.org/go/libvirt v1.8004.0
sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0 sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0
@ -106,13 +106,13 @@ require (
require ( require (
cloud.google.com/go v0.102.0 // indirect cloud.google.com/go v0.102.0 // indirect
cloud.google.com/go/compute v1.6.1 // indirect cloud.google.com/go/compute v1.7.0 // indirect
cloud.google.com/go/iam v0.3.0 // indirect cloud.google.com/go/iam v0.3.0 // indirect
cloud.google.com/go/monitoring v1.1.0 // indirect cloud.google.com/go/monitoring v1.1.0 // indirect
cloud.google.com/go/trace v1.2.0 // indirect cloud.google.com/go/trace v1.2.0 // indirect
git.sr.ht/~sbinet/gg v0.3.1 // indirect git.sr.ht/~sbinet/gg v0.3.1 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.2 // indirect
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect
github.com/Microsoft/go-winio v0.5.2 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect
@ -155,6 +155,7 @@ require (
github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/gnostic v0.5.7-v3refs // indirect
github.com/google/go-querystring v1.1.0 // indirect github.com/google/go-querystring v1.1.0 // indirect
github.com/google/gofuzz v1.1.0 // indirect github.com/google/gofuzz v1.1.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect
github.com/googleapis/gax-go/v2 v2.4.0 // indirect github.com/googleapis/gax-go/v2 v2.4.0 // indirect
github.com/googleapis/go-type-adapters v1.0.0 // indirect github.com/googleapis/go-type-adapters v1.0.0 // indirect
github.com/gookit/color v1.4.2 // indirect github.com/gookit/color v1.4.2 // indirect
@ -212,11 +213,11 @@ require (
go.uber.org/multierr v1.8.0 // indirect go.uber.org/multierr v1.8.0 // indirect
go.uber.org/zap v1.19.0 // indirect go.uber.org/zap v1.19.0 // indirect
golang.org/x/image v0.0.0-20220302094943-723b81ca9867 // indirect golang.org/x/image v0.0.0-20220302094943-723b81ca9867 // indirect
golang.org/x/net v0.0.0-20220607020251-c690dde0001d // indirect golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 // indirect
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect
google.golang.org/appengine v1.6.7 // indirect google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac // indirect google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad // indirect
google.golang.org/grpc v1.47.0 // indirect google.golang.org/grpc v1.47.0 // indirect
google.golang.org/protobuf v1.28.0 // indirect google.golang.org/protobuf v1.28.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect

67
go.sum
View File

@ -46,8 +46,9 @@ cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTB
cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=
cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M=
cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=
cloud.google.com/go/compute v1.6.1 h1:2sMmt8prCn7DPaG4Pmh0N3Inmc8cT8ae5k1M6VJ9Wqc=
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
@ -118,10 +119,10 @@ github.com/Delta456/box-cli-maker/v2 v2.2.2/go.mod h1:idItIMZeyx3bg73XwSgsLeZd+g
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2 h1:rMamBsR6iCT9Y5m2Il6vFGJvY7FAgck4AoA/LobheKU= github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2 h1:rMamBsR6iCT9Y5m2Il6vFGJvY7FAgck4AoA/LobheKU=
github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2/go.mod h1:BB1eHdMLYEFuFdBlRMb0N7YGVdM5s6Pt0njxgvfbGGs= github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2/go.mod h1:BB1eHdMLYEFuFdBlRMb0N7YGVdM5s6Pt0njxgvfbGGs=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.1 h1:Tn/3pMqRSsI09jFVdGEuMqLIBNOmRHVqKp9DSQg4HPM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.2 h1:Dg+BIoU7Xz5QAj9VgDyhl5sz8Uz1IE1O6NAdJ1/Lmyk=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.1/go.mod h1:KddM1vG3MS+CRfmoFBqeUIICfd9nS8pLHKtwJ/kt0QQ= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.2/go.mod h1:vCKAVz9WbhvBYuqNignSpjoyMtBT/CFELC3z98onw4o=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.1 h1:SixyMKTOWhEWISdA7PB7vOxkvOP8BIgW5uzbyIf0kXM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.2 h1:lw6BPuBgZKGwl4jm8xrU7AGnK8ohy7UT9hPM1+S16ts=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.1/go.mod h1:j+FS9VBW3mwtHBmm9KOJEy5Tq68fCp7fE/R9bV/flIM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.2/go.mod h1:j+FS9VBW3mwtHBmm9KOJEy5Tq68fCp7fE/R9bV/flIM=
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU=
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
@ -705,6 +706,9 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/enterprise-certificate-proxy v0.1.0 h1:zO8WHNx/MYiAKJ3d5spxZXZE6KHmIQGQcAzwUzV7qQw=
github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
@ -1298,8 +1302,9 @@ github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk=
github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q=
github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g=
github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU=
github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
@ -1629,8 +1634,9 @@ golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su
golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d h1:4SFsTMi4UahlKoloni7L4eYzhFRifURQLw+yv0QDCx8=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 h1:Yqz/iviulwKwAREEeUd3nbBFn0XuyJqkoft2IlrvOhc=
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -1653,7 +1659,6 @@ golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220524215830-622c5d57e401/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb h1:8tDJ3aechhddbdPAxpycgXHJRMLpk/Ab+aa4OgdN5/g= golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb h1:8tDJ3aechhddbdPAxpycgXHJRMLpk/Ab+aa4OgdN5/g=
golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw=
@ -1801,8 +1806,9 @@ golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220608164250-635b8c9b7f68 h1:z8Hj/bl9cOV2grsOpEaQFUaly0JWN3i97mo3jXKJNp0= golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220608164250-635b8c9b7f68/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c h1:aFV+BgZ4svzjfabn8ERpuB4JI4N6/rdy1iusx77G3oU=
golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/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-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-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
@ -1940,8 +1946,9 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E=
gonum.org/v1/plot v0.11.0 h1:z2ZkgNqW34d0oYUzd80RRlc0L9kWtenqK4kflZG1lGc= gonum.org/v1/plot v0.11.0 h1:z2ZkgNqW34d0oYUzd80RRlc0L9kWtenqK4kflZG1lGc=
gonum.org/v1/plot v0.11.0/go.mod h1:fH9YnKnDKax0u5EzHVXvhN5HJwtMFWIOLNuhgUahbCQ= gonum.org/v1/plot v0.11.0/go.mod h1:fH9YnKnDKax0u5EzHVXvhN5HJwtMFWIOLNuhgUahbCQ=
@ -1988,8 +1995,9 @@ google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRR
google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw=
google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg=
google.golang.org/api v0.83.0 h1:pMvST+6v+46Gabac4zlJlalxZjCeRcepwg2EdBU+nCc= google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o=
google.golang.org/api v0.83.0/go.mod h1:CNywQoj/AfhTw26ZWAa6LwOv+6WFxHmeLPZq2uncLZk= google.golang.org/api v0.85.0 h1:8rJoHuRxx+vCmZtAO/3k1dRLvYNVyTJtZ5oaFZvhgvc=
google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g=
google.golang.org/appengine v1.1.0/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= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@ -2093,9 +2101,10 @@ google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX
google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220602131408-e326c6e8e9c8/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To=
google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac h1:ByeiW1F67iV9o8ipGskA+HWzSkMbRJuKLlwCdPxzn7A=
google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad h1:kqrS+lhvaMHCxul6sKQvKJ8nAAhlVItmZV822hYFH/U=
google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
@ -2218,34 +2227,34 @@ k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo=
k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ=
k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= 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.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk=
k8s.io/api v0.24.1 h1:BjCMRDcyEYz03joa3K1+rbshwh1Ay6oB53+iUx2H8UY= k8s.io/api v0.24.2 h1:g518dPU/L7VRLxWfcadQn2OnsiGWVOadTLpdnqgY2OI=
k8s.io/api v0.24.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ= k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg=
k8s.io/apimachinery v0.19.1/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= 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.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc=
k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0= k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0=
k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I= k8s.io/apimachinery v0.24.2 h1:5QlH9SL2C8KMcrNJPor+LbXVTaZRReml7svPEh4OKDM=
k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= 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.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM=
k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q=
k8s.io/cli-runtime v0.24.1/go.mod h1:14aVvCTqkA7dNXY51N/6hRY3GUjchyWDOwW84qmR3bs= k8s.io/cli-runtime v0.24.2/go.mod h1:1LIhKL2RblkhfG4v5lZEt7FtgFG5mVb8wqv5lE9m5qY=
k8s.io/client-go v0.19.1/go.mod h1:AZOIVSI9UUtQPeJD3zJFp15CEhSjRgAuQP5PWRJrCIQ= k8s.io/client-go v0.19.1/go.mod h1:AZOIVSI9UUtQPeJD3zJFp15CEhSjRgAuQP5PWRJrCIQ=
k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y=
k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= 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.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0=
k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E= k8s.io/client-go v0.24.2 h1:CoXFSf8if+bLEbinDqN9ePIDGzcLtqhfd6jpfnwGOFA=
k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8= k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30=
k8s.io/cluster-bootstrap v0.22.4 h1:2ZhV/1K4GiCrnmDHHbBnN3bERWn+Nxrtxmxp6uYYThI= k8s.io/cluster-bootstrap v0.22.4 h1:2ZhV/1K4GiCrnmDHHbBnN3bERWn+Nxrtxmxp6uYYThI=
k8s.io/cluster-bootstrap v0.22.4/go.mod h1:fTQZ6u9G6fg2LHhB8nEgZLnXIhCDSRYuLUUS5pgW8RY= k8s.io/cluster-bootstrap v0.22.4/go.mod h1:fTQZ6u9G6fg2LHhB8nEgZLnXIhCDSRYuLUUS5pgW8RY=
k8s.io/code-generator v0.24.1/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w= k8s.io/code-generator v0.24.2/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w=
k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk=
k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= 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.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM=
k8s.io/component-base v0.24.1 h1:APv6W/YmfOWZfo+XJ1mZwep/f7g7Tpwvdbo9CQLDuts= k8s.io/component-base v0.24.2 h1:kwpQdoSfbcH+8MPN4tALtajLDfSfYxBDYlXobNWI6OU=
k8s.io/component-base v0.24.1/go.mod h1:DW5vQGYVCog8WYpNob3PMmmsY8A3L9QZNg4j/dV3s38= k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM=
k8s.io/component-helpers v0.24.1/go.mod h1:q5Z1pWV/QfX9ThuNeywxasiwkLw9KsR4Q9TAOdb/Y3s= k8s.io/component-helpers v0.24.2/go.mod h1:TRQPBQKfmqkmV6c0HAmUs8cXVNYYYLsXy4zu8eODi9g=
k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= 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.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI=
k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI=
@ -2266,10 +2275,10 @@ k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2R
k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU=
k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk=
k8s.io/kubectl v0.24.1 h1:gxcjHrnwntV1c+G/BHWVv4Mtk8CQJ0WTraElLBG+ddk= k8s.io/kubectl v0.24.2 h1:+RfQVhth8akUmIc2Ge8krMl/pt66V7210ka3RE/p0J4=
k8s.io/kubectl v0.24.1/go.mod h1:NzFqQ50B004fHYWOfhHTrAm4TY6oGF5FAAL13LEaeUI= k8s.io/kubectl v0.24.2/go.mod h1:+HIFJc0bA6Tzu5O/YcuUt45APAxnNL8LeMuXwoiGsPg=
k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
k8s.io/metrics v0.24.1/go.mod h1:vMs5xpcOyY9D+/XVwlaw8oUHYCo6JTGBCZfyXOOkAhE= k8s.io/metrics v0.24.2/go.mod h1:5NWURxZ6Lz5gj8TFU83+vdWIVASx7W8lwPpHYCqopMo=
k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= 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= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=

View File

@ -58,6 +58,11 @@ var (
`GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`, `GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`,
}, },
}, },
".github/workflows/yearly-leaderboard.yml": {
Replace: map[string]string{
`GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`,
},
},
".github/workflows/translations.yml": { ".github/workflows/translations.yml": {
Replace: map[string]string{ Replace: map[string]string{
`GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`, `GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`,

View File

@ -70,7 +70,7 @@ while read -r tag_index tag_name tag_start tag_end; do
echo "Generating leaderboard for" "$tag_name" "(from $tag_start to $tag_end)" echo "Generating leaderboard for" "$tag_name" "(from $tag_start to $tag_end)"
# Print header for page. # Print header for page.
printf -- "---\ntitle: \"$tag_name - $tag_end\"\nlinkTitle: \"$tag_name - $tag_end\"\nweight: $tag_index\n---\n" > "$destination/$tag_name.html" printf -- "---\ntitle: \"$tag_name - $tag_end\"\nlinkTitle: \"$tag_name - $tag_end\"\nweight: $tag_index\n---\n" > "$destination/$tag_name.html"
# Add pullsheet content (deleting the lines consisting of the command used to generate it). # Add pullsheet content
$DIR/pullsheet leaderboard --token-path "$TMP_TOKEN" --repos kubernetes/minikube --since "$tag_start" --until "$tag_end" --logtostderr=false --stderrthreshold=2 \ $DIR/pullsheet leaderboard --token-path "$TMP_TOKEN" --repos kubernetes/minikube --since "$tag_start" --until "$tag_end" --hide-command --logtostderr=false --stderrthreshold=2 \
| sed -r -e "/Command\-line/,/pullsheet/d" >> "$destination/$tag_name.html" >> "$destination/$tag_name.html"
done <<< "$tags_with_range" done <<< "$tags_with_range"

74
hack/yearly-leaderboard.sh Executable file
View File

@ -0,0 +1,74 @@
#!/bin/bash
# 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.
set -eu -o pipefail
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
DESTINATION="$DIR/../site/content/en/docs/contrib/leaderboard"
TMP_TOKEN=$(mktemp)
BUCKET="s3://minikube-leaderboard"
YEAR=$(date +"%Y" --date "last month")
MONTH=$(date +"%m" --date "last month")
DAYS_IN_MONTH=$(cal $(date +"%m %Y" --date "last month") | awk 'NF {DAYS = $NF}; END {print DAYS}')
install_pullsheet() {
echo >&2 'Installing pullsheet'
go install github.com/google/pullsheet@latest
}
verify_gh_auth() {
gh auth status -t 2>&1 | sed -n -r 's/^.*Token: ([a-zA-Z0-9_]*)/\1/p' > "$TMP_TOKEN"
if [ ! -s "$TMP_TOKEN" ]; then
echo "Failed to acquire token from 'gh auth'. Ensure 'gh' is authenticated." 1>&2
exit 1
fi
}
# Ensure the token is deleted when the script exits, so the token is not leaked.
cleanup_token() {
rm -f "$TMP_TOKEN"
}
copy() {
aws s3 cp "$1" "$2"
}
generate_leaderboard() {
echo "Generating leaderboard for" "$YEAR"
# Print header for page
printf -- "---\ntitle: \"$YEAR\"\nlinkTitle: \"$YEAR\"\nweight: -9999$YEAR\n---\n" > "$DESTINATION/$YEAR.html"
# Add pullsheet content
pullsheet leaderboard --token-path "$TMP_TOKEN" --repos kubernetes/minikube --since-display "$YEAR-01-01" --since "$YEAR-$MONTH-01" --until "$YEAR-$MONTH-$DAYS_IN_MONTH" --json-files "./$YEAR.json" --json-output "./$YEAR.json" --hide-command --logtostderr=false --stderrthreshold=2 >> "$DESTINATION/$YEAR.html"
}
cleanup() {
rm "$YEAR.json"
}
install_pullsheet
verify_gh_auth
trap cleanup_token EXIT
copy "$BUCKET/$YEAR.json" "$YEAR.json" || printf -- "{}" > "$YEAR.json"
generate_leaderboard
copy "$YEAR.json" "$BUCKET/$YEAR.json"
copy "$YEAR.json" "$BUCKET/$YEAR-$MONTH.json"
cleanup

View File

@ -202,4 +202,9 @@ var Addons = []*Addon{
set: SetBool, set: SetBool,
callbacks: []setFn{EnableOrDisableAddon}, callbacks: []setFn{EnableOrDisableAddon},
}, },
{
name: "headlamp",
set: SetBool,
callbacks: []setFn{EnableOrDisableAddon},
},
} }

View File

@ -552,7 +552,7 @@ var Addons = map[string]*Addon{
"0640"), "0640"),
}, false, "gcp-auth", "Google", "https://minikube.sigs.k8s.io/docs/handbook/addons/gcp-auth/", map[string]string{ }, false, "gcp-auth", "Google", "https://minikube.sigs.k8s.io/docs/handbook/addons/gcp-auth/", map[string]string{
"KubeWebhookCertgen": "k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068", "KubeWebhookCertgen": "k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068",
"GCPAuthWebhook": "k8s-minikube/gcp-auth-webhook:v0.0.8@sha256:26c7b2454f1c946d7c80839251d939606620f37c2f275be2796c1ffd96c438f6", "GCPAuthWebhook": "k8s-minikube/gcp-auth-webhook:v0.0.9@sha256:25e1c616444d5b2b404c43ce878f320a265fd663b4fcd4c2ad5c12de316612da",
}, map[string]string{ }, map[string]string{
"GCPAuthWebhook": "gcr.io", "GCPAuthWebhook": "gcr.io",
}), }),
@ -701,6 +701,19 @@ var Addons = map[string]*Addon{
}, map[string]string{ }, map[string]string{
"Helm3": "docker.io", "Helm3": "docker.io",
}), }),
"headlamp": NewAddon([]*BinAsset{
MustBinAsset(addons.HeadlampAssets, "headlamp/headlamp-namespace.yaml", vmpath.GuestAddonsDir, "headlamp-namespace.yaml", "6040"),
MustBinAsset(addons.HeadlampAssets, "headlamp/headlamp-service.yaml", vmpath.GuestAddonsDir, "headlamp-service.yaml", "6040"),
MustBinAsset(addons.HeadlampAssets, "headlamp/headlamp-deployment.yaml.tmpl", vmpath.GuestAddonsDir, "headlamp-deployment.yaml", "6040"),
MustBinAsset(addons.HeadlampAssets, "headlamp/headlamp-serviceaccount.yaml", vmpath.GuestAddonsDir, "headlamp-serviceaccount.yaml", "6040"),
MustBinAsset(addons.HeadlampAssets, "headlamp/headlamp-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "headlamp-clusterrolebinding.yaml", "6040"),
}, false, "headlamp", "kinvolk.io", "https://minikube.sigs.k8s.io/docs/handbook/addons/headlamp/",
map[string]string{
"Headlamp": "kinvolk/headlamp:v0.9.0@sha256:465aaee6518f3fdd032965eccd6a8f49e924d144b1c86115bad613872672ec02",
},
map[string]string{
"Headlamp": "ghcr.io",
}),
} }
// parseMapString creates a map based on `str` which is encoded as <key1>=<value1>,<key2>=<value2>,... // parseMapString creates a map based on `str` which is encoded as <key1>=<value1>,<key2>=<value2>,...

View File

@ -17,15 +17,20 @@ limitations under the License.
package audit package audit
import ( import (
"bufio"
"encoding/json"
"fmt"
"os" "os"
"os/user" "os/user"
"strings" "strings"
"time" "time"
"github.com/google/uuid"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"github.com/spf13/viper" "github.com/spf13/viper"
"k8s.io/klog/v2"
"k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/constants"
"k8s.io/minikube/pkg/minikube/localpath"
"k8s.io/minikube/pkg/version" "k8s.io/minikube/pkg/version"
) )
@ -52,14 +57,67 @@ func args() string {
} }
// Log details about the executed command. // Log details about the executed command.
func Log(startTime time.Time) { func LogCommandStart() (string, error) {
if !shouldLog() { if len(os.Args) < 2 || !shouldLog() {
return return "", nil
} }
r := newRow(pflag.Arg(0), args(), userName(), version.GetVersion(), startTime, time.Now()) id := uuid.New().String()
r := newRow(pflag.Arg(0), args(), userName(), version.GetVersion(), time.Now(), id)
if err := appendToLog(r); err != nil { if err := appendToLog(r); err != nil {
klog.Warning(err) return "", err
} }
return r.id, nil
}
func LogCommandEnd(id string) error {
if id == "" {
return nil
}
if err := openAuditLog(); err != nil {
return err
}
defer closeAuditLog()
var logs []string
s := bufio.NewScanner(currentLogFile)
for s.Scan() {
logs = append(logs, s.Text())
}
if err := s.Err(); err != nil {
return fmt.Errorf("failed to read from audit file: %v", err)
}
closeAuditLog()
rowSlice, err := logsToRows(logs)
if err != nil {
return fmt.Errorf("failed to convert logs to rows: %v", err)
}
auditContents := ""
var entriesNeedsToUpdate int
for _, v := range rowSlice {
if v.id == id {
v.endTime = time.Now().Format(constants.TimeFormat)
v.Data = v.toMap()
entriesNeedsToUpdate++
}
auditLog, err := json.Marshal(v)
if err != nil {
return err
}
auditContents += string(auditLog) + "\n"
}
if entriesNeedsToUpdate == 0 {
return fmt.Errorf("failed to find a log row with id equals to %v", id)
}
// have to truncate the audit log while closed as Windows can't truncate an open file
if err := os.Truncate(localpath.AuditLog(), 0); err != nil {
return fmt.Errorf("failed to truncate audit log: %v", err)
}
if err := openAuditLog(); err != nil {
return err
}
if _, err = currentLogFile.Write([]byte(auditContents)); err != nil {
return fmt.Errorf("failed to write to audit log: %v", err)
}
return nil
} }
// shouldLog returns if the command should be logged. // shouldLog returns if the command should be logged.
@ -74,7 +132,7 @@ func shouldLog() bool {
} }
// commands that should not be logged. // commands that should not be logged.
no := []string{"status", "version"} no := []string{"status", "version", "logs", "generate-docs"}
a := pflag.Arg(0) a := pflag.Arg(0)
for _, c := range no { for _, c := range no {
if a == c { if a == c {

View File

@ -20,7 +20,6 @@ import (
"os" "os"
"os/user" "os/user"
"testing" "testing"
"time"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"github.com/spf13/viper" "github.com/spf13/viper"
@ -177,7 +176,27 @@ func TestAudit(t *testing.T) {
}) })
// Check if logging with limited args causes a panic // Check if logging with limited args causes a panic
t.Run("Log", func(t *testing.T) { t.Run("LogCommandStart", func(t *testing.T) {
oldArgs := os.Args
defer func() { os.Args = oldArgs }()
os.Args = []string{"minikube", "start"}
oldCommandLine := pflag.CommandLine
defer func() {
pflag.CommandLine = oldCommandLine
pflag.Parse()
}()
mockArgs(t, os.Args)
auditID, err := LogCommandStart()
if auditID == "" {
t.Fatal("audit ID should not be empty")
}
if err != nil {
t.Fatal(err)
}
})
t.Run("LogCommandEnd", func(t *testing.T) {
oldArgs := os.Args oldArgs := os.Args
defer func() { os.Args = oldArgs }() defer func() { os.Args = oldArgs }()
os.Args = []string{"minikube"} os.Args = []string{"minikube"}
@ -188,8 +207,32 @@ func TestAudit(t *testing.T) {
pflag.Parse() pflag.Parse()
}() }()
mockArgs(t, os.Args) mockArgs(t, os.Args)
auditID, err := LogCommandStart()
if err != nil {
t.Fatal("start failed")
}
err = LogCommandEnd(auditID)
Log(time.Now()) if err != nil {
t.Fatal(err)
}
})
t.Run("LogCommandEndNonExistingID", func(t *testing.T) {
oldArgs := os.Args
defer func() { os.Args = oldArgs }()
os.Args = []string{"minikube"}
oldCommandLine := pflag.CommandLine
defer func() {
pflag.CommandLine = oldCommandLine
pflag.Parse()
}()
mockArgs(t, os.Args)
err := LogCommandEnd("non-existing-id")
if err == nil {
t.Fatal("function LogCommandEnd should return an error when a non-existing id is passed in it as an argument")
}
}) })
} }

View File

@ -20,6 +20,7 @@ import (
"fmt" "fmt"
"os" "os"
"k8s.io/klog/v2"
"k8s.io/minikube/pkg/minikube/localpath" "k8s.io/minikube/pkg/minikube/localpath"
"k8s.io/minikube/pkg/minikube/out/register" "k8s.io/minikube/pkg/minikube/out/register"
) )
@ -27,29 +28,35 @@ import (
// currentLogFile the file that's used to store audit logs // currentLogFile the file that's used to store audit logs
var currentLogFile *os.File var currentLogFile *os.File
// setLogFile sets the logPath and creates the log file if it doesn't exist. // openAuditLog opens the audit log file or creates it if it doesn't exist.
func setLogFile() error { func openAuditLog() error {
lp := localpath.AuditLog() lp := localpath.AuditLog()
f, err := os.OpenFile(lp, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644) f, err := os.OpenFile(lp, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
if err != nil { if err != nil {
return fmt.Errorf("unable to open %s: %v", lp, err) return fmt.Errorf("failed to open the audit log: %v", err)
} }
currentLogFile = f currentLogFile = f
return nil return nil
} }
// closeAuditLog closes the audit log file
func closeAuditLog() {
if err := currentLogFile.Close(); err != nil {
klog.Errorf("failed to close the audit log: %v", err)
}
}
// appendToLog appends the row to the log file. // appendToLog appends the row to the log file.
func appendToLog(row *row) error { func appendToLog(row *row) error {
if currentLogFile == nil {
if err := setLogFile(); err != nil {
return err
}
}
ce := register.CloudEvent(row, row.toMap()) ce := register.CloudEvent(row, row.toMap())
bs, err := ce.MarshalJSON() bs, err := ce.MarshalJSON()
if err != nil { if err != nil {
return fmt.Errorf("error marshalling event: %v", err) return fmt.Errorf("error marshalling event: %v", err)
} }
if err := openAuditLog(); err != nil {
return err
}
defer closeAuditLog()
if _, err := currentLogFile.WriteString(string(bs) + "\n"); err != nil { if _, err := currentLogFile.WriteString(string(bs) + "\n"); err != nil {
return fmt.Errorf("unable to write to audit log: %v", err) return fmt.Errorf("unable to write to audit log: %v", err)
} }

View File

@ -23,21 +23,23 @@ import (
"testing" "testing"
"time" "time"
"github.com/google/uuid"
"k8s.io/minikube/pkg/minikube/localpath" "k8s.io/minikube/pkg/minikube/localpath"
) )
func TestLogFile(t *testing.T) { func TestLogFile(t *testing.T) {
t.Run("SetLogFile", func(t *testing.T) { t.Run("OpenAuditLog", func(t *testing.T) {
// make sure logs directory exists // make sure logs directory exists
if err := os.MkdirAll(filepath.Dir(localpath.AuditLog()), 0755); err != nil { if err := os.MkdirAll(filepath.Dir(localpath.AuditLog()), 0755); err != nil {
t.Fatalf("Error creating logs directory: %v", err) t.Fatalf("Error creating logs directory: %v", err)
} }
if err := setLogFile(); err != nil { if err := openAuditLog(); err != nil {
t.Error(err) t.Fatal(err)
} }
}) })
t.Run("AppendToLog", func(t *testing.T) { t.Run("AppendToLog", func(t *testing.T) {
defer closeAuditLog()
f, err := os.CreateTemp("", "audit.json") f, err := os.CreateTemp("", "audit.json")
if err != nil { if err != nil {
t.Fatalf("Error creating temporary file: %v", err) t.Fatalf("Error creating temporary file: %v", err)
@ -48,7 +50,7 @@ func TestLogFile(t *testing.T) {
defer func() { currentLogFile = &oldLogFile }() defer func() { currentLogFile = &oldLogFile }()
currentLogFile = f currentLogFile = f
r := newRow("start", "-v", "user1", "v0.17.1", time.Now(), time.Now()) r := newRow("start", "-v", "user1", "v0.17.1", time.Now(), uuid.New().String())
if err := appendToLog(r); err != nil { if err := appendToLog(r); err != nil {
t.Fatalf("Error appendingToLog: %v", err) t.Fatalf("Error appendingToLog: %v", err)
} }

View File

@ -32,11 +32,10 @@ func Report(lastNLines int) (*RawReport, error) {
if lastNLines <= 0 { if lastNLines <= 0 {
return nil, fmt.Errorf("last n lines must be 1 or greater") return nil, fmt.Errorf("last n lines must be 1 or greater")
} }
if currentLogFile == nil { if err := openAuditLog(); err != nil {
if err := setLogFile(); err != nil { return nil, err
return nil, fmt.Errorf("failed to set the log file: %v", err)
}
} }
defer closeAuditLog()
var logs []string var logs []string
s := bufio.NewScanner(currentLogFile) s := bufio.NewScanner(currentLogFile)
for s.Scan() { for s.Scan() {

View File

@ -30,14 +30,20 @@ import (
// row is the log of a single command. // row is the log of a single command.
type row struct { type row struct {
args string SpecVersion string `json:"specversion"`
command string ID string `json:"id"`
endTime string Source string `json:"source"`
profile string TypeField string `json:"type"`
startTime string DataContentType string `json:"datacontenttype"`
user string Data map[string]string `json:"data"`
version string args string
Data map[string]string `json:"data"` command string
endTime string
id string
profile string
startTime string
user string
version string
} }
// Type returns the cloud events compatible type of this struct. // Type returns the cloud events compatible type of this struct.
@ -55,6 +61,7 @@ func (e *row) assignFields() {
e.startTime = e.Data["startTime"] e.startTime = e.Data["startTime"]
e.user = e.Data["user"] e.user = e.Data["user"]
e.version = e.Data["version"] e.version = e.Data["version"]
e.id = e.Data["id"]
} }
// toMap combines fields into a string map, // toMap combines fields into a string map,
@ -68,11 +75,12 @@ func (e *row) toMap() map[string]string {
"startTime": e.startTime, "startTime": e.startTime,
"user": e.user, "user": e.user,
"version": e.version, "version": e.version,
"id": e.id,
} }
} }
// newRow creates a new audit row. // newRow creates a new audit row.
func newRow(command string, args string, user string, version string, startTime time.Time, endTime time.Time, profile ...string) *row { func newRow(command string, args string, user string, version string, startTime time.Time, id string, profile ...string) *row {
p := viper.GetString(config.ProfileName) p := viper.GetString(config.ProfileName)
if len(profile) > 0 { if len(profile) > 0 {
p = profile[0] p = profile[0]
@ -80,11 +88,11 @@ func newRow(command string, args string, user string, version string, startTime
return &row{ return &row{
args: args, args: args,
command: command, command: command,
endTime: endTime.Format(constants.TimeFormat),
profile: p, profile: p,
startTime: startTime.Format(constants.TimeFormat), startTime: startTime.Format(constants.TimeFormat),
user: user, user: user,
version: version, version: version,
id: id,
} }
} }

View File

@ -23,6 +23,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/google/uuid"
"k8s.io/minikube/pkg/minikube/constants" "k8s.io/minikube/pkg/minikube/constants"
) )
@ -36,8 +37,10 @@ func TestRow(t *testing.T) {
stFormatted := st.Format(constants.TimeFormat) stFormatted := st.Format(constants.TimeFormat)
et := time.Now() et := time.Now()
etFormatted := et.Format(constants.TimeFormat) etFormatted := et.Format(constants.TimeFormat)
id := uuid.New().String()
r := newRow(c, a, u, v, st, et, p) r := newRow(c, a, u, v, st, id, p)
r.endTime = etFormatted
t.Run("NewRow", func(t *testing.T) { t.Run("NewRow", func(t *testing.T) {
tests := []struct { tests := []struct {
@ -51,7 +54,7 @@ func TestRow(t *testing.T) {
{"user", r.user, u}, {"user", r.user, u},
{"version", r.version, v}, {"version", r.version, v},
{"startTime", r.startTime, stFormatted}, {"startTime", r.startTime, stFormatted},
{"endTime", r.endTime, etFormatted}, {"id", r.id, id},
} }
for _, tt := range tests { for _, tt := range tests {
@ -83,7 +86,7 @@ func TestRow(t *testing.T) {
{"user", u}, {"user", u},
{"version", v}, {"version", v},
{"startTime", stFormatted}, {"startTime", stFormatted},
{"endTime", etFormatted}, {"id", id},
} }
for _, tt := range tests { for _, tt := range tests {
@ -106,7 +109,7 @@ func TestRow(t *testing.T) {
}) })
t.Run("assignFields", func(t *testing.T) { t.Run("assignFields", func(t *testing.T) {
l := fmt.Sprintf(`{"data":{"args":"%s","command":"%s","endTime":"%s","profile":"%s","startTime":"%s","user":"%s","version":"v0.17.1"},"datacontenttype":"application/json","id":"bc6ec9d4-0d08-4b57-ac3b-db8d67774768","source":"https://minikube.sigs.k8s.io/","specversion":"1.0","type":"io.k8s.sigs.minikube.audit"}`, a, c, etFormatted, p, stFormatted, u) l := fmt.Sprintf(`{"data":{"args":"%s","command":"%s","id":"%s","profile":"%s","startTime":"%s","user":"%s","version":"v0.17.1"},"datacontenttype":"application/json","id":"bc6ec9d4-0d08-4b57-ac3b-db8d67774768","source":"https://minikube.sigs.k8s.io/","specversion":"1.0","type":"io.k8s.sigs.minikube.audit"}`, a, c, id, p, stFormatted, u)
r := &row{} r := &row{}
if err := json.Unmarshal([]byte(l), r); err != nil { if err := json.Unmarshal([]byte(l), r); err != nil {
@ -126,7 +129,7 @@ func TestRow(t *testing.T) {
{"user", r.user, u}, {"user", r.user, u},
{"version", r.version, v}, {"version", r.version, v},
{"startTime", r.startTime, stFormatted}, {"startTime", r.startTime, stFormatted},
{"endTime", r.endTime, etFormatted}, {"id", r.id, id},
} }
for _, tt := range tests { for _, tt := range tests {

View File

@ -19,8 +19,8 @@ package constants
var ( var (
KubeadmImages = map[string]map[string]string{ KubeadmImages = map[string]map[string]string{
"v1.25": { "v1.25": {
"coredns/coredns": "v1.8.6", "coredns/coredns": "v1.9.3",
"etcd": "3.5.3-0", "etcd": "3.5.4-0",
"pause": "3.7", "pause": "3.7",
}, },
"v1.24": { "v1.24": {

View File

@ -55,7 +55,7 @@ minikube node add [flags]
### Options ### Options
``` ```
--control-plane If true, the node added will also be a control plane in addition to a worker. --control-plane This flag is currently unsupported.
--delete-on-failure If set, delete the current cluster if start fails and try again. Defaults to false. --delete-on-failure If set, delete the current cluster if start fails and try again. Defaults to false.
--worker If true, the added node will be marked for work. Defaults to true. (default true) --worker If true, the added node will be marked for work. Defaults to true. (default true)
``` ```

View File

@ -42,6 +42,8 @@ tests the csi hostpath driver by creating a persistent volume, snapshotting it a
#### validateGCPAuthAddon #### validateGCPAuthAddon
tests the GCP Auth addon with either phony or real credentials and makes sure the files are mounted into pods correctly tests the GCP Auth addon with either phony or real credentials and makes sure the files are mounted into pods correctly
#### validateHeadlampAddon
## TestCertOptions ## TestCertOptions
makes sure minikube certs respect the --apiserver-ips and --apiserver-names parameters makes sure minikube certs respect the --apiserver-ips and --apiserver-names parameters

View File

@ -0,0 +1,51 @@
---
title: "Using Headlamp Addon"
linkTitle: "Headlamp"
weight: 1
date: 2022-06-08
---
## Headlamp Addon
[Headlamp](https://kinvolk.github.io/headlamp) is an easy-to-use and extensible Kubernetes web UI.
### Enable Headlamp on minikube
To enable this addon, simply run:
```shell script
minikube addons enable headlamp
```
Once the addon is enabled, you can access the Headlamp's web UI using the following command.
```shell script
minikube service headlamp -n headlamp
```
To authenticate in Headlamp, fetch the Authentication Token using the following command:
```shell script
export SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=":metadata.name" | grep "headlamp-token")
kubectl get secret $SECRET --namespace headlamp --template=\{\{.data.token\}\} | base64 --decode
```
Headlamp can display more detailed information when metrics-server is installed. To install it, run:
```shell script
minikube addons enable metrics-server
```
### Testing installation
```shell script
kubectl get pods -n headlamp
```
If everything went well, there should be no errors about Headlamp's installation in your minikube cluster.
### Disable headlamp
To disable this addon, simply run:
```shell script
minikube addons disable headlamp
```

View File

@ -455,7 +455,8 @@ choco install minikube
[Environment]::SetEnvironmentVariable('Path', $('{0};C:\minikube' -f $oldPath), [EnvironmentVariableTarget]::Machine) ` [Environment]::SetEnvironmentVariable('Path', $('{0};C:\minikube' -f $oldPath), [EnvironmentVariableTarget]::Machine) `
} }
``` ```
_If you used a CLI to perform the installation, you will need to close that CLI and open a new one before proceeding._ <span style="color:blue">
If you used a terminal (like powershell) for the installation, please close the terminal and reopen it before running minikube.</span>
{{% /quiz_instruction %}} {{% /quiz_instruction %}}
{{% quiz_instruction id="/Windows/x86-64/Beta/.exe download" %}} {{% quiz_instruction id="/Windows/x86-64/Beta/.exe download" %}}

View File

@ -29,6 +29,7 @@ import (
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"reflect" "reflect"
"regexp"
"strings" "strings"
"testing" "testing"
"time" "time"
@ -95,6 +96,7 @@ func TestAddons(t *testing.T) {
{"HelmTiller", validateHelmTillerAddon}, {"HelmTiller", validateHelmTillerAddon},
{"Olm", validateOlmAddon}, {"Olm", validateOlmAddon},
{"CSI", validateCSIDriverAndSnapshots}, {"CSI", validateCSIDriverAndSnapshots},
{"Headlamp", validateHeadlampAddon},
} }
for _, tc := range tests { for _, tc := range tests {
tc := tc tc := tc
@ -605,6 +607,13 @@ func validateGCPAuthAddon(ctx context.Context, t *testing.T, profile string) {
t.Fatalf("%s failed: %v", rr.Command(), err) t.Fatalf("%s failed: %v", rr.Command(), err)
} }
serviceAccountName := "gcp-auth-test"
// create a dummy service account so we know the pull secret got added
rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "create", "sa", serviceAccountName))
if err != nil {
t.Fatalf("%s failed: %v", rr.Command(), err)
}
// 8 minutes, because 4 is not enough for images to pull in all cases. // 8 minutes, because 4 is not enough for images to pull in all cases.
names, err := PodWait(ctx, t, profile, "default", "integration-test=busybox", Minutes(8)) names, err := PodWait(ctx, t, profile, "default", "integration-test=busybox", Minutes(8))
if err != nil { if err != nil {
@ -623,6 +632,19 @@ func validateGCPAuthAddon(ctx context.Context, t *testing.T, profile string) {
t.Errorf("'printenv GOOGLE_APPLICATION_CREDENTIALS' returned %s, expected %s", got, expected) t.Errorf("'printenv GOOGLE_APPLICATION_CREDENTIALS' returned %s, expected %s", got, expected)
} }
// Now check the service account and make sure the "gcp-auth" image pull secret is present
rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "describe", "sa", serviceAccountName))
if err != nil {
t.Fatalf("%s failed: %v", rr.Command(), err)
}
expectedPullSecret := "gcp-auth"
re := regexp.MustCompile(`.*Image pull secrets:.*`)
secrets := re.FindString(rr.Stdout.String())
if !strings.Contains(secrets, expectedPullSecret) {
t.Errorf("Unexpected image pull secrets. expected %s, got %s", expectedPullSecret, secrets)
}
if !detect.IsOnGCE() || detect.IsCloudShell() { if !detect.IsOnGCE() || detect.IsCloudShell() {
// Make sure the file contents are correct // Make sure the file contents are correct
rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "exec", names[0], "--", "/bin/sh", "-c", "cat /google-app-creds.json")) rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "exec", names[0], "--", "/bin/sh", "-c", "cat /google-app-creds.json"))
@ -708,3 +730,16 @@ func validateGCPAuthAddon(ctx context.Context, t *testing.T, profile string) {
} }
} }
} }
func validateHeadlampAddon(ctx context.Context, t *testing.T, profile string) {
defer PostMortemLogs(t, profile)
rr, err := Run(t, exec.CommandContext(ctx, Target(), "addons", "enable", "headlamp", "-p", profile, "--alsologtostderr", "-v=1"))
if err != nil {
t.Fatalf("failed to enable headlamp addon: args: %q: %v", rr.Command(), err)
}
if _, err := PodWait(ctx, t, profile, "headlamp", "app.kubernetes.io/name=headlamp", Minutes(8)); err != nil {
t.Fatalf("failed waiting for headlamp pod: %v", err)
}
}

View File

@ -48,6 +48,7 @@
"Add machine IP to NO_PROXY environment variable": "Die IP der Maschine zur NO_PROXY Umgebungsvariable hinzufügen", "Add machine IP to NO_PROXY environment variable": "Die IP der Maschine zur NO_PROXY Umgebungsvariable hinzufügen",
"Add, delete, or push a local image into minikube": "Lokales Image zu Minikube hinzufügen, löschen oder pushen", "Add, delete, or push a local image into minikube": "Lokales Image zu Minikube hinzufügen, löschen oder pushen",
"Add, remove, or list additional nodes": "Hinzufügen, Löschen oder auflisten von zusätzlichen Nodes", "Add, remove, or list additional nodes": "Hinzufügen, Löschen oder auflisten von zusätzlichen Nodes",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "Node {{.name}} zu Cluster {{.cluster}} hinzufügen", "Adding node {{.name}} to cluster {{.cluster}}": "Node {{.name}} zu Cluster {{.cluster}} hinzufügen",
"Additional help topics": "Weitere Hilfe-Themen", "Additional help topics": "Weitere Hilfe-Themen",
"Adds a node to the given cluster config, and starts it.": "Fügt einen Node zur angegebenen Cluster-Konfiguration hinzu und startet es.", "Adds a node to the given cluster config, and starts it.": "Fügt einen Node zur angegebenen Cluster-Konfiguration hinzu und startet es.",
@ -323,6 +324,7 @@
"Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "Go Template Format String für die Ausgabe der Konfigurations-Ansicht Ausgabe. Das Format von Go Templates ist hier beschrieben: https://golang.org/pkg/text/template/\nFür eine Liste der im Template verfügbaren Variablen, kann man die struct Werte hier einsehen: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate", "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "Go Template Format String für die Ausgabe der Konfigurations-Ansicht Ausgabe. Das Format von Go Templates ist hier beschrieben: https://golang.org/pkg/text/template/\nFür eine Liste der im Template verfügbaren Variablen, kann man die struct Werte hier einsehen: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate",
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "Go Template Format String für die Status Ausgabe. Das Format von Go Templates ist hier beschrieben: https://golang.org/pkg/text/template/\nFür eine Liste der im Template verfügbaren Variablen, kann man die struct Werte hier einsehen: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "Go Template Format String für die Status Ausgabe. Das Format von Go Templates ist hier beschrieben: https://golang.org/pkg/text/template/\nFür eine Liste der im Template verfügbaren Variablen, kann man die struct Werte hier einsehen: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status",
"Group ID: {{.groupID}}": "Gruppen ID: {{.groupID}}", "Group ID: {{.groupID}}": "Gruppen ID: {{.groupID}}",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "Hypervisor-Signatur vor dem Gast in minikube verbergen (nur kvm2-Treiber)", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "Hypervisor-Signatur vor dem Gast in minikube verbergen (nur kvm2-Treiber)",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Hyperkit ist kaputt. Aktualisieren Sie auf die neueste Version von Hyperkit und/oder Docker Desktop. Alternativ können Sie einen anderen Treiber auswählen mit --driver", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Hyperkit ist kaputt. Aktualisieren Sie auf die neueste Version von Hyperkit und/oder Docker Desktop. Alternativ können Sie einen anderen Treiber auswählen mit --driver",
"Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "Das Hyperkit Netzwerk ist kaputt. Versuchen Sie das Internet Sharing zu deaktivieren: System Preference \u003e Sharing \u003e Internet Sharing. Alternativ können Sie versuchen auf die aktuellste Hyperkit Version zu aktualisieren oder einen anderen Treiber zu verwenden.", "Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "Das Hyperkit Netzwerk ist kaputt. Versuchen Sie das Internet Sharing zu deaktivieren: System Preference \u003e Sharing \u003e Internet Sharing. Alternativ können Sie versuchen auf die aktuellste Hyperkit Version zu aktualisieren oder einen anderen Treiber zu verwenden.",
@ -733,6 +735,7 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "Dies kann auch automatisch erfolgen, indem Sie die env var CHANGE_MINIKUBE_NONE_USER = true setzen", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "Dies kann auch automatisch erfolgen, indem Sie die env var CHANGE_MINIKUBE_NONE_USER = true setzen",
"This control plane is not running! (state={{.state}})": "Diese Kontroll-Ebene läuft nicht! (state={{.state}})", "This control plane is not running! (state={{.state}})": "Diese Kontroll-Ebene läuft nicht! (state={{.state}})",
"This driver does not yet work on your architecture. Maybe try --driver=none": "Dieser Treiber funktioniert noch nicht mit dieser Architektur. Versuche --driver=none zu verwenden", "This driver does not yet work on your architecture. Maybe try --driver=none": "Dieser Treiber funktioniert noch nicht mit dieser Architektur. Versuche --driver=none zu verwenden",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "Dies ist ein bekanntes Problem mit dem BTRFS Treiber. Es exisitiert ein Workaround. Bitte schaue das GitHub Issue an", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "Dies ist ein bekanntes Problem mit dem BTRFS Treiber. Es exisitiert ein Workaround. Bitte schaue das GitHub Issue an",
"This is unusual - you may want to investigate using \"{{.command}}\"": "Das ist ungewöhnlich - Du könntest versuchen \"{{.command}}\" zu verwenden", "This is unusual - you may want to investigate using \"{{.command}}\"": "Das ist ungewöhnlich - Du könntest versuchen \"{{.command}}\" zu verwenden",
"This will keep the existing kubectl context and will create a minikube context.": "Dadurch wird der vorhandene Kubectl-Kontext beibehalten und ein minikube-Kontext erstellt.", "This will keep the existing kubectl context and will create a minikube context.": "Dadurch wird der vorhandene Kubectl-Kontext beibehalten und ein minikube-Kontext erstellt.",
@ -741,6 +744,8 @@
"This {{.type}} is having trouble accessing https://{{.repository}}": "Dieser {{.type}} hat Probleme beim Zugriff auf https://{{.repository}}", "This {{.type}} is having trouble accessing https://{{.repository}}": "Dieser {{.type}} hat Probleme beim Zugriff auf https://{{.repository}}",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "Tip: Um diesen zu root gehörenden Cluster zu entfernen, führe {{.cmd}} aus", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "Tip: Um diesen zu root gehörenden Cluster zu entfernen, führe {{.cmd}} aus",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "Tipp: Um diesen Root-Cluster zu entfernen, führen Sie Folgendes aus: sudo {{.cmd}} delete", "Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "Tipp: Um diesen Root-Cluster zu entfernen, führen Sie Folgendes aus: sudo {{.cmd}} delete",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "Um zu diesem Cluster zu verbinden, verwende --context={{.name}}", "To connect to this cluster, use: --context={{.name}}": "Um zu diesem Cluster zu verbinden, verwende --context={{.name}}",
"To connect to this cluster, use: kubectl --context={{.name}}": "Verwenden Sie zum Herstellen einer Verbindung zu diesem Cluster: kubectl --context = {{.name}}", "To connect to this cluster, use: kubectl --context={{.name}}": "Verwenden Sie zum Herstellen einer Verbindung zu diesem Cluster: kubectl --context = {{.name}}",
"To connect to this cluster, use: kubectl --context={{.name}}__1": "Verwenden Sie zum Herstellen einer Verbindung zu diesem Cluster: kubectl --context = {{.name}}", "To connect to this cluster, use: kubectl --context={{.name}}__1": "Verwenden Sie zum Herstellen einer Verbindung zu diesem Cluster: kubectl --context = {{.name}}",

View File

@ -49,6 +49,7 @@
"Add machine IP to NO_PROXY environment variable": "Agregar una IP de máquina a la variable de entorno NO_PROXY", "Add machine IP to NO_PROXY environment variable": "Agregar una IP de máquina a la variable de entorno NO_PROXY",
"Add, delete, or push a local image into minikube": "Agrega, elimina, o empuja una imagen local dentro de minikube, haciendo (add, delete, push) respectivamente.", "Add, delete, or push a local image into minikube": "Agrega, elimina, o empuja una imagen local dentro de minikube, haciendo (add, delete, push) respectivamente.",
"Add, remove, or list additional nodes": "Usa (add, remove, list) para agregar, eliminar o listar nodos adicionales.", "Add, remove, or list additional nodes": "Usa (add, remove, list) para agregar, eliminar o listar nodos adicionales.",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "Agregando el nodo {{.name}} al cluster {{.cluster}}.", "Adding node {{.name}} to cluster {{.cluster}}": "Agregando el nodo {{.name}} al cluster {{.cluster}}.",
"Additional help topics": "Temas de ayuda adicionales", "Additional help topics": "Temas de ayuda adicionales",
"Additional mount options, such as cache=fscache": "Opciones de montaje adicionales, por ejemplo cache=fscache", "Additional mount options, such as cache=fscache": "Opciones de montaje adicionales, por ejemplo cache=fscache",
@ -332,6 +333,7 @@
"Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "", "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "",
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "",
"Group ID: {{.groupID}}": "", "Group ID: {{.groupID}}": "",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "Permite ocultar la firma del hipervisor al invitado en minikube (solo con el controlador de kvm2)", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "Permite ocultar la firma del hipervisor al invitado en minikube (solo con el controlador de kvm2)",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "",
"Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "", "Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "",
@ -357,7 +359,6 @@
"If true, print web links to addons' documentation if using --output=list (default).": "", "If true, print web links to addons' documentation if using --output=list (default).": "",
"If true, returns list of profiles faster by skipping validating the status of the cluster.": "", "If true, returns list of profiles faster by skipping validating the status of the cluster.": "",
"If true, the added node will be marked for work. Defaults to true.": "", "If true, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "", "If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "", "If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "", "If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -737,6 +738,7 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "El proceso se puede automatizar si se define la variable de entorno CHANGE_MINIKUBE_NONE_USER=true", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "El proceso se puede automatizar si se define la variable de entorno CHANGE_MINIKUBE_NONE_USER=true",
"This control plane is not running! (state={{.state}})": "", "This control plane is not running! (state={{.state}})": "",
"This driver does not yet work on your architecture. Maybe try --driver=none": "", "This driver does not yet work on your architecture. Maybe try --driver=none": "",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "",
"This is unusual - you may want to investigate using \"{{.command}}\"": "", "This is unusual - you may want to investigate using \"{{.command}}\"": "",
"This will keep the existing kubectl context and will create a minikube context.": "Se conservará el contexto de kubectl actual y se creará uno de minikube.", "This will keep the existing kubectl context and will create a minikube context.": "Se conservará el contexto de kubectl actual y se creará uno de minikube.",
@ -745,6 +747,8 @@
"This {{.type}} is having trouble accessing https://{{.repository}}": "", "This {{.type}} is having trouble accessing https://{{.repository}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "Para eliminar este clúster de raíz, ejecuta: sudo {{.cmd}} delete", "Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "Para eliminar este clúster de raíz, ejecuta: sudo {{.cmd}} delete",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "", "To connect to this cluster, use: --context={{.name}}": "",
"To connect to this cluster, use: kubectl --context={{.name}}": "Para conectarte a este clúster, usa: kubectl --context={{.name}}", "To connect to this cluster, use: kubectl --context={{.name}}": "Para conectarte a este clúster, usa: kubectl --context={{.name}}",
"To connect to this cluster, use: kubectl --context={{.name}}__1": "Para conectarte a este clúster, usa: kubectl --context={{.name}}", "To connect to this cluster, use: kubectl --context={{.name}}__1": "Para conectarte a este clúster, usa: kubectl --context={{.name}}",

View File

@ -49,6 +49,7 @@
"Add machine IP to NO_PROXY environment variable": "Ajouter l'IP de la machine à la variable d'environnement NO_PROXY", "Add machine IP to NO_PROXY environment variable": "Ajouter l'IP de la machine à la variable d'environnement NO_PROXY",
"Add, delete, or push a local image into minikube": "Ajouter, supprimer ou pousser une image locale dans minikube", "Add, delete, or push a local image into minikube": "Ajouter, supprimer ou pousser une image locale dans minikube",
"Add, remove, or list additional nodes": "Ajouter, supprimer ou lister des nœuds supplémentaires", "Add, remove, or list additional nodes": "Ajouter, supprimer ou lister des nœuds supplémentaires",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "Ajout du nœud {{.name}} au cluster {{.cluster}}", "Adding node {{.name}} to cluster {{.cluster}}": "Ajout du nœud {{.name}} au cluster {{.cluster}}",
"Additional help topics": "Rubriques d'aide supplémentaires", "Additional help topics": "Rubriques d'aide supplémentaires",
"Additional mount options, such as cache=fscache": "Options de montage supplémentaires, telles que cache=fscache", "Additional mount options, such as cache=fscache": "Options de montage supplémentaires, telles que cache=fscache",
@ -314,6 +315,7 @@
"Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "Go chaîne de format de modèle pour la sortie de la vue de configuration. Le format des modèles Go peut être trouvé ici : https://golang.org/pkg/text/template/\nPour la liste des variables accessibles pour le modèle, voir les valeurs de structure ici : https://godoc.org/k8s .io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate", "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "Go chaîne de format de modèle pour la sortie de la vue de configuration. Le format des modèles Go peut être trouvé ici : https://golang.org/pkg/text/template/\nPour la liste des variables accessibles pour le modèle, voir les valeurs de structure ici : https://godoc.org/k8s .io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate",
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "Go chaîne de format de modèle pour la sortie d'état. Le format des modèles Go peut être trouvé ici : https://golang.org/pkg/text/template/\nPour la liste des variables accessibles pour le modèle, consultez les valeurs de structure ici : https://godoc.org/k8s. io/minikube/cmd/minikube/cmd#Status", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "Go chaîne de format de modèle pour la sortie d'état. Le format des modèles Go peut être trouvé ici : https://golang.org/pkg/text/template/\nPour la liste des variables accessibles pour le modèle, consultez les valeurs de structure ici : https://godoc.org/k8s. io/minikube/cmd/minikube/cmd#Status",
"Group ID: {{.groupID}}": "Identifiant du groupe: {{.groupID}}", "Group ID: {{.groupID}}": "Identifiant du groupe: {{.groupID}}",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "Masque la signature de l'hyperviseur de l'invité dans minikube (pilote kvm2 uniquement).", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "Masque la signature de l'hyperviseur de l'invité dans minikube (pilote kvm2 uniquement).",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Hyperkit ne fonctionne pas. Mettez à niveau vers la dernière version d'hyperkit et/ou Docker for Desktop. Alternativement, vous pouvez choisir un autre --driver", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Hyperkit ne fonctionne pas. Mettez à niveau vers la dernière version d'hyperkit et/ou Docker for Desktop. Alternativement, vous pouvez choisir un autre --driver",
"Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "Le réseau Hyperkit est cassé. Essayez de désactiver le partage Internet : Préférence système \u003e Partage \u003e Partage Internet. \nVous pouvez également essayer de mettre à niveau vers la dernière version d'hyperkit ou d'utiliser un autre pilote.", "Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "Le réseau Hyperkit est cassé. Essayez de désactiver le partage Internet : Préférence système \u003e Partage \u003e Partage Internet. \nVous pouvez également essayer de mettre à niveau vers la dernière version d'hyperkit ou d'utiliser un autre pilote.",
@ -709,12 +711,15 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "Cette opération peut également être réalisée en définissant la variable d'environment \"CHANGE_MINIKUBE_NONE_USER=true\".", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "Cette opération peut également être réalisée en définissant la variable d'environment \"CHANGE_MINIKUBE_NONE_USER=true\".",
"This control plane is not running! (state={{.state}})": "Ce plan de contrôle ne fonctionne pas ! (état={{.state}})", "This control plane is not running! (state={{.state}})": "Ce plan de contrôle ne fonctionne pas ! (état={{.state}})",
"This driver does not yet work on your architecture. Maybe try --driver=none": "Ce pilote ne fonctionne pas encore sur votre architecture. Essayez peut-être --driver=none", "This driver does not yet work on your architecture. Maybe try --driver=none": "Ce pilote ne fonctionne pas encore sur votre architecture. Essayez peut-être --driver=none",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "Il s'agit d'un problème connu avec le pilote de stockage BTRFS, il existe une solution de contournement, veuillez vérifier le problème sur GitHub", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "Il s'agit d'un problème connu avec le pilote de stockage BTRFS, il existe une solution de contournement, veuillez vérifier le problème sur GitHub",
"This is unusual - you may want to investigate using \"{{.command}}\"": "C'est inhabituel - vous voudrez peut-être investiguer en utilisant \"{{.command}}\"", "This is unusual - you may want to investigate using \"{{.command}}\"": "C'est inhabituel - vous voudrez peut-être investiguer en utilisant \"{{.command}}\"",
"This will keep the existing kubectl context and will create a minikube context.": "Cela permet de conserver le contexte kubectl existent et de créer un contexte minikube.", "This will keep the existing kubectl context and will create a minikube context.": "Cela permet de conserver le contexte kubectl existent et de créer un contexte minikube.",
"This will start the mount daemon and automatically mount files into minikube.": "Cela démarrera le démon de montage et montera automatiquement les fichiers dans minikube.", "This will start the mount daemon and automatically mount files into minikube.": "Cela démarrera le démon de montage et montera automatiquement les fichiers dans minikube.",
"This {{.type}} is having trouble accessing https://{{.repository}}": "Ce {{.type}} rencontre des difficultés pour accéder à https://{{.repository}}", "This {{.type}} is having trouble accessing https://{{.repository}}": "Ce {{.type}} rencontre des difficultés pour accéder à https://{{.repository}}",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "Astuce : Pour supprimer ce cluster appartenant à la racine, exécutez : sudo {{.cmd}}", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "Astuce : Pour supprimer ce cluster appartenant à la racine, exécutez : sudo {{.cmd}}",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "Pour vous connecter à ce cluster, utilisez : --context={{.name}}", "To connect to this cluster, use: --context={{.name}}": "Pour vous connecter à ce cluster, utilisez : --context={{.name}}",
"To connect to this cluster, use: kubectl --context={{.profile_name}}": "Pour vous connecter à ce cluster, utilisez : kubectl --context={{.profile_name}}", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "Pour vous connecter à ce cluster, utilisez : kubectl --context={{.profile_name}}",
"To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "Pour désactiver les notifications bêta, exécutez : 'minikube config set WantBetaUpdateNotification false'", "To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "Pour désactiver les notifications bêta, exécutez : 'minikube config set WantBetaUpdateNotification false'",

View File

@ -50,6 +50,7 @@
"Add machine IP to NO_PROXY environment variable": "マシンの IP アドレスを NO_PROXY 環境変数に追加します", "Add machine IP to NO_PROXY environment variable": "マシンの IP アドレスを NO_PROXY 環境変数に追加します",
"Add, delete, or push a local image into minikube": "ローカルイメージを minikube に追加、削除、またはプッシュします", "Add, delete, or push a local image into minikube": "ローカルイメージを minikube に追加、削除、またはプッシュします",
"Add, remove, or list additional nodes": "追加のノードを追加、削除またはリストアップします", "Add, remove, or list additional nodes": "追加のノードを追加、削除またはリストアップします",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "{{.name}} ノードを {{.cluster}} クラスターに追加します", "Adding node {{.name}} to cluster {{.cluster}}": "{{.name}} ノードを {{.cluster}} クラスターに追加します",
"Additional help topics": "追加のトピック", "Additional help topics": "追加のトピック",
"Additional mount options, such as cache=fscache": "cache=fscache などの追加のマウントオプション", "Additional mount options, such as cache=fscache": "cache=fscache などの追加のマウントオプション",
@ -322,6 +323,7 @@
"Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "設定ビュー出力用の Go テンプレートフォーマット文字列。Go テンプレートのフォーマットはこちら: https://golang.org/pkg/text/template/\nテンプレートでアクセス可能な変数の一覧は、こちらの構造化変数を参照してください: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate", "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "設定ビュー出力用の Go テンプレートフォーマット文字列。Go テンプレートのフォーマットはこちら: https://golang.org/pkg/text/template/\nテンプレートでアクセス可能な変数の一覧は、こちらの構造化変数を参照してください: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate",
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "状態出力用の Go テンプレートフォーマット文字列。Go テンプレートのフォーマットはこちら: https://golang.org/pkg/text/template/\nテンプレートでアクセス可能な変数の一覧は、こちらの構造化変数を参照してください: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "状態出力用の Go テンプレートフォーマット文字列。Go テンプレートのフォーマットはこちら: https://golang.org/pkg/text/template/\nテンプレートでアクセス可能な変数の一覧は、こちらの構造化変数を参照してください: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status",
"Group ID: {{.groupID}}": "グループ ID: {{.groupID}}", "Group ID: {{.groupID}}": "グループ ID: {{.groupID}}",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "minikube 中のゲストに対してハイパーバイザー署名を非表示にします (kvm2 ドライバーのみ)", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "minikube 中のゲストに対してハイパーバイザー署名を非表示にします (kvm2 ドライバーのみ)",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Hyperkit は故障しています。最新バージョンの Hyperkit と Docker for Desktop にアップグレードしてください。あるいは、別の --driver を選択することもできます。", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "Hyperkit は故障しています。最新バージョンの Hyperkit と Docker for Desktop にアップグレードしてください。あるいは、別の --driver を選択することもできます。",
"Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "Hyperkit ネットワーキングは故障しています。インターネット共有の無効化を試してください: システム環境設定 \u003e 共有 \u003e インターネット共有。\nあるいは、最新の Hyperkit バージョンへのアップグレードか、別のドライバー使用を試すこともできます。", "Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "Hyperkit ネットワーキングは故障しています。インターネット共有の無効化を試してください: システム環境設定 \u003e 共有 \u003e インターネット共有。\nあるいは、最新の Hyperkit バージョンへのアップグレードか、別のドライバー使用を試すこともできます。",
@ -735,6 +737,7 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "これは環境変数 CHANGE_MINIKUBE_NONE_USER=true を設定して自動的に行うこともできます", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "これは環境変数 CHANGE_MINIKUBE_NONE_USER=true を設定して自動的に行うこともできます",
"This control plane is not running! (state={{.state}})": "このコントロールプレーンは動作していません!(state={{.state}})", "This control plane is not running! (state={{.state}})": "このコントロールプレーンは動作していません!(state={{.state}})",
"This driver does not yet work on your architecture. Maybe try --driver=none": "このドライバーはあなたのアーキテクチャではまだ機能しません。もしかしたら、--driver=none を試してみてください", "This driver does not yet work on your architecture. Maybe try --driver=none": "このドライバーはあなたのアーキテクチャではまだ機能しません。もしかしたら、--driver=none を試してみてください",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "これは BTRFS ストレージドライバーの既知の問題です (回避策があります)。GitHub の issue を確認してください", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "これは BTRFS ストレージドライバーの既知の問題です (回避策があります)。GitHub の issue を確認してください",
"This is unusual - you may want to investigate using \"{{.command}}\"": "これは異常です - 「{{.command}}」を使って調査できます", "This is unusual - you may want to investigate using \"{{.command}}\"": "これは異常です - 「{{.command}}」を使って調査できます",
"This will keep the existing kubectl context and will create a minikube context.": "これにより既存の kubectl コンテキストが保持され、minikube コンテキストが作成されます。", "This will keep the existing kubectl context and will create a minikube context.": "これにより既存の kubectl コンテキストが保持され、minikube コンテキストが作成されます。",
@ -743,6 +746,8 @@
"This {{.type}} is having trouble accessing https://{{.repository}}": "この {{.type}} は https://{{.repository}} アクセスにおける問題があります", "This {{.type}} is having trouble accessing https://{{.repository}}": "この {{.type}} は https://{{.repository}} アクセスにおける問題があります",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "ヒント: この root 所有クラスターの削除コマンド: sudo {{.cmd}}", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "ヒント: この root 所有クラスターの削除コマンド: sudo {{.cmd}}",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "ヒント: この root 所有クラスターの削除コマンド: sudo {{.cmd}} delete", "Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "ヒント: この root 所有クラスターの削除コマンド: sudo {{.cmd}} delete",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "このクラスターに接続するためには、--context={{.name}} を使用します", "To connect to this cluster, use: --context={{.name}}": "このクラスターに接続するためには、--context={{.name}} を使用します",
"To connect to this cluster, use: kubectl --context={{.name}}": "このクラスターに接続するためには、kubectl --context={{.name}} を使用します", "To connect to this cluster, use: kubectl --context={{.name}}": "このクラスターに接続するためには、kubectl --context={{.name}} を使用します",
"To connect to this cluster, use: kubectl --context={{.name}}__1": "このクラスターに接続するためには、kubectl --context={{.name}} を使用します", "To connect to this cluster, use: kubectl --context={{.name}}__1": "このクラスターに接続するためには、kubectl --context={{.name}} を使用します",

View File

@ -52,6 +52,7 @@
"Add or delete an image from the local cache.": "로컬 캐시에 이미지를 추가하거나 삭제합니다", "Add or delete an image from the local cache.": "로컬 캐시에 이미지를 추가하거나 삭제합니다",
"Add, delete, or push a local image into minikube": "minikube에 로컬 이미지를 추가하거나 삭제, 푸시합니다", "Add, delete, or push a local image into minikube": "minikube에 로컬 이미지를 추가하거나 삭제, 푸시합니다",
"Add, remove, or list additional nodes": "노드를 추가하거나 삭제, 나열합니다", "Add, remove, or list additional nodes": "노드를 추가하거나 삭제, 나열합니다",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "노드 {{.name}} 를 클러스터 {{.cluster}} 에 추가합니다", "Adding node {{.name}} to cluster {{.cluster}}": "노드 {{.name}} 를 클러스터 {{.cluster}} 에 추가합니다",
"Additional help topics": "", "Additional help topics": "",
"Additional mount options, such as cache=fscache": "cache=fscache 와 같은 추가적인 마운트 옵션", "Additional mount options, such as cache=fscache": "cache=fscache 와 같은 추가적인 마운트 옵션",
@ -350,6 +351,7 @@
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "",
"Group ID: {{.groupID}}": "", "Group ID: {{.groupID}}": "",
"Have you set up libvirt correctly?": "libvirt 설정을 알맞게 하셨습니까?", "Have you set up libvirt correctly?": "libvirt 설정을 알맞게 하셨습니까?",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "",
"Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "", "Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "",
@ -374,7 +376,6 @@
"If true, print web links to addons' documentation if using --output=list (default).": "", "If true, print web links to addons' documentation if using --output=list (default).": "",
"If true, returns list of profiles faster by skipping validating the status of the cluster.": "", "If true, returns list of profiles faster by skipping validating the status of the cluster.": "",
"If true, the added node will be marked for work. Defaults to true.": "", "If true, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "", "If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "", "If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "", "If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -740,12 +741,15 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "",
"This control plane is not running! (state={{.state}})": "", "This control plane is not running! (state={{.state}})": "",
"This driver does not yet work on your architecture. Maybe try --driver=none": "", "This driver does not yet work on your architecture. Maybe try --driver=none": "",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "",
"This is unusual - you may want to investigate using \"{{.command}}\"": "", "This is unusual - you may want to investigate using \"{{.command}}\"": "",
"This will keep the existing kubectl context and will create a minikube context.": "", "This will keep the existing kubectl context and will create a minikube context.": "",
"This will start the mount daemon and automatically mount files into minikube.": "", "This will start the mount daemon and automatically mount files into minikube.": "",
"This {{.type}} is having trouble accessing https://{{.repository}}": "", "This {{.type}} is having trouble accessing https://{{.repository}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "", "To connect to this cluster, use: --context={{.name}}": "",
"To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "",
"To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "", "To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "",

View File

@ -50,6 +50,7 @@
"Add machine IP to NO_PROXY environment variable": "Dodaj IP serwera do zmiennej środowiskowej NO_PROXY", "Add machine IP to NO_PROXY environment variable": "Dodaj IP serwera do zmiennej środowiskowej NO_PROXY",
"Add, delete, or push a local image into minikube": "Dodaj, usuń lub wypchnij lokalny obraz do minikube", "Add, delete, or push a local image into minikube": "Dodaj, usuń lub wypchnij lokalny obraz do minikube",
"Add, remove, or list additional nodes": "Dodaj, usuń lub wylistuj pozostałe węzły", "Add, remove, or list additional nodes": "Dodaj, usuń lub wylistuj pozostałe węzły",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "Dodawanie węzła {{.name}} do klastra {{.cluster}}", "Adding node {{.name}} to cluster {{.cluster}}": "Dodawanie węzła {{.name}} do klastra {{.cluster}}",
"Additional help topics": "Dodatkowe tematy pomocy", "Additional help topics": "Dodatkowe tematy pomocy",
"Additional mount options, such as cache=fscache": "Dodatkowe opcje montowania, jak na przykład cache=fscache", "Additional mount options, such as cache=fscache": "Dodatkowe opcje montowania, jak na przykład cache=fscache",
@ -336,6 +337,7 @@
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "",
"Group ID: {{.groupID}}": "", "Group ID: {{.groupID}}": "",
"Have you set up libvirt correctly?": "Czy napewno skonfigurowano libvirt w sposób prawidłowy?", "Have you set up libvirt correctly?": "Czy napewno skonfigurowano libvirt w sposób prawidłowy?",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "",
"Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "", "Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "",
@ -360,7 +362,6 @@
"If true, print web links to addons' documentation if using --output=list (default).": "", "If true, print web links to addons' documentation if using --output=list (default).": "",
"If true, returns list of profiles faster by skipping validating the status of the cluster.": "", "If true, returns list of profiles faster by skipping validating the status of the cluster.": "",
"If true, the added node will be marked for work. Defaults to true.": "", "If true, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "", "If true, will perform potentially dangerous operations. Use with discretion.": "",
"If using the none driver, ensure that systemctl is installed": "Jeśli użyto sterownika 'none', upewnij się że systemctl jest zainstalowany", "If using the none driver, ensure that systemctl is installed": "Jeśli użyto sterownika 'none', upewnij się że systemctl jest zainstalowany",
"If you are running minikube within a VM, consider using --driver=none:": "", "If you are running minikube within a VM, consider using --driver=none:": "",
@ -751,12 +752,15 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "",
"This control plane is not running! (state={{.state}})": "", "This control plane is not running! (state={{.state}})": "",
"This driver does not yet work on your architecture. Maybe try --driver=none": "", "This driver does not yet work on your architecture. Maybe try --driver=none": "",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "",
"This is unusual - you may want to investigate using \"{{.command}}\"": "", "This is unusual - you may want to investigate using \"{{.command}}\"": "",
"This will keep the existing kubectl context and will create a minikube context.": "", "This will keep the existing kubectl context and will create a minikube context.": "",
"This will start the mount daemon and automatically mount files into minikube.": "", "This will start the mount daemon and automatically mount files into minikube.": "",
"This {{.type}} is having trouble accessing https://{{.repository}}": "", "This {{.type}} is having trouble accessing https://{{.repository}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "", "To connect to this cluster, use: --context={{.name}}": "",
"To connect to this cluster, use: kubectl --context={{.name}}": "Aby połączyć się z klastrem użyj: kubectl --context={{.name}}", "To connect to this cluster, use: kubectl --context={{.name}}": "Aby połączyć się z klastrem użyj: kubectl --context={{.name}}",
"To connect to this cluster, use: kubectl --context={{.profile_name}}": "Aby połaczyć się z klastrem użyj: kubectl --context={{.profile_name}}", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "Aby połaczyć się z klastrem użyj: kubectl --context={{.profile_name}}",

View File

@ -44,6 +44,7 @@
"Add image to cache for all running minikube clusters": "", "Add image to cache for all running minikube clusters": "",
"Add machine IP to NO_PROXY environment variable": "", "Add machine IP to NO_PROXY environment variable": "",
"Add, remove, or list additional nodes": "", "Add, remove, or list additional nodes": "",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "", "Adding node {{.name}} to cluster {{.cluster}}": "",
"Additional help topics": "", "Additional help topics": "",
"Adds a node to the given cluster config, and starts it.": "", "Adds a node to the given cluster config, and starts it.": "",
@ -303,6 +304,7 @@
"Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "", "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "",
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "",
"Group ID: {{.groupID}}": "", "Group ID: {{.groupID}}": "",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "",
"Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "", "Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "",
@ -327,7 +329,6 @@
"If true, print web links to addons' documentation if using --output=list (default).": "", "If true, print web links to addons' documentation if using --output=list (default).": "",
"If true, returns list of profiles faster by skipping validating the status of the cluster.": "", "If true, returns list of profiles faster by skipping validating the status of the cluster.": "",
"If true, the added node will be marked for work. Defaults to true.": "", "If true, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "", "If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "", "If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "", "If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -682,12 +683,15 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "",
"This control plane is not running! (state={{.state}})": "", "This control plane is not running! (state={{.state}})": "",
"This driver does not yet work on your architecture. Maybe try --driver=none": "", "This driver does not yet work on your architecture. Maybe try --driver=none": "",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "",
"This is unusual - you may want to investigate using \"{{.command}}\"": "", "This is unusual - you may want to investigate using \"{{.command}}\"": "",
"This will keep the existing kubectl context and will create a minikube context.": "", "This will keep the existing kubectl context and will create a minikube context.": "",
"This will start the mount daemon and automatically mount files into minikube.": "", "This will start the mount daemon and automatically mount files into minikube.": "",
"This {{.type}} is having trouble accessing https://{{.repository}}": "", "This {{.type}} is having trouble accessing https://{{.repository}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "", "To connect to this cluster, use: --context={{.name}}": "",
"To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "",
"To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "", "To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "",

View File

@ -44,6 +44,7 @@
"Add image to cache for all running minikube clusters": "", "Add image to cache for all running minikube clusters": "",
"Add machine IP to NO_PROXY environment variable": "", "Add machine IP to NO_PROXY environment variable": "",
"Add, remove, or list additional nodes": "", "Add, remove, or list additional nodes": "",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "", "Adding node {{.name}} to cluster {{.cluster}}": "",
"Additional help topics": "", "Additional help topics": "",
"Adds a node to the given cluster config, and starts it.": "", "Adds a node to the given cluster config, and starts it.": "",
@ -303,6 +304,7 @@
"Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "", "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "",
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "",
"Group ID: {{.groupID}}": "", "Group ID: {{.groupID}}": "",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "",
"Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "", "Hyperkit networking is broken. Try disabling Internet Sharing: System Preference \u003e Sharing \u003e Internet Sharing. \nAlternatively, you can try upgrading to the latest hyperkit version, or using an alternate driver.": "",
@ -327,7 +329,6 @@
"If true, print web links to addons' documentation if using --output=list (default).": "", "If true, print web links to addons' documentation if using --output=list (default).": "",
"If true, returns list of profiles faster by skipping validating the status of the cluster.": "", "If true, returns list of profiles faster by skipping validating the status of the cluster.": "",
"If true, the added node will be marked for work. Defaults to true.": "", "If true, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "", "If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "", "If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "", "If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -682,12 +683,15 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "",
"This control plane is not running! (state={{.state}})": "", "This control plane is not running! (state={{.state}})": "",
"This driver does not yet work on your architecture. Maybe try --driver=none": "", "This driver does not yet work on your architecture. Maybe try --driver=none": "",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "",
"This is unusual - you may want to investigate using \"{{.command}}\"": "", "This is unusual - you may want to investigate using \"{{.command}}\"": "",
"This will keep the existing kubectl context and will create a minikube context.": "", "This will keep the existing kubectl context and will create a minikube context.": "",
"This will start the mount daemon and automatically mount files into minikube.": "", "This will start the mount daemon and automatically mount files into minikube.": "",
"This {{.type}} is having trouble accessing https://{{.repository}}": "", "This {{.type}} is having trouble accessing https://{{.repository}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "", "To connect to this cluster, use: --context={{.name}}": "",
"To connect to this cluster, use: kubectl --context={{.profile_name}}": "", "To connect to this cluster, use: kubectl --context={{.profile_name}}": "",
"To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "", "To disable beta notices, run: 'minikube config set WantBetaUpdateNotification false'": "",

View File

@ -57,6 +57,7 @@
"Add machine IP to NO_PROXY environment variable": "将机器IP添加到环境变量 NO_PROXY 中", "Add machine IP to NO_PROXY environment variable": "将机器IP添加到环境变量 NO_PROXY 中",
"Add or delete an image from the local cache.": "在本地缓存中添加或删除 image。", "Add or delete an image from the local cache.": "在本地缓存中添加或删除 image。",
"Add, remove, or list additional nodes": "", "Add, remove, or list additional nodes": "",
"Adding a control-plane node is not yet supported, setting control-plane flag to false": "",
"Adding node {{.name}} to cluster {{.cluster}}": "添加节点 {{.name}} 至集群 {{.cluster}}", "Adding node {{.name}} to cluster {{.cluster}}": "添加节点 {{.name}} 至集群 {{.cluster}}",
"Additional help topics": "其他帮助", "Additional help topics": "其他帮助",
"Additional mount options, such as cache=fscache": "其他挂载选项例如cache=fscache", "Additional mount options, such as cache=fscache": "其他挂载选项例如cache=fscache",
@ -405,6 +406,7 @@
"Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "", "Go template format string for the config view output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list of accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd/config#ConfigViewTemplate": "",
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "", "Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "",
"Group ID: {{.groupID}}": "", "Group ID: {{.groupID}}": "",
"Headlamp can display more detailed information when metrics-server is installed. To install it, run:\n\nminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "向 minikube 中的访客隐藏管理程序签名(仅限 kvm2 驱动程序)", "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "向 minikube 中的访客隐藏管理程序签名(仅限 kvm2 驱动程序)",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --driver": "",
"Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --vm-driver": "Hyperkit 已损坏。升级到最新的 hyperkit 版本以及/或者 Docker 桌面版。或者,你可以通过 --vm-driver 切换其他选项", "Hyperkit is broken. Upgrade to the latest hyperkit version and/or Docker for Desktop. Alternatively, you may choose an alternate --vm-driver": "Hyperkit 已损坏。升级到最新的 hyperkit 版本以及/或者 Docker 桌面版。或者,你可以通过 --vm-driver 切换其他选项",
@ -432,7 +434,6 @@
"If true, print web links to addons' documentation if using --output=list (default).": "", "If true, print web links to addons' documentation if using --output=list (default).": "",
"If true, returns list of profiles faster by skipping validating the status of the cluster.": "", "If true, returns list of profiles faster by skipping validating the status of the cluster.": "",
"If true, the added node will be marked for work. Defaults to true.": "", "If true, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "", "If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "", "If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "", "If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -839,6 +840,7 @@
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "此操作还可通过设置环境变量 CHANGE_MINIKUBE_NONE_USER=true 自动完成", "This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "此操作还可通过设置环境变量 CHANGE_MINIKUBE_NONE_USER=true 自动完成",
"This control plane is not running! (state={{.state}})": "", "This control plane is not running! (state={{.state}})": "",
"This driver does not yet work on your architecture. Maybe try --driver=none": "", "This driver does not yet work on your architecture. Maybe try --driver=none": "",
"This flag is currently unsupported.": "",
"This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "", "This is a known issue with BTRFS storage driver, there is a workaround, please checkout the issue on GitHub": "",
"This is unusual - you may want to investigate using \"{{.command}}\"": "", "This is unusual - you may want to investigate using \"{{.command}}\"": "",
"This will keep the existing kubectl context and will create a minikube context.": "这将保留现有 kubectl 上下文并创建 minikube 上下文。", "This will keep the existing kubectl context and will create a minikube context.": "这将保留现有 kubectl 上下文并创建 minikube 上下文。",
@ -847,6 +849,8 @@
"This {{.type}} is having trouble accessing https://{{.repository}}": "", "This {{.type}} is having trouble accessing https://{{.repository}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "", "Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "提示:要移除这个由根用户拥有的集群,请运行 sudo {{.cmd}} delete", "Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "提示:要移除这个由根用户拥有的集群,请运行 sudo {{.cmd}} delete",
"To access Headlamp, use the following command:\nminikube service headlamp -n headlamp\n\n": "",
"To authenticate in Headlamp, fetch the Authentication Token using the following command:\n\nexport SECRET=$(kubectl get secrets --namespace headlamp -o custom-columns=\":metadata.name\" | grep \"headlamp-token\")\nkubectl get secret $SECRET --namespace headlamp --template=\\{\\{.data.token\\}\\} | base64 --decode\n\t\t\t\n": "",
"To connect to this cluster, use: --context={{.name}}": "", "To connect to this cluster, use: --context={{.name}}": "",
"To connect to this cluster, use: kubectl --context={{.name}}": "如需连接到此集群,请使用 kubectl --context={{.name}}", "To connect to this cluster, use: kubectl --context={{.name}}": "如需连接到此集群,请使用 kubectl --context={{.name}}",
"To connect to this cluster, use: kubectl --context={{.name}}__1": "如需连接到此集群,请使用 kubectl --context={{.name}}", "To connect to this cluster, use: kubectl --context={{.name}}__1": "如需连接到此集群,请使用 kubectl --context={{.name}}",