Merge branch 'master' of github.com:kubernetes/minikube into gcp-sa

pull/11945/head
Sharif Elgamal 2021-07-13 13:31:34 -07:00
commit 4dd89f8713
49 changed files with 424 additions and 214 deletions

View File

@ -1,5 +1,6 @@
name: build
on:
workflow_dispatch:
push:
branches:
- master

View File

@ -1,5 +1,6 @@
name: "generate-docs"
on:
workflow_dispatch:
push:
branches:
- master

View File

@ -1,5 +1,6 @@
name: "update-leaderboard"
on:
workflow_dispatch:
push:
tags-ignore:
- 'v*-beta.*'
@ -19,6 +20,8 @@ jobs:
run: |
make update-leaderboard
echo "::set-output name=changes::$(git status --porcelain)"
env:
GITHUB_TOKEN: ${{ secrets.MINIKUBE_BOT_PAT }}
- name: Create PR
if: ${{ steps.leaderboard.outputs.changes != '' }}
uses: peter-evans/create-pull-request@v3
@ -37,4 +40,4 @@ jobs:
This PR is auto-generated by the [update-leaderboard](https://github.com/kubernetes/minikube/blob/master/.github/workflows/leaderboard.yml) CI workflow.
```
${{ steps.leaderboard.outputs.changes }}
```
```

View File

@ -1,5 +1,6 @@
name: Master
on:
workflow_dispatch:
push:
branches:
- master

View File

@ -1,5 +1,6 @@
name: PR
on:
workflow_dispatch:
pull_request:
paths:
- "go.mod"

View File

@ -1,5 +1,6 @@
name: PR_Verified
on:
workflow_dispatch:
pull_request:
paths:
- "go.mod"

View File

@ -1,5 +1,6 @@
name: "time-to-k8s benchmark"
on:
workflow_dispatch:
release:
types: [released]
env:

View File

@ -1,5 +1,6 @@
name: Translations Validation
on:
workflow_dispatch:
pull_request:
paths:
- "translations/**"

View File

@ -1,5 +1,6 @@
name: "Tweet the release"
on:
workflow_dispatch:
push:
tags:
- 'v*'
@ -15,4 +16,4 @@ jobs:
consumer-key: ${{ secrets.TWITTER_API_KEY }}
consumer-secret: ${{ secrets.TWITTER_API_SECRET }}
access-token: ${{ secrets.TWITTER_ACCESS_TOKEN }}
access-token-secret: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
access-token-secret: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}

View File

@ -1,5 +1,6 @@
name: "update-kubernetes-versions"
on:
workflow_dispatch:
schedule:
# every Monday at around 1 am pacific/8 am UTC
- cron: "0 8 * * 1"

View File

@ -24,6 +24,7 @@ import (
"os/exec"
"os/user"
"regexp"
"strconv"
"time"
"github.com/pkg/errors"
@ -44,7 +45,8 @@ import (
)
var (
dashboardURLMode bool
dashboardURLMode bool
dashboardExposedPort int
// Matches: 127.0.0.1:8001
// TODO(tstromberg): Get kubectl to implement a stable supported output format.
hostPortRe = regexp.MustCompile(`127.0.0.1:\d{4,}`)
@ -65,6 +67,10 @@ var dashboardCmd = &cobra.Command{
}
}
if dashboardExposedPort < 0 || dashboardExposedPort > 65535 {
exit.Message(reason.HostKubectlProxy, "Invalid port")
}
kubectlVersion := co.Config.KubernetesConfig.KubernetesVersion
var err error
@ -92,7 +98,7 @@ var dashboardCmd = &cobra.Command{
}
out.ErrT(style.Launch, "Launching proxy ...")
p, hostPort, err := kubectlProxy(kubectlVersion, cname)
p, hostPort, err := kubectlProxy(kubectlVersion, cname, dashboardExposedPort)
if err != nil {
exit.Error(reason.HostKubectlProxy, "kubectl proxy", err)
}
@ -126,10 +132,10 @@ var dashboardCmd = &cobra.Command{
}
// kubectlProxy runs "kubectl proxy", returning host:port
func kubectlProxy(kubectlVersion string, contextName string) (*exec.Cmd, string, error) {
func kubectlProxy(kubectlVersion string, contextName string, port int) (*exec.Cmd, string, error) {
// port=0 picks a random system port
kubectlArgs := []string{"--context", contextName, "proxy", "--port=0"}
kubectlArgs := []string{"--context", contextName, "proxy", "--port", strconv.Itoa(port)}
var cmd *exec.Cmd
if kubectl, err := exec.LookPath("kubectl"); err == nil {
@ -217,4 +223,5 @@ func checkURL(url string) error {
func init() {
dashboardCmd.Flags().BoolVar(&dashboardURLMode, "url", false, "Display dashboard URL instead of opening a browser")
dashboardCmd.Flags().IntVar(&dashboardExposedPort, "port", 0, "Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.")
}

View File

@ -1274,26 +1274,36 @@ func validateRegistryMirror() {
// This function validates if the --image-repository
// args match the format of registry.cn-hangzhou.aliyuncs.com/google_containers
func validateImageRepository(imagRepo string) (vaildImageRepo string) {
// also "<hostname>[:<port>]"
func validateImageRepository(imageRepo string) (validImageRepo string) {
if strings.ToLower(imagRepo) == "auto" {
vaildImageRepo = "auto"
if strings.ToLower(imageRepo) == "auto" {
validImageRepo = "auto"
}
URL, err := url.Parse(imagRepo)
URL, err := url.Parse(imageRepo)
if err != nil {
klog.Errorln("Error Parsing URL: ", err)
}
// tips when imagRepo ended with a trailing /.
if strings.HasSuffix(imagRepo, "/") {
out.Infof("The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically")
}
// tips when imageRepo started with scheme.
if URL.Scheme != "" {
out.Infof("The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically", out.V{"scheme": URL.Scheme})
var imageRepoPort string
if URL.Port() != "" && strings.Contains(imageRepo, ":"+URL.Port()) {
imageRepoPort = ":" + URL.Port()
}
vaildImageRepo = URL.Hostname() + strings.TrimSuffix(URL.Path, "/")
return
// tips when imageRepo ended with a trailing /.
if strings.HasSuffix(imageRepo, "/") {
out.Infof("The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically")
}
// tips when imageRepo started with scheme such as http(s).
if URL.Scheme != "" {
out.Infof("The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically", out.V{"scheme": URL.Scheme})
}
validImageRepo = URL.Hostname() + imageRepoPort + strings.TrimSuffix(URL.Path, "/")
return validImageRepo
}
// This function validates if the --listen-address

View File

@ -320,40 +320,44 @@ func TestBaseImageFlagDriverCombo(t *testing.T) {
func TestValidateImageRepository(t *testing.T) {
var tests = []struct {
imageRepository string
vaildImageRepository string
validImageRepository string
}{
{
imageRepository: "auto",
vaildImageRepository: "auto",
validImageRepository: "auto",
},
{
imageRepository: "http://registry.test.com/google_containers/",
vaildImageRepository: "registry.test.com/google_containers",
validImageRepository: "registry.test.com/google_containers",
},
{
imageRepository: "https://registry.test.com/google_containers/",
vaildImageRepository: "registry.test.com/google_containers",
validImageRepository: "registry.test.com/google_containers",
},
{
imageRepository: "registry.test.com/google_containers/",
vaildImageRepository: "registry.test.com/google_containers",
validImageRepository: "registry.test.com/google_containers",
},
{
imageRepository: "http://registry.test.com/google_containers",
vaildImageRepository: "registry.test.com/google_containers",
validImageRepository: "registry.test.com/google_containers",
},
{
imageRepository: "https://registry.test.com/google_containers",
vaildImageRepository: "registry.test.com/google_containers",
validImageRepository: "registry.test.com/google_containers",
},
{
imageRepository: "https://registry.test.com:6666/google_containers",
validImageRepository: "registry.test.com:6666/google_containers",
},
}
for _, test := range tests {
t.Run(test.imageRepository, func(t *testing.T) {
vaildImageRepository := validateImageRepository(test.imageRepository)
if vaildImageRepository != test.vaildImageRepository {
validImageRepository := validateImageRepository(test.imageRepository)
if validImageRepository != test.validImageRepository {
t.Errorf("validateImageRepository(imageRepo=%v): got %v, expected %v",
test.imageRepository, vaildImageRepository, test.vaildImageRepository)
test.imageRepository, validImageRepository, test.validImageRepository)
}
})
}

View File

@ -131,4 +131,8 @@ var (
// CsiHostpathDriverAssets assets for csi-hostpath-driver addon
//go:embed csi-hostpath-driver/deploy/*.tmpl csi-hostpath-driver/rbac/*.tmpl
CsiHostpathDriverAssets embed.FS
// PortainerAssets assets for portainer addon
//go:embed portainer/portainer.yaml.tmpl
PortainerAssets embed.FS
)

View File

@ -0,0 +1,143 @@
---
# Source: portainer/templates/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: portainer
---
# Source: portainer/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: portainer-sa-clusteradmin
namespace: portainer
labels:
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
app.kubernetes.io/version: "ce-latest-ee-2.4.0"
---
# Source: portainer/templates/pvc.yaml
kind: "PersistentVolumeClaim"
apiVersion: "v1"
metadata:
name: portainer
namespace: portainer
annotations:
volume.alpha.kubernetes.io/storage-class: "generic"
labels:
io.portainer.kubernetes.application.stack: portainer
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
app.kubernetes.io/version: "ce-latest-ee-2.4.0"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "10Gi"
---
# Source: portainer/templates/rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: portainer
labels:
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
app.kubernetes.io/version: "ce-latest-ee-2.4.0"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
namespace: portainer
name: portainer-sa-clusteradmin
---
# Source: portainer/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: portainer
namespace: portainer
labels:
io.portainer.kubernetes.application.stack: portainer
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
app.kubernetes.io/version: "ce-latest-ee-2.4.0"
kubernetes.io/minikube-addons-endpoint: portainer
spec:
type: NodePort
ports:
- port: 9000
targetPort: 9000
protocol: TCP
name: http
nodePort: 30777
- port: 30776
targetPort: 30776
protocol: TCP
name: edge
nodePort: 30776
selector:
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
---
# Source: portainer/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: portainer
namespace: portainer
labels:
io.portainer.kubernetes.application.stack: portainer
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
app.kubernetes.io/version: "ce-latest-ee-2.4.0"
spec:
replicas: 1
strategy:
type: "Recreate"
selector:
matchLabels:
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
template:
metadata:
labels:
app.kubernetes.io/name: portainer
app.kubernetes.io/instance: portainer
spec:
nodeSelector:
{}
serviceAccountName: portainer-sa-clusteradmin
volumes:
- name: "data"
persistentVolumeClaim:
claimName: portainer
containers:
- name: portainer
image: "portainer/portainer-ce:latest"
imagePullPolicy: Always
args: [ '--tunnel-port','30776' ]
volumeMounts:
- name: data
mountPath: /data
ports:
- name: http
containerPort: 9000
protocol: TCP
- name: tcp-edge
containerPort: 8000
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 9000
readinessProbe:
httpGet:
path: /
port: 9000
resources:
{}

View File

@ -31,15 +31,6 @@ install_minikube() {
sudo install ./out/minikube /usr/local/bin/minikube
}
config_git() {
git config user.name "minikube-bot"
git config user.email "minikube-bot@google.com"
}
create_branch() {
git checkout -b addTimeToK8s"$1"
}
run_benchmark() {
pwd
( cd ./hack/benchmark/time-to-k8s/time-to-k8s-repo/ &&
@ -55,19 +46,16 @@ create_page() {
printf -- "---\ntitle: \"%s Benchmark\"\nlinkTitle: \"%s Benchmark\"\nweight: 1\n---\n\n![time-to-k8s](/images/benchmarks/timeToK8s/%s.png)\n" "$1" "$1" "$1" > ./site/content/en/docs/benchmarks/timeToK8s/"$1".md
}
commit_changes() {
git add ./site/static/images/benchmarks/timeToK8s/"$1".png ./site/content/en/docs/benchmarks/timeToK8s/"$1".md
git commit -m "add time-to-k8s benchmark for $1"
cleanup() {
rm ./hack/benchmark/time-to-k8s/time-to-k8s-repo/output.csv
}
install_kind
install_k3d
install_minikube
config_git
VERSION=$(minikube version --short)
create_branch "$VERSION"
run_benchmark
generate_chart "$VERSION"
create_page "$VERSION"
commit_changes "$VERSION"
cleanup

78
hack/jenkins/common.ps1 Normal file
View File

@ -0,0 +1,78 @@
# Copyright 2019 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.
mkdir -p out
(New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.8.0/gopogh.exe", "C:\Go\bin\gopogh.exe")
gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/minikube-windows-amd64.exe out/
gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/e2e-windows-amd64.exe out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/testdata .
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_setup.ps1 out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_teardown.ps1 out/
./out/minikube-windows-amd64.exe delete --all
./out/windows_integration_setup.ps1
$started=Get-Date -UFormat %s
out/e2e-windows-amd64.exe --minikube-start-args="--driver=$driver" --binary=out/minikube-windows-amd64.exe --test.v --test.timeout=$timeout | Tee-Object -FilePath testout.txt
$env:result=$lastexitcode
# If the last exit code was 0->success, x>0->error
If($env:result -eq 0){
$env:status="success"
echo "minikube: SUCCESS"
} Else {
$env:status="failure"
echo "minikube: FAIL"
}
$ended=Get-Date -UFormat %s
$elapsed=$ended-$started
$elapsed=$elapsed/60
$elapsed=[math]::Round($elapsed, 2)
Get-Content testout.txt -Encoding ASCII | go tool test2json -t | Out-File -FilePath testout.json -Encoding ASCII
$gopogh_status=gopogh --in testout.json --out_html testout.html --out_summary testout_summary.json --name "$env:JOB_NAME" -pr $env:MINIKUBE_LOCATION --repo github.com/kubernetes/minikube/ --details $env:COMMIT
$failures=echo $gopogh_status | jq '.NumberOfFail'
$tests=echo $gopogh_status | jq '.NumberOfTests'
$bad_status="$failures / $tests failures"
$description="$status in $elapsed minute(s)."
If($env:status -eq "failure") {
$description="completed with $bad_status in $elapsed minute(s)."
}
echo $description
$env:SHORT_COMMIT=$env:COMMIT.substring(0, 7)
$gcs_bucket="minikube-builds/logs/$env:MINIKUBE_LOCATION/$env:SHORT_COMMIT"
#Upload logs to gcs
gsutil -qm cp testout.txt gs://$gcs_bucket/${env:JOB_NAME}out.txt
gsutil -qm cp testout.json gs://$gcs_bucket/${env:JOB_NAME}.json
gsutil -qm cp testout.html gs://$gcs_bucket/${env:JOB_NAME}.html
gsutil -qm cp testout_summary.json gs://$gcs_bucket/${env:JOB_NAME}_summary.json
$env:target_url="https://storage.googleapis.com/$gcs_bucket/$env:JOB_NAME.html"
# Update the PR with the new info
$json = "{`"state`": `"$env:status`", `"description`": `"Jenkins: $description`", `"target_url`": `"$env:target_url`", `"context`": `"${env:JOB_NAME}`"}"
Invoke-WebRequest -Uri "https://api.github.com/repos/kubernetes/minikube/statuses/$env:COMMIT`?access_token=$env:access_token" -Body $json -ContentType "application/json" -Method Post -usebasicparsing
./out/windows_integration_teardown.ps1
Exit $env:result

View File

@ -91,7 +91,7 @@ else
fi
# installing golang so we could do go get for gopogh
sudo ARCH="$ARCH"./installers/check_install_golang.sh "1.16.4" "/usr/local" || true
./installers/check_install_golang.sh "1.16.4" "/usr/local" || true
# install docker and kubectl if not present
sudo ARCH="$ARCH" ./installers/check_install_docker.sh || true
@ -444,11 +444,11 @@ if [ -z "${EXTERNAL}" ]; then
echo ">> public URL: ${REPORT_URL_BASE}/${JOB_GCS_BUCKET}.json"
gsutil -qm cp "${JSON_OUT}" "gs://${JOB_GCS_BUCKET}.json" || true
echo ">> uploading ${HTML_OUT} to ${REPORT_URL_BASE}/${JOB_GCS_BUCKET}.html"
echo ">> uploading ${HTML_OUT} to gs://${JOB_GCS_BUCKET}.html"
echo ">> public URL: ${REPORT_URL_BASE}/${JOB_GCS_BUCKET}.html"
gsutil -qm cp "${HTML_OUT}" "gs://${JOB_GCS_BUCKET}.html" || true
echo ">> uploading ${SUMMARY_OUT} to ${REPORT_URL_BASE}/${JOB_GCS_BUCKET}_summary.json"
echo ">> uploading ${SUMMARY_OUT} to gs://${JOB_GCS_BUCKET}_summary.json"
echo ">> public URL: ${REPORT_URL_BASE}/${JOB_GCS_BUCKET}_summary.json"
gsutil -qm cp "${SUMMARY_OUT}" "gs://${JOB_GCS_BUCKET}_summary.json" || true
else

View File

@ -67,20 +67,28 @@ function check_and_install_golang() {
# install_golang takes two parameters version and path to install.
function install_golang() {
echo "Installing golang version: $1 on $2"
pushd /tmp >/dev/null
local -r GO_VER="$1"
local -r GO_DIR="$2/go"
echo "Installing golang version: $GO_VER in $GO_DIR"
INSTALLOS=linux
if [[ "$OSTYPE" == "darwin"* ]]; then
INSTALLOS=darwin
fi
local -r GO_TGZ="go${GO_VER}.${INSTALLOS}-${ARCH}.tar.gz"
pushd /tmp
# using sudo because previously installed versions might have been installed by a different user.
# as it was the case on jenkins VM.
sudo curl -qL -O "https://storage.googleapis.com/golang/go${1}.${INSTALLOS}-${ARCH}.tar.gz" &&
sudo tar -xzf go${1}.${INSTALLOS}-${ARCH}.tar.gz &&
sudo rm -rf "${2}/go" &&
sudo mv go "${2}/" && sudo chown -R $(whoami): ${2}/go
sudo rm -rf "$GO_TGZ"
curl -qL -O "https://storage.googleapis.com/golang/$GO_TGZ"
sudo rm -rf "$GO_DIR"
sudo mkdir -p "$GO_DIR"
sudo tar -C "$GO_DIR" --strip-components=1 -xzf "$GO_TGZ"
popd >/dev/null
echo "installed in $GO_DIR: $($GO_DIR/bin/go version)"
}
check_and_install_golang

View File

@ -31,7 +31,7 @@ jobs=(
# 'Hyper-V_Windows'
# 'VirtualBox_Linux'
# 'VirtualBox_macOS'
'VirtualBox_Windows'
# 'VirtualBox_Windows'
# 'KVM-GPU_Linux' - Disabled
'KVM_Linux'
'KVM_Linux_containerd'
@ -49,7 +49,7 @@ jobs=(
'Docker_Cloud_Shell'
)
SHORT_COMMIT=${ghprbActualCommit:0:7}
SHORT_COMMIT=${THE_COMMIT:0:7}
STARTED_LIST_REMOTE="gs://minikube-builds/logs/${ghprbPullId}/${SHORT_COMMIT}/started_environments_${BUILD_NUMBER}.txt"
printf "%s\n" "${jobs[@]}" | gsutil cp - "${STARTED_LIST_REMOTE}"

View File

@ -40,7 +40,7 @@ TMP_DATA=$(mktemp)
# 3) Sort by environment, then test name.
# 4) Store in file $TMP_DATA.
gsutil cat $(< "${ENVIRONMENT_LIST}" sed -r "s/^/gs:\\/\\/minikube-builds\\/logs\\/${PR_NUMBER}\\/${SHORT_COMMIT}\\/; s/$/_summary.json/") \
| $DIR/process_data.sh \
| "$DIR/process_data.sh" \
| sed -n -r -e "s/[0-9a-f]*,[0-9-]*,([a-zA-Z\/_0-9-]*),([a-zA-Z\/_0-9-]*),Failed,[.0-9]*/\1:\2/p" \
| sort -t, -k\
> "$TMP_DATA"
@ -85,6 +85,6 @@ fi
printf "\n\nTo see the flake rates of all tests on $ENVIRONMENT, click [here](https:\/\/storage.googleapis.com\/minikube-flake-rate\/flake_chart.html?env=$ENVIRONMENT)." >> "$TMP_COMMENT"
# install gh if not present
$DIR/../installers/check_install_gh.sh
"$DIR/../installers/check_install_gh.sh"
gh pr comment "https://github.com/kubernetes/minikube/pull/$PR_NUMBER" --body "$(cat $TMP_COMMENT)"

View File

@ -54,9 +54,11 @@ gsutil cat "${FINISHED_LIST_REMOTE}"\
| uniq > "${FINISHED_LIST}"
STARTED_COUNT=$(echo "${STARTED_LIST}" | wc -l)
FINISHED_COUNT=$(\
FINISHED_LIST_JOINED=$(\
echo "${STARTED_LIST}"\
| join - "${FINISHED_LIST}"\
| join - "${FINISHED_LIST}")
FINISHED_COUNT=$(\
echo "${FINISHED_LIST_JOINED}"\
| wc -l)
if [ ${STARTED_COUNT} -ne ${FINISHED_COUNT} ]; then
@ -68,6 +70,7 @@ fi
gsutil rm "${BUCKET_PATH}/started_environments_${ROOT_JOB_ID}.txt"
# At this point, we know all integration tests are done and we can process all summaries safely.
echo "${FINISHED_LIST_JOINED}" > ${FINISHED_LIST}
# Get directory of this script.
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

View File

@ -16,6 +16,12 @@ $test_home="$env:HOMEDRIVE$env:HOMEPATH\minikube-integration"
$env:KUBECONFIG="$test_home\kubeconfig"
$env:MINIKUBE_HOME="$test_home\.minikube"
if ($driver -eq "docker") {
# Remove unused images and containers
docker system prune --all --force --volumes
docker ps -aq | ForEach -Process {docker rm -fv $_}
}
# delete in case previous test was unexpectedly ended and teardown wasn't run
rm -r -Force $test_home
mkdir -p $test_home

View File

@ -14,4 +14,12 @@
$test_home="$env:HOMEDRIVE$env:HOMEPATH\minikube-integration"
if ($driver -eq "docker") {
# Remove unused images and containers
docker system prune --all --force
# Just shutdown Docker, it's safer than anything else
Get-Process "*Docker Desktop*" | Stop-Process
}
rm -r -Force $test_home

View File

@ -14,15 +14,10 @@
mkdir -p out
(New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.8.0/gopogh.exe", "C:\Go\bin\gopogh.exe")
(New-Object Net.WebClient).DownloadFile("https://dl.k8s.io/release/v1.20.0/bin/windows/amd64/kubectl.exe", "C:\Program Files\Docker\Docker\resources\bin\kubectl.exe")
gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/minikube-windows-amd64.exe out/
gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/e2e-windows-amd64.exe out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/testdata .
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/setup_docker_desktop_windows.ps1 out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_setup.ps1 out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_teardown.ps1 out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/common.ps1 out/
$env:SHORT_COMMIT=$env:COMMIT.substring(0, 7)
$gcs_bucket="minikube-builds/logs/$env:MINIKUBE_LOCATION/$env:SHORT_COMMIT"
@ -39,65 +34,8 @@ If ($lastexitcode -gt 0) {
Exit $lastexitcode
}
./out/minikube-windows-amd64.exe delete --all
$driver="docker"
$timeout="180m"
$env:JOB_NAME="Docker_Windows"
# Remove unused images and containers
docker system prune --all --force --volumes
./out/windows_integration_setup.ps1
docker ps -aq | ForEach -Process {docker rm -fv $_}
$started=Get-Date -UFormat %s
out/e2e-windows-amd64.exe --minikube-start-args="--driver=docker" --binary=out/minikube-windows-amd64.exe --test.v --test.timeout=180m | Tee-Object -FilePath testout.txt
$env:result=$lastexitcode
# If the last exit code was 0->success, x>0->error
If($env:result -eq 0){
$env:status="success"
echo "minikube: SUCCESS"
} Else {
$env:status="failure"
echo "minikube: FAIL"
}
$ended=Get-Date -UFormat %s
$elapsed=$ended-$started
$elapsed=$elapsed/60
$elapsed=[math]::Round($elapsed, 2)
Get-Content testout.txt -Encoding ASCII | go tool test2json -t | Out-File -FilePath testout.json -Encoding ASCII
$gopogh_status=gopogh --in testout.json --out_html testout.html --out_summary testout_summary.json --name "Docker_Windows" -pr $env:MINIKUBE_LOCATION --repo github.com/kubernetes/minikube/ --details $env:COMMIT
$failures=echo $gopogh_status | jq '.NumberOfFail'
$tests=echo $gopogh_status | jq '.NumberOfTests'
$bad_status="$failures / $tests failures"
$description="$status in $elapsed minute(s)."
If($env:status -eq "failure") {
$description="completed with $bad_status in $elapsed minute(s)."
}
echo $description
$env:target_url="https://storage.googleapis.com/$gcs_bucket/Docker_Windows.html"
#Upload logs to gcs
gsutil -qm cp testout.txt gs://$gcs_bucket/Docker_Windowsout.txt
gsutil -qm cp testout.json gs://$gcs_bucket/Docker_Windows.json
gsutil -qm cp testout.html gs://$gcs_bucket/Docker_Windows.html
gsutil -qm cp testout_summary.json gs://$gcs_bucket/Docker_Windows_summary.json
# Update the PR with the new info
$json = "{`"state`": `"$env:status`", `"description`": `"Jenkins: $description`", `"target_url`": `"$env:target_url`", `"context`": `"Docker_Windows`"}"
Invoke-WebRequest -Uri "https://api.github.com/repos/kubernetes/minikube/statuses/$env:COMMIT`?access_token=$env:access_token" -Body $json -ContentType "application/json" -Method Post -usebasicparsing
# Remove unused images and containers
docker system prune --all --force
# Just shutdown Docker, it's safer than anything else
Get-Process "*Docker Desktop*" | Stop-Process
./out/windows_integration_teardown.ps1
Exit $env:result
. ./out/common.ps1

View File

@ -12,31 +12,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
(New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.8.0/gopogh.exe", "C:\Go\bin\gopogh.exe")
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/common.ps1 out/
mkdir -p out
gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/minikube-windows-amd64.exe out/
gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/e2e-windows-amd64.exe out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/testdata .
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_setup.ps1 out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_teardown.ps1 out/
$driver="hyperv"
$timeout="65m"
$env:JOB_NAME="Hyper-V_Windows"
./out/minikube-windows-amd64.exe delete --all
./out/windows_integration_setup.ps1
out/e2e-windows-amd64.exe -minikube-start-args="--driver=hyperv" -binary=out/minikube-windows-amd64.exe -test.v -test.timeout=65m
$env:result=$lastexitcode
# If the last exit code was 0->success, x>0->error
If($env:result -eq 0){$env:status="success"}
Else {$env:status="failure"}
# $env:SHORT_COMMIT=$env:COMMIT.substring(0, 7)
# to be used later to implement https://github.com/kubernetes/minikube/issues/6593
$env:target_url="https://storage.googleapis.com/minikube-builds/logs/$env:MINIKUBE_LOCATION/Hyper-V_Windows.txt"
$json = "{`"state`": `"$env:status`", `"description`": `"Jenkins`", `"target_url`": `"$env:target_url`", `"context`": `"Hyper-V_Windows`"}"
Invoke-WebRequest -Uri "https://api.github.com/repos/kubernetes/minikube/statuses/$env:COMMIT`?access_token=$env:access_token" -Body $json -ContentType "application/json" -Method Post -usebasicparsing
./out/windows_integration_teardown.ps1
Exit $env:result
. ./out/common.ps1

View File

@ -12,32 +12,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
(New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.8.0/gopogh.exe", "C:\Go\bin\gopogh.exe")
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/common.ps1 out/
$driver="virtualbox"
$timeout="30m"
$env:JOB_NAME="VirtualBox_Windows"
mkdir -p out
gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/minikube-windows-amd64.exe out/
gsutil.cmd -m cp gs://minikube-builds/$env:MINIKUBE_LOCATION/e2e-windows-amd64.exe out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/testdata .
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_setup.ps1 out/
gsutil.cmd -m cp -r gs://minikube-builds/$env:MINIKUBE_LOCATION/windows_integration_teardown.ps1 out/
./out/minikube-windows-amd64.exe delete
./out/windows_integration_setup.ps1
out/e2e-windows-amd64.exe -minikube-start-args="--driver=virtualbox" -binary=out/minikube-windows-amd64.exe -test.v -test.timeout=30m
$env:result=$lastexitcode
# If the last exit code was 0->success, x>0->error
If($env:result -eq 0){$env:status="success"}
Else {$env:status="failure"}
# $env:SHORT_COMMIT=$env:COMMIT.substring(0, 7)
# to be used later
$env:target_url="https://storage.googleapis.com/minikube-builds/logs/$env:MINIKUBE_LOCATION/VirtualBox_Windows.txt"
$json = "{`"state`": `"$env:status`", `"description`": `"Jenkins`", `"target_url`": `"$env:target_url`", `"context`": `"VirtualBox_Windows`"}"
Invoke-WebRequest -Uri "https://api.github.com/repos/kubernetes/minikube/statuses/$env:COMMIT`?access_token=$env:access_token" -Body $json -ContentType "application/json" -Method Post -usebasicparsing
./out/windows_integration_teardown.ps1
Exit $env:result
. ./out/common.ps1

View File

@ -18,11 +18,6 @@ set -eu -o pipefail
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
if ! [[ -r "${DIR}/gh_token.txt" ]]; then
echo "Missing '${DIR}/gh_token.txt'. Please create a GitHub token at https://github.com/settings/tokens and store in '${DIR}/gh_token.txt'."
exit 1
fi
install_pullsheet() {
pullsheet_workdir="$(mktemp -d)"
trap 'rm -rf -- ${pullsheet_workdir}' RETURN
@ -69,11 +64,23 @@ tags_with_range=$(
destination="$DIR/../site/content/en/docs/contrib/leaderboard"
mkdir -p "$destination"
TMP_TOKEN=$(mktemp)
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.
function cleanup_token() {
rm -f "$TMP_TOKEN"
}
trap cleanup_token EXIT
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 "$DIR/gh_token.txt" --repos kubernetes/minikube --since "$tag_start" --until "$tag_end" --logtostderr=false --stderrthreshold=2 \
$DIR/pullsheet leaderboard --token-path "$TMP_TOKEN" --repos kubernetes/minikube --since "$tag_start" --until "$tag_end" --logtostderr=false --stderrthreshold=2 \
| sed -r -e "/Command\-line/,/pullsheet/d" >> "$destination/$tag_name.html"
done <<< "$tags_with_range"

View File

@ -187,4 +187,9 @@ var Addons = []*Addon{
validations: []setFn{IsVolumesnapshotsEnabled},
callbacks: []setFn{EnableOrDisableAddon, verifyAddonStatus},
},
{
name: "portainer",
set: SetBool,
callbacks: []setFn{EnableOrDisableAddon},
},
}

7
pkg/minikube/assets/addons.go Normal file → Executable file
View File

@ -666,6 +666,13 @@ var Addons = map[string]*Addon{
"Snapshotter": "k8s.gcr.io",
"Provisioner": "k8s.gcr.io",
}),
"portainer": NewAddon([]*BinAsset{
MustBinAsset(addons.PortainerAssets,
"portainer/portainer.yaml.tmpl",
vmpath.GuestAddonsDir,
"portainer.yaml",
"0640"),
}, false, "portainer", "portainer.io", nil, nil),
}
// parseMapString creates a map based on `str` which is encoded as <key1>=<value1>,<key2>=<value2>,...

View File

@ -138,19 +138,19 @@ func storageProvisioner(mirror string) string {
// dashboardFrontend returns the image used for the dashboard frontend
func dashboardFrontend(repo string) string {
if repo == "" {
repo = "docker.io/kubernetesui"
repo = "docker.io"
}
// See 'kubernetes-dashboard' in deploy/addons/dashboard/dashboard-dp.yaml
return path.Join(repo, "dashboard:v2.1.0")
return path.Join(repo, "kubernetesui", "dashboard:v2.1.0")
}
// dashboardMetrics returns the image used for the dashboard metrics scraper
func dashboardMetrics(repo string) string {
if repo == "" {
repo = "docker.io/kubernetesui"
repo = "docker.io"
}
// See 'dashboard-metrics-scraper' in deploy/addons/dashboard/dashboard-dp.yaml
return path.Join(repo, "metrics-scraper:v1.0.4")
return path.Join(repo, "kubernetesui", "metrics-scraper:v1.0.4")
}
// KindNet returns the image used for kindnet

View File

@ -96,9 +96,9 @@ func TestAuxiliary(t *testing.T) {
func TestAuxiliaryMirror(t *testing.T) {
want := []string{
"test.mirror/storage-provisioner:" + version.GetStorageProvisionerVersion(),
"test.mirror/dashboard:v2.1.0",
"test.mirror/metrics-scraper:v1.0.4",
"test.mirror/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
"test.mirror/kubernetesui/dashboard:v2.1.0",
"test.mirror/kubernetesui/metrics-scraper:v1.0.4",
}
got := auxiliary("test.mirror")
if diff := cmp.Diff(want, got); diff != "" {

View File

@ -54,9 +54,9 @@ func TestKubeadmImages(t *testing.T) {
"mirror.k8s.io/coredns:1.6.2",
"mirror.k8s.io/etcd:3.3.15-0",
"mirror.k8s.io/pause:3.1",
"mirror.k8s.io/storage-provisioner:" + version.GetStorageProvisionerVersion(),
"mirror.k8s.io/dashboard:v2.1.0",
"mirror.k8s.io/metrics-scraper:v1.0.4",
"mirror.k8s.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
"mirror.k8s.io/kubernetesui/dashboard:v2.1.0",
"mirror.k8s.io/kubernetesui/metrics-scraper:v1.0.4",
}},
{"v1.15.0", "", false, []string{
"k8s.gcr.io/kube-proxy:v1.15.0",

View File

@ -16,6 +16,8 @@ limitations under the License.
package images
import "path"
// DefaultKubernetesRepo is the default Kubernetes repository
const DefaultKubernetesRepo = "k8s.gcr.io"
@ -29,8 +31,8 @@ func kubernetesRepo(mirror string) string {
// minikubeRepo returns the official minikube repository, or an alternate
func minikubeRepo(mirror string) string {
if mirror != "" {
return mirror
if mirror == "" {
mirror = "gcr.io"
}
return "gcr.io/k8s-minikube"
return path.Join(mirror, "k8s-minikube")
}

View File

@ -208,7 +208,6 @@ func testPreloadExistsCaching(t *testing.T) {
checkCalled := false
checkRemotePreloadExists = func(k8sVersion, containerRuntime string) bool {
checkCalled = true
setPreloadState(k8sVersion, containerRuntime, doesPreloadExist)
return doesPreloadExist
}
existence := PreloadExists("v1", "c1", "docker", true)

View File

@ -106,19 +106,16 @@ var checkRemotePreloadExists = func(k8sVersion, containerRuntime string) bool {
resp, err := http.Head(url)
if err != nil {
klog.Warningf("%s fetch error: %v", url, err)
setPreloadState(k8sVersion, containerRuntime, false)
return false
}
// note: err won't be set if it's a 404
if resp.StatusCode != 200 {
if resp.StatusCode != http.StatusOK {
klog.Warningf("%s status code: %d", url, resp.StatusCode)
setPreloadState(k8sVersion, containerRuntime, false)
return false
}
klog.Infof("Found remote preload: %s", url)
setPreloadState(k8sVersion, containerRuntime, true)
return true
}
@ -152,7 +149,9 @@ func PreloadExists(k8sVersion, containerRuntime, driverName string, forcePreload
return true
}
return checkRemotePreloadExists(k8sVersion, containerRuntime)
existence := checkRemotePreloadExists(k8sVersion, containerRuntime)
setPreloadState(k8sVersion, containerRuntime, existence)
return existence
}
var checkPreloadExists = PreloadExists

View File

@ -120,7 +120,7 @@ func beginDownloadKicBaseImage(g *errgroup.Group, cc *config.ClusterConfig, down
g.Go(func() error {
baseImg := cc.KicBaseImage
if baseImg == kic.BaseImage && len(cc.KubernetesConfig.ImageRepository) != 0 {
baseImg = strings.Replace(baseImg, "gcr.io/k8s-minikube", cc.KubernetesConfig.ImageRepository, 1)
baseImg = strings.Replace(baseImg, "gcr.io", cc.KubernetesConfig.ImageRepository, 1)
cc.KicBaseImage = baseImg
}
var finalImg string

View File

@ -0,0 +1,7 @@
---
title: "v1.22.0 Benchmark"
linkTitle: "v1.22.0 Benchmark"
weight: 1
---
![time-to-k8s](/images/benchmarks/timeToK8s/v1.22.0.png)

View File

@ -20,7 +20,8 @@ minikube dashboard [flags]
### Options
```
--url Display dashboard URL instead of opening a browser
--port int Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.
--url Display dashboard URL instead of opening a browser
```
### Options inherited from parent commands

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -815,7 +815,7 @@ func validateDashboardCmd(ctx context.Context, t *testing.T, profile string) {
mctx, cancel := context.WithTimeout(ctx, Seconds(300))
defer cancel()
args := []string{"dashboard", "--url", "-p", profile, "--alsologtostderr", "-v=1"}
args := []string{"dashboard", "--url", "--port", "36195", "-p", profile, "--alsologtostderr", "-v=1"}
ss, err := Start(t, exec.CommandContext(mctx, Target(), args...))
if err != nil {
t.Errorf("failed to run minikube dashboard. args %q : %v", args, err)

View File

@ -215,6 +215,7 @@
"Existing disk is missing new features ({{.error}}). To upgrade, run 'minikube delete'": "",
"Exiting": "Wird beendet",
"Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "",
"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
"Fail check if container paused": "",
"Failed runtime": "",
@ -333,6 +334,7 @@
"Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "",
"Install the latest hyperkit binary, and run 'minikube delete'": "",
"Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "",
"Invalid port": "",
"Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "",
"Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "",
"It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "",
@ -585,7 +587,7 @@
"The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "",
"The '{{.name}}' driver does not respect the --cpus flag": "",
"The '{{.name}}' driver does not respect the --memory flag": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically": "",
"The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "",
"The CIDR to be used for service cluster IPs.": "Die CIDR, die für Service-Cluster-IPs verwendet werden soll.",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "Die CIDR, die für die minikube-VM verwendet werden soll (nur Virtualbox-Treiber)",

View File

@ -220,6 +220,7 @@
"Existing disk is missing new features ({{.error}}). To upgrade, run 'minikube delete'": "",
"Exiting": "Saliendo",
"Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "",
"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
"Fail check if container paused": "",
"Failed runtime": "",
@ -338,6 +339,7 @@
"Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "",
"Install the latest hyperkit binary, and run 'minikube delete'": "",
"Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "",
"Invalid port": "",
"Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "",
"Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "",
"It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "",
@ -590,7 +592,7 @@
"The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "",
"The '{{.name}}' driver does not respect the --cpus flag": "",
"The '{{.name}}' driver does not respect the --memory flag": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically": "",
"The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "",
"The CIDR to be used for service cluster IPs.": "El CIDR de las IP del clúster de servicio.",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "El CIDR de la VM de minikube (solo con el controlador de Virtualbox)",

View File

@ -218,6 +218,7 @@
"Existing disk is missing new features ({{.error}}). To upgrade, run 'minikube delete'": "Il manque de nouvelles fonctionnalités sur le disque existant ({{.error}}). Pour mettre à niveau, exécutez 'minikube delete'",
"Exiting": "Fermeture…",
"Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "Fermeture en raison de {{.fatal_code}} : {{.fatal_msg}}",
"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "L'adaptateur externe sur lequel un commutateur externe sera créé si aucun commutateur externe n'est trouvé. (pilote hyperv uniquement)",
"Fail check if container paused": "Échec de la vérification si le conteneur est en pause",
"Failed runtime": "Échec de l'exécution",
@ -337,6 +338,7 @@
"Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "Installez VirtualBox et assurez-vous qu'il est dans le chemin, ou sélectionnez une valeur alternative pour --driver",
"Install the latest hyperkit binary, and run 'minikube delete'": "Installez le dernier binaire hyperkit et exécutez 'minikube delete'",
"Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "Exécution de conteneur non valide : \"{{.runtime}}\". Les environnements d'exécution valides sont : {{.validOptions}}",
"Invalid port": "",
"Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "Istio a besoin de {{.minCPUs}} processeurs -- votre configuration n'alloue que {{.cpus}} processeurs",
"Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "Istio a besoin de {{.minMem}}Mo de mémoire -- votre configuration n'alloue que {{.memory}}Mo",
"It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "Il semble que vous exécutiez GCE, ce qui signifie que l'authentification devrait fonctionner sans le module GCP Auth. Si vous souhaitez toujours vous authentifier à l'aide d'un fichier d'informations d'identification, utilisez l'indicateur --force.",
@ -591,6 +593,7 @@
"The '{{.name}}' driver does not respect the --cpus flag": "Le pilote '{{.name}}' ne respecte pas l'indicateur --cpus",
"The '{{.name}}' driver does not respect the --memory flag": "Le pilote '{{.name}}' ne respecte pas l'indicateur --memory",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "L'indicateur --image-repository que vous avez fourni contient le schéma : {{.scheme}}, ce sera en tant que domaine, supprimé automatiquement",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically": "",
"The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "L'indicateur --image-repository que vous avez fourni s'est terminé par un / qui pourrait provoquer un conflit dans kubernetes, supprimé automatiquement",
"The CIDR to be used for service cluster IPs.": "Méthode CIDR à exploiter pour les adresses IP des clusters du service.",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "Méthode CIDR à exploiter pour la VM minikube (pilote virtualbox uniquement).",

View File

@ -208,6 +208,7 @@
"Exiting": "終了しています",
"Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "",
"Exiting.": "終了しています",
"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
"Fail check if container paused": "",
"Failed runtime": "",
@ -324,6 +325,7 @@
"Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "",
"Install the latest hyperkit binary, and run 'minikube delete'": "",
"Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "",
"Invalid port": "",
"Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "",
"Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "",
"It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "",
@ -585,7 +587,7 @@
"The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "",
"The '{{.name}}' driver does not respect the --cpus flag": "",
"The '{{.name}}' driver does not respect the --memory flag": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically": "",
"The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "",
"The CIDR to be used for service cluster IPs.": "サービス クラスタ IP に使用される CIDR",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "minikube VM に使用される CIDRvirtualbox ドライバのみ)",

View File

@ -232,6 +232,7 @@
"Executing \"{{.command}}\" took an unusually long time: {{.duration}}": "",
"Existing disk is missing new features ({{.error}}). To upgrade, run 'minikube delete'": "",
"Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "",
"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
"Fail check if container paused": "",
"Failed runtime": "런타임이 실패하였습니다",
@ -355,6 +356,7 @@
"Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "",
"Install the latest hyperkit binary, and run 'minikube delete'": "",
"Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "",
"Invalid port": "",
"Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "",
"Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "",
"It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "",
@ -604,7 +606,7 @@
"The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "",
"The '{{.name}}' driver does not respect the --cpus flag": "",
"The '{{.name}}' driver does not respect the --memory flag": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically": "",
"The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "",
"The CIDR to be used for service cluster IPs.": "",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "",

View File

@ -223,6 +223,7 @@
"Executing \"{{.command}}\" took an unusually long time: {{.duration}}": "",
"Existing disk is missing new features ({{.error}}). To upgrade, run 'minikube delete'": "",
"Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "",
"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
"Fail check if container paused": "",
"Failed runtime": "",
@ -342,6 +343,7 @@
"Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "",
"Install the latest hyperkit binary, and run 'minikube delete'": "",
"Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "",
"Invalid port": "",
"Invalid size passed in argument: {{.error}}": "Nieprawidłowy rozmiar przekazany w argumencie: {{.error}}",
"Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "",
"Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "",
@ -605,7 +607,7 @@
"The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "",
"The '{{.name}}' driver does not respect the --cpus flag": "",
"The '{{.name}}' driver does not respect the --memory flag": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically": "",
"The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "",
"The CIDR to be used for service cluster IPs.": "",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "",

View File

@ -201,6 +201,7 @@
"Executing \"{{.command}}\" took an unusually long time: {{.duration}}": "",
"Existing disk is missing new features ({{.error}}). To upgrade, run 'minikube delete'": "",
"Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "",
"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
"Fail check if container paused": "",
"Failed runtime": "",
@ -312,6 +313,7 @@
"Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "",
"Install the latest hyperkit binary, and run 'minikube delete'": "",
"Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "",
"Invalid port": "",
"Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "",
"Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "",
"It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "",
@ -551,7 +553,7 @@
"The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "",
"The '{{.name}}' driver does not respect the --cpus flag": "",
"The '{{.name}}' driver does not respect the --memory flag": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically": "",
"The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "",
"The CIDR to be used for service cluster IPs.": "",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "",

View File

@ -280,6 +280,7 @@
"Exiting due to driver incompatibility": "由于驱动程序不兼容而退出",
"Exiting due to {{.fatal_code}}: {{.fatal_msg}}": "",
"Exiting.": "正在退出。",
"Exposed port of the proxyfied dashboard. Set to 0 to pick a random port.": "",
"External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "",
"Fail check if container paused": "",
"Failed runtime": "",
@ -414,6 +415,7 @@
"Install VirtualBox and ensure it is in the path, or select an alternative value for --driver": "",
"Install the latest hyperkit binary, and run 'minikube delete'": "",
"Invalid Container Runtime: \"{{.runtime}}\". Valid runtimes are: {{.validOptions}}": "",
"Invalid port": "",
"Istio needs {{.minCPUs}} CPUs -- your configuration only allocates {{.cpus}} CPUs": "",
"Istio needs {{.minMem}}MB of memory -- your configuration only allocates {{.memory}}MB": "",
"It seems that you are running in GCE, which means authentication should work without the GCP Auth addon. If you would still like to authenticate using a credentials file, use the --force flag.": "",
@ -692,7 +694,7 @@
"The '{{.name}} driver does not support multiple profiles: https://minikube.sigs.k8s.io/docs/reference/drivers/none/": "",
"The '{{.name}}' driver does not respect the --cpus flag": "",
"The '{{.name}}' driver does not respect the --memory flag": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, it will be as a domian, removed automatically": "",
"The --image-repository flag your provided contains Scheme: {{.scheme}}, which will be removed automatically": "",
"The --image-repository flag your provided ended with a trailing / that could cause conflict in kuberentes, removed automatically": "",
"The CIDR to be used for service cluster IPs.": "需要用于服务集群 IP 的 CIDR。",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "需要用于 minikube 虚拟机的 CIDR仅限 virtualbox 驱动程序)",