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 authenticator bootstrap.Authenticator
var err error var err error
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) { switch b.CloudProvider {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
authenticator, err = awsup.NewAWSAuthenticator(b.Cloud.Region()) authenticator, err = awsup.NewAWSAuthenticator(b.Cloud.Region())
case kops.CloudProviderGCE: 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. // instead we use this as a check that protokube has now started.
default: 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 { 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 // Add cloud config file if needed
var lines []string var lines []string
cloudProvider := b.Cluster.Spec.CloudProvider cloudProvider := b.CloudProvider
cloudConfig := b.Cluster.Spec.CloudConfig cloudConfig := b.Cluster.Spec.CloudConfig
if cloudConfig == nil { if cloudConfig == nil {

View File

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

View File

@ -72,6 +72,8 @@ type NodeupModelContext struct {
ConfigurationMode string ConfigurationMode string
InstanceID string InstanceID string
MachineType string MachineType string
CloudProvider kops.CloudProviderID
} }
// Init completes initialization of the object, for example pre-parsing the kubernetes version // 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 // RunningOnGCE returns true if we are running on GCE
func (c *NodeupModelContext) RunningOnGCE() bool { 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 // We also want to be able to reference it locally via https://127.0.0.1
alternateNames = append(alternateNames, "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 { if b.Cluster.Spec.Topology != nil && b.Cluster.Spec.Topology.Masters == kops.TopologyPrivate {
instanceAddress, err := getInstanceAddress() instanceAddress, err := getInstanceAddress()
if err != nil { if err != nil {

View File

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

View File

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

View File

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

View File

@ -231,11 +231,11 @@ func (t *ProtokubeBuilder) ProtokubeFlags(k8sVersion semver.Version) (*Protokube
f.DNSInternalSuffix = fi.String(internalSuffix) f.DNSInternalSuffix = fi.String(internalSuffix)
} }
if t.Cluster.Spec.CloudProvider != "" { if t.CloudProvider != "" {
f.Cloud = fi.String(t.Cluster.Spec.CloudProvider) f.Cloud = fi.String(string(t.CloudProvider))
if f.DNSProvider == nil { if f.DNSProvider == nil {
switch kops.CloudProviderID(t.Cluster.Spec.CloudProvider) { switch t.CloudProvider {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
f.DNSProvider = fi.String("aws-route53") f.DNSProvider = fi.String("aws-route53")
case kops.CloudProviderDO: case kops.CloudProviderDO:
@ -243,7 +243,7 @@ func (t *ProtokubeBuilder) ProtokubeFlags(k8sVersion semver.Version) (*Protokube
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
f.DNSProvider = fi.String("google-clouddns") f.DNSProvider = fi.String("google-clouddns")
default: 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") 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, sysctls = append(sysctls,
"# AWS settings", "# AWS settings",
"", "",

View File

@ -30,7 +30,7 @@ var _ fi.ModelBuilder = &WarmPoolBuilder{}
func (b *WarmPoolBuilder) Build(c *fi.ModelBuilderContext) error { func (b *WarmPoolBuilder) Build(c *fi.ModelBuilderContext) error {
// Check if the cloud provider is AWS // 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 return nil
} }

View File

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