Merge branch 'master' of github.com:kubernetes/minikube into anders-default-runtime
commit
634b8030f9
|
@ -12,7 +12,7 @@ on:
|
|||
- "!deploy/iso/**"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
build_minikube:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -6,7 +6,7 @@ on:
|
|||
- master
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
generate-docs:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -21,7 +21,7 @@ on:
|
|||
- deleted
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
|
||||
jobs:
|
||||
# Runs before all other jobs
|
||||
|
|
|
@ -7,7 +7,7 @@ on:
|
|||
release:
|
||||
types: [published]
|
||||
env:
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
update-leaderboard:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -14,7 +14,7 @@ on:
|
|||
- "!deploy/iso/**"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
# Runs before all other jobs
|
||||
# builds the minikube binaries
|
||||
|
|
|
@ -12,7 +12,7 @@ on:
|
|||
- "!deploy/iso/**"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
# Runs before all other jobs
|
||||
# builds the minikube binaries
|
||||
|
|
|
@ -6,7 +6,7 @@ on:
|
|||
- cron: "0 2,14 * * *"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
time-to-k8s-public-chart-docker:
|
||||
if: github.repository == 'kubernetes/minikube'
|
||||
|
|
|
@ -5,7 +5,7 @@ on:
|
|||
types: [released]
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
benchmark:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -6,7 +6,7 @@ on:
|
|||
- "translations/**"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
unit_test:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -6,7 +6,7 @@ on:
|
|||
- cron: "0 9 * * 1"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
bump-golang-version:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -6,7 +6,7 @@ on:
|
|||
- cron: "0 10 * * 1"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
bump-golint-version:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -6,7 +6,7 @@ on:
|
|||
- cron: "0 8 * * 1"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
bump-k8s-versions:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -6,7 +6,7 @@ on:
|
|||
- cron: "0 6 * * 1"
|
||||
env:
|
||||
GOPROXY: https://proxy.golang.org
|
||||
GO_VERSION: '1.17.5'
|
||||
GO_VERSION: '1.17.6'
|
||||
jobs:
|
||||
bump-k8s-versions:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
117
CHANGELOG.md
117
CHANGELOG.md
|
@ -1,5 +1,122 @@
|
|||
# Release Notes
|
||||
|
||||
## Version 1.25.1 - 2022-01-20
|
||||
|
||||
* Resolved regression breaking `minikube start` with hyperkit driver [#13418](https://github.com/kubernetes/minikube/pull/13418)
|
||||
|
||||
For a more detailed changelog, including changes occuring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md).
|
||||
|
||||
Thank you to our contributors for this release!
|
||||
|
||||
- Medya Ghazizadeh
|
||||
- Sharif Elgamal
|
||||
- Steven Powell
|
||||
|
||||
Thank you to our triage members for this release!
|
||||
|
||||
- klaases (13 comments)
|
||||
- RA489 (12 comments)
|
||||
- spowelljr (7 comments)
|
||||
- afbjorklund (6 comments)
|
||||
- sharifelgamal (2 comments)
|
||||
|
||||
## Version 1.25.0 - 2022-01-18
|
||||
|
||||
Features:
|
||||
* New flag "--binary-mirror" to override mirror URL downloading (kubectl, kubelet, & kubeadm) [#12804](https://github.com/kubernetes/minikube/pull/12804)
|
||||
* Add format flag to the `image ls` command [#12996](https://github.com/kubernetes/minikube/pull/12996)
|
||||
* Add all mount flags to start command [#12930](https://github.com/kubernetes/minikube/pull/12930)
|
||||
* Auto set config to support btrfs storage driver [#12990](https://github.com/kubernetes/minikube/pull/12990)
|
||||
* Support CRI-O runtime with Rootless Docker driver (`--driver=docker --container-runtime=cri-o`) [#12900](https://github.com/kubernetes/minikube/pull/12900)
|
||||
* Allow custom cert for ingress to be overwritten [#12897](https://github.com/kubernetes/minikube/pull/12897)
|
||||
* Allow ppc64le & armv7 with Docker driver [#13124](https://github.com/kubernetes/minikube/pull/13124)
|
||||
|
||||
Minor Improvements:
|
||||
* Support DOCKER_HOST not being numeric IP [#13300](https://github.com/kubernetes/minikube/pull/13300)
|
||||
* Support mounting with the --no-kubernetes flag [#13144](https://github.com/kubernetes/minikube/pull/13144)
|
||||
* Support changing apiserver-ips when restarting minikube [#12692](https://github.com/kubernetes/minikube/pull/12692)
|
||||
|
||||
Bug fixes:
|
||||
* Fix ingress for k8s v1.19 [#13173](https://github.com/kubernetes/minikube/pull/13173)
|
||||
* Fix mounting with VMware #12426 [#13000](https://github.com/kubernetes/minikube/pull/13000)
|
||||
* Fix `Bad file descriptor` on mount [#13013](https://github.com/kubernetes/minikube/pull/13013)
|
||||
* Fix `docker-env` with new PowerShell versions [#12870](https://github.com/kubernetes/minikube/pull/12870)
|
||||
|
||||
Version Upgrades:
|
||||
* Upgrade Docker, from v20.10.8 to v20.10.11
|
||||
* Upgrade containerd, from v1.4.9 to v1.4.12
|
||||
* Upgrade cri-o from v1.22.0 to v1.22.1 [#13059](https://github.com/kubernetes/minikube/pull/13059)
|
||||
* Update gcp-auth-webhook image to v0.0.8 [#13185](https://github.com/kubernetes/minikube/pull/13185)
|
||||
|
||||
Deprecation:
|
||||
* mount: Remove `--mode` flag [#13162](https://github.com/kubernetes/minikube/pull/13162)
|
||||
|
||||
For a more detailed changelog, including changes occuring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md).
|
||||
|
||||
Thank you to our contributors for this release!
|
||||
|
||||
- Akihiro Suda
|
||||
- Akira Yoshiyama
|
||||
- Anders F Björklund
|
||||
- Ashwin901
|
||||
- Carl Chesser
|
||||
- Daehyeok Mun
|
||||
- Davanum Srinivas
|
||||
- Dimitris Aragiorgis
|
||||
- Emilano Vazquez
|
||||
- Eugene Kalinin
|
||||
- Frank Schwichtenberg
|
||||
- James Yin
|
||||
- Jan Klippel
|
||||
- Jeff MAURY
|
||||
- Joey Klaas
|
||||
- Marcus Puckett
|
||||
- Medya Ghazizadeh
|
||||
- Nikhil Sharma
|
||||
- Nikolay Nikolaev
|
||||
- Oleksii Prudkyi
|
||||
- Pablo Caderno
|
||||
- Piotr Resztak
|
||||
- Predrag Rogic
|
||||
- Rahil Patel
|
||||
- Sergio Galvan
|
||||
- Sharif Elgamal
|
||||
- Steven Powell
|
||||
- Tian Yang
|
||||
- Toshiaki Inukai
|
||||
- Vishal Jain
|
||||
- Zvi Cahana
|
||||
- gamba47
|
||||
- rahil-p
|
||||
- srikrishnabh93@gmail.com
|
||||
|
||||
Thank you to our PR reviewers for this release!
|
||||
|
||||
- spowelljr (65 comments)
|
||||
- medyagh (64 comments)
|
||||
- t-inu (46 comments)
|
||||
- atoato88 (39 comments)
|
||||
- sharifelgamal (39 comments)
|
||||
- klaases (17 comments)
|
||||
- afbjorklund (8 comments)
|
||||
- s-kawamura-w664 (8 comments)
|
||||
- yosshy (6 comments)
|
||||
- neolit123 (3 comments)
|
||||
- AkihiroSuda (1 comments)
|
||||
- dims (1 comments)
|
||||
- dobegor (1 comments)
|
||||
- dytyniuk (1 comments)
|
||||
- inductor (1 comments)
|
||||
- rmohr (1 comments)
|
||||
|
||||
Thank you to our triage members for this release!
|
||||
|
||||
- spowelljr (48 comments)
|
||||
- afbjorklund (44 comments)
|
||||
- RA489 (37 comments)
|
||||
- medyagh (33 comments)
|
||||
- sharifelgamal (25 comments)
|
||||
|
||||
## Version 1.24.0 - 2021-11-04
|
||||
|
||||
Features:
|
||||
|
|
10
Makefile
10
Makefile
|
@ -14,8 +14,8 @@
|
|||
|
||||
# Bump these on release - and please check ISO_VERSION for correctness.
|
||||
VERSION_MAJOR ?= 1
|
||||
VERSION_MINOR ?= 24
|
||||
VERSION_BUILD ?= 0
|
||||
VERSION_MINOR ?= 25
|
||||
VERSION_BUILD ?= 1
|
||||
RAW_VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)
|
||||
VERSION ?= v$(RAW_VERSION)
|
||||
|
||||
|
@ -23,7 +23,7 @@ KUBERNETES_VERSION ?= $(shell egrep "DefaultKubernetesVersion =" pkg/minikube/co
|
|||
KIC_VERSION ?= $(shell egrep "Version =" pkg/drivers/kic/types.go | cut -d \" -f2)
|
||||
|
||||
# Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions
|
||||
ISO_VERSION ?= v1.24.0-1640253061-13195
|
||||
ISO_VERSION ?= v1.25.0
|
||||
# Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta
|
||||
DEB_VERSION ?= $(subst -,~,$(RAW_VERSION))
|
||||
DEB_REVISION ?= 0
|
||||
|
@ -33,7 +33,7 @@ RPM_REVISION ?= 0
|
|||
|
||||
# used by hack/jenkins/release_build_and_upload.sh and KVM_BUILD_IMAGE, see also BUILD_IMAGE below
|
||||
# update this only by running `make update-golang-version`
|
||||
GO_VERSION ?= 1.17.5
|
||||
GO_VERSION ?= 1.17.6
|
||||
# update this only by running `make update-golang-version`
|
||||
GO_K8S_VERSION_PREFIX ?= v1.24.0
|
||||
|
||||
|
@ -438,7 +438,7 @@ e2e-cross: e2e-linux-amd64 e2e-linux-arm64 e2e-darwin-amd64 e2e-windows-amd64.ex
|
|||
checksum: ## Generate checksums
|
||||
for f in out/minikube.iso out/minikube-linux-amd64 out/minikube-linux-arm \
|
||||
out/minikube-linux-arm64 out/minikube-linux-ppc64le out/minikube-linux-s390x \
|
||||
out/minikube-darwin-amd64 out/minikube-windows-amd64.exe \
|
||||
out/minikube-darwin-amd64 out/minikube-darwin-arm64 out/minikube-windows-amd64.exe \
|
||||
out/docker-machine-driver-kvm2 out/docker-machine-driver-kvm2-amd64 out/docker-machine-driver-kvm2-arm64 \
|
||||
out/docker-machine-driver-hyperkit; do \
|
||||
if [ -f "$${f}" ]; then \
|
||||
|
|
1
OWNERS
1
OWNERS
|
@ -8,6 +8,7 @@ reviewers:
|
|||
- prasadkatti
|
||||
- prezha
|
||||
- spowelljr
|
||||
- klaases
|
||||
approvers:
|
||||
- afbjorklund
|
||||
- sharifelgamal
|
||||
|
|
|
@ -66,7 +66,7 @@ func TestAddonsList(t *testing.T) {
|
|||
Ambassador *interface{} `json:"ambassador"`
|
||||
}
|
||||
|
||||
b := make([]byte, 534)
|
||||
b := make([]byte, 544)
|
||||
r, w, err := os.Pipe()
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create pipe: %v", err)
|
||||
|
|
|
@ -98,7 +98,7 @@ var dashboardCmd = &cobra.Command{
|
|||
}
|
||||
|
||||
out.ErrT(style.Launch, "Launching proxy ...")
|
||||
p, hostPort, err := kubectlProxy(kubectlVersion, cname, dashboardExposedPort)
|
||||
p, hostPort, err := kubectlProxy(kubectlVersion, co.Config.BinaryMirror, cname, dashboardExposedPort)
|
||||
if err != nil {
|
||||
exit.Error(reason.HostKubectlProxy, "kubectl proxy", err)
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ var dashboardCmd = &cobra.Command{
|
|||
}
|
||||
|
||||
// kubectlProxy runs "kubectl proxy", returning host:port
|
||||
func kubectlProxy(kubectlVersion string, contextName string, port int) (*exec.Cmd, string, error) {
|
||||
func kubectlProxy(kubectlVersion string, binaryURL string, contextName string, port int) (*exec.Cmd, string, error) {
|
||||
// port=0 picks a random system port
|
||||
|
||||
kubectlArgs := []string{"--context", contextName, "proxy", "--port", strconv.Itoa(port)}
|
||||
|
@ -140,7 +140,7 @@ func kubectlProxy(kubectlVersion string, contextName string, port int) (*exec.Cm
|
|||
var cmd *exec.Cmd
|
||||
if kubectl, err := exec.LookPath("kubectl"); err == nil {
|
||||
cmd = exec.Command(kubectl, kubectlArgs...)
|
||||
} else if cmd, err = KubectlCommand(kubectlVersion, kubectlArgs...); err != nil {
|
||||
} else if cmd, err = KubectlCommand(kubectlVersion, binaryURL, kubectlArgs...); err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"os/exec"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/docker/machine/libmachine/mcnerror"
|
||||
|
@ -34,6 +35,7 @@ import (
|
|||
"github.com/spf13/viper"
|
||||
"k8s.io/klog/v2"
|
||||
cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config"
|
||||
"k8s.io/minikube/pkg/drivers/kic"
|
||||
"k8s.io/minikube/pkg/drivers/kic/oci"
|
||||
"k8s.io/minikube/pkg/minikube/cluster"
|
||||
"k8s.io/minikube/pkg/minikube/config"
|
||||
|
@ -145,6 +147,60 @@ func deleteContainersAndVolumes(ctx context.Context, ociBin string) {
|
|||
}
|
||||
}
|
||||
|
||||
// kicbaseImages returns kicbase images
|
||||
func kicbaseImages(ctx context.Context, ociBin string) ([]string, error) {
|
||||
if _, err := exec.LookPath(ociBin); err != nil {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// create list of possible kicbase images
|
||||
kicImages := []string{kic.BaseImage}
|
||||
kicImages = append(kicImages, kic.FallbackImages...)
|
||||
|
||||
kicImagesRepo := []string{}
|
||||
for _, img := range kicImages {
|
||||
kicImagesRepo = append(kicImagesRepo, strings.Split(img, ":")[0])
|
||||
}
|
||||
|
||||
allImages, err := oci.ListImagesRepository(ctx, ociBin)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var result []string
|
||||
for _, img := range allImages {
|
||||
for _, kicImg := range kicImagesRepo {
|
||||
if kicImg == strings.Split(img, ":")[0] {
|
||||
result = append(result, img)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// printDeleteImagesCommand prints command which remove images
|
||||
func printDeleteImagesCommand(ociBin string, imageNames []string) {
|
||||
if _, err := exec.LookPath(ociBin); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if len(imageNames) > 0 {
|
||||
out.Styled(style.Command, `{{.ociBin}} rmi {{.images}}`, out.V{"ociBin": ociBin, "images": strings.Join(imageNames, " ")})
|
||||
}
|
||||
}
|
||||
|
||||
// printDeleteImageInfo prints info about removing kicbase images
|
||||
func printDeleteImageInfo(dockerImageNames, podmanImageNames []string) {
|
||||
if len(dockerImageNames) == 0 && len(podmanImageNames) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
out.Styled(style.Notice, `Kicbase images have not been deleted. To delete images run:`)
|
||||
printDeleteImagesCommand(oci.Docker, dockerImageNames)
|
||||
printDeleteImagesCommand(oci.Podman, podmanImageNames)
|
||||
}
|
||||
|
||||
// runDelete handles the executes the flow of "minikube delete"
|
||||
func runDelete(cmd *cobra.Command, args []string) {
|
||||
if len(args) > 0 {
|
||||
|
@ -213,6 +269,16 @@ func runDelete(cmd *cobra.Command, args []string) {
|
|||
// If the purge flag is set, go ahead and delete the .minikube directory.
|
||||
if purge {
|
||||
purgeMinikubeDirectory()
|
||||
|
||||
dockerImageNames, err := kicbaseImages(delCtx, oci.Docker)
|
||||
if err != nil {
|
||||
klog.Warningf("error fetching docker images: %v", err)
|
||||
}
|
||||
podmanImageNames, err := kicbaseImages(delCtx, oci.Podman)
|
||||
if err != nil {
|
||||
klog.Warningf("error fetching podman images: %v", err)
|
||||
}
|
||||
printDeleteImageInfo(dockerImageNames, podmanImageNames)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ host. Please be aware that when using --ssh all paths will apply to the remote m
|
|||
args = append(cluster, args...)
|
||||
}
|
||||
|
||||
c, err := KubectlCommand(version, args...)
|
||||
c, err := KubectlCommand(version, cc.BinaryMirror, args...)
|
||||
if err != nil {
|
||||
out.ErrLn("Error caching kubectl: %v", err)
|
||||
os.Exit(1)
|
||||
|
@ -134,12 +134,12 @@ func kubeconfigPath(cfg config.ClusterConfig) string {
|
|||
}
|
||||
|
||||
// KubectlCommand will return kubectl command with a version matching the cluster
|
||||
func KubectlCommand(version string, args ...string) (*exec.Cmd, error) {
|
||||
func KubectlCommand(version, binaryURL string, args ...string) (*exec.Cmd, error) {
|
||||
if version == "" {
|
||||
version = constants.DefaultKubernetesVersion
|
||||
}
|
||||
|
||||
path, err := node.CacheKubectlBinary(version)
|
||||
path, err := node.CacheKubectlBinary(version, binaryURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ func Execute() {
|
|||
}
|
||||
|
||||
if runtime.GOOS == "darwin" && detect.IsAmd64M1Emulation() {
|
||||
out.Infof("You are trying to run amd64 binary on M1 system. Please consider running darwin/arm64 binary instead (Download at {{.url}}.)",
|
||||
out.Boxed("You are trying to run the amd64 binary on an M1 system.\nPlease consider running the darwin/arm64 binary instead.\nDownload at {{.url}}",
|
||||
out.V{"url": notify.DownloadURL(version.GetVersion(), "darwin", "arm64")})
|
||||
}
|
||||
|
||||
|
|
|
@ -132,6 +132,8 @@ const (
|
|||
listenAddress = "listen-address"
|
||||
extraDisks = "extra-disks"
|
||||
certExpiration = "cert-expiration"
|
||||
binaryMirror = "binary-mirror"
|
||||
disableOptimizations = "disable-optimizations"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -189,6 +191,8 @@ func initMinikubeFlags() {
|
|||
startCmd.Flags().StringP(trace, "", "", "Send trace events. Options include: [gcp]")
|
||||
startCmd.Flags().Int(extraDisks, 0, "Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)")
|
||||
startCmd.Flags().Duration(certExpiration, constants.DefaultCertExpiration, "Duration until minikube certificate expiration, defaults to three years (26280h).")
|
||||
startCmd.Flags().String(binaryMirror, "", "Location to fetch kubectl, kubelet, & kubeadm binaries from.")
|
||||
startCmd.Flags().Bool(disableOptimizations, false, "If set, disables optimizations that are set for local Kubernetes. Including decreasing CoreDNS replicas from 2 to 1 and increasing kubeadm housekeeping-interval from 10s to 5m. Defaults to false.")
|
||||
}
|
||||
|
||||
// initKubernetesFlags inits the commandline flags for Kubernetes related options
|
||||
|
@ -377,6 +381,27 @@ func getDiskSize() int {
|
|||
return diskSize
|
||||
}
|
||||
|
||||
func getExtraOptions() config.ExtraOptionSlice {
|
||||
options := []string{}
|
||||
if detect.IsCloudShell() {
|
||||
options = append(options, "kubelet.cgroups-per-qos=false", "kubelet.enforce-node-allocatable=\"\"")
|
||||
}
|
||||
if !viper.GetBool(disableOptimizations) {
|
||||
options = append(options, "kubelet.housekeeping-interval=5m")
|
||||
}
|
||||
for _, eo := range options {
|
||||
if config.ExtraOptions.Exists(eo) {
|
||||
klog.Infof("skipping extra-config %q.", eo)
|
||||
continue
|
||||
}
|
||||
klog.Infof("setting extra-config: %s", eo)
|
||||
if err := config.ExtraOptions.Set(eo); err != nil {
|
||||
exit.Error(reason.InternalConfigSet, "failed to set extra option", err)
|
||||
}
|
||||
}
|
||||
return config.ExtraOptions
|
||||
}
|
||||
|
||||
func getRepository(cmd *cobra.Command, k8sVersion string) string {
|
||||
repository := viper.GetString(imageRepository)
|
||||
mirrorCountry := strings.ToLower(viper.GetString(imageMirrorCountry))
|
||||
|
@ -490,6 +515,8 @@ func generateNewConfigFromFlags(cmd *cobra.Command, k8sVersion string, rtime str
|
|||
MountPort: uint16(viper.GetUint(mountPortFlag)),
|
||||
MountType: viper.GetString(mountTypeFlag),
|
||||
MountUID: viper.GetString(mountUID),
|
||||
BinaryMirror: viper.GetString(binaryMirror),
|
||||
DisableOptimizations: viper.GetBool(disableOptimizations),
|
||||
KubernetesConfig: config.KubernetesConfig{
|
||||
KubernetesVersion: k8sVersion,
|
||||
ClusterName: ClusterFlagValue(),
|
||||
|
@ -504,7 +531,7 @@ func generateNewConfigFromFlags(cmd *cobra.Command, k8sVersion string, rtime str
|
|||
NetworkPlugin: chosenNetworkPlugin,
|
||||
ServiceCIDR: viper.GetString(serviceCIDR),
|
||||
ImageRepository: getRepository(cmd, k8sVersion),
|
||||
ExtraOptions: config.ExtraOptions,
|
||||
ExtraOptions: getExtraOptions(),
|
||||
ShouldLoadCachedImages: viper.GetBool(cacheImages),
|
||||
CNI: getCNIConfig(cmd),
|
||||
NodePort: viper.GetInt(apiServerPort),
|
||||
|
@ -516,17 +543,6 @@ func generateNewConfigFromFlags(cmd *cobra.Command, k8sVersion string, rtime str
|
|||
cc.ContainerVolumeMounts = []string{viper.GetString(mountString)}
|
||||
}
|
||||
|
||||
if detect.IsCloudShell() {
|
||||
err := cc.KubernetesConfig.ExtraOptions.Set("kubelet.cgroups-per-qos=false")
|
||||
if err != nil {
|
||||
exit.Error(reason.InternalConfigSet, "failed to set cloud shell kubelet config options", err)
|
||||
}
|
||||
err = cc.KubernetesConfig.ExtraOptions.Set("kubelet.enforce-node-allocatable=\"\"")
|
||||
if err != nil {
|
||||
exit.Error(reason.InternalConfigSet, "failed to set cloud shell kubelet config options", err)
|
||||
}
|
||||
}
|
||||
|
||||
if driver.IsKIC(drvName) {
|
||||
si, err := oci.CachedDaemonInfo(drvName)
|
||||
if err != nil {
|
||||
|
@ -707,6 +723,8 @@ func updateExistingConfigFromFlags(cmd *cobra.Command, existing *config.ClusterC
|
|||
updateUint16FromFlag(cmd, &cc.MountPort, mountPortFlag)
|
||||
updateStringFromFlag(cmd, &cc.MountType, mountTypeFlag)
|
||||
updateStringFromFlag(cmd, &cc.MountUID, mountUID)
|
||||
updateStringFromFlag(cmd, &cc.BinaryMirror, binaryMirror)
|
||||
updateBoolFromFlag(cmd, &cc.DisableOptimizations, disableOptimizations)
|
||||
|
||||
if cmd.Flags().Changed(kubernetesVersion) {
|
||||
cc.KubernetesConfig.KubernetesVersion = getKubernetesVersion(existing)
|
||||
|
@ -716,7 +734,7 @@ func updateExistingConfigFromFlags(cmd *cobra.Command, existing *config.ClusterC
|
|||
}
|
||||
|
||||
if cmd.Flags().Changed("extra-config") {
|
||||
cc.KubernetesConfig.ExtraOptions = config.ExtraOptions
|
||||
cc.KubernetesConfig.ExtraOptions = getExtraOptions()
|
||||
}
|
||||
|
||||
if cmd.Flags().Changed(cniFlag) || cmd.Flags().Changed(enableDefaultCNI) {
|
||||
|
|
|
@ -81,7 +81,7 @@ var tunnelCmd = &cobra.Command{
|
|||
|
||||
if driver.NeedsPortForward(co.Config.Driver) {
|
||||
|
||||
port, err := oci.ForwardedPort(oci.Docker, cname, 22)
|
||||
port, err := oci.ForwardedPort(co.Config.Driver, cname, 22)
|
||||
if err != nil {
|
||||
exit.Error(reason.DrvPortForward, "error getting ssh port", err)
|
||||
}
|
||||
|
|
|
@ -60,6 +60,10 @@ var (
|
|||
//go:embed istio/istio-default-profile.yaml.tmpl
|
||||
IstioAssets embed.FS
|
||||
|
||||
// KongAssets assets for kong addon
|
||||
//go:embed kong/kong-ingress-controller.yaml.tmpl
|
||||
KongAssets embed.FS
|
||||
|
||||
// KubevirtAssets assets for kubevirt addon
|
||||
//go:embed kubevirt/pod.yaml.tmpl
|
||||
KubevirtAssets embed.FS
|
||||
|
|
|
@ -16,6 +16,8 @@ metadata:
|
|||
kubernetes.io/minikube-addons: istio
|
||||
addonmanager.kubernetes.io/mode: EnsureExists
|
||||
spec:
|
||||
conversion:
|
||||
strategy: None
|
||||
group: install.istio.io
|
||||
names:
|
||||
kind: IstioOperator
|
||||
|
@ -24,13 +26,18 @@ spec:
|
|||
singular: istiooperator
|
||||
shortNames:
|
||||
- iop
|
||||
- io
|
||||
scope: Namespaced
|
||||
subresources:
|
||||
status: {}
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
...
|
||||
---
|
||||
apiVersion: v1
|
||||
|
@ -77,12 +84,6 @@ rules:
|
|||
- '*'
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- rbac.istio.io
|
||||
resources:
|
||||
- '*'
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- security.istio.io
|
||||
resources:
|
||||
|
@ -111,9 +112,7 @@ rules:
|
|||
- daemonsets
|
||||
- deployments
|
||||
- deployments/finalizers
|
||||
- ingresses
|
||||
- replicasets
|
||||
- statefulsets
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
|
@ -129,6 +128,7 @@ rules:
|
|||
verbs:
|
||||
- get
|
||||
- create
|
||||
- update
|
||||
- apiGroups:
|
||||
- policy
|
||||
resources:
|
||||
|
@ -144,18 +144,28 @@ rules:
|
|||
- rolebindings
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- coordination.k8s.io
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- get
|
||||
- create
|
||||
- update
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- configmaps
|
||||
- configmaps
|
||||
- endpoints
|
||||
- events
|
||||
- namespaces
|
||||
- pods
|
||||
- pods/proxy
|
||||
- pods/portforward
|
||||
- persistentvolumeclaims
|
||||
- secrets
|
||||
- services
|
||||
- serviceaccounts
|
||||
- serviceaccounts
|
||||
verbs:
|
||||
- '*'
|
||||
...
|
||||
|
@ -191,6 +201,7 @@ spec:
|
|||
- name: http-metrics
|
||||
port: 8383
|
||||
targetPort: 8383
|
||||
protocol: TCP
|
||||
selector:
|
||||
name: istio-operator
|
||||
...
|
||||
|
@ -202,7 +213,7 @@ metadata:
|
|||
name: istio-operator
|
||||
labels:
|
||||
kubernetes.io/minikube-addons: istio
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
addonmanager.kubernetes.io/mode: Reconcile
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
|
@ -222,6 +233,16 @@ spec:
|
|||
command:
|
||||
- operator
|
||||
- server
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
privileged: false
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 1337
|
||||
runAsUser: 1337
|
||||
runAsNonRoot: true
|
||||
imagePullPolicy: IfNotPresent
|
||||
resources:
|
||||
limits:
|
||||
|
@ -243,4 +264,6 @@ spec:
|
|||
fieldPath: metadata.name
|
||||
- name: OPERATOR_NAME
|
||||
value: "istio-operator"
|
||||
- name: WAIT_FOR_RESOURCES_TIMEOUT
|
||||
value: "300s"
|
||||
...
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -107,3 +107,4 @@ BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/
|
|||
BR2_TARGET_SYSLINUX=y
|
||||
BR2_PACKAGE_HOST_E2TOOLS=y
|
||||
BR2_PACKAGE_HOST_PYTHON=y
|
||||
BR2_PACKAGE_LIBFUSE=y
|
||||
|
|
File diff suppressed because it is too large
Load Diff
61
go.mod
61
go.mod
|
@ -3,7 +3,7 @@ module k8s.io/minikube
|
|||
go 1.17
|
||||
|
||||
require (
|
||||
cloud.google.com/go/storage v1.18.2
|
||||
cloud.google.com/go/storage v1.19.0
|
||||
contrib.go.opencensus.io/exporter/stackdriver v0.13.10
|
||||
github.com/Delta456/box-cli-maker/v2 v2.2.2
|
||||
github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2
|
||||
|
@ -16,7 +16,7 @@ require (
|
|||
github.com/c4milo/gotoolkit v0.0.0-20190525173301-67483a18c17a // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.1.2
|
||||
github.com/cheggaaa/pb/v3 v3.0.8
|
||||
github.com/cloudevents/sdk-go/v2 v2.6.1
|
||||
github.com/cloudevents/sdk-go/v2 v2.8.0
|
||||
github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21
|
||||
github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 // indirect
|
||||
github.com/docker/docker v20.10.11+incompatible
|
||||
|
@ -24,12 +24,12 @@ require (
|
|||
github.com/docker/machine v0.16.2
|
||||
github.com/elazarl/goproxy v0.0.0-20210110162100-a92cc753f88e
|
||||
github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
|
||||
github.com/google/go-cmp v0.5.6
|
||||
github.com/google/go-cmp v0.5.7
|
||||
github.com/google/go-containerregistry v0.6.0
|
||||
github.com/google/go-github/v36 v36.0.0
|
||||
github.com/google/slowjam v1.0.0
|
||||
github.com/google/uuid v1.3.0
|
||||
github.com/hashicorp/go-getter v1.5.9
|
||||
github.com/hashicorp/go-getter v1.5.11
|
||||
github.com/hashicorp/go-retryablehttp v0.7.0
|
||||
github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect
|
||||
github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214 // indirect
|
||||
|
@ -47,7 +47,6 @@ require (
|
|||
github.com/juju/version v0.0.0-20180108022336-b64dbd566305 // indirect
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
||||
github.com/klauspost/cpuid v1.2.0
|
||||
github.com/libvirt/libvirt-go v7.4.0+incompatible
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.5
|
||||
github.com/mattbaird/jsonpatch v0.0.0-20200820163806-098863c1fc24
|
||||
github.com/mattn/go-isatty v0.0.14
|
||||
|
@ -65,10 +64,10 @@ require (
|
|||
github.com/pmezard/go-difflib v1.0.0
|
||||
github.com/russross/blackfriday v1.5.3-0.20200218234912-41c5fccfd6f6 // indirect
|
||||
github.com/samalba/dockerclient v0.0.0-20160414174713-91d7393ff859 // indirect
|
||||
github.com/shirou/gopsutil/v3 v3.21.10
|
||||
github.com/spf13/cobra v1.2.1
|
||||
github.com/shirou/gopsutil/v3 v3.21.12
|
||||
github.com/spf13/cobra v1.3.0
|
||||
github.com/spf13/pflag v1.0.5
|
||||
github.com/spf13/viper v1.9.0
|
||||
github.com/spf13/viper v1.10.1
|
||||
github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f
|
||||
github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097
|
||||
go.opencensus.io v0.23.0
|
||||
|
@ -79,13 +78,13 @@ require (
|
|||
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5
|
||||
golang.org/x/exp v0.0.0-20210220032938-85be41e4509f
|
||||
golang.org/x/mod v0.5.1
|
||||
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1
|
||||
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
||||
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e
|
||||
golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72
|
||||
golang.org/x/text v0.3.7
|
||||
gonum.org/v1/plot v0.10.0
|
||||
google.golang.org/api v0.60.0
|
||||
google.golang.org/api v0.65.0
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
k8s.io/api v0.22.4
|
||||
|
@ -93,43 +92,40 @@ require (
|
|||
k8s.io/client-go v0.22.4
|
||||
k8s.io/cluster-bootstrap v0.0.0
|
||||
k8s.io/component-base v0.22.4
|
||||
k8s.io/klog/v2 v2.30.0
|
||||
k8s.io/klog/v2 v2.40.1
|
||||
k8s.io/kubectl v0.22.2
|
||||
k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a
|
||||
libvirt.org/go/libvirt v1.7010.0
|
||||
sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0
|
||||
)
|
||||
|
||||
require (
|
||||
cloud.google.com/go v0.97.0 // indirect
|
||||
cloud.google.com/go v0.100.2 // indirect
|
||||
cloud.google.com/go/compute v0.1.0 // indirect
|
||||
cloud.google.com/go/iam v0.1.1 // indirect
|
||||
cloud.google.com/go/monitoring v1.1.0 // indirect
|
||||
cloud.google.com/go/trace v1.0.0 // indirect
|
||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
|
||||
github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd // indirect
|
||||
github.com/Microsoft/go-winio v0.5.0 // indirect
|
||||
github.com/StackExchange/wmi v1.2.1 // indirect
|
||||
github.com/VividCortex/ewma v1.1.1 // indirect
|
||||
github.com/ajstarks/svgo v0.0.0-20210923152817-c3b6e2f0c527 // indirect
|
||||
github.com/aws/aws-sdk-go v1.38.49 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
|
||||
github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect
|
||||
github.com/cespare/xxhash v1.1.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.1.1 // indirect
|
||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 // indirect
|
||||
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed // indirect
|
||||
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
||||
github.com/containerd/cgroups v1.0.1 // indirect
|
||||
github.com/containerd/containerd v1.5.2 // indirect
|
||||
github.com/containerd/stargz-snapshotter/estargz v0.7.0 // indirect
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/docker/cli v20.10.7+incompatible // indirect
|
||||
github.com/docker/distribution v2.7.1+incompatible // indirect
|
||||
github.com/docker/docker-credential-helpers v0.6.3 // indirect
|
||||
github.com/docker/go-connections v0.4.0 // indirect
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 // indirect
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0 // indirect
|
||||
github.com/evanphx/json-patch v4.11.0+incompatible // indirect
|
||||
github.com/fatih/color v1.10.0 // indirect
|
||||
github.com/fatih/color v1.13.0 // indirect
|
||||
github.com/fogleman/gg v1.3.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.5.1 // indirect
|
||||
github.com/go-fonts/liberation v0.2.0 // indirect
|
||||
|
@ -147,7 +143,6 @@ require (
|
|||
github.com/googleapis/gax-go/v2 v2.1.1 // indirect
|
||||
github.com/googleapis/gnostic v0.5.5 // indirect
|
||||
github.com/gookit/color v1.4.2 // indirect
|
||||
github.com/gorilla/mux v1.8.0 // indirect
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
||||
github.com/hashicorp/go-safetemp v1.0.0 // indirect
|
||||
github.com/hashicorp/go-version v1.2.1 // indirect
|
||||
|
@ -155,26 +150,27 @@ require (
|
|||
github.com/imdario/mergo v0.3.11 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.0.0 // indirect
|
||||
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||
github.com/json-iterator/go v1.1.11 // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/klauspost/compress v1.13.0 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||
github.com/magiconair/properties v1.8.5 // indirect
|
||||
github.com/mattn/go-colorable v0.1.8 // indirect
|
||||
github.com/mattn/go-colorable v0.1.12 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.13 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
|
||||
github.com/miekg/dns v1.1.35 // indirect
|
||||
github.com/miekg/dns v1.1.41 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/mitchellh/go-testing-interface v1.0.0 // indirect
|
||||
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
|
||||
github.com/mitchellh/mapstructure v1.4.2 // indirect
|
||||
github.com/mitchellh/mapstructure v1.4.3 // indirect
|
||||
github.com/moby/spdystream v0.2.0 // indirect
|
||||
github.com/moby/sys/mountinfo v0.4.1 // indirect
|
||||
github.com/moby/term v0.0.0-20210610120745-9d4ed1856297 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.1 // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/opencontainers/image-spec v1.0.1 // indirect
|
||||
github.com/opencontainers/runc v1.0.2 // indirect
|
||||
github.com/pelletier/go-toml v1.9.4 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||
github.com/prometheus/client_golang v1.11.0 // indirect
|
||||
github.com/prometheus/client_model v0.2.0 // indirect
|
||||
github.com/prometheus/common v0.26.0 // indirect
|
||||
|
@ -192,19 +188,20 @@ require (
|
|||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
|
||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
|
||||
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.2 // indirect
|
||||
go.uber.org/atomic v1.7.0 // indirect
|
||||
go.uber.org/multierr v1.6.0 // indirect
|
||||
go.uber.org/zap v1.17.0 // indirect
|
||||
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d // indirect
|
||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 // indirect
|
||||
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d // indirect
|
||||
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
google.golang.org/genproto v0.0.0-20211021150943-2b146023228c // indirect
|
||||
google.golang.org/grpc v1.40.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20220118154757-00ab72f36ad5 // indirect
|
||||
google.golang.org/grpc v1.43.0 // indirect
|
||||
google.golang.org/protobuf v1.27.1 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/ini.v1 v1.63.2 // indirect
|
||||
gopkg.in/ini.v1 v1.66.2 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect
|
||||
|
|
179
go.sum
179
go.sum
|
@ -27,18 +27,26 @@ cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWc
|
|||
cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=
|
||||
cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=
|
||||
cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=
|
||||
cloud.google.com/go v0.97.0 h1:3DXvAyifywvq64LfkKaMOmkWPS1CikIQdMe2lY9vxU8=
|
||||
cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=
|
||||
cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM=
|
||||
cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=
|
||||
cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U=
|
||||
cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y=
|
||||
cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
|
||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
|
||||
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
|
||||
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
|
||||
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
|
||||
cloud.google.com/go/compute v0.1.0 h1:rSUBvAyVwNJ5uQCKNJFMwPtTvJkfN38b6Pvb9zZoqJ8=
|
||||
cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
|
||||
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=
|
||||
cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU=
|
||||
cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY=
|
||||
cloud.google.com/go/iam v0.1.1 h1:4CapQyNFjiksks1/x7jsvsygFPhihslYk5GptIrlX68=
|
||||
cloud.google.com/go/iam v0.1.1/go.mod h1:CKqrcnI/suGpybEHxZ7BMehL0oA4LpdyJdUlTl9jVMw=
|
||||
cloud.google.com/go/monitoring v1.1.0 h1:ZnyNdf/XRcynMmKzRSNTOdOyYPs6G7do1l2D2hIvIKo=
|
||||
cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4=
|
||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||
|
@ -50,8 +58,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
|
|||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||
cloud.google.com/go/storage v1.18.2 h1:5NQw6tOn3eMm0oE8vTkfjau18kjL79FlMjy/CHTpmoY=
|
||||
cloud.google.com/go/storage v1.18.2/go.mod h1:AiIj7BWXyhO5gGVmYJ+S8tbkCx3yb0IMjua8Aw4naVM=
|
||||
cloud.google.com/go/storage v1.19.0 h1:XOQSnPJD8hRtZJ3VdCyK0mBZsGGImrzPAMbSWcHSe6Q=
|
||||
cloud.google.com/go/storage v1.19.0/go.mod h1:6rgiTRjOqI/Zd9YKimub5TIB4d+p3LH33V3ZE1DMuUM=
|
||||
cloud.google.com/go/trace v1.0.0 h1:laKx2y7IWMjguCe5zZx6n7qLtREk4kyE69SXVC0VSN8=
|
||||
cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A=
|
||||
contrib.go.opencensus.io/exporter/stackdriver v0.13.10 h1:a9+GZPUe+ONKUwULjlEOucMMG0qfSCCenlji0Nhqbys=
|
||||
|
@ -90,6 +98,7 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt
|
|||
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
||||
github.com/Delta456/box-cli-maker/v2 v2.2.2 h1:CpSLcPgi5pY4+arzpyuWN2+nU8gHqto2Y+OO7VbELQ0=
|
||||
github.com/Delta456/box-cli-maker/v2 v2.2.2/go.mod h1:idItIMZeyx3bg73XwSgsLeZd+gdpD2IvGbR3FC8a9TU=
|
||||
github.com/GoogleCloudPlatform/docker-credential-gcr v0.0.0-20210713212222-faed5e8b8ca2 h1:rMamBsR6iCT9Y5m2Il6vFGJvY7FAgck4AoA/LobheKU=
|
||||
|
@ -120,7 +129,6 @@ github.com/Microsoft/hcsshim v0.8.17/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwT
|
|||
github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU=
|
||||
github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY=
|
||||
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
|
||||
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/Parallels/docker-machine-parallels/v2 v2.0.1 h1:3Rj+4tcm/UqMU5g2bLJmpxD0ssn1BB5am4Cd6yUDbVI=
|
||||
github.com/Parallels/docker-machine-parallels/v2 v2.0.1/go.mod h1:NKwI5KryEmEHMZVj80t9JQcfXWZp4/ZYNBuw4C5sQ9E=
|
||||
|
@ -129,8 +137,6 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt
|
|||
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ=
|
||||
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
|
||||
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
|
||||
github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM=
|
||||
github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA=
|
||||
github.com/VividCortex/godaemon v1.0.0 h1:aHYrScWvgaSOdAoYCdObWXLm+e1rldP9Pwb1ZvuZkQw=
|
||||
|
@ -151,6 +157,7 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd
|
|||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||
github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
|
||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
||||
|
@ -195,8 +202,9 @@ github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnd
|
|||
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
|
||||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
|
||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
|
||||
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw=
|
||||
github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw=
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M=
|
||||
|
@ -212,19 +220,25 @@ github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLI
|
|||
github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs=
|
||||
github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||
github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs=
|
||||
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
|
||||
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cloudevents/sdk-go/v2 v2.6.1 h1:yHtzgmeBvc0TZx1nrnvYXov1CSvkQyvhEhNMs8Z5Mmk=
|
||||
github.com/cloudevents/sdk-go/v2 v2.6.1/go.mod h1:nlXhgFkf0uTopxmRXalyMwS2LG70cRGPrxzmjJgSG0U=
|
||||
github.com/cloudevents/sdk-go/v2 v2.8.0 h1:kmRaLbsafZmidZ0rZ6h7WOMqCkRMcVTLV5lxV/HKQ9Y=
|
||||
github.com/cloudevents/sdk-go/v2 v2.8.0/go.mod h1:GpCBmUj7DIRiDhVvsK5d6WCbgTWs8DxAWTRtAwQmIXs=
|
||||
github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 h1:Yg2hDs4b13Evkpj42FU2idX2cVXVFqQSheXYKM86Qsk=
|
||||
github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21/go.mod h1:MgJyK38wkzZbiZSKeIeFankxxSA8gayko/nr5x5bgBA=
|
||||
github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 h1:tuijfIjZyjZaHq9xDUh0tNitwXshJpbLkqMOJv4H3do=
|
||||
github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21/go.mod h1:po7NpZ/QiTKzBKyrsEAxwnTamCoh8uDk/egRpQ7siIc=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M=
|
||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed h1:OZmjad4L3H8ncOIR8rnb5MREYqG8ixi5+WbeUsquF0c=
|
||||
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
|
||||
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
|
||||
github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE=
|
||||
github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU=
|
||||
|
@ -331,8 +345,9 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV
|
|||
github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=
|
||||
|
@ -390,10 +405,11 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
|
|||
github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 h1:dulLQAYQFYtG5MTplgNGHWuV2D+OBD+Z8lmDBmbLg+s=
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=
|
||||
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
|
||||
github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws=
|
||||
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/evanphx/json-patch v4.11.0+incompatible h1:glyUF9yIYtMHzn8xaKw5rMhdWcwsYV8dZHIq5567/xs=
|
||||
github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
|
@ -401,8 +417,9 @@ github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZM
|
|||
github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||
github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
|
||||
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
|
||||
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
|
||||
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
||||
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o=
|
||||
github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
|
@ -450,7 +467,6 @@ github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg
|
|||
github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
||||
github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE=
|
||||
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
|
||||
|
@ -541,8 +557,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
|
||||
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
|
||||
github.com/google/go-containerregistry v0.6.0 h1:niQ+8XD//kKgArIFwDVBXsWVWbde16LPdHMyNwSC8h4=
|
||||
github.com/google/go-containerregistry v0.6.0/go.mod h1:euCCtNbZ6tKqi1E72vwDj2xZcN5ttKpZLfa/wSo5iLw=
|
||||
github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=
|
||||
|
@ -600,9 +617,8 @@ github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQ
|
|||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
|
||||
github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
|
||||
github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
|
||||
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
|
@ -614,24 +630,29 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t
|
|||
github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
|
||||
github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
|
||||
github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
|
||||
github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
|
||||
github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0=
|
||||
github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
|
||||
github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms=
|
||||
github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
|
||||
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
|
||||
github.com/hashicorp/go-getter v1.5.9 h1:b7ahZW50iQiUek/at3CvZhPK1/jiV6CtKcsJiR6E4R0=
|
||||
github.com/hashicorp/go-getter v1.5.9/go.mod h1:BrrV/1clo8cCYu6mxvboYg+KutTiFnXjMEgDD8+i7ZI=
|
||||
github.com/hashicorp/go-getter v1.5.11 h1:wioTuNmaBU3IE9vdFtFMcmZWj0QzLc6DYaP6sNe5onY=
|
||||
github.com/hashicorp/go-getter v1.5.11/go.mod h1:9i48BP6wpWweI/0/+FBjqLrp9S8XtwUGjiu0QkWHEaY=
|
||||
github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
|
||||
github.com/hashicorp/go-hclog v0.12.0 h1:d4QkX8FRTYaKaCZBoXYY8zJX2BXjWxurN/GA2tkrmZM=
|
||||
github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
|
||||
github.com/hashicorp/go-hclog v1.0.0 h1:bkKf0BeBXcSYa7f5Fyi9gMuQ8gNsxeiNpZjR6VxNZeo=
|
||||
github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
|
||||
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
|
||||
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
|
||||
github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
|
||||
github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I=
|
||||
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
|
||||
github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
|
||||
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
|
||||
github.com/hashicorp/go-retryablehttp v0.7.0 h1:eu1EI/mbirUgP5C8hVsTNaGZreBDlYiwC1FZWkvQPQ4=
|
||||
github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
|
||||
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
|
||||
|
@ -648,15 +669,19 @@ github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09
|
|||
github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
|
||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
|
||||
github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
|
||||
github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
|
||||
github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=
|
||||
github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
|
||||
github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
|
||||
github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
|
||||
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
|
||||
github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
|
||||
github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
|
||||
github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ=
|
||||
github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E=
|
||||
github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214 h1:WgfvpuKg42WVLkxNwzfFraXkTXPK36bMqXvMFN67clI=
|
||||
|
@ -664,6 +689,7 @@ github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214/go.mod h1:kj6hFWqf
|
|||
github.com/hooklift/iso9660 v0.0.0-20170318115843-1cf07e5970d8 h1:ARl0RuGZTqBOMXQIfXen0twVSJ8kMojd7ThJf4EBcrc=
|
||||
github.com/hooklift/iso9660 v0.0.0-20170318115843-1cf07e5970d8/go.mod h1:sOC47ru8lB0DlU0EZ7BJ0KCP5rDqOvx0c/5K5ADm8H0=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||
|
@ -693,8 +719,9 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV
|
|||
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ=
|
||||
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
|
@ -749,12 +776,11 @@ github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
|
|||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/libvirt/libvirt-go v7.4.0+incompatible h1:crnSLkwPqCdXtg6jib/FxBG/hweAc/3Wxth1AehCXL4=
|
||||
github.com/libvirt/libvirt-go v7.4.0+incompatible/go.mod h1:34zsnB4iGeOv7Byj6qotuW8Ya4v4Tr43ttjz/F0wjLE=
|
||||
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
|
||||
github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||
github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w=
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.5 h1:51GqJ84u9EBATnn8rWsHNavcuRPlCLnDmvjzZVuliwY=
|
||||
github.com/machine-drivers/docker-machine-driver-vmware v0.1.5/go.mod h1:dTnTzUH3uzhMo0ddV1zRjGYWcVhQWwqiHPxz5l+HPd0=
|
||||
github.com/machine-drivers/machine v0.7.1-0.20211105063445-78a84df85426 h1:gVDPCmqwvHQ4ox/9svvnkomYJAAiV59smbPdTK4DIm4=
|
||||
|
@ -776,8 +802,10 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO
|
|||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
|
||||
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
|
||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
|
@ -801,8 +829,8 @@ github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyex
|
|||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
|
||||
github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||
github.com/miekg/dns v1.1.35 h1:oTfOaDH+mZkdcgdIjH6yBajRGtIwcwcaR+rt23ZSrJs=
|
||||
github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||
github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY=
|
||||
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
|
||||
github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
|
||||
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
|
||||
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
|
||||
|
@ -821,8 +849,8 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu
|
|||
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo=
|
||||
github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs=
|
||||
github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A=
|
||||
github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14 h1:XGy4iMfaG4r1uZKZQmEPSYSH0Nj5JJuKgPNUhWGQ08E=
|
||||
github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14/go.mod h1:aBcAEoy5u01cPAYvosR85gzSrMZ0TVVnkPytOQN+9z8=
|
||||
|
@ -842,8 +870,9 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ
|
|||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
|
||||
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
|
||||
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
|
||||
|
@ -914,6 +943,7 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9
|
|||
github.com/otiai10/mint v1.3.3 h1:7JgpsBaN0uMkyju4tbYHu0mnM55hNKVYLsXmwr15NQI=
|
||||
github.com/otiai10/mint v1.3.3/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
|
||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||
github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw=
|
||||
github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
|
||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
|
@ -941,12 +971,15 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
|
|||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
|
||||
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
|
||||
github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
|
||||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
||||
github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g=
|
||||
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
|
||||
github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
|
||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||
github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ=
|
||||
|
@ -996,15 +1029,16 @@ github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfF
|
|||
github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk=
|
||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4=
|
||||
github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE=
|
||||
github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig=
|
||||
github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM=
|
||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||
github.com/sayboras/dockerclient v1.0.0 h1:awHcxOzTP07Gl1SJAhkTCTagyJwgA6f/Az/Z4xMP2yg=
|
||||
github.com/sayboras/dockerclient v1.0.0/go.mod h1:mUmEoqt0b+uQg57s006FsvL4mybi+N5wINLDBGtaPTY=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo=
|
||||
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
|
||||
github.com/shirou/gopsutil/v3 v3.21.10 h1:flTg1DrnV/UVrBqjLgVgDJzx6lf+91rC64/dBHmO2IA=
|
||||
github.com/shirou/gopsutil/v3 v3.21.10/go.mod h1:t75NhzCZ/dYyPQjyQmrAYP6c8+LCdFANeBMdLPCNnew=
|
||||
github.com/shirou/gopsutil/v3 v3.21.12 h1:VoGxEW2hpmz0Vt3wUvHIl9fquzYLNpVpgNNB7pGJimA=
|
||||
github.com/shirou/gopsutil/v3 v3.21.12/go.mod h1:BToYZVTlSVlfazpDDYFnsVZLaoRG+g8ufT6fPQLdJzA=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
|
||||
github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
|
||||
|
@ -1020,10 +1054,10 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1
|
|||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
||||
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
|
||||
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
|
||||
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
|
||||
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
|
||||
github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY=
|
||||
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
|
||||
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||
|
@ -1034,8 +1068,9 @@ github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKv
|
|||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
|
||||
github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo=
|
||||
github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw=
|
||||
github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk=
|
||||
github.com/spf13/cobra v1.3.0 h1:R7cSvGu+Vv+qX0gW5R/85dx2kmmJT5z5NM8ifdYjdn0=
|
||||
github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4=
|
||||
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=
|
||||
|
@ -1048,8 +1083,9 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An
|
|||
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
|
||||
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
|
||||
github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns=
|
||||
github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk=
|
||||
github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4=
|
||||
github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM=
|
||||
github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk=
|
||||
github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU=
|
||||
github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8=
|
||||
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
|
||||
github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
|
@ -1077,6 +1113,7 @@ github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2bi
|
|||
github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
|
||||
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
|
||||
github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ=
|
||||
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||
|
@ -1111,6 +1148,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
|
|||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
|
||||
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
|
||||
github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
|
||||
github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
|
||||
|
@ -1121,8 +1160,11 @@ go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
|||
go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
|
||||
go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg=
|
||||
go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
|
||||
go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
|
||||
go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=
|
||||
go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs=
|
||||
go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk=
|
||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||
|
@ -1251,6 +1293,7 @@ golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hM
|
|||
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
|
||||
golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38=
|
||||
golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -1305,10 +1348,12 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v
|
|||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
|
||||
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo=
|
||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d h1:LO7XpTYMwTqxjLcGWPijK3vRXg1aWdlNOVOHRq45d7c=
|
||||
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
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=
|
||||
|
@ -1326,8 +1371,9 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ
|
|||
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1 h1:B333XXssMuKQeBwiNODx4TupZy7bf4sxFZnN2ZOcvUE=
|
||||
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg=
|
||||
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -1419,10 +1465,12 @@ golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -1441,13 +1489,18 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik=
|
||||
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
|
||||
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
|
@ -1586,8 +1639,12 @@ google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqiv
|
|||
google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=
|
||||
google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E=
|
||||
google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU=
|
||||
google.golang.org/api v0.60.0 h1:eq/zs5WPH4J9undYM9IP1O7dSr7Yh8Y0GtSCpzGzIUk=
|
||||
google.golang.org/api v0.60.0/go.mod h1:d7rl65NZAkEQ90JFzqBjcRq1TVeG5ZoGV3sSpEnnVb4=
|
||||
google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
|
||||
google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw=
|
||||
google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=
|
||||
google.golang.org/api v0.64.0/go.mod h1:931CdxA8Rm4t6zqTFGSsgwbAEZ2+GMYurbndwSimebM=
|
||||
google.golang.org/api v0.65.0 h1:MTW9c+LIBAbwoS1Gb+YV7NjFBt2f7GtAS5hIzh2NjgQ=
|
||||
google.golang.org/api v0.65.0/go.mod h1:ArYhxgGadlWmqO1IqVujw6Cs8IdD33bTmzKo2Sh+cbg=
|
||||
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=
|
||||
|
@ -1663,10 +1720,19 @@ google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEc
|
|||
google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211016002631-37fc39342514/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211021150943-2b146023228c h1:FqrtZMB5Wr+/RecOM3uPJNPfWR8Upb5hAPnt7PU6i4k=
|
||||
google.golang.org/genproto v0.0.0-20211021150943-2b146023228c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20211223182754-3ac035c7e7cb/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20220111164026-67b88f271998/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/genproto v0.0.0-20220118154757-00ab72f36ad5 h1:zzNejm+EgrbLfDZ6lu9Uud2IVvHySPl8vQzf04laR5Q=
|
||||
google.golang.org/genproto v0.0.0-20220118154757-00ab72f36ad5/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
|
||||
google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
|
@ -1696,8 +1762,11 @@ google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ
|
|||
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||
google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
|
||||
google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
|
||||
google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q=
|
||||
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
|
||||
google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
|
||||
google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
|
||||
google.golang.org/grpc v1.43.0 h1:Eeu7bZtDZ2DpRCsLhUlcrLnvYaMK1Gz86a+hMVvELmM=
|
||||
google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
|
||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
|
@ -1731,8 +1800,8 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
|||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/ini.v1 v1.63.2 h1:tGK/CyBg7SMzb60vP1M03vNZ3VDu3wGQJwn7Sxi9r3c=
|
||||
gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI=
|
||||
gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw=
|
||||
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
|
||||
|
@ -1815,8 +1884,8 @@ k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
|||
k8s.io/klog/v2 v2.3.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
||||
k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
||||
k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
|
||||
k8s.io/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw=
|
||||
k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
||||
k8s.io/klog/v2 v2.40.1 h1:P4RRucWk/lFOlDdkAr3mc7iWFkgKrZY9qZMAgek06S4=
|
||||
k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
|
||||
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
|
||||
k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM=
|
||||
k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
|
||||
|
@ -1830,6 +1899,8 @@ k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/
|
|||
k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a h1:8dYfu/Fc9Gz2rNJKB9IQRGgQOh2clmRzNIPPY1xLY5g=
|
||||
k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
libvirt.org/go/libvirt v1.7010.0 h1:DlllozmFIhjuF5DL9Z19UOcKfgFp3T0RjWtxdiBjPpM=
|
||||
libvirt.org/go/libvirt v1.7010.0/go.mod h1:1WiFE8EjZfq+FCVog+rvr1yatKbKZ9FaFMZgEqxEJqQ=
|
||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||
rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=
|
||||
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
||||
|
|
|
@ -177,6 +177,7 @@ func outputMarkdownTable(categories []plotter.Values, totals []float64, names []
|
|||
c = append(c, totalStrings)
|
||||
b := new(bytes.Buffer)
|
||||
t := tablewriter.NewWriter(b)
|
||||
t.SetAutoWrapText(false)
|
||||
t.SetHeader(headers)
|
||||
t.SetAutoFormatHeaders(false)
|
||||
t.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false})
|
||||
|
|
|
@ -22,7 +22,7 @@ if (($# < 1)); then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
VERSION_TO_INSTALL=1.17.5
|
||||
VERSION_TO_INSTALL=1.17.6
|
||||
INSTALL_PATH=${1}
|
||||
|
||||
function current_arch() {
|
||||
|
|
|
@ -0,0 +1,164 @@
|
|||
/*
|
||||
Copyright 2022 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
type operatingSystems struct {
|
||||
Darwin string `json:"darwin,omitempty"`
|
||||
Linux string `json:"linux,omitempty"`
|
||||
Windows string `json:"windows,omitempty"`
|
||||
}
|
||||
|
||||
type checksums struct {
|
||||
AMD64 *operatingSystems `json:"amd64,omitempty"`
|
||||
ARM *operatingSystems `json:"arm,omitempty"`
|
||||
ARM64 *operatingSystems `json:"arm64,omitempty"`
|
||||
PPC64LE *operatingSystems `json:"ppc64le,omitempty"`
|
||||
S390X *operatingSystems `json:"s390x,omitempty"`
|
||||
operatingSystems
|
||||
}
|
||||
|
||||
type release struct {
|
||||
Checksums checksums `json:"checksums"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type releases struct {
|
||||
Releases []release
|
||||
}
|
||||
|
||||
func (r *releases) UnmarshalJSON(p []byte) error {
|
||||
return json.Unmarshal(p, &r.Releases)
|
||||
}
|
||||
|
||||
func main() {
|
||||
releasesFile := flag.String("releases-file", "", "The path to the releases file")
|
||||
version := flag.String("version", "", "The version of minikube to create the entry for")
|
||||
flag.Parse()
|
||||
|
||||
if *releasesFile == "" || *version == "" {
|
||||
fmt.Println("All flags are required and cannot be empty")
|
||||
flag.PrintDefaults()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
r, err := getReleases(*releasesFile)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
e := createBareRelease(*version)
|
||||
|
||||
shaMap := getSHAMap(&e.Checksums)
|
||||
for os, archs := range shaMap {
|
||||
for arch, sumVars := range archs {
|
||||
sha, err := getSHA(os, arch)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
for _, sumVar := range sumVars {
|
||||
*sumVar = sha
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
r.Releases = append([]release{e}, r.Releases...)
|
||||
|
||||
if err := updateJSON(*releasesFile, r); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func getReleases(path string) (releases, error) {
|
||||
r := releases{}
|
||||
|
||||
b, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return r, fmt.Errorf("failed to read in releases file %q: %v", path, err)
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return r, fmt.Errorf("failed to unmarshal releases file: %v", err)
|
||||
}
|
||||
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func createBareRelease(name string) release {
|
||||
return release{
|
||||
Checksums: checksums{
|
||||
AMD64: &operatingSystems{},
|
||||
ARM: &operatingSystems{},
|
||||
ARM64: &operatingSystems{},
|
||||
PPC64LE: &operatingSystems{},
|
||||
S390X: &operatingSystems{},
|
||||
},
|
||||
Name: name,
|
||||
}
|
||||
}
|
||||
|
||||
func getSHAMap(c *checksums) map[string]map[string][]*string {
|
||||
return map[string]map[string][]*string{
|
||||
"darwin": {
|
||||
"amd64": {&c.AMD64.Darwin, &c.Darwin},
|
||||
"arm64": {&c.ARM64.Darwin},
|
||||
},
|
||||
"linux": {
|
||||
"amd64": {&c.AMD64.Linux, &c.Linux},
|
||||
"arm": {&c.ARM.Linux},
|
||||
"arm64": {&c.ARM64.Linux},
|
||||
"ppc64le": {&c.PPC64LE.Linux},
|
||||
"s390x": {&c.S390X.Linux},
|
||||
},
|
||||
"windows": {
|
||||
"amd64": {&c.AMD64.Windows, &c.Windows},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func getSHA(operatingSystem, arch string) (string, error) {
|
||||
if operatingSystem == "windows" {
|
||||
arch += ".exe"
|
||||
}
|
||||
filePath := fmt.Sprintf("out/minikube-%s-%s.sha256", operatingSystem, arch)
|
||||
b, err := os.ReadFile(filePath)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to read file %q: %v", filePath, err)
|
||||
}
|
||||
// trim off new line character
|
||||
return string(b[:len(b)-1]), nil
|
||||
}
|
||||
|
||||
func updateJSON(path string, r releases) error {
|
||||
b, err := json.MarshalIndent(r.Releases, "", " ")
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to marshal releases to JSON: %v", err)
|
||||
}
|
||||
|
||||
if err := os.WriteFile(path, b, 0644); err != nil {
|
||||
return fmt.Errorf("failed to write JSON to file: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -24,11 +24,12 @@
|
|||
|
||||
set -e
|
||||
|
||||
export TAGNAME=v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}
|
||||
./hack/jenkins/installers/check_install_golang.sh "/usr/local"
|
||||
|
||||
export DARWIN_SHA256=$(cat out/minikube-darwin-amd64.sha256)
|
||||
export LINUX_SHA256=$(cat out/minikube-linux-amd64.sha256)
|
||||
export WINDOWS_SHA256=$(cat out/minikube-windows-amd64.exe.sha256)
|
||||
# Get directory of script.
|
||||
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
|
||||
export TAGNAME=v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}
|
||||
|
||||
# Update releases.json w/ new release in gcs and github
|
||||
git config user.name "minikube-bot"
|
||||
|
@ -39,8 +40,7 @@ git checkout -b "jenkins-releases.json-${TAGNAME}"
|
|||
git status
|
||||
|
||||
if ! [[ "${VERSION_BUILD}" =~ ^[0-9]+$ ]]; then
|
||||
#Prepends the new version to the release-beta.json file
|
||||
sed -i "0,/{/s/{/{\n \"name\": \"${TAGNAME}\",\n \"checksums\": {\n \"darwin\": \"${DARWIN_SHA256}\",\n \"linux\": \"${LINUX_SHA256}\",\n \"windows\": \"${WINDOWS_SHA256}\"\n }\n },\n {"/ deploy/minikube/releases-beta.json
|
||||
go run "${DIR}/release_update_releases_json.go" --releases-file deploy/minikube/releases-beta.json --version "$TAGNAME"
|
||||
|
||||
git add -A
|
||||
git commit -m "Update releases-beta.json to include ${TAGNAME}"
|
||||
|
@ -53,8 +53,7 @@ if ! [[ "${VERSION_BUILD}" =~ ^[0-9]+$ ]]; then
|
|||
# Upload file to GCS so that minikube can see the new version
|
||||
gsutil cp deploy/minikube/releases-beta.json gs://minikube/releases-beta.json
|
||||
else
|
||||
#Prepends the new version to the release.json file
|
||||
sed -i "0,/{/s/{/{\n \"name\": \"${TAGNAME}\",\n \"checksums\": {\n \"darwin\": \"${DARWIN_SHA256}\",\n \"linux\": \"${LINUX_SHA256}\",\n \"windows\": \"${WINDOWS_SHA256}\"\n }\n },\n {"/ deploy/minikube/releases.json
|
||||
go run "${DIR}/release_update_releases_json.go" --releases-file deploy/minikube/releases.json --version "$TAGNAME"
|
||||
|
||||
#Update the front page of our documentation
|
||||
now=$(date +"%b %d, %Y")
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="period_display"></div>
|
||||
<div id="chart_div"></div>
|
||||
<div id="data_date_container" style="text-align: right; display: none">
|
||||
Data collected on <span id="data_date"></span>
|
||||
|
@ -33,4 +34,4 @@
|
|||
el.setAttribute('src', `flake_chart.js?t=${Math.random()}`);
|
||||
document.head.appendChild(el);
|
||||
</script>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -68,8 +68,9 @@ const testStatus = {
|
|||
SKIPPED: "Skipped"
|
||||
}
|
||||
|
||||
async function loadTestData() {
|
||||
const response = await fetch("data.csv", {
|
||||
async function loadTestData(period) {
|
||||
const file = period === "last90" ? "data-last-90.csv" : "data.csv";
|
||||
const response = await fetch(file, {
|
||||
headers: {
|
||||
"Cache-Control": "max-age=3600,must-revalidate",
|
||||
}
|
||||
|
@ -664,6 +665,9 @@ function displayEnvironmentChart(testData, environmentName) {
|
|||
}
|
||||
|
||||
async function init() {
|
||||
const query = parseUrlQuery(window.location.search);
|
||||
const desiredTest = query.test, desiredEnvironment = query.env || "", desiredPeriod = query.period || "";
|
||||
|
||||
google.charts.load('current', { 'packages': ['corechart'] });
|
||||
let testData, responseDate;
|
||||
try {
|
||||
|
@ -671,16 +675,13 @@ async function init() {
|
|||
// Only store the test data (at index 1) into `testData`.
|
||||
[testData, responseDate] = (await Promise.all([
|
||||
new Promise(resolve => google.charts.setOnLoadCallback(resolve)),
|
||||
loadTestData()
|
||||
loadTestData(desiredPeriod)
|
||||
]))[1];
|
||||
} catch (err) {
|
||||
displayError(err);
|
||||
return;
|
||||
}
|
||||
|
||||
const query = parseUrlQuery(window.location.search);
|
||||
const desiredTest = query.test, desiredEnvironment = query.env || "";
|
||||
|
||||
if (desiredTest === undefined) {
|
||||
displayEnvironmentChart(testData, desiredEnvironment);
|
||||
} else {
|
||||
|
@ -688,6 +689,19 @@ async function init() {
|
|||
}
|
||||
document.querySelector('#data_date_container').style.display = 'block';
|
||||
document.querySelector('#data_date').innerText = responseDate.toLocaleString();
|
||||
let periodDisplay, newURL;
|
||||
|
||||
// we're going to take the current page URL (desiredPeriod) and modify it to create the link to the other page
|
||||
if (desiredPeriod === 'last90') {
|
||||
// remove '&period=last90' to make a link to the all-time data page
|
||||
otherPeriodURL = window.location.href.replace(/&?period=last90/gi, '');
|
||||
periodDisplay = `Currently viewing last 90 days of data: <a href="` + otherPeriodURL + `">View all-time data</a>`;
|
||||
} else {
|
||||
// add '&period=last90' to make a link to the last 90 days page
|
||||
otherPeriodURL = window.location.href + '&period=last90';
|
||||
periodDisplay = `Currently viewing all-time data: <a href="` + otherPeriodURL + `">View last 90 days of data</a>`;
|
||||
}
|
||||
document.querySelector('#period_display').innerHTML = periodDisplay;
|
||||
}
|
||||
|
||||
init();
|
||||
|
|
|
@ -0,0 +1,109 @@
|
|||
/*
|
||||
Copyright 2021 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
dataFile := flag.String("source", "", "The source of the csv file to process")
|
||||
dataLast90File := flag.String("target", "", "The target of the csv file containing last 90 days of data")
|
||||
flag.Parse()
|
||||
|
||||
if *dataFile == "" || *dataLast90File == "" {
|
||||
fmt.Println("All flags are required and cannot be empty")
|
||||
flag.PrintDefaults()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
data, err := os.Open(*dataFile)
|
||||
if err != nil {
|
||||
log.Fatalf("failed opening source file %q: %v", *dataFile, err)
|
||||
}
|
||||
|
||||
dataLast90, err := os.OpenFile(*dataLast90File, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
log.Fatalf("failed creating target file %q: %v", *dataLast90File, err)
|
||||
}
|
||||
|
||||
dw := bufio.NewWriter(dataLast90)
|
||||
|
||||
cutoffDate := time.Now().AddDate(0, 0, -90)
|
||||
|
||||
// to save space we don't repeat duplicate back to back lines if they have the same value
|
||||
// for example:
|
||||
// 2021-09-10,TestOffline,Passed
|
||||
// ,TestForceSystemd,
|
||||
// So the date for line two will be empty, so we need to remember the last line that had a date if it's within last 90 days or not
|
||||
validDate := true
|
||||
|
||||
s := bufio.NewScanner(data)
|
||||
for s.Scan() {
|
||||
line := s.Text()
|
||||
stringDate := strings.Split(line, ",")[1]
|
||||
|
||||
// copy headers
|
||||
if stringDate == "Test Date" {
|
||||
write(dw, line)
|
||||
continue
|
||||
}
|
||||
|
||||
if stringDate == "" {
|
||||
if validDate {
|
||||
write(dw, line)
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
testDate, err := time.Parse("2006-01-02", stringDate)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to parse date %q: %v", stringDate, err)
|
||||
}
|
||||
if testDate.Before(cutoffDate) {
|
||||
validDate = false
|
||||
continue
|
||||
}
|
||||
validDate = true
|
||||
write(dw, line)
|
||||
}
|
||||
|
||||
if err := dw.Flush(); err != nil {
|
||||
log.Fatalf("failed to flush data writer: %v", err)
|
||||
}
|
||||
if err := s.Err(); err != nil {
|
||||
log.Fatalf("scanner had an error: %v", err)
|
||||
}
|
||||
if err := data.Close(); err != nil {
|
||||
log.Fatalf("failed to close source file: %v", err)
|
||||
}
|
||||
if err := dataLast90.Close(); err != nil {
|
||||
log.Fatalf("failed to close target file: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func write(dw *bufio.Writer, line string) {
|
||||
if _, err := dw.WriteString(line + "\n"); err != nil {
|
||||
log.Fatalf("failed to write to data writer: %v", err)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
#!/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 -eux -o pipefail
|
||||
|
||||
# Get directory of script.
|
||||
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
|
||||
"${DIR}/../../installers/check_install_golang.sh" || true
|
||||
|
||||
DATA_CSV=$(mktemp)
|
||||
DATA_LAST_90_CSV=$(mktemp)
|
||||
|
||||
gsutil cp gs://minikube-flake-rate/data.csv "$DATA_CSV"
|
||||
|
||||
go run "${DIR}/process_last_90.go" --source "$DATA_CSV" --target "$DATA_LAST_90_CSV"
|
||||
|
||||
gsutil cp "$DATA_LAST_90_CSV" gs://minikube-flake-rate/data-last-90.csv
|
||||
|
||||
rm "$DATA_CSV" "$DATA_LAST_90_CSV"
|
|
@ -83,6 +83,7 @@ if [[ "${MINIKUBE_LOCATION}" == "master" ]]; then
|
|||
SUMMARY="${BUCKET_PATH}/${ENVIRONMENT}_summary.json"
|
||||
"${DIR}/upload_tests.sh" "${SUMMARY}" || true
|
||||
done
|
||||
"${DIR}/process_last_90/process_last_90.sh"
|
||||
else
|
||||
"${DIR}/report_flakes.sh" "${MINIKUBE_LOCATION}" "${ROOT_JOB_ID}" "${FINISHED_LIST}"
|
||||
fi
|
||||
|
|
|
@ -122,7 +122,7 @@ func generateTarball(kubernetesVersion, containerRuntime, tarballFilename string
|
|||
|
||||
sm := sysinit.New(runner)
|
||||
|
||||
if err := bsutil.TransferBinaries(kcfg, runner, sm); err != nil {
|
||||
if err := bsutil.TransferBinaries(kcfg, runner, sm, ""); err != nil {
|
||||
return errors.Wrap(err, "transferring k8s binaries")
|
||||
}
|
||||
// Create image tarball
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"runtime/debug"
|
||||
|
@ -47,6 +48,8 @@ var (
|
|||
noUpload = flag.Bool("no-upload", false, "Do not upload tarballs to GCS")
|
||||
force = flag.Bool("force", false, "Generate the preload tarball even if it's already exists")
|
||||
limit = flag.Int("limit", 0, "Limit the number of tarballs to generate")
|
||||
armUpload = flag.Bool("arm-upload", false, "Upload the arm64 preload tarballs to GCS")
|
||||
armPreloadsDir = flag.String("arm-preloads-dir", "artifacts", "Directory containing the arm64 preload tarballs")
|
||||
)
|
||||
|
||||
type preloadCfg struct {
|
||||
|
@ -61,6 +64,13 @@ func (p preloadCfg) String() string {
|
|||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
if *armUpload {
|
||||
if err := uploadArmTarballs(*armPreloadsDir); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// used by pkg/minikube/download.PreloadExists()
|
||||
viper.Set("preload", "true")
|
||||
|
||||
|
@ -146,7 +156,7 @@ func makePreload(cfg preloadCfg) error {
|
|||
fmt.Printf("skip upload of %q\n", tf)
|
||||
return nil
|
||||
}
|
||||
if err := uploadTarball(tf); err != nil {
|
||||
if err := uploadTarball(tf, kv); err != nil {
|
||||
return errors.Wrap(err, fmt.Sprintf("uploading tarball for k8s version %s with %s", kv, cr))
|
||||
}
|
||||
return nil
|
||||
|
|
|
@ -20,15 +20,16 @@ import (
|
|||
"fmt"
|
||||
"os/exec"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/minikube/pkg/minikube/download"
|
||||
)
|
||||
|
||||
func uploadTarball(tarballFilename string) error {
|
||||
func uploadTarball(tarballFilename, k8sVer string) error {
|
||||
// Upload tarball to GCS
|
||||
hostPath := path.Join("out/", tarballFilename)
|
||||
gcsDest := fmt.Sprintf("gs://%s", download.PreloadBucket)
|
||||
gcsDest := fmt.Sprintf("gs://%s/%s/%s/", download.PreloadBucket, download.PreloadVersion, k8sVer)
|
||||
cmd := exec.Command("gsutil", "cp", hostPath, gcsDest)
|
||||
fmt.Printf("Running: %v\n", cmd.Args)
|
||||
if output, err := cmd.CombinedOutput(); err != nil {
|
||||
|
@ -36,3 +37,38 @@ func uploadTarball(tarballFilename string) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func uploadArmTarballs(preloadsDir string) error {
|
||||
b, err := exec.Command("ls", preloadsDir).CombinedOutput()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to read files: %v\n%s", err, string(b))
|
||||
}
|
||||
files := strings.Split(string(b), "\n")
|
||||
if len(files) == 0 {
|
||||
return fmt.Errorf("no preload files found")
|
||||
}
|
||||
// remove trailing whitespace entry
|
||||
files = files[:len(files)-1]
|
||||
for _, file := range files {
|
||||
preloadVersion, k8sVersion := getVersionsFromFilename(file)
|
||||
hostPath := path.Join(preloadsDir, file)
|
||||
gcsDest := fmt.Sprintf("gs://%s/%s/%s/", download.PreloadBucket, preloadVersion, k8sVersion)
|
||||
cmd := exec.Command("gsutil", "cp", hostPath, gcsDest)
|
||||
fmt.Printf("Running: %v\n", cmd.Args)
|
||||
if output, err := cmd.CombinedOutput(); err != nil {
|
||||
return errors.Wrapf(err, "uploading %s to GCS bucket: %v\n%s", hostPath, err, string(output))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getVersionsFromFilename(filename string) (string, string) {
|
||||
parts := strings.Split(filename, "-")
|
||||
preloadVersion := parts[3]
|
||||
k8sVersion := parts[4]
|
||||
// this check is for "-rc" and "-beta" versions that would otherwise be stripped off
|
||||
if len(parts) == 9 {
|
||||
k8sVersion += fmt.Sprintf("-%s", parts[5])
|
||||
}
|
||||
return preloadVersion, k8sVersion
|
||||
}
|
||||
|
|
|
@ -136,10 +136,13 @@ func formatKubeadmImageList(version, data string) (string, error) {
|
|||
lines := strings.Split(data, "\n")
|
||||
for _, line := range lines {
|
||||
imageTag := strings.Split(line, ":")
|
||||
if len(imageTag) == 2 {
|
||||
// removing the repo from image name
|
||||
imageName := strings.Split(imageTag[0], "/")
|
||||
imageTag[0] = strings.Join(imageName[1:], "/")
|
||||
if len(imageTag) != 2 {
|
||||
continue
|
||||
}
|
||||
// removing the repo from image name
|
||||
imageName := strings.Split(imageTag[0], "/")
|
||||
imageTag[0] = strings.Join(imageName[1:], "/")
|
||||
if !isKubeImage(imageTag[0]) {
|
||||
templateData[majorMinorVersion][imageTag[0]] = imageTag[1]
|
||||
}
|
||||
}
|
||||
|
@ -159,6 +162,16 @@ func formatKubeadmImageList(version, data string) (string, error) {
|
|||
return bytesBuffer.String(), nil
|
||||
}
|
||||
|
||||
func isKubeImage(name string) bool {
|
||||
kubeImages := map[string]bool{
|
||||
"kube-apiserver": true,
|
||||
"kube-controller-manager": true,
|
||||
"kube-proxy": true,
|
||||
"kube-scheduler": true,
|
||||
}
|
||||
return kubeImages[name]
|
||||
}
|
||||
|
||||
func downloadFile(url, fileName string) error {
|
||||
file, err := os.Create(fileName)
|
||||
if err != nil {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,14 +33,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:12345
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: "10.244.0.0/16"
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,14 +33,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: "192.168.32.0/20"
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,14 +33,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: "10.244.0.0/16"
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -39,14 +39,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: "10.244.0.0/16"
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,14 +33,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: "10.244.0.0/16"
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,14 +33,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: "10.244.0.0/16"
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,14 +33,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: minikube.local
|
||||
podSubnet: "10.244.0.0/16"
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
imageRepository: test/repo
|
||||
apiServer:
|
||||
|
@ -34,14 +34,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: "10.244.0.0/16"
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -36,14 +36,12 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
kubernetesVersion: v1.19.0
|
||||
kubernetesVersion: v1.23.0
|
||||
networking:
|
||||
dnsDomain: cluster.local
|
||||
podSubnet: "10.244.0.0/16"
|
|
@ -57,55 +57,55 @@ var (
|
|||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/containerd-api-port.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/containerd-api-port.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/containerd-api-port.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/containerd-pod-network-cidr.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/containerd-pod-network-cidr.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/containerd-pod-network-cidr.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/containerd.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/containerd.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/containerd.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/crio-options-gates.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/crio-options-gates.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/crio-options-gates.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/crio.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/crio.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/crio.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/default.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/default.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/default.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/dns.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/dns.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/dns.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/image-repository.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/image-repository.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/image-repository.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
},
|
||||
"pkg/minikube/bootstrapper/bsutil/testdata/{{.LatestVersionMM}}/options.yaml": {
|
||||
Content: update.Loadf("templates/v1beta2/options.yaml"),
|
||||
Content: update.Loadf("templates/v1beta3/options.yaml"),
|
||||
Replace: map[string]string{
|
||||
`kubernetesVersion:.*`: `kubernetesVersion: {{.LatestVersionP0}}`,
|
||||
},
|
||||
|
|
|
@ -34,24 +34,20 @@ if ! [[ -x "${DIR}/pullsheet" ]]; then
|
|||
install_pullsheet
|
||||
fi
|
||||
|
||||
git fetch --tags -f
|
||||
git pull https://github.com/kubernetes/minikube.git master --tags
|
||||
|
||||
tags_to_generate=${1:-1}
|
||||
|
||||
# 1) Fetch latest tags (https://github.com/kubernetes/minikube/issues/12561).
|
||||
# 2) Get tags.
|
||||
# 3) Filter out beta tags.
|
||||
# 4) Parse tag name into its version numbers.
|
||||
# 5) Sort by ascending version numbers.
|
||||
# 6) Reform tag name from version numbers.
|
||||
# 7) Pair up current and previous tags. Format: (previous tag, current tag)
|
||||
# 8) Format command to get tag dates.
|
||||
# 9) Execute command to get dates of previous and current tag. Format: (current tag, prev date, current date)
|
||||
# 10) Add negative line numbers to each tag. Format: (negative index, current tag, prev date, current date)
|
||||
# 1) Get tags.
|
||||
# 2) Filter out beta tags.
|
||||
# 3) Parse tag name into its version numbers.
|
||||
# 4) Sort by ascending version numbers.
|
||||
# 5) Reform tag name from version numbers.
|
||||
# 6) Pair up current and previous tags. Format: (previous tag, current tag)
|
||||
# 7) Format command to get tag dates.
|
||||
# 8) Execute command to get dates of previous and current tag. Format: (current tag, prev date, current date)
|
||||
# 9) Add negative line numbers to each tag. Format: (negative index, current tag, prev date, current date)
|
||||
# - Negative line numbers are used since entries are sorted in descending order.
|
||||
# 11) Take most recent $tags_to_generate tags.
|
||||
tags_with_range=$(
|
||||
git fetch --tags -f \
|
||||
git --no-pager tag \
|
||||
| grep -v -e "beta" \
|
||||
| sed -r "s/v([0-9]*)\.([0-9]*)\.([0-9]*)/\1 \2 \3/" \
|
||||
|
@ -60,8 +56,7 @@ tags_with_range=$(
|
|||
| sed -n -r "x; G; s/\n/ /; p"\
|
||||
| sed -n -r "s/([v.0-9]+) ([v.0-9]+)/-c '{ echo -n \2; git log -1 --pretty=format:\" %as \" \1; git log -1 --pretty=format:\"%as\" \2; echo;}'/p" \
|
||||
| xargs -L 1 bash \
|
||||
| sed "=" | sed -r "N;s/\n/ /;s/^/-/" \
|
||||
| tail -n "$tags_to_generate")
|
||||
| sed "=" | sed -r "N;s/\n/ /;s/^/-/")
|
||||
|
||||
destination="$DIR/../site/content/en/docs/contrib/leaderboard"
|
||||
mkdir -p "$destination"
|
||||
|
@ -79,6 +74,10 @@ function cleanup_token() {
|
|||
trap cleanup_token EXIT
|
||||
|
||||
while read -r tag_index tag_name tag_start tag_end; do
|
||||
FILE="site/content/en/docs/contrib/leaderboard/$tag_name.html"
|
||||
if [[ -f "$FILE" ]]; then
|
||||
continue
|
||||
fi
|
||||
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"
|
||||
|
|
|
@ -99,6 +99,11 @@ var Addons = []*Addon{
|
|||
set: SetBool,
|
||||
callbacks: []setFn{EnableOrDisableAddon},
|
||||
},
|
||||
{
|
||||
name: "kong",
|
||||
set: SetBool,
|
||||
callbacks: []setFn{EnableOrDisableAddon},
|
||||
},
|
||||
{
|
||||
name: "kubevirt",
|
||||
set: SetBool,
|
||||
|
|
|
@ -426,7 +426,6 @@ func (d *Driver) extractKernel(isoPath string) error {
|
|||
}{
|
||||
{"/boot/bzimage", "bzimage"},
|
||||
{"/boot/initrd", "initrd"},
|
||||
{"/grub/grub.cfg", "grub.cfg"},
|
||||
} {
|
||||
fullDestPath := d.ResolveStorePath(f.destPath)
|
||||
if err := ExtractFile(isoPath, f.pathInIso, fullDestPath); err != nil {
|
||||
|
|
|
@ -554,6 +554,30 @@ func ListContainersByLabel(ctx context.Context, ociBin string, label string, war
|
|||
return names, err
|
||||
}
|
||||
|
||||
// ListImagesRepository returns all the images names
|
||||
func ListImagesRepository(ctx context.Context, ociBin string) ([]string, error) {
|
||||
rr, err := runCmd(exec.CommandContext(ctx, ociBin, "images", "--format", "{{.Repository}}:{{.Tag}}"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s := bufio.NewScanner(bytes.NewReader(rr.Stdout.Bytes()))
|
||||
var names []string
|
||||
for s.Scan() {
|
||||
n := strings.TrimSpace(s.Text())
|
||||
if n != "" {
|
||||
// add docker.io prefix to image name
|
||||
if !strings.Contains(n, ".io/") {
|
||||
n = "docker.io/" + n
|
||||
}
|
||||
names = append(names, n)
|
||||
}
|
||||
}
|
||||
if err := s.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return names, nil
|
||||
}
|
||||
|
||||
// PointToHostDockerDaemon will unset env variables that point to docker inside minikube
|
||||
// to make sure it points to the docker daemon installed by user.
|
||||
func PointToHostDockerDaemon() error {
|
||||
|
|
|
@ -24,13 +24,13 @@ import (
|
|||
|
||||
const (
|
||||
// Version is the current version of kic
|
||||
Version = "v0.0.28-1640212998-13227"
|
||||
Version = "v0.0.29"
|
||||
// SHA of the kic base image
|
||||
baseImageSHA = "be897edc9ed473a9678010f390a0092f488f6a1c30865f571c3b6388f9f56f9b"
|
||||
// The name of the GCR kicbase repository
|
||||
gcrRepo = "gcr.io/k8s-minikube/kicbase-builds"
|
||||
gcrRepo = "gcr.io/k8s-minikube/kicbase"
|
||||
// The name of the Dockerhub kicbase repository
|
||||
dockerhubRepo = "docker.io/kicbase/build"
|
||||
dockerhubRepo = "docker.io/kicbase/stable"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
@ -25,8 +25,8 @@ import (
|
|||
"text/template"
|
||||
|
||||
"github.com/docker/machine/libmachine/log"
|
||||
"github.com/libvirt/libvirt-go"
|
||||
"github.com/pkg/errors"
|
||||
"libvirt.org/go/libvirt"
|
||||
)
|
||||
|
||||
func (d *Driver) getDomain() (*libvirt.Domain, *libvirt.Connect, error) {
|
||||
|
|
|
@ -29,10 +29,10 @@ import (
|
|||
"github.com/docker/machine/libmachine/drivers"
|
||||
"github.com/docker/machine/libmachine/log"
|
||||
"github.com/docker/machine/libmachine/state"
|
||||
"github.com/libvirt/libvirt-go"
|
||||
"github.com/pkg/errors"
|
||||
pkgdrivers "k8s.io/minikube/pkg/drivers"
|
||||
"k8s.io/minikube/pkg/util/retry"
|
||||
"libvirt.org/go/libvirt"
|
||||
)
|
||||
|
||||
// Driver is the machine driver for KVM
|
||||
|
|
|
@ -27,10 +27,10 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/docker/machine/libmachine/log"
|
||||
libvirt "github.com/libvirt/libvirt-go"
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/minikube/pkg/network"
|
||||
"k8s.io/minikube/pkg/util/retry"
|
||||
"libvirt.org/go/libvirt"
|
||||
)
|
||||
|
||||
// Replace with hardcoded range with CIDR
|
||||
|
@ -478,9 +478,19 @@ func ifListFromAPI(conn *libvirt.Connect, domain string) ([]libvirt.DomainInterf
|
|||
}
|
||||
defer func() { _ = dom.Free() }()
|
||||
|
||||
ifs, err := dom.ListAllInterfaceAddresses(libvirt.DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed listing network interface addresses of domain %s: %w", domain, err)
|
||||
ifs, err := dom.ListAllInterfaceAddresses(libvirt.DOMAIN_INTERFACE_ADDRESSES_SRC_ARP)
|
||||
if ifs == nil {
|
||||
if err != nil {
|
||||
log.Debugf("failed listing network interface addresses of domain %s(source=arp): %w", domain, err)
|
||||
} else {
|
||||
log.Debugf("No network interface addresses found for domain %s(source=arp)", domain)
|
||||
}
|
||||
log.Debugf("trying to list again with source=lease")
|
||||
|
||||
ifs, err = dom.ListAllInterfaceAddresses(libvirt.DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed listing network interface addresses of domain %s(source=lease): %w", domain, err)
|
||||
}
|
||||
}
|
||||
|
||||
return ifs, nil
|
||||
|
|
|
@ -254,7 +254,7 @@ var Addons = map[string]*Addon{
|
|||
"istio-operator.yaml",
|
||||
"0640"),
|
||||
}, false, "istio-provisioner", "third-party (istio)", map[string]string{
|
||||
"IstioOperator": "istio/operator:1.5.0@sha256:25a6398ed4996a5313767ceb63768d503c266f63506ad3074b30eef6b5b5167e",
|
||||
"IstioOperator": "istio/operator:1.12.2@sha256:42c7609872882cb88728a1592561b4046dac6d05b6002cbdc815b84c86a24f08",
|
||||
}, nil),
|
||||
"istio": NewAddon([]*BinAsset{
|
||||
MustBinAsset(addons.IstioAssets,
|
||||
|
@ -263,6 +263,16 @@ var Addons = map[string]*Addon{
|
|||
"istio-default-profile.yaml",
|
||||
"0640"),
|
||||
}, false, "istio", "third-party (istio)", nil, nil),
|
||||
"kong": NewAddon([]*BinAsset{
|
||||
MustBinAsset(addons.KongAssets,
|
||||
"kong/kong-ingress-controller.yaml.tmpl",
|
||||
vmpath.GuestAddonsDir,
|
||||
"kong-ingress-controller.yaml",
|
||||
"0640"),
|
||||
}, false, "kong", "third-party (Kong HQ)", map[string]string{
|
||||
"Kong": "kong:2.7@sha256:4d3e93207305ace881fe9e95ac27717b6fbdd9e0ec1873c34e94908a4f4c9335",
|
||||
"KongIngress": "kong/kubernetes-ingress-controller:2.1.1@sha256:60e4102ab2da7f61e9c478747f0762d06a6166b5f300526b237ed7354c3cb4c8",
|
||||
}, nil),
|
||||
"kubevirt": NewAddon([]*BinAsset{
|
||||
MustBinAsset(addons.KubevirtAssets,
|
||||
"kubevirt/pod.yaml.tmpl",
|
||||
|
|
|
@ -38,7 +38,7 @@ import (
|
|||
)
|
||||
|
||||
// TransferBinaries transfers all required Kubernetes binaries
|
||||
func TransferBinaries(cfg config.KubernetesConfig, c command.Runner, sm sysinit.Manager) error {
|
||||
func TransferBinaries(cfg config.KubernetesConfig, c command.Runner, sm sysinit.Manager, binariesURL string) error {
|
||||
ok, err := binariesExist(cfg, c)
|
||||
if err == nil && ok {
|
||||
klog.Info("Found k8s binaries, skipping transfer")
|
||||
|
@ -56,7 +56,7 @@ func TransferBinaries(cfg config.KubernetesConfig, c command.Runner, sm sysinit.
|
|||
for _, name := range constants.KubernetesReleaseBinaries {
|
||||
name := name
|
||||
g.Go(func() error {
|
||||
src, err := download.Binary(name, cfg.KubernetesVersion, "linux", runtime.GOARCH)
|
||||
src, err := download.Binary(name, cfg.KubernetesVersion, "linux", runtime.GOARCH, binariesURL)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "downloading %s", name)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
Copyright 2022 The Kubernetes Authors All rights reserved.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package ktmpl
|
||||
|
||||
import "text/template"
|
||||
|
||||
// V1Beta3 is kubeadm config template for Kubernetes v1.23.0+
|
||||
var V1Beta3 = template.Must(template.New("configTmpl-v1beta3").Funcs(template.FuncMap{
|
||||
"printMapInOrder": printMapInOrder,
|
||||
}).Parse(`apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: {{.AdvertiseAddress}}
|
||||
bindPort: {{.APIServerPort}}
|
||||
bootstrapTokens:
|
||||
- groups:
|
||||
- system:bootstrappers:kubeadm:default-node-token
|
||||
ttl: 24h0m0s
|
||||
usages:
|
||||
- signing
|
||||
- authentication
|
||||
nodeRegistration:
|
||||
criSocket: {{if .CRISocket}}{{.CRISocket}}{{else}}/var/run/dockershim.sock{{end}}
|
||||
name: "{{.NodeName}}"
|
||||
kubeletExtraArgs:
|
||||
node-ip: {{.NodeIP}}
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
{{ if .ImageRepository}}imageRepository: {{.ImageRepository}}
|
||||
{{end}}{{range .ComponentOptions}}{{.Component}}:
|
||||
{{- range $k, $v := .Pairs }}
|
||||
{{$k}}: {{$v}}
|
||||
{{- end}}
|
||||
extraArgs:
|
||||
{{- range $i, $val := printMapInOrder .ExtraArgs ": " }}
|
||||
{{$val}}
|
||||
{{- end}}
|
||||
{{end -}}
|
||||
{{if .FeatureArgs}}featureGates:
|
||||
{{range $i, $val := .FeatureArgs}}{{$i}}: {{$val}}
|
||||
{{end -}}{{end -}}
|
||||
certificatesDir: {{.CertDir}}
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: {{.ControlPlaneAddress}}:{{.APIServerPort}}
|
||||
etcd:
|
||||
local:
|
||||
dataDir: {{.EtcdDataDir}}
|
||||
extraArgs:
|
||||
proxy-refresh-interval: "70000"
|
||||
{{- range $i, $val := printMapInOrder .EtcdExtraArgs ": " }}
|
||||
{{$val}}
|
||||
{{- end}}
|
||||
kubernetesVersion: {{.KubernetesVersion}}
|
||||
networking:
|
||||
dnsDomain: {{if .DNSDomain}}{{.DNSDomain}}{{else}}cluster.local{{end}}
|
||||
podSubnet: "{{.PodSubnet }}"
|
||||
serviceSubnet: {{.ServiceCIDR}}
|
||||
---
|
||||
apiVersion: kubelet.config.k8s.io/v1beta1
|
||||
kind: KubeletConfiguration
|
||||
authentication:
|
||||
x509:
|
||||
clientCAFile: {{.ClientCAFile}}
|
||||
cgroupDriver: {{.CgroupDriver}}
|
||||
clusterDomain: "{{if .DNSDomain}}{{.DNSDomain}}{{else}}cluster.local{{end}}"
|
||||
# disable disk resource management by default
|
||||
imageGCHighThresholdPercent: 100
|
||||
evictionHard:
|
||||
nodefs.available: "0%"
|
||||
nodefs.inodesFree: "0%"
|
||||
imagefs.available: "0%"
|
||||
failSwapOn: false
|
||||
staticPodPath: {{.StaticPodPath}}
|
||||
---
|
||||
apiVersion: kubeproxy.config.k8s.io/v1alpha1
|
||||
kind: KubeProxyConfiguration
|
||||
clusterCIDR: "{{.PodSubnet }}"
|
||||
metricsBindAddress: 0.0.0.0:10249
|
||||
conntrack:
|
||||
maxPerCore: 0
|
||||
# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_established"
|
||||
tcpEstablishedTimeout: 0s
|
||||
# Skip setting "net.netfilter.nf_conntrack_tcp_timeout_close"
|
||||
tcpCloseWaitTimeout: 0s
|
||||
{{- range $i, $val := printMapInOrder .KubeProxyOptions ": " }}
|
||||
{{$val}}
|
||||
{{- end}}
|
||||
`))
|
|
@ -150,6 +150,11 @@ func GenerateKubeadmYAML(cc config.ClusterConfig, n config.Node, r cruntime.Mana
|
|||
if version.GTE(semver.MustParse("1.17.0")) {
|
||||
configTmpl = ktmpl.V1Beta2
|
||||
}
|
||||
|
||||
// v1beta3 isn't required until v1.23.
|
||||
if version.GTE(semver.MustParse("1.23.0")) {
|
||||
configTmpl = ktmpl.V1Beta3
|
||||
}
|
||||
klog.Infof("kubeadm options: %+v", opts)
|
||||
if err := configTmpl.Execute(&b, opts); err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,8 +33,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:12345
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,8 +33,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,8 +33,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -39,8 +39,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,8 +33,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,8 +33,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -33,8 +33,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
imageRepository: test/repo
|
||||
apiServer:
|
||||
|
@ -34,8 +34,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: InitConfiguration
|
||||
localAPIEndpoint:
|
||||
advertiseAddress: 1.1.1.1
|
||||
|
@ -17,7 +17,7 @@ nodeRegistration:
|
|||
node-ip: 1.1.1.1
|
||||
taints: []
|
||||
---
|
||||
apiVersion: kubeadm.k8s.io/v1beta2
|
||||
apiVersion: kubeadm.k8s.io/v1beta3
|
||||
kind: ClusterConfiguration
|
||||
apiServer:
|
||||
certSANs: ["127.0.0.1", "localhost", "1.1.1.1"]
|
||||
|
@ -36,8 +36,6 @@ scheduler:
|
|||
certificatesDir: /var/lib/minikube/certs
|
||||
clusterName: mk
|
||||
controlPlaneEndpoint: control-plane.minikube.internal:8443
|
||||
dns:
|
||||
type: CoreDNS
|
||||
etcd:
|
||||
local:
|
||||
dataDir: /var/lib/minikube/etcd
|
||||
|
|
|
@ -649,14 +649,15 @@ func (k *Bootstrapper) GenerateToken(cc config.ClusterConfig) (string, error) {
|
|||
joinCmd = fmt.Sprintf("%s --ignore-preflight-errors=all", strings.TrimSpace(joinCmd))
|
||||
|
||||
// avoid "Found multiple CRI sockets, please use --cri-socket to select one: /var/run/dockershim.sock, /var/run/crio/crio.sock" error
|
||||
cr, err := cruntime.New(cruntime.Config{Type: cc.KubernetesConfig.ContainerRuntime, Runner: k.c, Socket: cc.KubernetesConfig.CRISocket})
|
||||
version, err := util.ParseKubernetesVersion(cc.KubernetesConfig.KubernetesVersion)
|
||||
if err != nil {
|
||||
return "", errors.Wrap(err, "parsing Kubernetes version")
|
||||
}
|
||||
cr, err := cruntime.New(cruntime.Config{Type: cc.KubernetesConfig.ContainerRuntime, Runner: k.c, Socket: cc.KubernetesConfig.CRISocket, KubernetesVersion: version})
|
||||
if err != nil {
|
||||
klog.Errorf("cruntime: %v", err)
|
||||
}
|
||||
sp := cr.SocketPath()
|
||||
if sp == "" {
|
||||
sp = kconst.DefaultDockerCRISocket
|
||||
}
|
||||
joinCmd = fmt.Sprintf("%s --cri-socket %s", joinCmd, sp)
|
||||
|
||||
return joinCmd, nil
|
||||
|
@ -696,21 +697,17 @@ func StopKubernetes(runner command.Runner, cr cruntime.Manager) {
|
|||
|
||||
// DeleteCluster removes the components that were started earlier
|
||||
func (k *Bootstrapper) DeleteCluster(k8s config.KubernetesConfig) error {
|
||||
cr, err := cruntime.New(cruntime.Config{Type: k8s.ContainerRuntime, Runner: k.c, Socket: k8s.CRISocket})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "runtime")
|
||||
}
|
||||
|
||||
version, err := util.ParseKubernetesVersion(k8s.KubernetesVersion)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "parsing Kubernetes version")
|
||||
}
|
||||
cr, err := cruntime.New(cruntime.Config{Type: k8s.ContainerRuntime, Runner: k.c, Socket: k8s.CRISocket, KubernetesVersion: version})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "runtime")
|
||||
}
|
||||
|
||||
ka := bsutil.InvokeKubeadm(k8s.KubernetesVersion)
|
||||
sp := cr.SocketPath()
|
||||
if sp == "" {
|
||||
sp = kconst.DefaultDockerCRISocket
|
||||
}
|
||||
cmd := fmt.Sprintf("%s reset --cri-socket %s --force", ka, sp)
|
||||
if version.LT(semver.MustParse("1.11.0")) {
|
||||
cmd = fmt.Sprintf("%s reset --cri-socket %s", ka, sp)
|
||||
|
@ -737,9 +734,15 @@ func (k *Bootstrapper) UpdateCluster(cfg config.ClusterConfig) error {
|
|||
return errors.Wrap(err, "kubeadm images")
|
||||
}
|
||||
|
||||
version, err := util.ParseKubernetesVersion(cfg.KubernetesConfig.KubernetesVersion)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "parsing Kubernetes version")
|
||||
}
|
||||
r, err := cruntime.New(cruntime.Config{
|
||||
Type: cfg.KubernetesConfig.ContainerRuntime,
|
||||
Runner: k.c, Socket: cfg.KubernetesConfig.CRISocket,
|
||||
Type: cfg.KubernetesConfig.ContainerRuntime,
|
||||
Runner: k.c,
|
||||
Socket: cfg.KubernetesConfig.CRISocket,
|
||||
KubernetesVersion: version,
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "runtime")
|
||||
|
@ -789,7 +792,7 @@ func (k *Bootstrapper) UpdateNode(cfg config.ClusterConfig, n config.Node, r cru
|
|||
|
||||
sm := sysinit.New(k.c)
|
||||
|
||||
if err := bsutil.TransferBinaries(cfg.KubernetesConfig, k.c, sm); err != nil {
|
||||
if err := bsutil.TransferBinaries(cfg.KubernetesConfig, k.c, sm, cfg.BinaryMirror); err != nil {
|
||||
return errors.Wrap(err, "downloading binaries")
|
||||
}
|
||||
|
||||
|
|
|
@ -95,6 +95,8 @@ type ClusterConfig struct {
|
|||
MountPort uint16
|
||||
MountType string
|
||||
MountUID string
|
||||
BinaryMirror string // Mirror location for kube binaries (kubectl, kubelet, & kubeadm)
|
||||
DisableOptimizations bool
|
||||
}
|
||||
|
||||
// KubernetesConfig contains the parameters used to configure the VM Kubernetes.
|
||||
|
|
|
@ -34,10 +34,10 @@ var (
|
|||
const (
|
||||
// DefaultKubernetesVersion is the default Kubernetes version
|
||||
// dont update till #10545 is solved
|
||||
DefaultKubernetesVersion = "v1.23.1"
|
||||
DefaultKubernetesVersion = "v1.23.2"
|
||||
// NewestKubernetesVersion is the newest Kubernetes version to test against
|
||||
// NOTE: You may need to update coreDNS & etcd versions in pkg/minikube/bootstrapper/images/images.go
|
||||
NewestKubernetesVersion = "v1.23.2-rc.0"
|
||||
NewestKubernetesVersion = "v1.23.3-rc.0"
|
||||
// OldestKubernetesVersion is the oldest Kubernetes version to test against
|
||||
OldestKubernetesVersion = "v1.16.0"
|
||||
// NoKubernetesVersion is the version used when users does NOT want to install kubernetes
|
||||
|
|
|
@ -19,130 +19,74 @@ package constants
|
|||
var (
|
||||
KubeadmImages = map[string]map[string]string{
|
||||
"v1.24": {
|
||||
"coredns/coredns": "v1.8.6",
|
||||
"etcd": "3.5.1-0",
|
||||
"kube-apiserver": "v1.23.0",
|
||||
"kube-controller-manager": "v1.23.0",
|
||||
"kube-proxy": "v1.23.0",
|
||||
"kube-scheduler": "v1.23.0",
|
||||
"pause": "3.6",
|
||||
"coredns/coredns": "v1.8.6",
|
||||
"etcd": "3.5.1-0",
|
||||
"pause": "3.6",
|
||||
},
|
||||
"v1.23": {
|
||||
"coredns/coredns": "v1.8.6",
|
||||
"etcd": "3.5.1-0",
|
||||
"kube-apiserver": "v1.23.0",
|
||||
"kube-controller-manager": "v1.23.0",
|
||||
"kube-proxy": "v1.23.0",
|
||||
"kube-scheduler": "v1.23.0",
|
||||
"pause": "3.6",
|
||||
"coredns/coredns": "v1.8.6",
|
||||
"etcd": "3.5.1-0",
|
||||
"pause": "3.6",
|
||||
},
|
||||
"v1.22": {
|
||||
"coredns/coredns": "v1.8.4",
|
||||
"etcd": "3.5.0-0",
|
||||
"kube-apiserver": "v1.22.4",
|
||||
"kube-controller-manager": "v1.22.4",
|
||||
"kube-proxy": "v1.22.4",
|
||||
"kube-scheduler": "v1.22.4",
|
||||
"pause": "3.5",
|
||||
"coredns/coredns": "v1.8.4",
|
||||
"etcd": "3.5.0-0",
|
||||
"pause": "3.5",
|
||||
},
|
||||
"v1.21": {
|
||||
"coredns/coredns": "v1.8.0",
|
||||
"etcd": "3.4.13-0",
|
||||
"kube-apiserver": "v1.21.6",
|
||||
"kube-controller-manager": "v1.21.6",
|
||||
"kube-proxy": "v1.21.6",
|
||||
"kube-scheduler": "v1.21.6",
|
||||
"pause": "3.4.1",
|
||||
"coredns/coredns": "v1.8.0",
|
||||
"etcd": "3.4.13-0",
|
||||
"pause": "3.4.1",
|
||||
},
|
||||
"v1.20": {
|
||||
"coredns": "1.7.0",
|
||||
"etcd": "3.4.13-0",
|
||||
"kube-apiserver": "v1.20.12",
|
||||
"kube-controller-manager": "v1.20.12",
|
||||
"kube-proxy": "v1.20.12",
|
||||
"kube-scheduler": "v1.20.12",
|
||||
"pause": "3.2",
|
||||
"coredns": "1.7.0",
|
||||
"etcd": "3.4.13-0",
|
||||
"pause": "3.2",
|
||||
},
|
||||
"v1.19": {
|
||||
"coredns": "1.7.0",
|
||||
"etcd": "3.4.9-1",
|
||||
"kube-apiserver": "v1.19.16",
|
||||
"kube-controller-manager": "v1.19.16",
|
||||
"kube-proxy": "v1.19.16",
|
||||
"kube-scheduler": "v1.19.16",
|
||||
"pause": "3.2",
|
||||
"coredns": "1.7.0",
|
||||
"etcd": "3.4.9-1",
|
||||
"pause": "3.2",
|
||||
},
|
||||
"v1.18": {
|
||||
"coredns": "1.6.7",
|
||||
"etcd": "3.4.3-0",
|
||||
"kube-apiserver": "v1.18.20",
|
||||
"kube-controller-manager": "v1.18.20",
|
||||
"kube-proxy": "v1.18.20",
|
||||
"kube-scheduler": "v1.18.20",
|
||||
"pause": "3.2",
|
||||
"coredns": "1.6.7",
|
||||
"etcd": "3.4.3-0",
|
||||
"pause": "3.2",
|
||||
},
|
||||
"v1.17": {
|
||||
"coredns": "1.6.5",
|
||||
"etcd": "3.4.3-0",
|
||||
"kube-apiserver": "v1.17.17",
|
||||
"kube-controller-manager": "v1.17.17",
|
||||
"kube-proxy": "v1.17.17",
|
||||
"kube-scheduler": "v1.17.17",
|
||||
"pause": "3.1",
|
||||
"coredns": "1.6.5",
|
||||
"etcd": "3.4.3-0",
|
||||
"pause": "3.1",
|
||||
},
|
||||
"v1.16": {
|
||||
"coredns": "1.6.2",
|
||||
"etcd": "3.3.15-0",
|
||||
"kube-apiserver": "v1.16.15",
|
||||
"kube-controller-manager": "v1.16.15",
|
||||
"kube-proxy": "v1.16.15",
|
||||
"kube-scheduler": "v1.16.15",
|
||||
"pause": "3.1",
|
||||
"coredns": "1.6.2",
|
||||
"etcd": "3.3.15-0",
|
||||
"pause": "3.1",
|
||||
},
|
||||
"v1.15": {
|
||||
"coredns": "1.3.1",
|
||||
"etcd": "3.3.10",
|
||||
"kube-apiserver": "v1.15.12",
|
||||
"kube-controller-manager": "v1.15.12",
|
||||
"kube-proxy": "v1.15.12",
|
||||
"kube-scheduler": "v1.15.12",
|
||||
"pause": "3.1",
|
||||
"coredns": "1.3.1",
|
||||
"etcd": "3.3.10",
|
||||
"pause": "3.1",
|
||||
},
|
||||
"v1.14": {
|
||||
"coredns": "1.3.1",
|
||||
"etcd": "3.3.10",
|
||||
"kube-apiserver": "v1.14.10",
|
||||
"kube-controller-manager": "v1.14.10",
|
||||
"kube-proxy": "v1.14.10",
|
||||
"kube-scheduler": "v1.14.10",
|
||||
"pause": "3.1",
|
||||
"coredns": "1.3.1",
|
||||
"etcd": "3.3.10",
|
||||
"pause": "3.1",
|
||||
},
|
||||
"v1.13": {
|
||||
"coredns": "1.2.6",
|
||||
"etcd": "3.2.24",
|
||||
"kube-apiserver": "v1.13.12",
|
||||
"kube-controller-manager": "v1.13.12",
|
||||
"kube-proxy": "v1.13.12",
|
||||
"kube-scheduler": "v1.13.12",
|
||||
"pause": "3.1",
|
||||
"coredns": "1.2.6",
|
||||
"etcd": "3.2.24",
|
||||
"pause": "3.1",
|
||||
},
|
||||
"v1.12": {
|
||||
"coredns": "1.2.2",
|
||||
"etcd": "3.2.24",
|
||||
"kube-apiserver": "v1.22.3",
|
||||
"kube-controller-manager": "v1.22.3",
|
||||
"kube-proxy": "v1.22.3",
|
||||
"kube-scheduler": "v1.22.3",
|
||||
"pause": "3.1",
|
||||
"coredns": "1.2.2",
|
||||
"etcd": "3.2.24",
|
||||
"pause": "3.1",
|
||||
},
|
||||
"v1.11": {
|
||||
"coredns": "1.1.3",
|
||||
"etcd-amd64": "3.2.18",
|
||||
"kube-apiserver-amd64": "v1.11.10",
|
||||
"kube-controller-manager-amd64": "v1.11.10",
|
||||
"kube-proxy-amd64": "v1.11.10",
|
||||
"kube-scheduler-amd64": "v1.11.10",
|
||||
"pause-amd64": "3.1",
|
||||
"coredns": "1.1.3",
|
||||
"etcd-amd64": "3.2.18",
|
||||
"pause-amd64": "3.1",
|
||||
},
|
||||
}
|
||||
)
|
||||
|
|
|
@ -208,13 +208,21 @@ func New(c Config) (Manager, error) {
|
|||
|
||||
switch c.Type {
|
||||
case "", "docker":
|
||||
sp := c.Socket
|
||||
cs := ""
|
||||
// There is no more dockershim socket, in Kubernetes version 1.24 and beyond
|
||||
if sp == "" && c.KubernetesVersion.GTE(semver.MustParse("1.24.0-alpha.0")) {
|
||||
sp = ExternalDockerCRISocket
|
||||
cs = "cri-docker.socket"
|
||||
}
|
||||
return &Docker{
|
||||
Socket: c.Socket,
|
||||
Socket: sp,
|
||||
Runner: c.Runner,
|
||||
ImageRepository: c.ImageRepository,
|
||||
KubernetesVersion: c.KubernetesVersion,
|
||||
Init: sm,
|
||||
UseCRI: (c.Socket != ""), // !dockershim
|
||||
UseCRI: (sp != ""), // !dockershim
|
||||
CRIService: cs,
|
||||
}, nil
|
||||
case "crio", "cri-o":
|
||||
return &CRIO{
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/blang/semver/v4"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
"github.com/pkg/errors"
|
||||
|
@ -56,6 +57,34 @@ func TestName(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestDefaultDockerSocketPath(t *testing.T) {
|
||||
var tests = []struct {
|
||||
version string
|
||||
want string
|
||||
}{
|
||||
{"1.20.0", InternalDockerCRISocket},
|
||||
{"1.21.3", InternalDockerCRISocket},
|
||||
{"1.23.0", InternalDockerCRISocket},
|
||||
{"1.24.0-alpha.0", ExternalDockerCRISocket},
|
||||
{"1.24.0-beta.0", ExternalDockerCRISocket},
|
||||
{"1.24.6", ExternalDockerCRISocket},
|
||||
}
|
||||
for _, tc := range tests {
|
||||
runtime := "docker"
|
||||
version := semver.MustParse(tc.version)
|
||||
t.Run(runtime, func(t *testing.T) {
|
||||
r, err := New(Config{Type: runtime, KubernetesVersion: version})
|
||||
if err != nil {
|
||||
t.Fatalf("New(%s): %v", tc.version, err)
|
||||
}
|
||||
got := r.SocketPath()
|
||||
if got != tc.want {
|
||||
t.Errorf("SocketPath(%s) = %q, want: %q", tc.version, got, tc.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestImageExists(t *testing.T) {
|
||||
var tests = []struct {
|
||||
runtime string
|
||||
|
|
|
@ -42,6 +42,9 @@ import (
|
|||
// KubernetesContainerPrefix is the prefix of each Kubernetes container
|
||||
const KubernetesContainerPrefix = "k8s_"
|
||||
|
||||
const InternalDockerCRISocket = "/var/run/dockershim.sock"
|
||||
const ExternalDockerCRISocket = "/var/run/cri-dockerd.sock"
|
||||
|
||||
// ErrISOFeature is the error returned when disk image is missing features
|
||||
type ErrISOFeature struct {
|
||||
missing string
|
||||
|
@ -66,6 +69,7 @@ type Docker struct {
|
|||
KubernetesVersion semver.Version
|
||||
Init sysinit.Manager
|
||||
UseCRI bool
|
||||
CRIService string
|
||||
}
|
||||
|
||||
// Name is a human readable name for Docker
|
||||
|
@ -94,7 +98,7 @@ func (r *Docker) SocketPath() string {
|
|||
if r.Socket != "" {
|
||||
return r.Socket
|
||||
}
|
||||
return "/var/run/dockershim.sock"
|
||||
return InternalDockerCRISocket
|
||||
}
|
||||
|
||||
// Available returns an error if it is not possible to use this runtime on a host
|
||||
|
@ -145,7 +149,20 @@ func (r *Docker) Enable(disOthers, forceSystemd, inUserNamespace bool) error {
|
|||
return r.Init.Restart("docker")
|
||||
}
|
||||
|
||||
return r.Init.Start("docker")
|
||||
if err := r.Init.Start("docker"); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if r.CRIService != "" {
|
||||
if err := r.Init.Enable(r.CRIService); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := r.Init.Start(r.CRIService); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Restart restarts Docker on a host
|
||||
|
@ -155,6 +172,14 @@ func (r *Docker) Restart() error {
|
|||
|
||||
// Disable idempotently disables Docker on a host
|
||||
func (r *Docker) Disable() error {
|
||||
if r.CRIService != "" {
|
||||
if err := r.Init.Stop(r.CRIService); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := r.Init.Disable(r.CRIService); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
klog.Info("disabling docker service ...")
|
||||
// because #10373
|
||||
if err := r.Init.ForceStop("docker.socket"); err != nil {
|
||||
|
|
|
@ -107,3 +107,9 @@ func DockerInstalledViaSnap() bool {
|
|||
|
||||
return strings.Contains(string(o), "snap")
|
||||
}
|
||||
|
||||
// GithubActionRunner returns true if running inside a github action runner
|
||||
func GithubActionRunner() bool {
|
||||
// based on https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables
|
||||
return os.Getenv("GITHUB_ACTIONS") == "true"
|
||||
}
|
||||
|
|
|
@ -30,9 +30,18 @@ import (
|
|||
"k8s.io/minikube/pkg/minikube/localpath"
|
||||
)
|
||||
|
||||
// DefaultKubeBinariesURL returns a URL to kube binaries
|
||||
func DefaultKubeBinariesURL() string {
|
||||
return fmt.Sprintf("https://%s/kubernetes-release/release", downloadHost)
|
||||
}
|
||||
|
||||
// binaryWithChecksumURL gets the location of a Kubernetes binary
|
||||
func binaryWithChecksumURL(binaryName, version, osName, archName string) (string, error) {
|
||||
base := fmt.Sprintf("https://%s/kubernetes-release/release/%s/bin/%s/%s/%s", downloadHost, version, osName, archName, binaryName)
|
||||
func binaryWithChecksumURL(binaryName, version, osName, archName, binaryURL string) (string, error) {
|
||||
if binaryURL == "" {
|
||||
binaryURL = DefaultKubeBinariesURL()
|
||||
}
|
||||
|
||||
base := fmt.Sprintf("%s/%s/bin/%s/%s/%s", binaryURL, version, osName, archName, binaryName)
|
||||
v, err := semver.Make(version[1:])
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
@ -45,12 +54,12 @@ func binaryWithChecksumURL(binaryName, version, osName, archName string) (string
|
|||
}
|
||||
|
||||
// Binary will download a binary onto the host
|
||||
func Binary(binary, version, osName, archName string) (string, error) {
|
||||
func Binary(binary, version, osName, archName, binaryURL string) (string, error) {
|
||||
targetDir := localpath.MakeMiniPath("cache", osName, version)
|
||||
targetFilepath := path.Join(targetDir, binary)
|
||||
targetLock := targetFilepath + ".lock"
|
||||
|
||||
url, err := binaryWithChecksumURL(binary, version, osName, archName)
|
||||
url, err := binaryWithChecksumURL(binary, version, osName, archName, binaryURL)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
"github.com/juju/mutex"
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/minikube/pkg/minikube/detect"
|
||||
"k8s.io/minikube/pkg/minikube/out"
|
||||
"k8s.io/minikube/pkg/minikube/style"
|
||||
"k8s.io/minikube/pkg/util/lock"
|
||||
|
@ -60,7 +61,7 @@ func CreateDstDownloadMock(src, dst string) error {
|
|||
// download is a well-configured atomic download function
|
||||
func download(src string, dst string) error {
|
||||
var clientOptions []getter.ClientOption
|
||||
if out.IsTerminal(os.Stdout) {
|
||||
if out.IsTerminal(os.Stdout) && !detect.GithubActionRunner() {
|
||||
progress := getter.WithProgress(DefaultProgressBar)
|
||||
if out.JSON {
|
||||
progress = getter.WithProgress(DefaultJSONOutput)
|
||||
|
|
|
@ -61,7 +61,7 @@ func testBinaryDownloadPreventsMultipleDownload(t *testing.T) {
|
|||
var group sync.WaitGroup
|
||||
group.Add(2)
|
||||
dlCall := func() {
|
||||
if _, err := Binary("kubectl", "v1.20.2", "linux", "amd64"); err != nil {
|
||||
if _, err := Binary("kubectl", "v1.20.2", "linux", "amd64", ""); err != nil {
|
||||
t.Errorf("Failed to download binary: %+v", err)
|
||||
}
|
||||
group.Done()
|
||||
|
|
|
@ -33,7 +33,7 @@ func driverWithChecksumURL(name string, v semver.Version) string {
|
|||
return fmt.Sprintf("%s?checksum=file:%s.sha256", base, base)
|
||||
}
|
||||
func driverWithArchAndChecksumURL(name string, v semver.Version) string {
|
||||
base := fmt.Sprintf("https://github.com/kubernetes/minikube/releases/download/v%s-%s/%s", v, runtime.GOARCH, name)
|
||||
base := fmt.Sprintf("https://github.com/kubernetes/minikube/releases/download/v%s/%s-%s", v, name, runtime.GOARCH)
|
||||
return fmt.Sprintf("%s?checksum=file:%s.sha256", base, base)
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ const fileScheme = "file"
|
|||
// DefaultISOURLs returns a list of ISO URL's to consult by default, in priority order
|
||||
func DefaultISOURLs() []string {
|
||||
v := version.GetISOVersion()
|
||||
isoBucket := "minikube-builds/iso/13195"
|
||||
isoBucket := "minikube/iso"
|
||||
return []string{
|
||||
fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s.iso", isoBucket, v),
|
||||
fmt.Sprintf("https://github.com/kubernetes/minikube/releases/download/%s/minikube-%s.iso", v, v),
|
||||
|
|
|
@ -44,7 +44,7 @@ const (
|
|||
// PreloadVersion is the current version of the preloaded tarball
|
||||
//
|
||||
// NOTE: You may need to bump this version up when upgrading auxiliary docker images
|
||||
PreloadVersion = "v16"
|
||||
PreloadVersion = "v17"
|
||||
// PreloadBucket is the name of the GCS bucket where preloaded volume tarballs exist
|
||||
PreloadBucket = "minikube-preloaded-volume-tarballs"
|
||||
)
|
||||
|
@ -90,7 +90,7 @@ func TarballPath(k8sVersion, containerRuntime string) string {
|
|||
|
||||
// remoteTarballURL returns the URL for the remote tarball in GCS
|
||||
func remoteTarballURL(k8sVersion, containerRuntime string) string {
|
||||
return fmt.Sprintf("https://%s/%s/%s", downloadHost, PreloadBucket, TarballName(k8sVersion, containerRuntime))
|
||||
return fmt.Sprintf("https://%s/%s/%s/%s/%s", downloadHost, PreloadBucket, PreloadVersion, k8sVersion, TarballName(k8sVersion, containerRuntime))
|
||||
}
|
||||
|
||||
func setPreloadState(k8sVersion, containerRuntime string, value bool) {
|
||||
|
@ -236,7 +236,8 @@ func getStorageAttrs(name string) (*storage.ObjectAttrs, error) {
|
|||
// getChecksum returns the MD5 checksum of the preload tarball
|
||||
var getChecksum = func(k8sVersion, containerRuntime string) ([]byte, error) {
|
||||
klog.Infof("getting checksum for %s ...", TarballName(k8sVersion, containerRuntime))
|
||||
attrs, err := getStorageAttrs(TarballName(k8sVersion, containerRuntime))
|
||||
filename := fmt.Sprintf("%s/%s/%s", PreloadVersion, k8sVersion, TarballName(k8sVersion, containerRuntime))
|
||||
attrs, err := getStorageAttrs(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -35,16 +35,16 @@ func ControlPlaneEndpoint(cc *config.ClusterConfig, cp *config.Node, driverName
|
|||
}
|
||||
hostname := oci.DaemonHost(driverName)
|
||||
|
||||
ip := net.ParseIP(hostname)
|
||||
if ip == nil {
|
||||
return hostname, ip, port, fmt.Errorf("failed to parse ip for %q", hostname)
|
||||
ips, err := net.LookupIP(hostname)
|
||||
if err != nil || len(ips) == 0 {
|
||||
return hostname, nil, port, fmt.Errorf("failed to lookup ip for %q", hostname)
|
||||
}
|
||||
|
||||
// https://github.com/kubernetes/minikube/issues/3878
|
||||
if cc.KubernetesConfig.APIServerName != constants.APIServerName {
|
||||
hostname = cc.KubernetesConfig.APIServerName
|
||||
}
|
||||
return hostname, ip, port, err
|
||||
return hostname, ips[0], port, err
|
||||
}
|
||||
|
||||
// https://github.com/kubernetes/minikube/issues/3878
|
||||
|
@ -52,11 +52,11 @@ func ControlPlaneEndpoint(cc *config.ClusterConfig, cp *config.Node, driverName
|
|||
if cc.KubernetesConfig.APIServerName != constants.APIServerName {
|
||||
hostname = cc.KubernetesConfig.APIServerName
|
||||
}
|
||||
ip := net.ParseIP(cp.IP)
|
||||
if ip == nil {
|
||||
return hostname, ip, cp.Port, fmt.Errorf("failed to parse ip for %q", cp.IP)
|
||||
ips, err := net.LookupIP(cp.IP)
|
||||
if err != nil || len(ips) == 0 {
|
||||
return hostname, nil, cp.Port, fmt.Errorf("failed to lookup ip for %q", cp.IP)
|
||||
}
|
||||
return hostname, ip, cp.Port, nil
|
||||
return hostname, ips[0], cp.Port, nil
|
||||
}
|
||||
|
||||
// AutoPauseProxyEndpoint returns the endpoint for the auto-pause (reverse proxy to api-sever)
|
||||
|
|
|
@ -43,7 +43,7 @@ func isExcluded(binary string, excludedBinaries []string) bool {
|
|||
}
|
||||
|
||||
// CacheBinariesForBootstrapper will cache binaries for a bootstrapper
|
||||
func CacheBinariesForBootstrapper(version string, clusterBootstrapper string, excludeBinaries []string) error {
|
||||
func CacheBinariesForBootstrapper(version string, clusterBootstrapper string, excludeBinaries []string, binariesURL string) error {
|
||||
binaries := bootstrapper.GetCachedBinaryList(clusterBootstrapper)
|
||||
|
||||
var g errgroup.Group
|
||||
|
@ -53,7 +53,7 @@ func CacheBinariesForBootstrapper(version string, clusterBootstrapper string, ex
|
|||
}
|
||||
bin := bin // https://golang.org/doc/faq#closures_and_goroutines
|
||||
g.Go(func() error {
|
||||
if _, err := download.Binary(bin, version, "linux", detect.EffectiveArch()); err != nil {
|
||||
if _, err := download.Binary(bin, version, "linux", detect.EffectiveArch(), binariesURL); err != nil {
|
||||
return errors.Wrapf(err, "caching binary %s", bin)
|
||||
}
|
||||
return nil
|
||||
|
|
|
@ -121,7 +121,7 @@ func TestCacheBinariesForBootstrapper(t *testing.T) {
|
|||
for _, test := range tc {
|
||||
t.Run(test.version, func(t *testing.T) {
|
||||
os.Setenv("MINIKUBE_HOME", test.minikubeHome)
|
||||
err := CacheBinariesForBootstrapper(test.version, test.clusterBootstrapper, nil)
|
||||
err := CacheBinariesForBootstrapper(test.version, test.clusterBootstrapper, nil, "")
|
||||
if err != nil && !test.err {
|
||||
t.Fatalf("Got unexpected error %v", err)
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ func TestExcludedBinariesNotDownloaded(t *testing.T) {
|
|||
}
|
||||
}()
|
||||
|
||||
if err := CacheBinariesForBootstrapper("v1.16.0", clusterBootstrapper, []string{binaryToExclude}); err != nil {
|
||||
if err := CacheBinariesForBootstrapper("v1.16.0", clusterBootstrapper, []string{binaryToExclude}, ""); err != nil {
|
||||
t.Errorf("Failed to cache binaries: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -78,10 +78,12 @@ func handleDownloadOnly(cacheGroup, kicGroup *errgroup.Group, k8sVersion, contai
|
|||
if !viper.GetBool("download-only") {
|
||||
return
|
||||
}
|
||||
if err := doCacheBinaries(k8sVersion, containerRuntime, driverName); err != nil {
|
||||
|
||||
binariesURL := viper.GetString("binary-mirror")
|
||||
if err := doCacheBinaries(k8sVersion, containerRuntime, driverName, binariesURL); err != nil {
|
||||
exit.Error(reason.InetCacheBinaries, "Failed to cache binaries", err)
|
||||
}
|
||||
if _, err := CacheKubectlBinary(k8sVersion); err != nil {
|
||||
if _, err := CacheKubectlBinary(k8sVersion, binariesURL); err != nil {
|
||||
exit.Error(reason.InetCacheKubectl, "Failed to cache kubectl", err)
|
||||
}
|
||||
waitCacheRequiredImages(cacheGroup)
|
||||
|
@ -94,22 +96,22 @@ func handleDownloadOnly(cacheGroup, kicGroup *errgroup.Group, k8sVersion, contai
|
|||
}
|
||||
|
||||
// CacheKubectlBinary caches the kubectl binary
|
||||
func CacheKubectlBinary(k8sVersion string) (string, error) {
|
||||
func CacheKubectlBinary(k8sVersion, binaryURL string) (string, error) {
|
||||
binary := "kubectl"
|
||||
if runtime.GOOS == "windows" {
|
||||
binary = "kubectl.exe"
|
||||
}
|
||||
|
||||
return download.Binary(binary, k8sVersion, runtime.GOOS, detect.EffectiveArch())
|
||||
return download.Binary(binary, k8sVersion, runtime.GOOS, detect.EffectiveArch(), binaryURL)
|
||||
}
|
||||
|
||||
// doCacheBinaries caches Kubernetes binaries in the foreground
|
||||
func doCacheBinaries(k8sVersion, containerRuntime, driverName string) error {
|
||||
func doCacheBinaries(k8sVersion, containerRuntime, driverName, binariesURL string) error {
|
||||
existingBinaries := constants.KubernetesReleaseBinaries
|
||||
if !download.PreloadExists(k8sVersion, containerRuntime, driverName) {
|
||||
existingBinaries = nil
|
||||
}
|
||||
return machine.CacheBinariesForBootstrapper(k8sVersion, viper.GetString(cmdcfg.Bootstrapper), existingBinaries)
|
||||
return machine.CacheBinariesForBootstrapper(k8sVersion, viper.GetString(cmdcfg.Bootstrapper), existingBinaries, binariesURL)
|
||||
}
|
||||
|
||||
// beginDownloadKicBaseImage downloads the kic image
|
||||
|
|
|
@ -96,6 +96,8 @@ func Start(starter Starter, apiServer bool) (*kubeconfig.Settings, error) {
|
|||
return nil, err
|
||||
}
|
||||
if stopk8s {
|
||||
nv := semver.Version{Major: 0, Minor: 0, Patch: 0}
|
||||
configureRuntimes(starter.Runner, *starter.Cfg, nv)
|
||||
configureMounts(&wg, *starter.Cfg)
|
||||
return nil, config.Write(viper.GetString(config.ProfileName), starter.Cfg)
|
||||
}
|
||||
|
@ -256,9 +258,11 @@ func handleAPIServer(starter Starter, cr cruntime.Manager, hostIP net.IP) (*kube
|
|||
return nil, bs, errors.Wrap(err, "Failed kubeconfig update")
|
||||
}
|
||||
|
||||
// Scale down CoreDNS from default 2 to 1 replica.
|
||||
if err := kapi.ScaleDeployment(starter.Cfg.Name, meta.NamespaceSystem, kconst.CoreDNSDeploymentName, 1); err != nil {
|
||||
klog.Errorf("Unable to scale down deployment %q in namespace %q to 1 replica: %v", kconst.CoreDNSDeploymentName, meta.NamespaceSystem, err)
|
||||
if !starter.Cfg.DisableOptimizations {
|
||||
// Scale down CoreDNS from default 2 to 1 replica.
|
||||
if err := kapi.ScaleDeployment(starter.Cfg.Name, meta.NamespaceSystem, kconst.CoreDNSDeploymentName, 1); err != nil {
|
||||
klog.Errorf("Unable to scale down deployment %q in namespace %q to 1 replica: %v", kconst.CoreDNSDeploymentName, meta.NamespaceSystem, err)
|
||||
}
|
||||
}
|
||||
|
||||
// Not running this in a Go func can result in DNS answering taking up to 38 seconds, with the Go func it takes 6-10 seconds.
|
||||
|
|
|
@ -11,7 +11,7 @@ minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows
|
|||
|
||||
![Screenshot](/images/screenshot.png)
|
||||
|
||||
🎉 Latest Release: v1.24.0 - Nov 05, 2021 ([changelog](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md))
|
||||
🎉 Latest Release: v1.25.1 - Jan 20, 2022 ([changelog](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md))
|
||||
|
||||
## Highlights
|
||||
|
||||
|
@ -19,7 +19,7 @@ minikube quickly sets up a local Kubernetes cluster on macOS, Linux, and Windows
|
|||
* Cross-platform (Linux, macOS, Windows)
|
||||
* Deploy as a VM, a container, or on bare-metal
|
||||
* Multiple container runtimes (CRI-O, containerd, docker)
|
||||
* Docker API endpoint for blazing fast [image pushes]({{< ref "/docs/handbook/pushing.md#pushing-directly-to-the-in-cluster-docker-daemon" >}})
|
||||
* Direct API endpoint for blazing fast [image load and build]({{< ref "/docs/handbook/pushing.md" >}})
|
||||
* Advanced features such as [LoadBalancer]({{< ref "/docs/handbook/accessing.md#loadbalancer-access" >}}), filesystem mounts, and FeatureGates
|
||||
* [Addons]({{< ref "/docs/handbook/deploying.md#addons" >}}) for easily installed Kubernetes applications
|
||||
* Supports common [CI environments](https://github.com/minikube-ci/examples)
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
title: "v1.25.0 Benchmark"
|
||||
linkTitle: "v1.25.0 Benchmark"
|
||||
weight: -20220120
|
||||
---
|
||||
|
||||
![time-to-k8s](/images/benchmarks/timeToK8s/v1.25.0.png)
|
||||
|
||||
| | minikube version: v1.25.0 | kind v0.11.1 go1.16.4 linux/amd64 | k3d version v5.2.2 |
|
||||
|----------------------|---------------------------|-----------------------------------|--------------------|
|
||||
| Command Exec | 26.227 | 28.446 | 13.532 |
|
||||
| API Server Answering | 0.065 | 0.117 | 0.190 |
|
||||
| Kubernetes SVC | 0.051 | 0.054 | 0.053 |
|
||||
| DNS SVC | 0.051 | 0.055 | 0.054 |
|
||||
| App Running | 15.618 | 32.373 | 21.373 |
|
||||
| DNS Answering | 7.690 | 1.648 | 4.371 |
|
||||
| Total | 49.701 | 62.692 | 39.573 |
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
title: "v1.25.1 Benchmark"
|
||||
linkTitle: "v1.25.1 Benchmark"
|
||||
weight: -20220121
|
||||
---
|
||||
|
||||
![time-to-k8s](/images/benchmarks/timeToK8s/v1.25.1.png)
|
||||
| | minikube version: v1.25.1 | kind v0.11.1 go1.16.4 linux/amd64 | k3d version v5.2.2 |
|
||||
|----------------------|---------------------------|-----------------------------------|--------------------|
|
||||
| Command Exec | 26.436 | 29.426 | 13.674 |
|
||||
| API Server Answering | 0.068 | 0.112 | 0.189 |
|
||||
| Kubernetes SVC | 0.049 | 0.053 | 0.059 |
|
||||
| DNS SVC | 0.049 | 0.055 | 0.057 |
|
||||
| App Running | 15.356 | 34.326 | 19.983 |
|
||||
| DNS Answering | 0.136 | 0.133 | 5.395 |
|
||||
| Total | 42.094 | 64.105 | 39.357 |
|
||||
|
|
@ -26,7 +26,8 @@ minikube start [flags]
|
|||
--apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine
|
||||
--apiserver-port int The apiserver listening port (default 8443)
|
||||
--auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true)
|
||||
--base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.28-1640212998-13227@sha256:be897edc9ed473a9678010f390a0092f488f6a1c30865f571c3b6388f9f56f9b")
|
||||
--base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.29@sha256:be897edc9ed473a9678010f390a0092f488f6a1c30865f571c3b6388f9f56f9b")
|
||||
--binary-mirror string Location to fetch kubectl, kubelet, & kubeadm binaries from.
|
||||
--cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true)
|
||||
--cert-expiration duration Duration until minikube certificate expiration, defaults to three years (26280h). (default 26280h0m0s)
|
||||
--cni string CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)
|
||||
|
@ -35,6 +36,7 @@ minikube start [flags]
|
|||
--cri-socket string The cri socket path to be used.
|
||||
--delete-on-failure If set, delete the current cluster if start fails and try again. Defaults to false.
|
||||
--disable-driver-mounts Disables the filesystem mounts provided by the hypervisors
|
||||
--disable-optimizations If set, disables optimizations that are set for local Kubernetes. Including decreasing CoreDNS replicas from 2 to 1 and increasing kubeadm housekeeping-interval from 10s to 5m. Defaults to false.
|
||||
--disk-size string Disk size allocated to the minikube VM (format: <number>[<unit>], where unit = b, k, m or g). (default "20000mb")
|
||||
--dns-domain string The cluster dns domain name used in the Kubernetes cluster (default "cluster.local")
|
||||
--dns-proxy Enable proxy for NAT DNS requests (virtualbox driver only)
|
||||
|
@ -66,9 +68,9 @@ minikube start [flags]
|
|||
--insecure-registry strings Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added.
|
||||
--install-addons If set, install addons. Defaults to true. (default true)
|
||||
--interactive Allow user prompts for more information (default true)
|
||||
--iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube-builds/iso/13195/minikube-v1.24.0-1640253061-13195.iso,https://github.com/kubernetes/minikube/releases/download/v1.24.0-1640253061-13195/minikube-v1.24.0-1640253061-13195.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.24.0-1640253061-13195.iso])
|
||||
--iso-url strings Locations to fetch the minikube ISO from. (default [https://storage.googleapis.com/minikube/iso/minikube-v1.25.0.iso,https://github.com/kubernetes/minikube/releases/download/v1.25.0/minikube-v1.25.0.iso,https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.25.0.iso])
|
||||
--keep-context This will keep the existing kubectl context and will create a minikube context.
|
||||
--kubernetes-version string The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.23.1, 'latest' for v1.23.2-rc.0). Defaults to 'stable'.
|
||||
--kubernetes-version string The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.23.2, 'latest' for v1.23.3-rc.0). Defaults to 'stable'.
|
||||
--kvm-gpu Enable experimental NVIDIA GPU support in minikube
|
||||
--kvm-hidden Hide the hypervisor signature from the guest in minikube (kvm2 driver only)
|
||||
--kvm-network string The KVM default network name. (kvm2 driver only) (default "default")
|
||||
|
|
|
@ -0,0 +1,468 @@
|
|||
---
|
||||
title: "v1.23.1 - 2021-09-17"
|
||||
linkTitle: "v1.23.1 - 2021-09-17"
|
||||
weight: -100
|
||||
---
|
||||
<html>
|
||||
<head>
|
||||
<title>kubernetes/minikube - Leaderboard</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" rel="stylesheet">
|
||||
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
|
||||
<script type="text/javascript">
|
||||
google.charts.load("current", {packages:["corechart"]});
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
background-color: #f7f7fa;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: rgba(66,133,244);
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
color: rgba(23,90,201);
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
color: #666;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
h2.cli {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.board p {
|
||||
font-size: small;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
.board {
|
||||
clear: right;
|
||||
display: inline-block;
|
||||
padding: 0.5em;
|
||||
margin: 0.5em;
|
||||
background-color: #fff;
|
||||
}
|
||||
.board:nth-child(4n+3) {
|
||||
border: 2px solid rgba(66,133,244,0.25);
|
||||
color: rgba(66,133,244);
|
||||
}
|
||||
|
||||
.board:nth-child(4n+2) {
|
||||
border: 2px solid rgba(219,68,55,0.25);
|
||||
color: rgba rgba(219,68,55);
|
||||
}
|
||||
|
||||
.board:nth-child(4n+1) {
|
||||
border: 2px solid rgba(244,160,0,0.25);
|
||||
color: rgba(244,160,0);
|
||||
}
|
||||
|
||||
.board:nth-child(4n) {
|
||||
border: 2px solid rgba(15,157,88,0.25);
|
||||
color: rgba(15,157,88);
|
||||
}
|
||||
|
||||
h3 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>kubernetes/minikube</h1>
|
||||
<div class="subtitle">2021-09-03 — 2021-09-17</div>
|
||||
|
||||
|
||||
|
||||
<h2>Reviewers</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Influential</h3>
|
||||
<p># of Merged PRs reviewed</p>
|
||||
<div id="chart_reviewCounts" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewCounts);
|
||||
|
||||
function drawreviewCounts() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Merged PRs reviewed', type: 'number'}, { role: 'annotation' }],
|
||||
["medyagh", 5, "5"],
|
||||
["spowelljr", 1, "1"],
|
||||
["afbjorklund", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewCounts'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Helpful</h3>
|
||||
<p># of words written in merged PRs</p>
|
||||
<div id="chart_reviewWords" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewWords);
|
||||
|
||||
function drawreviewWords() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of words written in merged PRs', type: 'number'}, { role: 'annotation' }],
|
||||
["medyagh", 110, "110"],
|
||||
["afbjorklund", 53, "53"],
|
||||
["spowelljr", 17, "17"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewWords'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Demanding</h3>
|
||||
<p># of Review Comments in merged PRs</p>
|
||||
<div id="chart_reviewComments" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewComments);
|
||||
|
||||
function drawreviewComments() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Review Comments in merged PRs', type: 'number'}, { role: 'annotation' }],
|
||||
["medyagh", 8, "8"],
|
||||
["spowelljr", 2, "2"],
|
||||
["afbjorklund", 0, "0"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewComments'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<h2>Pull Requests</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Active</h3>
|
||||
<p># of Pull Requests Merged</p>
|
||||
<div id="chart_prCounts" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprCounts);
|
||||
|
||||
function drawprCounts() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Pull Requests Merged', type: 'number'}, { role: 'annotation' }],
|
||||
["sharifelgamal", 10, "10"],
|
||||
["spowelljr", 3, "3"],
|
||||
["briandealwis", 1, "1"],
|
||||
["hiroyaonoe", 1, "1"],
|
||||
["jeyjeyemem", 1, "1"],
|
||||
["jayesh-srivastava", 1, "1"],
|
||||
["brian14708", 1, "1"],
|
||||
["t-inu", 1, "1"],
|
||||
["leifcr", 1, "1"],
|
||||
["jeffmaury", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prCounts'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Big Movers</h3>
|
||||
<p>Lines of code (delta)</p>
|
||||
<div id="chart_prDeltas" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprDeltas);
|
||||
|
||||
function drawprDeltas() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: 'Lines of code (delta)', type: 'number'}, { role: 'annotation' }],
|
||||
["sharifelgamal", 822, "822"],
|
||||
["brian14708", 59, "59"],
|
||||
["spowelljr", 55, "55"],
|
||||
["leifcr", 42, "42"],
|
||||
["t-inu", 20, "20"],
|
||||
["briandealwis", 13, "13"],
|
||||
["hiroyaonoe", 10, "10"],
|
||||
["jayesh-srivastava", 3, "3"],
|
||||
["jeyjeyemem", 2, "2"],
|
||||
["jeffmaury", 0, "0"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prDeltas'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most difficult to review</h3>
|
||||
<p>Average PR size (added+changed)</p>
|
||||
<div id="chart_prSize" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprSize);
|
||||
|
||||
function drawprSize() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: 'Average PR size (added+changed)', type: 'number'}, { role: 'annotation' }],
|
||||
["sharifelgamal", 76, "76"],
|
||||
["brian14708", 56, "56"],
|
||||
["leifcr", 21, "21"],
|
||||
["t-inu", 20, "20"],
|
||||
["spowelljr", 11, "11"],
|
||||
["briandealwis", 10, "10"],
|
||||
["hiroyaonoe", 5, "5"],
|
||||
["jayesh-srivastava", 2, "2"],
|
||||
["jeyjeyemem", 1, "1"],
|
||||
["jeffmaury", 0, "0"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prSize'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<h2>Issues</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Active</h3>
|
||||
<p># of comments</p>
|
||||
<div id="chart_comments" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawcomments);
|
||||
|
||||
function drawcomments() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of comments', type: 'number'}, { role: 'annotation' }],
|
||||
["sharifelgamal", 11, "11"],
|
||||
["afbjorklund", 9, "9"],
|
||||
["medyagh", 8, "8"],
|
||||
["RA489", 4, "4"],
|
||||
["spowelljr", 3, "3"],
|
||||
["sayantani11", 3, "3"],
|
||||
["jayesh-srivastava", 2, "2"],
|
||||
["zhyyu", 2, "2"],
|
||||
["fkorotkov", 2, "2"],
|
||||
["braderhart", 1, "1"],
|
||||
["SandraPAM", 1, "1"],
|
||||
["fredjeronimo", 1, "1"],
|
||||
["marcominetti", 1, "1"],
|
||||
["pgschr", 1, "1"],
|
||||
["alekseinovikov", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_comments'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Helpful</h3>
|
||||
<p># of words (excludes authored)</p>
|
||||
<div id="chart_commentWords" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawcommentWords);
|
||||
|
||||
function drawcommentWords() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of words (excludes authored)', type: 'number'}, { role: 'annotation' }],
|
||||
["sharifelgamal", 596, "596"],
|
||||
["afbjorklund", 281, "281"],
|
||||
["sayantani11", 245, "245"],
|
||||
["medyagh", 239, "239"],
|
||||
["zhyyu", 179, "179"],
|
||||
["pshendre1", 120, "120"],
|
||||
["spowelljr", 118, "118"],
|
||||
["marcominetti", 85, "85"],
|
||||
["fredjeronimo", 80, "80"],
|
||||
["fkorotkov", 75, "75"],
|
||||
["SandraPAM", 65, "65"],
|
||||
["dsedivec", 65, "65"],
|
||||
["braderhart", 48, "48"],
|
||||
["pfeigl", 23, "23"],
|
||||
["jayesh-srivastava", 16, "16"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_commentWords'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Top Closers</h3>
|
||||
<p># of issues closed (excludes authored)</p>
|
||||
<div id="chart_issueCloser" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawissueCloser);
|
||||
|
||||
function drawissueCloser() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of issues closed (excludes authored)', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 20, "20"],
|
||||
["sharifelgamal", 5, "5"],
|
||||
["medyagh", 5, "5"],
|
||||
["afbjorklund", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_issueCloser'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,504 @@
|
|||
---
|
||||
title: "v1.24.0 - 2021-11-04"
|
||||
linkTitle: "v1.24.0 - 2021-11-04"
|
||||
weight: -102
|
||||
---
|
||||
<html>
|
||||
<head>
|
||||
<title>kubernetes/minikube - Leaderboard</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" rel="stylesheet">
|
||||
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
|
||||
<script type="text/javascript">
|
||||
google.charts.load("current", {packages:["corechart"]});
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
background-color: #f7f7fa;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: rgba(66,133,244);
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
color: rgba(23,90,201);
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
color: #666;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
h2.cli {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.board p {
|
||||
font-size: small;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
.board {
|
||||
clear: right;
|
||||
display: inline-block;
|
||||
padding: 0.5em;
|
||||
margin: 0.5em;
|
||||
background-color: #fff;
|
||||
}
|
||||
.board:nth-child(4n+3) {
|
||||
border: 2px solid rgba(66,133,244,0.25);
|
||||
color: rgba(66,133,244);
|
||||
}
|
||||
|
||||
.board:nth-child(4n+2) {
|
||||
border: 2px solid rgba(219,68,55,0.25);
|
||||
color: rgba rgba(219,68,55);
|
||||
}
|
||||
|
||||
.board:nth-child(4n+1) {
|
||||
border: 2px solid rgba(244,160,0,0.25);
|
||||
color: rgba(244,160,0);
|
||||
}
|
||||
|
||||
.board:nth-child(4n) {
|
||||
border: 2px solid rgba(15,157,88,0.25);
|
||||
color: rgba(15,157,88);
|
||||
}
|
||||
|
||||
h3 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>kubernetes/minikube</h1>
|
||||
<div class="subtitle">2021-09-21 — 2021-11-04</div>
|
||||
|
||||
|
||||
|
||||
<h2>Reviewers</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Influential</h3>
|
||||
<p># of Merged PRs reviewed</p>
|
||||
<div id="chart_reviewCounts" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewCounts);
|
||||
|
||||
function drawreviewCounts() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Merged PRs reviewed', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 16, "16"],
|
||||
["medyagh", 15, "15"],
|
||||
["sharifelgamal", 11, "11"],
|
||||
["atoato88", 5, "5"],
|
||||
["t-inu", 3, "3"],
|
||||
["yosshy", 1, "1"],
|
||||
["s-kawamura-w664", 1, "1"],
|
||||
["YuikoTakada", 1, "1"],
|
||||
["rikatz", 1, "1"],
|
||||
["tstromberg", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewCounts'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Helpful</h3>
|
||||
<p># of words written in merged PRs</p>
|
||||
<div id="chart_reviewWords" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewWords);
|
||||
|
||||
function drawreviewWords() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of words written in merged PRs', type: 'number'}, { role: 'annotation' }],
|
||||
["t-inu", 1347, "1347"],
|
||||
["spowelljr", 840, "840"],
|
||||
["medyagh", 735, "735"],
|
||||
["yosshy", 457, "457"],
|
||||
["atoato88", 387, "387"],
|
||||
["sharifelgamal", 330, "330"],
|
||||
["s-kawamura-w664", 144, "144"],
|
||||
["rikatz", 67, "67"],
|
||||
["tstromberg", 32, "32"],
|
||||
["YuikoTakada", 14, "14"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewWords'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Demanding</h3>
|
||||
<p># of Review Comments in merged PRs</p>
|
||||
<div id="chart_reviewComments" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewComments);
|
||||
|
||||
function drawreviewComments() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Review Comments in merged PRs', type: 'number'}, { role: 'annotation' }],
|
||||
["t-inu", 29, "29"],
|
||||
["spowelljr", 23, "23"],
|
||||
["medyagh", 14, "14"],
|
||||
["yosshy", 13, "13"],
|
||||
["atoato88", 8, "8"],
|
||||
["sharifelgamal", 6, "6"],
|
||||
["rikatz", 4, "4"],
|
||||
["s-kawamura-w664", 2, "2"],
|
||||
["tstromberg", 1, "1"],
|
||||
["YuikoTakada", 0, "0"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewComments'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<h2>Pull Requests</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Active</h3>
|
||||
<p># of Pull Requests Merged</p>
|
||||
<div id="chart_prCounts" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprCounts);
|
||||
|
||||
function drawprCounts() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Pull Requests Merged', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 20, "20"],
|
||||
["sharifelgamal", 20, "20"],
|
||||
["yosshy", 4, "4"],
|
||||
["medyagh", 4, "4"],
|
||||
["afbjorklund", 4, "4"],
|
||||
["jeffmaury", 2, "2"],
|
||||
["prezha", 2, "2"],
|
||||
["duttaANI", 2, "2"],
|
||||
["Keyhoh", 2, "2"],
|
||||
["yxxhero", 1, "1"],
|
||||
["presztak", 1, "1"],
|
||||
["kadern0", 1, "1"],
|
||||
["csantanapr", 1, "1"],
|
||||
["marwatk", 1, "1"],
|
||||
["claudiubelu", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prCounts'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Big Movers</h3>
|
||||
<p>Lines of code (delta)</p>
|
||||
<div id="chart_prDeltas" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprDeltas);
|
||||
|
||||
function drawprDeltas() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: 'Lines of code (delta)', type: 'number'}, { role: 'annotation' }],
|
||||
["sharifelgamal", 2841, "2841"],
|
||||
["spowelljr", 544, "544"],
|
||||
["dinever", 460, "460"],
|
||||
["kallydev", 407, "407"],
|
||||
["prezha", 361, "361"],
|
||||
["kadern0", 202, "202"],
|
||||
["denverdino", 170, "170"],
|
||||
["medyagh", 77, "77"],
|
||||
["duttaANI", 52, "52"],
|
||||
["afbjorklund", 46, "46"],
|
||||
["nbusseneau", 43, "43"],
|
||||
["phbits", 39, "39"],
|
||||
["yayaha", 26, "26"],
|
||||
["marcvelasco", 15, "15"],
|
||||
["tayl0r", 12, "12"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prDeltas'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most difficult to review</h3>
|
||||
<p>Average PR size (added+changed)</p>
|
||||
<div id="chart_prSize" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprSize);
|
||||
|
||||
function drawprSize() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: 'Average PR size (added+changed)', type: 'number'}, { role: 'annotation' }],
|
||||
["dinever", 391, "391"],
|
||||
["kallydev", 178, "178"],
|
||||
["kadern0", 172, "172"],
|
||||
["prezha", 150, "150"],
|
||||
["denverdino", 149, "149"],
|
||||
["sharifelgamal", 29, "29"],
|
||||
["nbusseneau", 22, "22"],
|
||||
["duttaANI", 21, "21"],
|
||||
["spowelljr", 21, "21"],
|
||||
["yayaha", 19, "19"],
|
||||
["phbits", 19, "19"],
|
||||
["medyagh", 17, "17"],
|
||||
["marcvelasco", 14, "14"],
|
||||
["afbjorklund", 10, "10"],
|
||||
["tayl0r", 9, "9"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prSize'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<h2>Issues</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Active</h3>
|
||||
<p># of comments</p>
|
||||
<div id="chart_comments" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawcomments);
|
||||
|
||||
function drawcomments() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of comments', type: 'number'}, { role: 'annotation' }],
|
||||
["afbjorklund", 29, "29"],
|
||||
["sharifelgamal", 25, "25"],
|
||||
["medyagh", 19, "19"],
|
||||
["spowelljr", 14, "14"],
|
||||
["RA489", 12, "12"],
|
||||
["pivotaljohn", 3, "3"],
|
||||
["rajdas98", 3, "3"],
|
||||
["febzhang", 3, "3"],
|
||||
["Zanderax", 3, "3"],
|
||||
["r4j4h", 3, "3"],
|
||||
["yayaha", 2, "2"],
|
||||
["slabko", 2, "2"],
|
||||
["F1ko", 2, "2"],
|
||||
["ifplusor", 2, "2"],
|
||||
["MadhavJivrajani", 2, "2"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_comments'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Helpful</h3>
|
||||
<p># of words (excludes authored)</p>
|
||||
<div id="chart_commentWords" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawcommentWords);
|
||||
|
||||
function drawcommentWords() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of words (excludes authored)', type: 'number'}, { role: 'annotation' }],
|
||||
["medyagh", 900, "900"],
|
||||
["afbjorklund", 798, "798"],
|
||||
["sharifelgamal", 625, "625"],
|
||||
["spowelljr", 561, "561"],
|
||||
["febzhang", 522, "522"],
|
||||
["slabko", 427, "427"],
|
||||
["Zanderax", 371, "371"],
|
||||
["yangyaofei", 356, "356"],
|
||||
["eiffel-fl", 291, "291"],
|
||||
["r4j4h", 244, "244"],
|
||||
["pivotaljohn", 219, "219"],
|
||||
["huxulm", 212, "212"],
|
||||
["kevinw66", 181, "181"],
|
||||
["SteamUpdate", 131, "131"],
|
||||
["darkpixel", 114, "114"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_commentWords'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Top Closers</h3>
|
||||
<p># of issues closed (excludes authored)</p>
|
||||
<div id="chart_issueCloser" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawissueCloser);
|
||||
|
||||
function drawissueCloser() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of issues closed (excludes authored)', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 60, "60"],
|
||||
["sharifelgamal", 26, "26"],
|
||||
["medyagh", 12, "12"],
|
||||
["afbjorklund", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_issueCloser'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,520 @@
|
|||
---
|
||||
title: "v1.25.0 - 2022-01-19"
|
||||
linkTitle: "v1.25.0 - 2022-01-19"
|
||||
weight: -103
|
||||
---
|
||||
<html>
|
||||
<head>
|
||||
<title>kubernetes/minikube - Leaderboard</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" rel="stylesheet">
|
||||
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
|
||||
<script type="text/javascript">
|
||||
google.charts.load("current", {packages:["corechart"]});
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
background-color: #f7f7fa;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: rgba(66,133,244);
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
color: rgba(23,90,201);
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
color: #666;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
h2.cli {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.board p {
|
||||
font-size: small;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
.board {
|
||||
clear: right;
|
||||
display: inline-block;
|
||||
padding: 0.5em;
|
||||
margin: 0.5em;
|
||||
background-color: #fff;
|
||||
}
|
||||
.board:nth-child(4n+3) {
|
||||
border: 2px solid rgba(66,133,244,0.25);
|
||||
color: rgba(66,133,244);
|
||||
}
|
||||
|
||||
.board:nth-child(4n+2) {
|
||||
border: 2px solid rgba(219,68,55,0.25);
|
||||
color: rgba rgba(219,68,55);
|
||||
}
|
||||
|
||||
.board:nth-child(4n+1) {
|
||||
border: 2px solid rgba(244,160,0,0.25);
|
||||
color: rgba(244,160,0);
|
||||
}
|
||||
|
||||
.board:nth-child(4n) {
|
||||
border: 2px solid rgba(15,157,88,0.25);
|
||||
color: rgba(15,157,88);
|
||||
}
|
||||
|
||||
h3 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>kubernetes/minikube</h1>
|
||||
<div class="subtitle">2021-11-04 — 2022-01-19</div>
|
||||
|
||||
|
||||
|
||||
<h2>Reviewers</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Influential</h3>
|
||||
<p># of Merged PRs reviewed</p>
|
||||
<div id="chart_reviewCounts" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewCounts);
|
||||
|
||||
function drawreviewCounts() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Merged PRs reviewed', type: 'number'}, { role: 'annotation' }],
|
||||
["medyagh", 41, "41"],
|
||||
["spowelljr", 23, "23"],
|
||||
["sharifelgamal", 18, "18"],
|
||||
["atoato88", 11, "11"],
|
||||
["t-inu", 8, "8"],
|
||||
["klaases", 5, "5"],
|
||||
["afbjorklund", 4, "4"],
|
||||
["s-kawamura-w664", 3, "3"],
|
||||
["yosshy", 2, "2"],
|
||||
["rmohr", 1, "1"],
|
||||
["AkihiroSuda", 1, "1"],
|
||||
["dobegor", 1, "1"],
|
||||
["dims", 1, "1"],
|
||||
["inductor", 1, "1"],
|
||||
["neolit123", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewCounts'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Helpful</h3>
|
||||
<p># of words written in merged PRs</p>
|
||||
<div id="chart_reviewWords" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewWords);
|
||||
|
||||
function drawreviewWords() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of words written in merged PRs', type: 'number'}, { role: 'annotation' }],
|
||||
["t-inu", 2796, "2796"],
|
||||
["medyagh", 1418, "1418"],
|
||||
["spowelljr", 1359, "1359"],
|
||||
["atoato88", 951, "951"],
|
||||
["sharifelgamal", 456, "456"],
|
||||
["s-kawamura-w664", 427, "427"],
|
||||
["yosshy", 224, "224"],
|
||||
["afbjorklund", 219, "219"],
|
||||
["klaases", 207, "207"],
|
||||
["neolit123", 128, "128"],
|
||||
["rmohr", 99, "99"],
|
||||
["dobegor", 29, "29"],
|
||||
["dytyniuk", 12, "12"],
|
||||
["AkihiroSuda", 3, "3"],
|
||||
["dims", 2, "2"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewWords'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Demanding</h3>
|
||||
<p># of Review Comments in merged PRs</p>
|
||||
<div id="chart_reviewComments" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewComments);
|
||||
|
||||
function drawreviewComments() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Review Comments in merged PRs', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 59, "59"],
|
||||
["t-inu", 44, "44"],
|
||||
["medyagh", 34, "34"],
|
||||
["atoato88", 27, "27"],
|
||||
["sharifelgamal", 23, "23"],
|
||||
["klaases", 17, "17"],
|
||||
["yosshy", 6, "6"],
|
||||
["s-kawamura-w664", 6, "6"],
|
||||
["neolit123", 3, "3"],
|
||||
["inductor", 1, "1"],
|
||||
["dims", 1, "1"],
|
||||
["AkihiroSuda", 1, "1"],
|
||||
["rmohr", 1, "1"],
|
||||
["dytyniuk", 0, "0"],
|
||||
["afbjorklund", 0, "0"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewComments'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<h2>Pull Requests</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Active</h3>
|
||||
<p># of Pull Requests Merged</p>
|
||||
<div id="chart_prCounts" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprCounts);
|
||||
|
||||
function drawprCounts() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Pull Requests Merged', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 55, "55"],
|
||||
["medyagh", 18, "18"],
|
||||
["sharifelgamal", 17, "17"],
|
||||
["klaases", 15, "15"],
|
||||
["afbjorklund", 10, "10"],
|
||||
["yosshy", 9, "9"],
|
||||
["jeffmaury", 7, "7"],
|
||||
["ekalinin", 4, "4"],
|
||||
["mpuckett159", 3, "3"],
|
||||
["t-inu", 3, "3"],
|
||||
["vishjain", 2, "2"],
|
||||
["jklippel", 2, "2"],
|
||||
["presztak", 2, "2"],
|
||||
["oprudkyi", 2, "2"],
|
||||
["rahil-p", 2, "2"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prCounts'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Big Movers</h3>
|
||||
<p>Lines of code (delta)</p>
|
||||
<div id="chart_prDeltas" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprDeltas);
|
||||
|
||||
function drawprDeltas() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: 'Lines of code (delta)', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 4120, "4120"],
|
||||
["klaases", 634, "634"],
|
||||
["medyagh", 519, "519"],
|
||||
["daehyeok", 491, "491"],
|
||||
["Srikrishnabh", 489, "489"],
|
||||
["presztak", 407, "407"],
|
||||
["sharifelgamal", 383, "383"],
|
||||
["afbjorklund", 182, "182"],
|
||||
["mpuckett159", 168, "168"],
|
||||
["rahil-p", 163, "163"],
|
||||
["ekalinin", 132, "132"],
|
||||
["oprudkyi", 72, "72"],
|
||||
["AkihiroSuda", 59, "59"],
|
||||
["vishjain", 59, "59"],
|
||||
["prezha", 57, "57"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prDeltas'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most difficult to review</h3>
|
||||
<p>Average PR size (added+changed)</p>
|
||||
<div id="chart_prSize" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprSize);
|
||||
|
||||
function drawprSize() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: 'Average PR size (added+changed)', type: 'number'}, { role: 'annotation' }],
|
||||
["Srikrishnabh", 439, "439"],
|
||||
["daehyeok", 398, "398"],
|
||||
["presztak", 156, "156"],
|
||||
["AkihiroSuda", 52, "52"],
|
||||
["rahil-p", 50, "50"],
|
||||
["mpuckett159", 43, "43"],
|
||||
["oprudkyi", 34, "34"],
|
||||
["klaases", 34, "34"],
|
||||
["prezha", 31, "31"],
|
||||
["zcahana", 30, "30"],
|
||||
["vishjain", 28, "28"],
|
||||
["ekalinin", 26, "26"],
|
||||
["spowelljr", 23, "23"],
|
||||
["medyagh", 23, "23"],
|
||||
["NikhilSharmaWe", 19, "19"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prSize'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<h2>Issues</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Active</h3>
|
||||
<p># of comments</p>
|
||||
<div id="chart_comments" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawcomments);
|
||||
|
||||
function drawcomments() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of comments', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 47, "47"],
|
||||
["afbjorklund", 39, "39"],
|
||||
["RA489", 36, "36"],
|
||||
["medyagh", 31, "31"],
|
||||
["sharifelgamal", 23, "23"],
|
||||
["klaases", 18, "18"],
|
||||
["NikhilSharmaWe", 10, "10"],
|
||||
["shadowshot-x", 8, "8"],
|
||||
["Pictor13", 4, "4"],
|
||||
["victor-sudakov", 4, "4"],
|
||||
["ckannon", 4, "4"],
|
||||
["skol101", 3, "3"],
|
||||
["denniseffing", 3, "3"],
|
||||
["anoopcs9", 3, "3"],
|
||||
["rfk", 3, "3"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_comments'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Helpful</h3>
|
||||
<p># of words (excludes authored)</p>
|
||||
<div id="chart_commentWords" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawcommentWords);
|
||||
|
||||
function drawcommentWords() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of words (excludes authored)', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 3766, "3766"],
|
||||
["afbjorklund", 1792, "1792"],
|
||||
["fastlorenzo", 1226, "1226"],
|
||||
["vimalkansal", 989, "989"],
|
||||
["rsong0606", 915, "915"],
|
||||
["NikhilSharmaWe", 838, "838"],
|
||||
["medyagh", 759, "759"],
|
||||
["sharifelgamal", 740, "740"],
|
||||
["shadowshot-x", 552, "552"],
|
||||
["lord22shark", 474, "474"],
|
||||
["prezha", 458, "458"],
|
||||
["klaases", 413, "413"],
|
||||
["dpalmeira", 395, "395"],
|
||||
["theoamonteiro", 377, "377"],
|
||||
["rfk", 355, "355"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_commentWords'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Top Closers</h3>
|
||||
<p># of issues closed (excludes authored)</p>
|
||||
<div id="chart_issueCloser" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawissueCloser);
|
||||
|
||||
function drawissueCloser() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of issues closed (excludes authored)', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 59, "59"],
|
||||
["sharifelgamal", 38, "38"],
|
||||
["medyagh", 25, "25"],
|
||||
["klaases", 2, "2"],
|
||||
["afbjorklund", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_issueCloser'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue