mirror of https://github.com/kubernetes/kops.git
Fix cluster validation dependency on local kubeconfig
This commit is contained in:
parent
f7e8458e31
commit
709e1b6cbd
|
@ -265,7 +265,7 @@ func RunDeleteInstance(ctx context.Context, f *util.Factory, out io.Writer, opti
|
|||
|
||||
var clusterValidator validation.ClusterValidator
|
||||
if !options.CloudOnly {
|
||||
clusterValidator, err = validation.NewClusterValidator(cluster, cloud, list, k8sClient)
|
||||
clusterValidator, err = validation.NewClusterValidator(cluster, cloud, list, config, k8sClient)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot create cluster validator: %v", err)
|
||||
}
|
||||
|
|
|
@ -426,7 +426,7 @@ func RunRollingUpdateCluster(ctx context.Context, f *util.Factory, out io.Writer
|
|||
|
||||
var clusterValidator validation.ClusterValidator
|
||||
if !options.CloudOnly {
|
||||
clusterValidator, err = validation.NewClusterValidator(cluster, cloud, list, k8sClient)
|
||||
clusterValidator, err = validation.NewClusterValidator(cluster, cloud, list, config, k8sClient)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot create cluster validator: %v", err)
|
||||
}
|
||||
|
|
|
@ -155,7 +155,7 @@ func RunValidateCluster(ctx context.Context, f *util.Factory, cmd *cobra.Command
|
|||
timeout := time.Now().Add(options.wait)
|
||||
pollInterval := 10 * time.Second
|
||||
|
||||
validator, err := validation.NewClusterValidator(cluster, cloud, list, k8sClient)
|
||||
validator, err := validation.NewClusterValidator(cluster, cloud, list, config, k8sClient)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unexpected error creating validatior: %v", err)
|
||||
}
|
||||
|
|
|
@ -24,13 +24,13 @@ import (
|
|||
"strings"
|
||||
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/tools/pager"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/cloudinstances"
|
||||
|
@ -60,6 +60,7 @@ type clusterValidatorImpl struct {
|
|||
cluster *kops.Cluster
|
||||
cloud fi.Cloud
|
||||
instanceGroups []*kops.InstanceGroup
|
||||
config *rest.Config
|
||||
k8sClient kubernetes.Interface
|
||||
}
|
||||
|
||||
|
@ -77,15 +78,7 @@ type ValidationNode struct {
|
|||
}
|
||||
|
||||
// hasPlaceHolderIP checks if the API DNS has been updated.
|
||||
func hasPlaceHolderIP(clusterName string) (bool, error) {
|
||||
|
||||
config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
|
||||
clientcmd.NewDefaultClientConfigLoadingRules(),
|
||||
&clientcmd.ConfigOverrides{CurrentContext: clusterName}).ClientConfig()
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("error building configuration: %v", err)
|
||||
}
|
||||
|
||||
func hasPlaceHolderIP(config *rest.Config) (bool, error) {
|
||||
apiAddr, err := url.Parse(config.Host)
|
||||
if err != nil {
|
||||
return true, fmt.Errorf("unable to parse Kubernetes cluster API URL: %v", err)
|
||||
|
@ -104,7 +97,7 @@ func hasPlaceHolderIP(clusterName string) (bool, error) {
|
|||
return false, nil
|
||||
}
|
||||
|
||||
func NewClusterValidator(cluster *kops.Cluster, cloud fi.Cloud, instanceGroupList *kops.InstanceGroupList, k8sClient kubernetes.Interface) (ClusterValidator, error) {
|
||||
func NewClusterValidator(cluster *kops.Cluster, cloud fi.Cloud, instanceGroupList *kops.InstanceGroupList, config *rest.Config, k8sClient kubernetes.Interface) (ClusterValidator, error) {
|
||||
var instanceGroups []*kops.InstanceGroup
|
||||
|
||||
for i := range instanceGroupList.Items {
|
||||
|
@ -120,6 +113,7 @@ func NewClusterValidator(cluster *kops.Cluster, cloud fi.Cloud, instanceGroupLis
|
|||
cluster: cluster,
|
||||
cloud: cloud,
|
||||
instanceGroups: instanceGroups,
|
||||
config: config,
|
||||
k8sClient: k8sClient,
|
||||
}, nil
|
||||
}
|
||||
|
@ -133,9 +127,7 @@ func (v *clusterValidatorImpl) Validate() (*ValidationCluster, error) {
|
|||
|
||||
// Do not use if we are running gossip
|
||||
if !dns.IsGossipHostname(clusterName) {
|
||||
contextName := clusterName
|
||||
|
||||
hasPlaceHolderIPAddress, err := hasPlaceHolderIP(contextName)
|
||||
hasPlaceHolderIPAddress, err := hasPlaceHolderIP(v.config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ func testValidate(t *testing.T, groups map[string]*cloudinstances.CloudInstanceG
|
|||
|
||||
mockcloud := BuildMockCloud(t, groups, cluster, instanceGroups)
|
||||
|
||||
validator, err := NewClusterValidator(cluster, mockcloud, &kopsapi.InstanceGroupList{Items: instanceGroups}, fake.NewSimpleClientset(objects...))
|
||||
validator, err := NewClusterValidator(cluster, mockcloud, &kopsapi.InstanceGroupList{Items: instanceGroups}, nil, fake.NewSimpleClientset(objects...))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -145,7 +145,7 @@ func Test_ValidateCloudGroupMissing(t *testing.T) {
|
|||
|
||||
mockcloud := BuildMockCloud(t, nil, cluster, instanceGroups)
|
||||
|
||||
validator, err := NewClusterValidator(cluster, mockcloud, &kopsapi.InstanceGroupList{Items: instanceGroups}, fake.NewSimpleClientset())
|
||||
validator, err := NewClusterValidator(cluster, mockcloud, &kopsapi.InstanceGroupList{Items: instanceGroups}, nil, fake.NewSimpleClientset())
|
||||
require.NoError(t, err)
|
||||
v, err := validator.Validate()
|
||||
require.NoError(t, err)
|
||||
|
|
Loading…
Reference in New Issue