mirror of https://github.com/kubernetes/kops.git
vsphere initial support.
This commit is contained in:
parent
4f71f49e71
commit
82f9f0668d
|
@ -208,6 +208,8 @@ func (t *ProtokubeBuilder) ProtokubeFlags(k8sVersion semver.Version) *ProtokubeF
|
|||
f.DNSProvider = fi.String("aws-route53")
|
||||
case fi.CloudProviderGCE:
|
||||
f.DNSProvider = fi.String("google-clouddns")
|
||||
case fi.CloudProviderVSphere:
|
||||
f.DNSProvider = fi.String("aws-route53")
|
||||
default:
|
||||
glog.Warningf("Unknown cloudprovider %q; won't set DNS provider")
|
||||
}
|
||||
|
|
|
@ -104,6 +104,9 @@ func (b *KubeControllerManagerOptionsBuilder) BuildOptions(o interface{}) error
|
|||
kcm.CloudProvider = "gce"
|
||||
kcm.ClusterName = gce.SafeClusterName(b.Context.ClusterName)
|
||||
|
||||
case fi.CloudProviderVSphere:
|
||||
kcm.CloudProvider = "vsphere"
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown cloud provider %q", clusterSpec.CloudProvider)
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/loader"
|
||||
"strings"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
// KubeletOptionsBuilder adds options for kubelets
|
||||
|
@ -156,6 +157,19 @@ func (b *KubeletOptionsBuilder) BuildOptions(o interface{}) error {
|
|||
clusterSpec.CloudConfig.NodeTags = fi.String(GCETagForRole(b.Context.ClusterName, kops.InstanceGroupRoleNode))
|
||||
}
|
||||
|
||||
if cloudProvider == fi.CloudProviderVSphere {
|
||||
glog.Info("In kubenet for vsphere cloud provider")
|
||||
clusterSpec.Kubelet.CloudProvider = "vsphere"
|
||||
clusterSpec.Kubelet.HairpinMode = "vmw-bridge"
|
||||
|
||||
if clusterSpec.CloudConfig == nil {
|
||||
clusterSpec.CloudConfig = &kops.CloudConfiguration{}
|
||||
}
|
||||
clusterSpec.CloudConfig.Multizone = fi.Bool(true)
|
||||
var vsphere_node_tag = "vsphere_node_tag"
|
||||
clusterSpec.CloudConfig.NodeTags = &vsphere_node_tag
|
||||
}
|
||||
|
||||
usesKubenet, err := UsesKubenet(clusterSpec)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -22,6 +22,7 @@ type CloudProviderID string
|
|||
|
||||
const CloudProviderAWS CloudProviderID = "aws"
|
||||
const CloudProviderGCE CloudProviderID = "gce"
|
||||
const CloudProviderVSphere CloudProviderID = "vsphere"
|
||||
|
||||
type Cloud interface {
|
||||
ProviderID() CloudProviderID
|
||||
|
|
|
@ -37,6 +37,7 @@ import (
|
|||
"k8s.io/kops/pkg/model/awsmodel"
|
||||
"k8s.io/kops/pkg/model/components"
|
||||
"k8s.io/kops/pkg/model/gcemodel"
|
||||
"k8s.io/kops/pkg/model/vspheremodel"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/awsup"
|
||||
|
@ -44,6 +45,8 @@ import (
|
|||
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/gcetasks"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/terraform"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/vsphere"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/vspheretasks"
|
||||
"k8s.io/kops/upup/pkg/fi/fitasks"
|
||||
"k8s.io/kops/util/pkg/hashing"
|
||||
"k8s.io/kops/util/pkg/vfs"
|
||||
|
@ -359,6 +362,20 @@ func (c *ApplyClusterCmd) Run() error {
|
|||
l.TemplateFunctions["MachineTypeInfo"] = awsup.GetMachineTypeInfo
|
||||
}
|
||||
|
||||
case fi.CloudProviderVSphere:
|
||||
{
|
||||
vsphereCloud := cloud.(*vsphere.VSphereCloud)
|
||||
region = vsphereCloud.Region
|
||||
|
||||
//if !AlphaAllowGCE.Enabled() {
|
||||
// return fmt.Errorf("GCE support is currently alpha, and is feature-gated. export KOPS_FEATURE_FLAGS=AlphaAllowGCE")
|
||||
//}
|
||||
|
||||
l.AddTypes(map[string]interface{}{
|
||||
"instance": &vspheretasks.VirtualMachine{},
|
||||
})
|
||||
}
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider)
|
||||
}
|
||||
|
@ -441,6 +458,13 @@ func (c *ApplyClusterCmd) Run() error {
|
|||
&gcemodel.NetworkModelBuilder{GCEModelContext: gceModelContext},
|
||||
//&model.SSHKeyModelBuilder{KopsModelContext: modelContext},
|
||||
)
|
||||
case fi.CloudProviderVSphere:
|
||||
vsphereModelContext := &vspheremodel.VSphereModelContext{
|
||||
KopsModelContext: modelContext,
|
||||
}
|
||||
|
||||
l.Builders = append(l.Builders,
|
||||
&vspheremodel.VirtualMachineModelBuilder{VSphereModelContext: vsphereModelContext})
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown cloudprovider %q", cluster.Spec.CloudProvider)
|
||||
|
@ -565,6 +589,17 @@ func (c *ApplyClusterCmd) Run() error {
|
|||
BootstrapScript: bootstrapScriptBuilder,
|
||||
})
|
||||
}
|
||||
case fi.CloudProviderVSphere:
|
||||
{
|
||||
vsphereModelContext := &vspheremodel.VSphereModelContext{
|
||||
KopsModelContext: modelContext,
|
||||
}
|
||||
|
||||
l.Builders = append(l.Builders, &vspheremodel.AutoscalingGroupModelBuilder{
|
||||
VSphereModelContext: vsphereModelContext,
|
||||
BootstrapScript: bootstrapScriptBuilder,
|
||||
})
|
||||
}
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown cloudprovider %q", cluster.Spec.CloudProvider)
|
||||
|
|
|
@ -33,12 +33,15 @@ import (
|
|||
const (
|
||||
defaultNodeMachineTypeAWS = "t2.medium"
|
||||
defaultNodeMachineTypeGCE = "n1-standard-2"
|
||||
defaultNodeMachineTypeVSphere = "vsphere_node"
|
||||
|
||||
defaultBastionMachineTypeAWS = "t2.micro"
|
||||
defaultBastionMachineTypeGCE = "f1-micro"
|
||||
defaultBastionMachineTypeVSphere = "vsphere_bastion"
|
||||
|
||||
defaultMasterMachineTypeGCE = "n1-standard-1"
|
||||
defaultMasterMachineTypeAWS = "m3.medium"
|
||||
defaultMasterMachineTypeVSphere = "vsphere_master"
|
||||
)
|
||||
|
||||
var masterMachineTypeExceptions = map[string]string{
|
||||
|
@ -153,6 +156,8 @@ func defaultNodeMachineType(cluster *api.Cluster) string {
|
|||
return defaultNodeMachineTypeAWS
|
||||
case fi.CloudProviderGCE:
|
||||
return defaultNodeMachineTypeGCE
|
||||
case fi.CloudProviderVSphere:
|
||||
return defaultNodeMachineTypeVSphere
|
||||
default:
|
||||
glog.V(2).Infof("Cannot set default MachineType for CloudProvider=%q", cluster.Spec.CloudProvider)
|
||||
return ""
|
||||
|
@ -205,6 +210,8 @@ func defaultMasterMachineType(cluster *api.Cluster) string {
|
|||
return defaultMasterMachineTypeAWS
|
||||
case fi.CloudProviderGCE:
|
||||
return defaultMasterMachineTypeGCE
|
||||
case fi.CloudProviderVSphere:
|
||||
return defaultMasterMachineTypeVSphere
|
||||
default:
|
||||
glog.V(2).Infof("Cannot set default MachineType for CloudProvider=%q", cluster.Spec.CloudProvider)
|
||||
return ""
|
||||
|
@ -218,6 +225,8 @@ func defaultBastionMachineType(cluster *api.Cluster) string {
|
|||
return defaultBastionMachineTypeAWS
|
||||
case fi.CloudProviderGCE:
|
||||
return defaultBastionMachineTypeGCE
|
||||
case fi.CloudProviderVSphere:
|
||||
return defaultBastionMachineTypeVSphere
|
||||
default:
|
||||
glog.V(2).Infof("Cannot set default MachineType for CloudProvider=%q", cluster.Spec.CloudProvider)
|
||||
return ""
|
||||
|
|
|
@ -66,6 +66,10 @@ func buildCloudupTags(cluster *api.Cluster) (sets.String, error) {
|
|||
{
|
||||
tags.Insert("_aws")
|
||||
}
|
||||
case "vsphere":
|
||||
{
|
||||
tags.Insert("_vsphere")
|
||||
}
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider)
|
||||
|
|
|
@ -135,6 +135,8 @@ func (tf *TemplateFunctions) DnsControllerArgv() ([]string, error) {
|
|||
argv = append(argv, "--dns=aws-route53")
|
||||
case fi.CloudProviderGCE:
|
||||
argv = append(argv, "--dns=google-clouddns")
|
||||
case fi.CloudProviderVSphere:
|
||||
argv = append(argv, "--dns=aws-route53")
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unhandled cloudprovider %q", tf.cluster.Spec.CloudProvider)
|
||||
|
|
|
@ -185,6 +185,10 @@ func (t *TerraformTarget) Finish(taskMap map[string]fi.Task) error {
|
|||
providerAWS := make(map[string]interface{})
|
||||
providerAWS["region"] = t.Region
|
||||
providersByName["aws"] = providerAWS
|
||||
} else if t.Cloud.ProviderID() == fi.CloudProviderVSphere {
|
||||
providerVSphere := make(map[string]interface{})
|
||||
providerVSphere["region"] = t.Region
|
||||
providersByName["vsphere"] = providerVSphere
|
||||
}
|
||||
|
||||
outputVariables := make(map[string]interface{})
|
||||
|
|
|
@ -25,6 +25,7 @@ import (
|
|||
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
|
||||
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
||||
"strings"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/vsphere"
|
||||
)
|
||||
|
||||
func BuildCloud(cluster *api.Cluster) (fi.Cloud, error) {
|
||||
|
@ -96,6 +97,11 @@ func BuildCloud(cluster *api.Cluster) (fi.Cloud, error) {
|
|||
}
|
||||
cloud = awsCloud
|
||||
}
|
||||
case "vsphere":
|
||||
{
|
||||
cloud = &vsphere.VSphereCloud{}
|
||||
fmt.Println("VSphere: In VSphere cloud provider")
|
||||
}
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider)
|
||||
|
|
Loading…
Reference in New Issue