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

View File

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

View File

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

View File

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

View File

@ -28,7 +28,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Download Dependencies
run: go mod download
- name: Build Binaries
@ -55,7 +54,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt
run: |
sudo apt-get update
@ -74,7 +72,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt
run: |
sudo apt-get update
@ -122,7 +119,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh
shell: bash
@ -222,7 +218,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh
shell: bash
@ -326,7 +321,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh
shell: bash
run: |
@ -412,7 +406,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh
shell: bash
@ -511,7 +504,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
# 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
# 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
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Download Dependencies
run: go mod download
- name: Build Binaries
@ -53,7 +52,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt
run: |
sudo apt-get update
@ -72,7 +70,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install libvirt
run: |
sudo apt-get update
@ -120,7 +117,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh
shell: bash
run: |
@ -220,7 +216,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh
shell: bash
@ -325,7 +320,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh
shell: bash
run: |
@ -412,7 +406,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Install gopogh
shell: bash
@ -512,7 +505,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
# 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
# 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
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Benchmark time-to-k8s for Docker driver with Docker runtime
run: |
./hack/benchmark/time-to-k8s/public-chart/public-chart.sh docker docker
@ -48,7 +47,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Disable firewall
run: |
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -18,7 +18,6 @@ jobs:
- uses: actions/setup-go@b22fbbc2921299758641fab08929b4ac52b32923
with:
go-version: ${{env.GO_VERSION}}
stable: true
- name: Bump Kubeadm Constants for Kubernetes Images
id: bumpKubAdmConsts
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:
* 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!
@ -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: 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!
@ -161,7 +161,7 @@ Version Upgrades:
* 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!

View File

@ -813,6 +813,10 @@ release-notes:
update-leaderboard:
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)
$(if $(quiet),@echo " CP $@")
$(Q)cp $< $@

View File

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

View File

@ -67,6 +67,29 @@ var addonsEnableCmd = &cobra.Command{
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})
}

View File

@ -50,8 +50,13 @@ var nodeAddCmd = &cobra.Command{
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.
n := config.Node{
Name: name,
@ -89,7 +94,7 @@ var nodeAddCmd = &cobra.Command{
func init() {
// 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().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"
"runtime"
"strings"
"time"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
@ -84,8 +83,16 @@ var RootCmd = &cobra.Command{
// 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.
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.
if runtime.GOOS == "windows" && detect.IsMicrosoftWSL() {
var found = false

View File

@ -147,4 +147,8 @@ var (
// InAccelAssets assets for inaccel addon
//go:embed inaccel/fpga-operator.yaml.tmpl
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
github.com/Delta456/box-cli-maker/v2 v2.2.2
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/Parallels/docker-machine-parallels/v2 v2.0.1
github.com/VividCortex/godaemon v1.0.0
@ -62,7 +62,7 @@ require (
github.com/russross/blackfriday v1.6.0 // indirect
github.com/samalba/dockerclient v0.0.0-20160414174713-91d7393ff859 // indirect
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/viper v1.12.0
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/oauth2 v0.0.0-20220608161450-d0670ef3b1eb
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/text v0.3.7
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/yaml.v2 v2.4.0
k8s.io/api v0.24.1
k8s.io/apimachinery v0.24.1
k8s.io/client-go v0.24.1
k8s.io/api v0.24.2
k8s.io/apimachinery v0.24.2
k8s.io/client-go v0.24.2
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/kubectl v0.24.1
k8s.io/kubectl v0.24.2
k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9
libvirt.org/go/libvirt v1.8004.0
sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0
@ -106,13 +106,13 @@ require (
require (
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/monitoring v1.1.0 // indirect
cloud.google.com/go/trace v1.2.0 // indirect
git.sr.ht/~sbinet/gg v0.3.1 // 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/Microsoft/go-winio v0.5.2 // 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/go-querystring 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/go-type-adapters v1.0.0 // 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/zap v1.19.0 // 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/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/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/protobuf v1.28.0 // 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.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.1 h1:2sMmt8prCn7DPaG4Pmh0N3Inmc8cT8ae5k1M6VJ9Wqc=
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.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
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/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/opentelemetry-operations-go/exporter/trace v1.8.1 h1:Tn/3pMqRSsI09jFVdGEuMqLIBNOmRHVqKp9DSQg4HPM=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.8.1/go.mod h1:KddM1vG3MS+CRfmoFBqeUIICfd9nS8pLHKtwJ/kt0QQ=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.1 h1:SixyMKTOWhEWISdA7PB7vOxkvOP8BIgW5uzbyIf0kXM=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.1/go.mod h1:j+FS9VBW3mwtHBmm9KOJEy5Tq68fCp7fE/R9bV/flIM=
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.2/go.mod h1:vCKAVz9WbhvBYuqNignSpjoyMtBT/CFELC3z98onw4o=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.32.2 h1:lw6BPuBgZKGwl4jm8xrU7AGnK8ohy7UT9hPM1+S16ts=
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/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
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.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
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.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
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 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.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q=
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.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
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-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-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-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-20190226205417-e64efc72b421/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-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-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/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
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-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-20220608164250-635b8c9b7f68 h1:z8Hj/bl9cOV2grsOpEaQFUaly0JWN3i97mo3jXKJNp0=
golang.org/x/sys v0.0.0-20220608164250-635b8c9b7f68/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/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-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
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-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-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-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/plot v0.11.0 h1:z2ZkgNqW34d0oYUzd80RRlc0L9kWtenqK4kflZG1lGc=
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.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw=
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.83.0/go.mod h1:CNywQoj/AfhTw26ZWAa6LwOv+6WFxHmeLPZq2uncLZk=
google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o=
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.4.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-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-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-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 v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
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.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8=
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.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ=
k8s.io/api v0.24.2 h1:g518dPU/L7VRLxWfcadQn2OnsiGWVOadTLpdnqgY2OI=
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.20.1/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.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0=
k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I=
k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
k8s.io/apimachinery v0.24.2 h1:5QlH9SL2C8KMcrNJPor+LbXVTaZRReml7svPEh4OKDM=
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.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM=
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.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y=
k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k=
k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0=
k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E=
k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8=
k8s.io/client-go v0.24.2 h1:CoXFSf8if+bLEbinDqN9ePIDGzcLtqhfd6jpfnwGOFA=
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/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.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI=
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.1/go.mod h1:DW5vQGYVCog8WYpNob3PMmmsY8A3L9QZNg4j/dV3s38=
k8s.io/component-helpers v0.24.1/go.mod h1:q5Z1pWV/QfX9ThuNeywxasiwkLw9KsR4Q9TAOdb/Y3s=
k8s.io/component-base v0.24.2 h1:kwpQdoSfbcH+8MPN4tALtajLDfSfYxBDYlXobNWI6OU=
k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM=
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.20.1/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-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU=
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.1/go.mod h1:NzFqQ50B004fHYWOfhHTrAm4TY6oGF5FAAL13LEaeUI=
k8s.io/kubectl v0.24.2 h1:+RfQVhth8akUmIc2Ge8krMl/pt66V7210ka3RE/p0J4=
k8s.io/kubectl v0.24.2/go.mod h1:+HIFJc0bA6Tzu5O/YcuUt45APAxnNL8LeMuXwoiGsPg=
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-20201110183641-67b214c5f920/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}}'`,
},
},
".github/workflows/yearly-leaderboard.yml": {
Replace: map[string]string{
`GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`,
},
},
".github/workflows/translations.yml": {
Replace: map[string]string{
`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)"
# Print header for page.
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).
$DIR/pullsheet leaderboard --token-path "$TMP_TOKEN" --repos kubernetes/minikube --since "$tag_start" --until "$tag_end" --logtostderr=false --stderrthreshold=2 \
| sed -r -e "/Command\-line/,/pullsheet/d" >> "$destination/$tag_name.html"
# Add pullsheet content
$DIR/pullsheet leaderboard --token-path "$TMP_TOKEN" --repos kubernetes/minikube --since "$tag_start" --until "$tag_end" --hide-command --logtostderr=false --stderrthreshold=2 \
>> "$destination/$tag_name.html"
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,
callbacks: []setFn{EnableOrDisableAddon},
},
{
name: "headlamp",
set: SetBool,
callbacks: []setFn{EnableOrDisableAddon},
},
}

View File

@ -552,7 +552,7 @@ var Addons = map[string]*Addon{
"0640"),
}, 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",
"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{
"GCPAuthWebhook": "gcr.io",
}),
@ -701,6 +701,19 @@ var Addons = map[string]*Addon{
}, map[string]string{
"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>,...

View File

@ -17,15 +17,20 @@ limitations under the License.
package audit
import (
"bufio"
"encoding/json"
"fmt"
"os"
"os/user"
"strings"
"time"
"github.com/google/uuid"
"github.com/spf13/pflag"
"github.com/spf13/viper"
"k8s.io/klog/v2"
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/constants"
"k8s.io/minikube/pkg/minikube/localpath"
"k8s.io/minikube/pkg/version"
)
@ -52,14 +57,67 @@ func args() string {
}
// Log details about the executed command.
func Log(startTime time.Time) {
if !shouldLog() {
return
func LogCommandStart() (string, error) {
if len(os.Args) < 2 || !shouldLog() {
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 {
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.
@ -74,7 +132,7 @@ func shouldLog() bool {
}
// commands that should not be logged.
no := []string{"status", "version"}
no := []string{"status", "version", "logs", "generate-docs"}
a := pflag.Arg(0)
for _, c := range no {
if a == c {

View File

@ -20,7 +20,6 @@ import (
"os"
"os/user"
"testing"
"time"
"github.com/spf13/pflag"
"github.com/spf13/viper"
@ -177,7 +176,27 @@ func TestAudit(t *testing.T) {
})
// 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
defer func() { os.Args = oldArgs }()
os.Args = []string{"minikube"}
@ -188,8 +207,32 @@ func TestAudit(t *testing.T) {
pflag.Parse()
}()
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"
"os"
"k8s.io/klog/v2"
"k8s.io/minikube/pkg/minikube/localpath"
"k8s.io/minikube/pkg/minikube/out/register"
)
@ -27,29 +28,35 @@ import (
// currentLogFile the file that's used to store audit logs
var currentLogFile *os.File
// setLogFile sets the logPath and creates the log file if it doesn't exist.
func setLogFile() error {
// openAuditLog opens the audit log file or creates it if it doesn't exist.
func openAuditLog() error {
lp := localpath.AuditLog()
f, err := os.OpenFile(lp, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
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
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.
func appendToLog(row *row) error {
if currentLogFile == nil {
if err := setLogFile(); err != nil {
return err
}
}
ce := register.CloudEvent(row, row.toMap())
bs, err := ce.MarshalJSON()
if err != nil {
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 {
return fmt.Errorf("unable to write to audit log: %v", err)
}

View File

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

View File

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

View File

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

View File

@ -23,6 +23,7 @@ import (
"testing"
"time"
"github.com/google/uuid"
"k8s.io/minikube/pkg/minikube/constants"
)
@ -36,8 +37,10 @@ func TestRow(t *testing.T) {
stFormatted := st.Format(constants.TimeFormat)
et := time.Now()
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) {
tests := []struct {
@ -51,7 +54,7 @@ func TestRow(t *testing.T) {
{"user", r.user, u},
{"version", r.version, v},
{"startTime", r.startTime, stFormatted},
{"endTime", r.endTime, etFormatted},
{"id", r.id, id},
}
for _, tt := range tests {
@ -83,7 +86,7 @@ func TestRow(t *testing.T) {
{"user", u},
{"version", v},
{"startTime", stFormatted},
{"endTime", etFormatted},
{"id", id},
}
for _, tt := range tests {
@ -106,7 +109,7 @@ func TestRow(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{}
if err := json.Unmarshal([]byte(l), r); err != nil {
@ -126,7 +129,7 @@ func TestRow(t *testing.T) {
{"user", r.user, u},
{"version", r.version, v},
{"startTime", r.startTime, stFormatted},
{"endTime", r.endTime, etFormatted},
{"id", r.id, id},
}
for _, tt := range tests {

View File

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

View File

@ -55,7 +55,7 @@ minikube node add [flags]
### 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.
--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
tests the GCP Auth addon with either phony or real credentials and makes sure the files are mounted into pods correctly
#### validateHeadlampAddon
## TestCertOptions
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) `
}
```
_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 id="/Windows/x86-64/Beta/.exe download" %}}

View File

@ -29,6 +29,7 @@ import (
"os/exec"
"path/filepath"
"reflect"
"regexp"
"strings"
"testing"
"time"
@ -95,6 +96,7 @@ func TestAddons(t *testing.T) {
{"HelmTiller", validateHelmTillerAddon},
{"Olm", validateOlmAddon},
{"CSI", validateCSIDriverAndSnapshots},
{"Headlamp", validateHeadlampAddon},
}
for _, tc := range tests {
tc := tc
@ -605,6 +607,13 @@ func validateGCPAuthAddon(ctx context.Context, t *testing.T, profile string) {
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.
names, err := PodWait(ctx, t, profile, "default", "integration-test=busybox", Minutes(8))
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)
}
// 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() {
// 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"))
@ -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, 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",
"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",
"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.",
@ -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 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}}",
"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)",
"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.",
@ -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 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 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 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.",
@ -741,6 +744,8 @@
"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}} 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: 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}}",

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, 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.",
"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}}.",
"Additional help topics": "Temas de ayuda adicionales",
"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 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}}": "",
"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)",
"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.": "",
@ -357,7 +359,6 @@
"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, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -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 control plane is not running! (state={{.state}})": "",
"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 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.",
@ -745,6 +747,8 @@
"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}} 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: 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}}",

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, 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",
"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}}",
"Additional help topics": "Rubriques d'aide supplémentaires",
"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 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}}",
"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).",
"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.",
@ -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 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 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 unusual - you may want to investigate using \"{{.command}}\"": "C'est inhabituel - vous voudrez peut-être investiguer en utilisant \"{{.command}}\"",
"This will keep the existing kubectl context and will create a minikube context.": "Cela permet de conserver le contexte kubectl existent et de créer un contexte minikube.",
"This will start the mount daemon and automatically mount files into minikube.": "Cela démarrera le démon de montage et montera automatiquement les fichiers dans minikube.",
"This {{.type}} is having trouble accessing https://{{.repository}}": "Ce {{.type}} rencontre des difficultés pour accéder à https://{{.repository}}",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "Astuce : Pour supprimer ce cluster appartenant à la racine, exécutez : sudo {{.cmd}}",
"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: 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'",

View File

@ -50,6 +50,7 @@
"Add machine IP to NO_PROXY environment variable": "マシンの IP アドレスを NO_PROXY 環境変数に追加します",
"Add, delete, or push a local image into minikube": "ローカルイメージを minikube に追加、削除、またはプッシュします",
"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}} クラスターに追加します",
"Additional help topics": "追加のトピック",
"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 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}}",
"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 ドライバーのみ)",
"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 バージョンへのアップグレードか、別のドライバー使用を試すこともできます。",
@ -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 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 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 unusual - you may want to investigate using \"{{.command}}\"": "これは異常です - 「{{.command}}」を使って調査できます",
"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}} アクセスにおける問題があります",
"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",
"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: kubectl --context={{.name}}": "このクラスターに接続するためには、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, delete, or push a local image into minikube": "minikube에 로컬 이미지를 추가하거나 삭제, 푸시합니다",
"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}} 에 추가합니다",
"Additional help topics": "",
"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": "",
"Group ID: {{.groupID}}": "",
"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)": "",
"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.": "",
@ -374,7 +376,6 @@
"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, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -740,12 +741,15 @@
"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 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 unusual - you may want to investigate using \"{{.command}}\"": "",
"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 {{.type}} is having trouble accessing https://{{.repository}}": "",
"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: kubectl --context={{.profile_name}}": "",
"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, delete, or push a local image into minikube": "Dodaj, usuń lub wypchnij lokalny obraz do minikube",
"Add, remove, or list additional nodes": "Dodaj, usuń lub wylistuj pozostałe węzły",
"Adding 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}}",
"Additional help topics": "Dodatkowe tematy pomocy",
"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": "",
"Group ID: {{.groupID}}": "",
"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)": "",
"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.": "",
@ -360,7 +362,6 @@
"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, 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 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:": "",
@ -751,12 +752,15 @@
"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 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 unusual - you may want to investigate using \"{{.command}}\"": "",
"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 {{.type}} is having trouble accessing https://{{.repository}}": "",
"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: 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}}",

View File

@ -44,6 +44,7 @@
"Add image to cache for all running minikube clusters": "",
"Add machine IP to NO_PROXY environment variable": "",
"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}}": "",
"Additional help topics": "",
"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 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}}": "",
"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)": "",
"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.": "",
@ -327,7 +329,6 @@
"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, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -682,12 +683,15 @@
"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 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 unusual - you may want to investigate using \"{{.command}}\"": "",
"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 {{.type}} is having trouble accessing https://{{.repository}}": "",
"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: kubectl --context={{.profile_name}}": "",
"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 machine IP to NO_PROXY environment variable": "",
"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}}": "",
"Additional help topics": "",
"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 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}}": "",
"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)": "",
"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.": "",
@ -327,7 +329,6 @@
"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, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -682,12 +683,15 @@
"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 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 unusual - you may want to investigate using \"{{.command}}\"": "",
"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 {{.type}} is having trouble accessing https://{{.repository}}": "",
"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: kubectl --context={{.profile_name}}": "",
"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 or delete an image from the local cache.": "在本地缓存中添加或删除 image。",
"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}}",
"Additional help topics": "其他帮助",
"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 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}}": "",
"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 驱动程序)",
"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 切换其他选项",
@ -432,7 +434,6 @@
"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, the added node will be marked for work. Defaults to true.": "",
"If true, the node added will also be a control plane in addition to a worker.": "",
"If true, will perform potentially dangerous operations. Use with discretion.": "",
"If you are running minikube within a VM, consider using --driver=none:": "",
"If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:": "",
@ -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 control plane is not running! (state={{.state}})": "",
"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 unusual - you may want to investigate using \"{{.command}}\"": "",
"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}}": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}}": "",
"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: kubectl --context={{.name}}": "如需连接到此集群,请使用 kubectl --context={{.name}}",
"To connect to this cluster, use: kubectl --context={{.name}}__1": "如需连接到此集群,请使用 kubectl --context={{.name}}",