mirror of https://github.com/kubernetes/kops.git
Merge pull request #12923 from justinsb/nodeup_store_cloudprovider
nodeup: store the CloudProvider in the context
This commit is contained in:
commit
c073ff595b
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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{
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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{},
|
||||||
|
|
|
@ -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 = ""
|
||||||
|
|
|
@ -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")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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",
|
||||||
"",
|
"",
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue