Merge branch 'master' of github.com:kubernetes/minikube into anders-default-runtime

pull/13251/head
Sharif Elgamal 2022-02-01 12:59:09 -08:00
commit 634b8030f9
127 changed files with 6908 additions and 2399 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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'

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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
View File

@ -8,6 +8,7 @@ reviewers:
- prasadkatti
- prezha
- spowelljr
- klaases
approvers:
- afbjorklund
- sharifelgamal

View File

@ -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)

View File

@ -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
}

View File

@ -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)
}
}

View File

@ -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
}

View File

@ -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")})
}

View File

@ -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) {

View File

@ -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)
}

View File

@ -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

View File

@ -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,6 +144,14 @@ rules:
- rolebindings
verbs:
- '*'
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- create
- update
- apiGroups:
- ""
resources:
@ -152,6 +160,8 @@ rules:
- events
- namespaces
- pods
- pods/proxy
- pods/portforward
- persistentvolumeclaims
- secrets
- services
@ -191,6 +201,7 @@ spec:
- name: http-metrics
port: 8383
targetPort: 8383
protocol: TCP
selector:
name: istio-operator
...
@ -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

View File

@ -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

View File

@ -1,756 +1,763 @@
[
{
"name": "v1.24.0",
"checksums": {
"darwin": "7b0ecea078e370d26f45ee51b60d322f46f9f3df54b92f81d342244ffcfa14d9",
"linux": "1a69a286e9846438778a712297d1daec44d2c702c5f4540d97b3269fdb2b4e3d",
"windows": "7c12564a00b74704d43c347584615633d6de158f82c48c04fac909d7487bf6c2"
},
"name": "v1.25.1"
},
{
"checksums": {
"darwin": "55f14e4f411370da18d7b9432ae4edd128f4f047bbc87a278e08ba256ff6f669",
"linux": "3bc218476cf205acf11b078d45210a4882e136d24a3cbb7d8d645408e423b8fe",
"windows": "bb729590e111652d5f444fa66b66196491fa21c0713e4ff29f6e5360ab13a02c"
}
},
"name": "v1.24.0"
},
{
"name": "v1.23.2",
"checksums": {
"darwin": "cf2971d4b83b9c5e359d644410dcca9bba6933ee08427967302e6767f6628086",
"linux": "752d91414793b6a88b309c806b65841ffa62a3bf07383146bd54afbf15de80b4",
"windows": "994e806468425e23aadcf86b99f0341fa1848a9a70456f09111c071f769c552d"
}
},
"name": "v1.23.2"
},
{
"name": "v1.23.1",
"checksums": {
"darwin": "2b6addab443e384fec975b9f4d35a931b1988961f6a9e87f10768596e23eb70e",
"linux": "fc23f94e870b18c2fc015af18fe2dee00452059100e42a5483b9440da1a5fba2",
"windows": "4050b6c97b18c6c25e1d760ff2d93333af7fe1f69d3eb29b5a20e60d6ef3f766"
}
},
"name": "v1.23.1"
},
{
"name": "v1.23.0",
"checksums": {
"darwin": "943f522393e04879bb83d0e484d608dd4086e92c58a0161b4f29dc9691a9ec80",
"linux": "a34f1e46151f3e302b7d92dee680a0cceaba5c5d6ab79baaf695b17c4a61df38",
"windows": "7b7f4c7be4fd954037dbb0f05ef5631f1b453d0d08c8de7c4d402261816b50ac"
}
},
"name": "v1.23.0"
},
{
"name": "v1.22.0",
"checksums": {
"darwin": "932a278393cdcb90bff79c4e49d72c1c34910a71010f1466ce92f51d8332fb58",
"linux": "7579e5763a4e441500e5709eb058384c9cfe9c9dd888b39905b2cdf3d30fbf36",
"windows": "8764ca0e290b4420c5ec82371bcc1b542990a93bdf771578623554be32319d08"
}
},
"name": "v1.22.0"
},
{
"name": "v1.21.0",
"checksums": {
"darwin": "e2043883ca993b2a65396d379823dab6404dd842d0cc2a81348d247b01785070",
"linux": "5d423a00a24fdfbb95627a3fadbf58540fc4463be2338619257c529f93cf061b",
"windows": "74c961877798531ab8e53e2590bfae3cee7690d0c2e0614fdb44339e065124b5"
}
},
"name": "v1.21.0"
},
{
"name": "v1.20.0",
"checksums": {
"darwin": "5185b7a4156671444dc7ad33b013b90f8a0ffb5186fc5c1a084e7c1cb6cd0788",
"linux": "87e5260afcba82dfcb7681b542c3e15665113b6d388faebe77bb0a784737dd13",
"windows": "ab3239792c89225b9f1b6f70cebe2fd6f6afd95d3755a4b708937a8ed876042f"
}
},
"name": "v1.20.0"
},
{
"name": "v1.19.0",
"checksums": {
"darwin": "8111d393424aaf141ad4dc6c520979ca6e1ba39249d07df3979c9a6152adf9e6",
"linux": "e4df939a230d6eb35aafd2971d0bb6ec27f4e0ebee9a41cb8cf5ae144de97af8",
"windows": "5ebfff08582aa7b4a9aa75517bedc3fbde4e0dca3a412f1f9001b29eacef1ae1"
}
},
"name": "v1.19.0"
},
{
"name": "v1.18.1",
"checksums": {
"darwin": "afca0cf5063e8b444b2201808fde3b95a8c59c509bd3e77574111697adb51315",
"linux": "86f65235361ebe4916350d988c756fcb2f27fc1bd3e2d84912462b39bb660dfe",
"windows": "db7d701cc737baa8daff58fb68e038f7d06324e972429444767f3514ea38c790"
}
},
"name": "v1.18.1"
},
{
"name": "v1.18.0",
"checksums": {
"darwin": "a8c78a01fb129a7c66bad25bace89dc59e912b7fc0a8456de3321f9adce7a01e",
"linux": "7a330bcd45c96633c14aabcae74b3308eacf6e552a5f6ccd565a03e2f293785f",
"windows": "264b8bd9062d73b7570a26455f646fbfbce9b7bfaf375cf5642ae17937e1f79a"
}
},
"name": "v1.18.0"
},
{
"name": "v1.17.1",
"checksums": {
"darwin": "c9361152a0a4aaed23d212b792f1907454f5fdd950f0cf9ac65c789744acf5ac",
"linux": "03a6d6cccecb7a33a09afc6dae40d8d76ccfe168aa4aba1a18c1f45bbab120c2",
"windows": "5e1d57379aa729b0a9247d5be6617906ebb7e934105df06eb6b24dda08899d3e"
}
},
"name": "v1.17.1"
},
{
"name": "v1.17.0",
"checksums": {
"darwin": "ad2b4de4b3f8863c2cfa9f5072cdc787141b0587fb9855dd645242253489fab3",
"linux": "e312901e12c347d0e4eec74d94b8d75512943eb62479b441bb1332f05cde0d09",
"windows": "dcae6ee972a49c4389d5e3ea81039b826cda55fefbe23b9273eeb46514abe244"
}
},
"name": "v1.17.0"
},
{
"name": "v1.16.0",
"checksums": {
"darwin": "546329a1a2448e1e8a483241c23a3ca272bd795df5a78bd6bf922699d3a75823",
"linux": "af29a48b2d79075f9d57be3a28724eef2cd628bb87283ed58dd72cbe1f8967c4",
"windows": "8928ad4ddcbcf203bf688be6fac826d12483116b4ac0625f28dbb8ab6a278979"
}
},
"name": "v1.16.0"
},
{
"name": "v1.15.1",
"checksums": {
"darwin": "ab47a4e3ff742db8a88d7bf0fe9cb9c6805e6f1df2545d8888f196c46b96f714",
"linux": "88c3bfac3880e897e4d032801b02f02fdda642b75d76ebeb5df545cd90eee409",
"windows": "89e34d6137bba7a59b74e138af28746b883bb605cbf2d37c1ff29dce008050e8"
}
},
"name": "v1.15.1"
},
{
"name": "v1.15.0",
"checksums": {
"darwin": "a744ed7fb5c317ef06b2c5ae0d94cec1d41e1d5c2ea40b5ece28e7a340abbad3",
"linux": "0b287e1cafc911ea6e39879f13ea302eeed5f6679bc77c719bfe21870056f3ca",
"windows": "a9e3e52c262b8832f3a83cbef4cbfc3e4c9e9e14baab819b43af040def7a447f"
}
},
"name": "v1.15.0"
},
{
"name": "v1.14.2",
"checksums": {
"darwin": "5d72bea6159e41f30865492298aa0e37af164ef22e56165ac78be179947d3b9d",
"linux": "f38f8da05a940589989eb0e85492edfe146caf57f9cfbb4ebb06de877f828f2e",
"windows": "cafd7a10a950d3c63425758b1afb3eaad12a4a5abd586fb83afc27a832a2c62b"
}
},
"name": "v1.14.2"
},
{
"name": "v1.14.1",
"checksums": {
"darwin": "d07db8343d06caa484a645bdd84d72d9babba81a18a7a50729616571b5e6702a",
"linux": "a7ad2b00389146a5b1833a35a96e50a224e7b382d072ee771b425eb6719bf109",
"windows": "71217e883e2d1c17b64415fbabef6bf199c7b03f88f66478c659d199c315e315"
}
},
"name": "v1.14.1"
},
{
"name": "v1.14.0",
"checksums": {
"darwin": "71dee6241a93945b40ea7188ad15459e50e7b65eab09fed7302d8cacdc58585c",
"linux": "8727635489be895d9b9cfaa5cb599f45799a28fb07e0a2aac351a9aa1c4b46c1",
"windows": "0317e6c338da23ccf0aba698668c6d919f22e1482340a09d1269220063937aeb"
}
},
"name": "v1.14.0"
},
{
"name": "v1.13.1",
"checksums": {
"darwin": "cc7eaadea2becc48eee78136f8d569df55a28c46d58d1c8bb434895382aced78",
"linux": "3564b685f8d797df78ebfa2f5b34c99b3c77b0d1f49eab6aab37500f1ba61d98",
"windows": "0d315ec21ca8a34eff5fa4cc478c09ed2d48ae88b3c5d586df9de111ac414d44"
}
},
"name": "v1.13.1"
},
{
"name": "v1.13.0",
"checksums": {
"darwin": "5a51ad5147e7152801fce7215676d241989a915b346cf80c814c80f732b172ba",
"linux": "08d1522475e425188863cc2ab664bac8b1df3fa29e87edb6cba17aea82b63fbb",
"windows": "969121a5e932d279451d777fb7a844835949e00f2004d3f92f027ae86dc3acb1"
}
},
"name": "v1.13.0"
},
{
"name": "v1.12.3",
"checksums": {
"darwin": "060275cd2129fbf3ce38f245a85651a6f050dff25a3ed0454241e1319ea1ab08",
"linux": "664ebef01166ef6c6b13ff1d70faecca9292e2fcdc85766e8ebd2c607488711c",
"windows": "994e7a232c57b6b917c20ad2e40e88a6b8e80e057212b14def3307e4b22ebbe6"
}
},
"name": "v1.12.3"
},
{
"name": "v1.12.2",
"checksums": {
"darwin": "2d71dea18e8dd415b3c0306d91b53d9ca889e45ac3f090e4b8bff8ec7e744bcc",
"linux": "a314c57cfacd034da303bf00406c9ffae2880aaf98a7dc48d9cd92d2caa23237",
"windows": "c3b561a33a64ddd7b0122a8398d2364cdef66e8de76ad876be93946638bd8d36"
}
},
"name": "v1.12.2"
},
{
"name": "v1.12.1",
"checksums": {
"darwin": "81a69450b8baaa1abbe88d11c58c2a40e552da4d9052d9e123bdbea3e5607146",
"linux": "a0d8f9d71623e8c66723547fede7df95c12e2a8827fef408b640a6f62bafd57b",
"windows": "db7365266ebb00cd79ae5fc9c854fcf611ad1c6abd152f272727f6691ea8a4ad"
}
},
"name": "v1.12.1"
},
{
"name": "v1.12.0",
"checksums": {
"darwin": "7f6c6eeca19d6b16c9043cfc96a42408bbdec8ba90c01bd025249ca855a1362c",
"linux": "3501b6c2be48183affa9497e7db6d751d92e1536267268b73ad1a936a2977122",
"windows": "a5f8666d762146cc7d85916bcb2d6b7246162e4706f10e5c12a795b9d07ea6c4"
}
},
"name": "v1.12.0"
},
{
"name": "v1.11.0",
"checksums": {
"darwin": "cc1b8a3327661be6a5d4dc1d6f9891aeeca40f7d9a389aaaffd8d4a1abbe294b",
"linux": "0b07a295d5110dc70907e4660429b8f9b3e8c05119e42f73e192b5313695a913",
"windows": "e94991292f4a0c5b91ef165f826c6a615a122513e8771c8f9ce5b7ec96ab9df0"
}
},
"name": "v1.11.0"
},
{
"name": "v1.10.1",
"checksums": {
"darwin": "9c51656f6855b4dff9a6f0bf1136255c18bc07c467ff67b32257da921e879246",
"linux": "acc67ea2ff1ca261269a702a6d998367f65c86d9024c20bbf5ac3922bfca1aaa",
"windows": "60d4db87a834509a69b70ac253de040eabfb9e96aaf3cee159f73c3d5f37e81a"
}
},
"name": "v1.10.1"
},
{
"name": "v1.10.0",
"checksums": {
"darwin": "aff7d9e273aff53f8b3ab0e0bc3fdfff76daa19b4a0f5480679ba52fc688eae1",
"linux": "9d34cb50bc39f80d39f92d1fb7cb23a271504b519f5e805574894d395ce3e7b3",
"windows": "9c3410ff03ed0d114e98cbd8cb1b14a3a131e69d92bd964b114ce07fa8385e70"
}
},
"name": "v1.10.0"
},
{
"name": "v1.9.2",
"checksums": {
"darwin": "f27016246850b3145e1509e98f7ed060fd9575ac4d455c7bdc15277734372e85",
"linux": "3121f933bf8d608befb24628a045ce536658738c14618504ba46c92e656ea6b5",
"windows": "426586f33d88a484fdc5a3b326b0651d57860e9305a4f9d4180640e3beccaf6b"
}
},
"name": "v1.9.2"
},
{
"name": "v1.9.1",
"checksums": {
"darwin": "ac8855ea54e798fa6f00e8c251b55c3d2a54e3b80e896162958a5ac7b0e3f60b",
"linux": "7174c881289a7302a05d477c67cc1ef5b48153e825089d6c0d0bcfaebe33d42a",
"windows": "91d15b2ef8f357aa463ae16de59f6e018120398f492ba4e35cd77f21acb27d5c"
}
},
"name": "v1.9.1"
},
{
"name": "v1.9.0",
"checksums": {
"darwin": "2a074b0d842e3d9272444990374c6ffc51878c2d11c0434f54e15269b59593f9",
"linux": "81d77d1babe63be393e0a3204aac7825eb35e0fdf58ffefd9f66508a43864866",
"windows": "d11a957704c23670eac453a47897449a2aaab13b7dcd6424307f8932ac9f81bb"
}
},
"name": "v1.9.0"
},
{
"name": "v1.8.2",
"checksums": {
"darwin": "cbd1ff4dd239180b417bcd496fe0a31dbe8f212586765c040fdd20991ca13d50",
"linux": "0b21b50a8064aaea816cc7495cbbe324ab126284b0dbbb15c9f4df5ac72c22fb",
"windows": "076ccf11e8238647101e26d327adb0880fdac63cbd6e12bd0bb1420f09a85b9c"
}
},
"name": "v1.8.2"
},
{
"name": "v1.8.1",
"checksums": {
"darwin": "a19ab670ca81f11a82b6868e2995b5ab178fe121f6638bf40ec7d49c266f3d32",
"linux": "028bfb3aa0e5a1d1de49b13e4550d3d2885f2d0bb572f76a72372aba93fff22c",
"windows": "3d4daf04ac2addcc52b529bdebe50488867c5ce63d4e94083b0030be1e1e7b91"
}
},
"name": "v1.8.1"
},
{
"name": "v1.8.0",
"checksums": {
"darwin": "deb72f43ac361607e86a1b78668b19225e7d0956499fee6e3ed7d92b6b562451",
"linux": "e26af291482c6793cff4e35dc154922bcf0d4bca60a593c90fab891f602839ad",
"windows": "ee2162b0a2e3d1a1217400d34a2de2ab82a0c51e14236acb2b36faa3cdde3185"
}
},
"name": "v1.8.0"
},
{
"name": "v1.7.3",
"checksums": {
"darwin": "e8d762357123773f6c4dc300f8bccec3cdf2326c94f03a8aeb934e4e73fd59b8",
"linux": "575adc22884b49ecce9c9d289a7127b64f2759f639cb894c3040890bee1939c5",
"windows": "0fdc0d60e36001c021b6cc09e699e2a38b4070661cf7e78badf750ee84340afa"
}
},
"name": "v1.7.3"
},
{
"name": "v1.7.2",
"checksums": {
"darwin": "fcfb05f44620e54ce81fe8ac415196230ceb42c4007171533ef2049b7d4e8646",
"linux": "9f543f464b4d93a259f7d5a7578edff1316370d45b5a0679b86ed7a61b01634d",
"windows": "cbbe30445baffa9a3d77834d4e24c1ec595ecc2b7933db21109aa90aa79eaddd"
}
},
"name": "v1.7.2"
},
{
"name": "v1.7.1",
"checksums": {
"darwin": "ac6b1eb8ff6a98f0f4a8f26fddd7a9fd8dbdd7a5029cf87a9315399d31e4f6ce",
"linux": "1313da4fce807f2d5cd4664d8a59422067a3377ddd37fa66df9aa0bb228e154b",
"windows": "640ad4ba69926be2ea64140a5d6d80122f030c8bf75ae4afeca11eeff865feac"
}
},
"name": "v1.7.1"
},
{
"name": "v1.7.0",
"checksums": {
"darwin": "1f3785e9521eabe241df0481fa41887a6a3873307bac8a89fd0e48aa7612be29",
"linux": "f1fcab9f161a64f19b618a901e50488ed6f1c6ab20695c82623586a701d2d261",
"windows": "2f4448f32e505bf38ba52cd3678c73622a6bb452c63a4179d590f6da26520c68"
}
},
"name": "v1.7.0"
},
{
"name": "v1.6.2",
"checksums": {
"darwin": "5ea5168a80597ee6221bf50a524429a24a37f0c0f36725e6b297dc5a7a6a2105",
"linux": "eabd027438953d29a4b0f7b810c801919cc13bef3ebe7aff08c9534ac2b091ab",
"windows": "79d66c874cfe3497656e9ba191680cc95abd92d2f722b10de38f00b76ef82393"
}
},
"name": "v1.6.2"
},
{
"name": "v1.6.1",
"checksums": {
"darwin": "bcfc181ade08bd2a87fca70f0aa59f9f4b23c893fc2b335b3cb8f05b84ae2d34",
"linux": "cbd526d64531266d42f02667339d3c53e5a399e3abebda63c96b0bbd6b7e935d",
"windows": "1d7372fcf099d583d4140a4ce4aa8f5c2752d3bd0d143e53647aee6221dcb663"
}
},
"name": "v1.6.1"
},
{
"name": "v1.6.0",
"checksums": {
"darwin": "fd1af02f0fc11fb0bec35b9ae1f6bf2d157f51948155d8b1ddc899521642fc32",
"linux": "48738607ecdb0b00815599230a2a2b17dc90bd3bbcb1b217bace043f78370db3",
"windows": "20e7db220308f06913acd10addb1ec01c87b74245cebc70fa18a979c1b323f34"
}
},
"name": "v1.6.0"
},
{
"name": "v1.5.2",
"checksums": {
"darwin": "734306019f837a6aee9cb7a0245839f98ea7688ee2cde387099334cb9356c2c4",
"linux": "1972a9a96de85e480012f6d2c9b8a88fd29217b99b1a973ed5e199386659f7e9",
"windows": "9f012922fd8d701070ef3951b0df77b720805a204d4d0dfa15d11899fda8a2d0"
}
},
"name": "v1.5.2"
},
{
"name": "v1.5.1",
"checksums": {
"darwin": "7ba345034e176566930d873acd0f38366dd14fdafd038febe600ea38c24c4208",
"linux": "5aed23a876770c92d0162fcf7862d855dc306516614be78ac6fbc47b5cba55e6",
"windows": "5a7bd914b0ae57e0853d72a06b7fb72e645417f2f3cd86d0f1bc4f636a04d160"
}
},
"name": "v1.5.1"
},
{
"name": "v1.5.0",
"checksums": {
"darwin": "eb716c176f404bb555966ff3947d5d9c5fb63eb902d11c83839fda492ff4b1fc",
"linux": "ca50dcc7c83d4dde484d650a5a1934ea1bef692340af3aa831d34c6e847b2770",
"windows": "bdd61e446f49570428848ad15337264edfecc55d1dd4aed4499d559f9c8383b9"
}
},
"name": "v1.5.0"
},
{
"name": "v1.4.0",
"checksums": {
"darwin": "ae19f66c8f4a5716a1c22125af1bcf3d41d1b81cfa5fe7fc76a50c0c46e2c409",
"linux": "e63b8007c2d39fd037587adff2ec5360a910b51f427f0d1521fce5f3cac5e0fd",
"windows": "cd77fbe1b5892de2697161483f44f4ef6833c1418b53e913c2edef3ac95e7475"
}
},
"name": "v1.4.0"
},
{
"name": "v1.3.1",
"checksums": {
"darwin": "5947abe57fa390fcfd96849ac87fc9319f026d4b13f944b6beecc3615e3668be",
"linux": "057a4f4ca36ff51ecad59509d94d3694543b874949e805e2b79792ceef21f983",
"windows": "be1999452b166de72f946aac17ca7c40d53b8a5c8f59dad912c2413f7cc42563"
}
},
"name": "v1.3.1"
},
{
"name": "v1.3.0",
"checksums": {
"darwin": "5bda29e2d990bb8ac9da1767143e228772adc45507d22a49b5af70b03e7db682",
"linux": "5aa7c5f0b6dd09348f7e2435b9618f6a916fbb573580619b393b514258771eab",
"windows": "d808b6e42e6f53c9338d135a352bebd4469634f33646d06e7cad3569330225cb"
}
},
"name": "v1.3.0"
},
{
"name": "v1.2.0",
"checksums": {
"darwin": "183d017d094b7783c938dc709dbdfc9a48f92299178234f89047dfbb083a592c",
"linux": "123fc9f5656333fb2927cf91666a91cd5b28ef97503418ac2a90a2109e518ed9",
"windows": "f6c30cb88ec61bc6fe17532a3ef56e4f1fcef2473e3d73fc56f352b44784490d"
}
},
"name": "v1.2.0"
},
{
"name": "v1.1.1",
"checksums": {
"darwin": "cf6b2c0397147fa998a5c4e36ed7ad045d67f929daa3e46a1d01656b5ab7cac5",
"linux": "4596c0daabfe637912e2372c41cc11116ca053a1f7045af8a731265e45f9ca83",
"windows": "e86e9c7c1c25cfd251f010b62e83fdf2ee2eefc3e73b4b1f7fa18971577150be"
}
},
"name": "v1.1.1"
},
{
"name": "v1.1.0",
"checksums": {
"darwin": "3f635089d93ba7bd193b8f015bfa9434b810256daa8ced03816c7f0df7b06a96",
"linux": "43ce88a10c7b57f5e4f83e5a1485e13e4ad537bfb20f7d57364f66450b872634",
"windows": "2a8e95fbe4ec9b32c603767f16b731b5f09ddd04c3e43f6bbe7fffd22afbf811"
}
},
"name": "v1.1.0"
},
{
"name": "v1.0.1",
"checksums": {
"darwin": "0af8a3f582c9284ffe10e99444b60a75241325f2bc9ab43ec758802f2b89e1db",
"linux": "7b56374955990ef2dd0289e6ecb62cf2b4587cab2b481d95f58de5db56799868",
"windows": "58abb5fb3e694a451102963e04ce13ea0cea46b7bf5c7947f40fdfc673282ac9"
}
},
"name": "v1.0.1"
},
{
"name": "v1.0.0",
"checksums": {
"darwin": "865bd3a13c1ad3b7732b2bea35b26fef150f2b3cbfc257c5d1835527d1b331e9",
"linux": "a315869f81aae782ecc6ff2a6de4d0ab3a17ca1840d1d8e6eea050a8dd05907f",
"windows": "a9e629911498ce774681504abe1797c1957e29d100d40c80c26ac54e22716a85"
}
},
"name": "v1.0.0"
},
{
"name": "v0.35.0",
"checksums": {
"darwin": "9fb0ce4decb0f40b1b2ee11cad0aa89e13e2d5c46ff0d35875a0a65788dee6b4",
"linux": "e161995604c42c37a797fd11fac5d545f8b75f0796afc3b10679253bf229ff3d",
"windows": "748c9087e876491332897d8dc937eeea92f9fda9003443ef668dc75f5638ed5b"
}
},
"name": "v0.35.0"
},
{
"name": "v0.34.1",
"checksums": {
"darwin": "54b865528ff14a4cfa479bd7c5630db81e0695c3b4b85939b0735dc1203541d3",
"linux": "8db7e8a128de48ebeb1cb8cacb457f60b5420706e08c190e466f4e9b971fd8f3",
"windows": "90fdaddd3ffe62beef2503e59295b15124b454b795324a8dcb54dd0cc7ba3296"
}
},
"name": "v0.34.1"
},
{
"name": "v0.34.0",
"checksums": {
"darwin": "8932ee06a8db3fae696d97bfefa2d7ad2168ffa3046e0729f39164cf11a78911",
"linux": "97a871bc4d62287b167db1feb1ef167925e2b51d7a0fb4bfe3ac215402e10deb",
"windows": "89e8f10ab97f3440c5dad47f6be96ed49cf9d7dc3a15849f682440a0a3649ea1"
}
},
"name": "v0.34.0"
},
{
"name": "v0.33.1",
"checksums": {
"darwin": "ff5aee67920e9615aef804ed0db9d0dfaebfb9f54ca093ddc16c67b3834baaf0",
"linux": "8a5effbbe6a847eb61e676b6ad62883d9c19abe75452d766043f41a59248f191",
"windows": "bf8cd98dec45725cb4b4123be59a54751d0b65c435573b8a19f2c439a91f1a4b"
}
},
"name": "v0.33.1"
},
{
"name": "v0.33.0",
"checksums": {
"darwin": "bfa1b27ef6ad3912a24917c07237409db033e1454fe9c8df063c1fb1180b3b7a",
"linux": "8a2eb70571993efbd5b44eda7ed3b04853ef877973bfe1a2c768ce649f8e5af5",
"windows": "1ea3386fc15dc96577ce6a2f2f2193d1f4e63673146c3528970c8f4d49c0304b"
}
},
"name": "v0.33.0"
},
{
"name": "v0.32.0",
"checksums": {
"darwin": "d5b21adacd4b6bad9006816e4bdb29f39318a60919e7a6bb5e388a6299fffd0f",
"linux": "3298d3183deacd9ddd3032dab113a64d863df7648d6d24693284ba4193e95b49",
"windows": "31668f64f6be25644b22d0465e0f72d745a027804b2c8685e040b8147bacfba1"
}
},
"name": "v0.32.0"
},
{
"name": "v0.31.0",
"checksums": {
"darwin": "621189b5ec9cbb55003ee3577d480e847c0f80a9ed58f4fb3ed567bb7be623a1",
"linux": "5926978aee75776af0867d112a77334b10ec65f687d734f238bfd88960c983c2",
"windows": "1ae607a849569664f6c5d87f969b1f9a096524515a6524be07fd364b7d405f6c"
}
},
"name": "v0.31.0"
},
{
"name": "v0.30.0",
"checksums": {
"darwin": "e09789c4eb751969f712947a43effd79cf73488163563e79d98bc3d15d06831e",
"linux": "f6fcd916adbdabc84fceb4ff3cadd58586f0ef6e576233b1bd03ead1f8f04afa",
"windows": "8f09d63c64a2a0c4810c492066b16ccd4bd63e2f3c2d0eb55e49c51c915493f6"
}
},
"name": "v0.30.0"
},
{
"name": "v0.29.0",
"checksums": {
"darwin": "196b2cbf4003ccc3574ba105437ae675bcd9cf80e6f8396b5581d40c35c6070d",
"linux": "0f8890d4a0869e6e80a62e63ad08336caf75e38111307e8fe57773d706c4142d",
"windows": "78aeb9ccff70121bc8dd0d6fb8a9c9438a39da806104d1be09923f369f496c32"
}
},
"name": "v0.29.0"
},
{
"name": "v0.28.2",
"checksums": {
"darwin": "dca43053510f5e8987ff89abf601594eaf58bc5d447d74f9a08e300f3d92133f",
"linux": "3c84872ffa5ddbce472062fb548f9b3a25af72587d35243e12f18d86aaa6a085",
"windows": "1f9840a3a54d793b60ff1b9c7ef1c87269ee24d118f7ef47667d9f7a0ef7861a"
}
},
"name": "v0.28.2"
},
{
"name": "v0.28.1",
"checksums": {
"darwin": "7d9b67c4c716184d6a854fb91b08b99094356a44b51e315659b254fbd74022cc",
"linux": "af261082d0ba9eb2dc3836a4cd903a449bafcb8647c5d5cb555c4e9144093627",
"windows": "e94d8d597e1c876dc45d6f63254e296bc95ee5c98c0a06b28050f59dad7d90c7"
}
},
"name": "v0.28.1"
},
{
"name": "v0.28.0",
"checksums": {
"darwin": "bfde769dc3e1bf050a079927fdcd646723ae73d13dda3505eea6a80acc27cb57",
"linux": "dfe361f86288a4cedcdc3bffbbe5b4716c7ee19cbb82d70696b0f20596a15c65",
"windows": "4ee548642184648b5dfb1380dc08a3541d3b665446c602830253126123ae5be5"
}
},
"name": "v0.28.0"
},
{
"name": "v0.27.0",
"checksums": {
"darwin": "d335f7a6a03d7aead5cb95867ecdb96b845b3520593df16688e6dfac7d4717c1",
"linux": "7c03650d33e029f1dbf810d27dc1fc197ad9b889f645a4d5c353bb1c46d3ff2a",
"windows": "c714aa1667cd7d73807e23904c37a9b696e50e8143f5705660c0f1147d8307e8"
}
},
"name": "v0.27.0"
},
{
"name": "v0.26.1",
"checksums": {
"darwin": "8cabcaa244a7d62697ad8f4393e3661c9e9cd598a75df79a8d1ffe803f80b209",
"linux": "3c956459ee8dad9452c97d54463f982d1d511a9afaa0f3851d88320bd5dcf58a",
"windows": "498f9f090972c047836fcb1580bb6fcee53fe920955377569d903ba72a0c425e"
}
},
"name": "v0.26.1"
},
{
"name": "v0.26.0",
"checksums": {
"darwin": "0b2c63c6f5a00525e679b01948edffcb16e3bdb37ea0db3ed89431dd0e4c3b3c",
"linux": "65dcc26a595c73b5bd2a3e47c3d5aa3bbdef81fe603f8d56f947d37cb12c74fc",
"windows": "a7d8edb6713b819a8f44b732314a1b8fe5b77a4397693c633f641592fe6e32f1"
}
},
"name": "v0.26.0"
},
{
"name": "v0.25.0",
"checksums": {
"darwin": "0d85ecc1cd064bae04ea4a8ef634d4fdc80318b65a2b8d14d105f1e15fcbced0",
"linux": "5676f2d4f37f1c6f9cf99d56c7e1a3016976d657f9715e8cb255667a0c5803c1",
"windows": "de2cbda425ae76ec7240d4543d8642598974fa558727bee10b7866ceb72c3fd9"
}
},
"name": "v0.25.0"
},
{
"name": "v0.24.1",
"checksums": {
"darwin": "f89abc1caaf73f3a623c6c5b792833fab2e0667cd0d1ebaffc05918b3b81c164",
"linux": "1261de09386fd1f4ee7a4645958757c2c9e69f419a2a4ca8aff475017a7e036e",
"windows": "61e1aa977ffdfd5373158820f8d57a8f4af7c43e78b8598651dea65be59b8bab"
}
},
"name": "v0.24.1"
},
{
"name": "v0.24.0",
"checksums": {
"darwin": "7db2045495db05a885c3ad9a0e5e7ff017ae1f2f1a835d9151142df0c6f1d192",
"linux": "fb624bfda432c764d19212fcaab2a368db8bb0e8427b7ff04b5b684faab0b463",
"windows": "46510a457658e7aee492cc0f1807b3b57c61b1d7154e7ee5b4da607fe681347f"
}
},
"name": "v0.24.0"
},
{
"name": "v0.23.0",
"checksums": {
"darwin": "3d0c5581cd14f85637fb888c1e2e124152c4c9643a257ba90c8cd929d2c2b8b3",
"linux": "cd9c6c640a1632e8c44d9b335e68db869da28442b6ab0642a2b7adbc1e4ef334",
"windows": "ddee80b2505447197994377f40e574061e1d59203019b587361be2b28762fd61"
}
},
"name": "v0.23.0"
},
{
"name": "v0.22.3",
"checksums": {
"darwin": "62483f95b55fc14e6cd3898bbfdd637a0ad921e5f1a632b5e367d74af5e36f24",
"linux": "7d85e6ca06943376fe3235663857bf51b4d3fe0d59b6ef645821bf212301244b",
"windows": "0a7037cb510bfbd9f78b85a80910a43bb8f6e7a9de89cd4323fea3ff52fce524"
}
},
"name": "v0.22.3"
},
{
"name": "v0.22.2",
"checksums": {
"darwin": "d59ca57fece491fee8b47a5c092ac297e807ca47584ac2b65078d070ed5d3f48",
"linux": "cddba4a49d522afe3b556bc251ca57017b060859d25a55d9fade294432982515",
"windows": "fffa980120ab40716fc83f525bc230574cd636581126b9473bd50ea9a40c89e4"
}
},
"name": "v0.22.2"
},
{
"name": "v0.22.1",
"checksums": {
"darwin": "a5bf0deacfce70a7f19f5955da14bb02871fee724185f76ad95657a5f35d96ce",
"linux": "0b61a7b7ca21e2c9bda5ab18d60c6c3fdf7a40d62db23b49de29617a6439c6fb",
"windows": "fc86f53768b6f77b425bcb330de7f5b6fe541ff96796228a4567b183b04793af"
}
},
"name": "v0.22.1"
},
{
"name": "v0.22.0",
"checksums": {
"darwin": "389c4cbbef69e760e8c5e226035d5afcad05540e2dd1d77439f903be119873f4",
"linux": "aaa439aee636a01e6340a1104721942af43c3fb481a5a32e112ccd8a37d8a1e9",
"windows": "06f7db04dae2e126958bd822fdbee1f10039a673f4b67c332373093b06a67d03"
}
},
"name": "v0.22.0"
},
{
"name": "v0.21.0",
"checksums": {
"darwin": "2a6960cfa2b5aed9fec8d8cbe357fa8f5776761ee5efa3dd26abccc894f4b453",
"linux": "c5dc6e8d85f96d4bfba321bdca93b2a828a714162653a55a9b3a6d527f517e82",
"windows": "ef6f5566eca0c20bc87391c0cd6e7103d6e3c6a05211ed6157ed143f9b956686"
}
},
"name": "v0.21.0"
},
{
"name": "v0.20.0",
"checksums": {
"darwin": "591737b728745dbf01f634bf714353c416c2e56c39e2e0431910fa51783b7a19",
"linux": "f7d51f0b94f88650ced3ddb6e079f560e7ef142b8e4d53a5aee511ca1c2e3df4",
"windows": "d4be02e5e7075943d6b4efca44c0ff56286f72236e2640d82010b944646612b7"
}
},
"name": "v0.20.0"
},
{
"name": "v0.19.0",
"checksums": {
"darwin": "efe27dd4f791403b90eefab8c1f6ea3c7f3115a7609f41e3189517f088e20f0e",
"linux": "1b3447b307fa256378c9541731cfc5d5b06128f88dab04b3cfc9deeeceddb2bf",
"windows": "105fa416fbda1fc8f4ad6c2e9a7883733d5f11ae247ef6cfd15e9fbc6dd5dd56"
}
},
"name": "v0.19.0"
},
{
"name": "v0.18.0",
"checksums": {
"darwin": "301dc5f47cccface80769bd3a03d58ba80893f6ede75f2a7ec22f1bc56666deb",
"linux": "212fbf52a6d601deb383271e2af756982f9b72715e1f7a3d65770d04387d8c8d",
"windows": "302bfe9747882291e686ecf6f337e78836f7bb0e1783fc6d8bf1f3482fb2badf"
}
},
"name": "v0.18.0"
},
{
"name": "v0.17.1",
"checksums": {
"darwin": "b175c355d377a6ce2fefdd19201c865a7e628581261ac949fffb725af459c389",
"linux": "54f9e24b5622f540a6d5edd7450ce546cf6f57f9feff21fd5d92d0d2f552ac31",
"windows": "86a713ced29399c736d14bf19be7aead96a22b03374441d99a457a4c44df9d53"
}
},
"name": "v0.17.1"
},
{
"name": "v0.17.0",
"checksums": {
"darwin": "d12fb4f8d9ff538c5563e1dcdf29495dc47b64a3fe108d7190fa37bf94a09a21",
"linux": "086d3438a9c2f324f494cf6dd4c422c27e93b19dd874c77d093d8ff91709a659",
"windows": "3d349978704791596a03237715ad502f5ab5bbd76014b761e579e859a5eaf4c1"
}
},
"name": "v0.17.0"
},
{
"name": "v0.16.0",
"checksums": {
"darwin": "1de0dda591d23c01aa52f6e7b6c85bec7e4811a007a5a939eb2d1bed6fa84144",
"linux": "119a687ce949f48cc7cc0ed3827bcd182d7769968023a0561bf93290ff265d5a",
"windows": "e3f21e866fc2b241c69b0836ebf9ac2d4a7eae3a234aa5c1b1447073e3e0804a"
}
},
"name": "v0.16.0"
},
{
"name": "v0.15.0",
"checksums": {
"darwin": "cc76cb68c9dfbe0317701e5d264ecf03cb3177a3a77906d901960c7adff6fc4a",
"linux": "0396080f87469b2bae0e9b23477156f32d25119b6b712f7e82a25a82d41ed3bc",
"windows": "11b6499c3b8079a7b7c74482c119db244d2585332a649de1edd0cc9bc85ce1b9"
}
},
"name": "v0.15.0"
},
{
"name": "v0.14.0",
"checksums": {
"darwin": "950805a1e1929dc41ef27698a0325b981f99f4a45df121521861fcd696e35f28",
"linux": "a9e8423474de6046c672db5b035475fc034223652b081d1accba89af7da5a5e0",
"windows": "5d6ef16842ea17aeaa715e5966edbc4f5ad220eaca15c070c1a191bb2360677b"
}
},
"name": "v0.14.0"
},
{
"name": "v0.13.1",
"checksums": {
"darwin": "77bc72679ca1beb09ad7f26ec8ba8b286283ddf7bee4e68163b88c5a439bc049",
"linux": "52706da92b6cf9a5eb4f59fe6034f119e3eb442c3fc57bf181d01db929e1289f",
"windows": "5bbb30feb34f09a1d7cee5051bb3b28103eef719ae828bfd8fddb11efc56a5c7"
}
},
"name": "v0.13.1"
},
{
"name": "v0.13.0",
"checksums": {
"darwin": "bf04827735c1f8b7dd51548fbd01ef3a2f84a2db64b235a794020241c3ccf996",
"linux": "453c2e3e55afb258bd7ca7ca9ba1da3f59d0131eb9bb73cf46cce7bb5bc0fbb4",
"windows": "1f5d09f7d9442e2d861eaed3a8403c7db029f076d69773d9ffdd177b3af14b6f"
}
},
"name": "v0.13.0"
},
{
"name": "v0.12.2",
"checksums": {
"darwin": "5f818be5235d606ec5241ac1eea0dc92e6328d56841617c51e4595a0abc4300c",
"linux": "ace8dcaf9418ed0e4eb07e7737b0af41036f6aaa05f784386725feb041463a74",
"windows": "1768aea06220946f22e88d294f02984135a77799b88373fc6b1a98b3da6802ef"
}
},
"name": "v0.12.2"
},
{
"name": "v0.12.1",
"checksums": {
"darwin": "d1f4ae5ef298ffbd50f56f7da7fb6215bd79795a5db90b07d9d57468e8485a3c",
"linux": "e767236598d619ac93d4fa2782a5534c7107068f3b46ecee69e92ab8d9f0a3d1",
"windows": "67a6146011f6c90274b0f509f7dff18bd3a6f423dc9ba3bcce933ac9b25c2891"
}
},
"name": "v0.12.1"
},
{
"name": "v0.12.0",
"checksums": {
"darwin": "a96d6e1d53a7999503d00bcd41b4ccaa80f5d57f798608f03e3f4d63a42f9991",
"linux": "1315a334e701c1558740e4140f8e28985d7734e8a53e4af2153076c2586c3c7d",
"windows": "373e3e2e1d9e000044711dfafe3a88fdb9620c3050a6b5f9e8ed0eb3e7ffd12e"
}
},
"name": "v0.12.0"
},
{
"name": "v0.11.0",
"checksums": {
"darwin": "7fe7ce35eda959d91071d065141d040053b945d5af0d57f98eb18afb93a4c921",
"linux": "f654835e3610fc746060ffdcdba5df68ca39231a4c6d5c6c9d9caffb10c25da1",
"windows": "4ba3e7a08cf3cc2b0f50e454a48d67022e8ca78b9363cd743644eb7b5f03a3b5"
}
},
"name": "v0.11.0"
},
{
"name": "v0.10.0",
"checksums": {
"darwin": "fc7552b5475d0c20ad96057fb88d686e226d09bd1034269d5078b33ba7d7cc8e",
"linux": "f905af9b2ef1e954d0633680ab5a8914d628b9104cce54de7e42509d89d2c541",
"windows": "93b0e1fabeab79da2b61c9237076893dacf3cc147294298d50cb48ca7cd2a86f"
}
},
"name": "v0.10.0"
},
{
"name": "v0.9.0",
"checksums": {
"darwin": "4415e7f3a30ace7cf0e5ad023f979509e6b25ded1bfb55368f918fc25098307e",
"linux": "76b341aa377c274c7147e203483f117ef01151a8e33bb232e29872ad20f6effc",
"windows": "98cb96fef863c9a4acac210eea910c2d239a87b13a6e2ac10ffe35244880e203"
}
},
"name": "v0.9.0"
},
{
"name": "v0.8.0",
"checksums": {
"darwin": "cc7439fc8e8e8e957246908f99314abeeb8513745b8d30ed64bf480227ec2607",
"linux": "8f9a8a41ba4a89ec847d998591ab24a8989c27852fce5193c5bdba23139223b7",
"windows": "3f384df76a24d2f3d70d7fc4b2c41dfb833ce0f02fb7be5bd39928d647094bc1"
}
},
"name": "v0.8.0"
},
{
"name": "v0.7.1",
"checksums": {
"darwin": "fc8365148be19bd020432d8ddc85c06b7aab3953300b16b24f20fcd8393de449",
"linux": "461c09753505e8c06a55b59633abbaa4daa89190374e4c737fe4d4d1107b9f1b",
"windows": "cb065787e1ade5761f3be8be407714e0a0dfa23aa1080f33dcccd13655c857a2"
}
},
"name": "v0.7.1"
},
{
"name": "v0.7.0",
"checksums": {
"darwin": "67af90d31c02e26bdb5a1af96a67b00feb288f20f96b4a67f7c4f1a40b382e99",
"linux": "374c813dcfc23a49cf48a73361088251aa6f85e8cd06b42c9e6d43c1dfb4def4",
"windows": "83d5b8c67d6535b6c156feb0e3b3485b54114436f6338dbdc86b4f92c8cecf43"
}
},
"name": "v0.7.0"
},
{
"name": "v0.6.0"

61
go.mod
View File

@ -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
View File

@ -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=

View File

@ -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})

View File

@ -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() {

View File

@ -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
}

View File

@ -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")

View File

@ -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>

View File

@ -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();

View File

@ -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)
}
}

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -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 {
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 {

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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}}`,
},

View File

@ -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"

View File

@ -99,6 +99,11 @@ var Addons = []*Addon{
set: SetBool,
callbacks: []setFn{EnableOrDisableAddon},
},
{
name: "kong",
set: SetBool,
callbacks: []setFn{EnableOrDisableAddon},
},
{
name: "kubevirt",
set: SetBool,

View File

@ -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 {

View File

@ -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 {

View File

@ -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 (

View File

@ -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) {

View File

@ -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

View File

@ -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)
ifs, err := dom.ListAllInterfaceAddresses(libvirt.DOMAIN_INTERFACE_ADDRESSES_SRC_ARP)
if ifs == nil {
if err != nil {
return nil, fmt.Errorf("failed listing network interface addresses of domain %s: %w", domain, err)
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

View File

@ -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",

View File

@ -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)
}

View File

@ -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}}
`))

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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,
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")
}

View File

@ -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.

View File

@ -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

View File

@ -21,127 +21,71 @@ var (
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
"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",
},
}

View File

@ -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{

View File

@ -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

View File

@ -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 {

View File

@ -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"
}

View File

@ -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
}

View File

@ -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)

View File

@ -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()

View File

@ -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)
}

View File

@ -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),

View File

@ -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
}

View File

@ -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)

View File

@ -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

View File

@ -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)
}
}

View File

@ -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

View File

@ -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,10 +258,12 @@ func handleAPIServer(starter Starter, cr cruntime.Manager, hostIP net.IP) (*kube
return nil, bs, errors.Wrap(err, "Failed kubeconfig update")
}
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.
go func() {

View File

@ -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)

View File

@ -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 |

View File

@ -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 |

View File

@ -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")

View File

@ -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 &mdash; 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>

View File

@ -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 &mdash; 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>

View File

@ -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 &mdash; 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