Merge pull request #12923 from justinsb/nodeup_store_cloudprovider

nodeup: store the CloudProvider in the context
This commit is contained in:
Kubernetes Prow Robot 2021-12-11 08:37:57 -08:00 committed by GitHub
commit c073ff595b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 46 additions and 34 deletions

View File

@ -43,7 +43,7 @@ func (b BootstrapClientBuilder) Build(c *fi.ModelBuilderContext) error {
var authenticator bootstrap.Authenticator
var err error
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) {
switch b.CloudProvider {
case kops.CloudProviderAWS:
authenticator, err = awsup.NewAWSAuthenticator(b.Cloud.Region())
case kops.CloudProviderGCE:
@ -52,7 +52,7 @@ func (b BootstrapClientBuilder) Build(c *fi.ModelBuilderContext) error {
// instead we use this as a check that protokube has now started.
default:
return fmt.Errorf("unsupported cloud provider for authenticator %q", b.Cluster.Spec.CloudProvider)
return fmt.Errorf("unsupported cloud provider for authenticator %q", b.CloudProvider)
}
if err != nil {

View File

@ -86,7 +86,7 @@ func (b *CloudConfigBuilder) build(c *fi.ModelBuilderContext, inTree bool) error
// Add cloud config file if needed
var lines []string
cloudProvider := b.Cluster.Spec.CloudProvider
cloudProvider := b.CloudProvider
cloudConfig := b.Cluster.Spec.CloudConfig
if cloudConfig == nil {

View File

@ -63,7 +63,8 @@ func TestBuildAzure(t *testing.T) {
b := &CloudConfigBuilder{
NodeupModelContext: &NodeupModelContext{
Cluster: cluster,
CloudProvider: kops.CloudProviderAzure,
Cluster: cluster,
},
}
ctx := &fi.ModelBuilderContext{
@ -131,7 +132,8 @@ func TestBuildAWSCustomNodeIPFamilies(t *testing.T) {
b := &CloudConfigBuilder{
NodeupModelContext: &NodeupModelContext{
Cluster: cluster,
CloudProvider: kops.CloudProviderAWS,
Cluster: cluster,
},
}
ctx := &fi.ModelBuilderContext{

View File

@ -72,6 +72,8 @@ type NodeupModelContext struct {
ConfigurationMode string
InstanceID string
MachineType string
CloudProvider kops.CloudProviderID
}
// Init completes initialization of the object, for example pre-parsing the kubernetes version
@ -613,5 +615,5 @@ func (c *NodeupModelContext) InstallNvidiaRuntime() bool {
// RunningOnGCE returns true if we are running on GCE
func (c *NodeupModelContext) RunningOnGCE() bool {
return kops.CloudProviderID(c.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE
return c.CloudProvider == kops.CloudProviderGCE
}

View File

@ -378,7 +378,7 @@ func (b *KubeAPIServerBuilder) writeServerCertificate(c *fi.ModelBuilderContext,
// We also want to be able to reference it locally via https://127.0.0.1
alternateNames = append(alternateNames, "127.0.0.1")
if b.Cluster.Spec.CloudProvider == "openstack" {
if b.CloudProvider == kops.CloudProviderOpenstack {
if b.Cluster.Spec.Topology != nil && b.Cluster.Spec.Topology.Masters == kops.TopologyPrivate {
instanceAddress, err := getInstanceAddress()
if err != nil {

View File

@ -599,7 +599,7 @@ func (b *KubeletBuilder) buildKubeletServingCertificate(c *fi.ModelBuilderContex
}
func (b *KubeletBuilder) kubeletNames() ([]string, error) {
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) != kops.CloudProviderAWS {
if b.CloudProvider != kops.CloudProviderAWS {
name, err := os.Hostname()
if err != nil {
return nil, err

View File

@ -253,8 +253,9 @@ func BuildNodeupModelContext(model *testutils.Model) (*NodeupModelContext, error
}
nodeupModelContext := &NodeupModelContext{
Architecture: "amd64",
BootConfig: &nodeup.BootConfig{},
Architecture: "amd64",
BootConfig: &nodeup.BootConfig{},
CloudProvider: kops.CloudProviderID(model.Cluster.Spec.CloudProvider),
NodeupConfig: &nodeup.Config{
CAs: map[string]string{},
KeypairIDs: map[string]string{},

View File

@ -18,6 +18,7 @@ package model
import (
"k8s.io/klog/v2"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
"k8s.io/kops/util/pkg/distributions"
@ -49,10 +50,10 @@ func (b *NTPBuilder) Build(c *fi.ModelBuilderContext) error {
}
var ntpHost string
switch b.Cluster.Spec.CloudProvider {
case "aws":
switch b.CloudProvider {
case kops.CloudProviderAWS:
ntpHost = "169.254.169.123"
case "gce":
case kops.CloudProviderGCE:
ntpHost = "time.google.com"
default:
ntpHost = ""

View File

@ -231,11 +231,11 @@ func (t *ProtokubeBuilder) ProtokubeFlags(k8sVersion semver.Version) (*Protokube
f.DNSInternalSuffix = fi.String(internalSuffix)
}
if t.Cluster.Spec.CloudProvider != "" {
f.Cloud = fi.String(t.Cluster.Spec.CloudProvider)
if t.CloudProvider != "" {
f.Cloud = fi.String(string(t.CloudProvider))
if f.DNSProvider == nil {
switch kops.CloudProviderID(t.Cluster.Spec.CloudProvider) {
switch t.CloudProvider {
case kops.CloudProviderAWS:
f.DNSProvider = fi.String("aws-route53")
case kops.CloudProviderDO:
@ -243,7 +243,7 @@ func (t *ProtokubeBuilder) ProtokubeFlags(k8sVersion semver.Version) (*Protokube
case kops.CloudProviderGCE:
f.DNSProvider = fi.String("google-clouddns")
default:
klog.Warningf("Unknown cloudprovider %q; won't set DNS provider", t.Cluster.Spec.CloudProvider)
klog.Warningf("Unknown cloudprovider %q; won't set DNS provider", t.CloudProvider)
}
}
}
@ -327,7 +327,7 @@ func (t *ProtokubeBuilder) buildEnvFile() (*nodetasks.File, error) {
}
}
if kops.CloudProviderID(t.Cluster.Spec.CloudProvider) == kops.CloudProviderDO && os.Getenv("DIGITALOCEAN_ACCESS_TOKEN") != "" {
if t.CloudProvider == kops.CloudProviderDO && os.Getenv("DIGITALOCEAN_ACCESS_TOKEN") != "" {
envVars["DIGITALOCEAN_ACCESS_TOKEN"] = os.Getenv("DIGITALOCEAN_ACCESS_TOKEN")
}

View File

@ -133,7 +133,7 @@ func (b *SysctlBuilder) Build(c *fi.ModelBuilderContext) error {
}
}
if b.Cluster.Spec.CloudProvider == string(kops.CloudProviderAWS) {
if b.CloudProvider == kops.CloudProviderAWS {
sysctls = append(sysctls,
"# AWS settings",
"",

View File

@ -30,7 +30,7 @@ var _ fi.ModelBuilder = &WarmPoolBuilder{}
func (b *WarmPoolBuilder) Build(c *fi.ModelBuilderContext) error {
// Check if the cloud provider is AWS
if b.Cluster == nil || b.Cluster.Spec.CloudProvider != string(kops.CloudProviderAWS) {
if b.CloudProvider != kops.CloudProviderAWS {
return nil
}

View File

@ -182,7 +182,12 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
return fmt.Errorf("nodeup config hash mismatch")
}
err = evaluateSpec(c, &nodeupConfig)
cloudProvider := api.CloudProviderID(bootConfig.CloudProvider)
if cloudProvider == "" {
cloudProvider = api.CloudProviderID(c.cluster.Spec.CloudProvider)
}
err = evaluateSpec(c, &nodeupConfig, cloudProvider)
if err != nil {
return err
}
@ -208,7 +213,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
var cloud fi.Cloud
if api.CloudProviderID(c.cluster.Spec.CloudProvider) == api.CloudProviderAWS {
if cloudProvider == api.CloudProviderAWS {
awsCloud, err := awsup.NewAWSCloud(region, nil)
if err != nil {
return err
@ -217,14 +222,15 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
}
modelContext := &model.NodeupModelContext{
Cloud: cloud,
Architecture: architecture,
Assets: assetStore,
Cluster: c.cluster,
ConfigBase: configBase,
Distribution: distribution,
BootConfig: &bootConfig,
NodeupConfig: &nodeupConfig,
Cloud: cloud,
CloudProvider: cloudProvider,
Architecture: architecture,
Assets: assetStore,
Cluster: c.cluster,
ConfigBase: configBase,
Distribution: distribution,
BootConfig: &bootConfig,
NodeupConfig: &nodeupConfig,
}
var secretStore fi.SecretStore
@ -263,7 +269,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
return err
}
if api.CloudProviderID(c.cluster.Spec.CloudProvider) == api.CloudProviderAWS {
if cloudProvider == api.CloudProviderAWS {
instanceIDBytes, err := vfs.Context.ReadFile("metadata://aws/meta-data/instance-id")
if err != nil {
return fmt.Errorf("error reading instance-id from AWS metadata: %v", err)
@ -394,7 +400,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
}
if nodeupConfig.EnableLifecycleHook {
if api.CloudProviderID(c.cluster.Spec.CloudProvider) == api.CloudProviderAWS {
if cloudProvider == api.CloudProviderAWS {
err := completeWarmingLifecycleAction(cloud.(awsup.AWSCloud), modelContext)
if err != nil {
return fmt.Errorf("failed to complete lifecylce action: %w", err)
@ -449,8 +455,8 @@ func completeWarmingLifecycleAction(cloud awsup.AWSCloud, modelContext *model.No
return nil
}
func evaluateSpec(c *NodeUpCommand, nodeupConfig *nodeup.Config) error {
hostnameOverride, err := evaluateHostnameOverride(api.CloudProviderID(c.cluster.Spec.CloudProvider), nodeupConfig.UseInstanceIDForNodeName)
func evaluateSpec(c *NodeUpCommand, nodeupConfig *nodeup.Config, cloudProvider api.CloudProviderID) error {
hostnameOverride, err := evaluateHostnameOverride(cloudProvider, nodeupConfig.UseInstanceIDForNodeName)
if err != nil {
return err
}