add validate ingress

pull/8563/head
Medya Gh 2020-06-25 10:40:32 -07:00
parent a0c33f82c1
commit c47854b8fd
2 changed files with 32 additions and 26 deletions

View File

@ -19,7 +19,6 @@ package addons
import (
"fmt"
"path"
"runtime"
"sort"
"strconv"
"strings"
@ -141,32 +140,15 @@ func enableOrDisableAddon(cc *config.ClusterConfig, name string, val string) err
}
// to match both ingress and ingress-dns adons
if strings.HasPrefix(name, "ingress") && enable && driver.IsKIC(cc.Driver) && runtime.GOOS != "linux" {
exit.UsageT(`Due to {{.driver_name}} networking limitations on {{.os_name}}, {{.addon_name}} addon is not supported for this driver.
Alternatively to use this addon you can use a vm-based driver:
// if strings.HasPrefix(name, "ingress") && enable && driver.IsKIC(cc.Driver) && runtime.GOOS != "linux" {
// exit.UsageT(`Due to {{.driver_name}} networking limitations on {{.os_name}}, {{.addon_name}} addon is not supported for this driver.
// Alternatively to use this addon you can use a vm-based driver:
'minikube start --vm=true'
// 'minikube start --vm=true'
To track the update on this work in progress feature please check:
https://github.com/kubernetes/minikube/issues/7332`, out.V{"driver_name": cc.Driver, "os_name": runtime.GOOS, "addon_name": name})
}
if name == "ingress" {
client, err := kapi.Client(viper.GetString(config.ProfileName))
if err != nil {
glog.Errorf("Failed to get kube-client to validate ingress addon: %v", err)
exit.WithError("Failed verifying connectivity to to ingress addon", err)
} else {
err = kapi.WaitForDeploymentToStabilize(client, "kube-system", "ingress-nginx-controller", time.Minute*3)
if err != nil {
glog.Errorf("failed waiting for ingress-controller deployment: %v", err)
exit.WithError(`Failed verifying ingress addon, try disable and enabling it again:
minikube addons disable ingress
minikube addons enable ingress`, err)
}
}
}
// To track the update on this work in progress feature please check:
// https://github.com/kubernetes/minikube/issues/7332`, out.V{"driver_name": cc.Driver, "os_name": runtime.GOOS, "addon_name": name})
// }
if strings.HasPrefix(name, "istio") && enable {
minMem := 8192
@ -330,6 +312,30 @@ func enableOrDisableStorageClasses(cc *config.ClusterConfig, name string, val st
return enableOrDisableAddon(cc, name, val)
}
func validateIngress(cc *config.ClusterConfig, name string, val string) error {
fmt.Println("inside validatr inresssss")
glog.Infof("Setting addon %s=%s in %q", name, val, cc.Name)
enable, err := strconv.ParseBool(val)
if err != nil {
return errors.Wrapf(err, "parsing bool: %s", name)
}
if name == "ingress" && enable {
fmt.Println("validating client")
client, err := kapi.Client(viper.GetString(config.ProfileName))
if err != nil {
return errors.Wrapf(err, "get kube-client to validate ingress addon: %s", name)
} else {
fmt.Println("validating deployment.....")
err = kapi.WaitForDeploymentToStabilize(client, "kube-system", "ingress-nginx-controller", time.Minute*3)
if err != nil {
return errors.Wrapf(err, "Failed verifying ingress addon: %s", name)
}
fmt.Println("SCUCESSSFULLY validated deployment.....")
}
}
return nil
}
// Start enables the default addons for a profile, plus any additional
func Start(wg *sync.WaitGroup, cc *config.ClusterConfig, toEnable map[string]bool, additional []string) {
wg.Add(1)

View File

@ -65,7 +65,7 @@ var Addons = []*Addon{
{
name: "ingress",
set: SetBool,
callbacks: []setFn{enableOrDisableAddon},
callbacks: []setFn{enableOrDisableAddon, validateIngress},
},
{
name: "ingress-dns",