mirror of https://github.com/kubernetes/kops.git
Merge pull request #3406 from justinsb/baremetal_relax_to_create_objects
Automatic merge from submit-queue. . baremetal: fill out more of the baremetal mappings
This commit is contained in:
commit
a7fccedf5e
|
|
@ -249,28 +249,40 @@ func ValidateCluster(c *kops.Cluster, strict bool) *field.Error {
|
|||
|
||||
// Check CloudProvider
|
||||
{
|
||||
cloudProvider := c.Spec.CloudProvider
|
||||
|
||||
if cloudProvider == "" {
|
||||
return field.Required(fieldSpec.Child("CloudProvider"), "")
|
||||
var k8sCloudProvider string
|
||||
switch kops.CloudProviderID(c.Spec.CloudProvider) {
|
||||
case kops.CloudProviderAWS:
|
||||
k8sCloudProvider = "aws"
|
||||
case kops.CloudProviderGCE:
|
||||
k8sCloudProvider = "gce"
|
||||
case kops.CloudProviderDO:
|
||||
k8sCloudProvider = "external"
|
||||
case kops.CloudProviderVSphere:
|
||||
k8sCloudProvider = "vsphere"
|
||||
case kops.CloudProviderBareMetal:
|
||||
k8sCloudProvider = ""
|
||||
default:
|
||||
return field.Invalid(fieldSpec.Child("CloudProvider"), c.Spec.CloudProvider, "unknown cloudprovider")
|
||||
}
|
||||
|
||||
if c.Spec.Kubelet != nil && (strict || c.Spec.Kubelet.CloudProvider != "") {
|
||||
if cloudProvider != c.Spec.Kubelet.CloudProvider && c.Spec.Kubelet.CloudProvider != "external" {
|
||||
if k8sCloudProvider != c.Spec.Kubelet.CloudProvider {
|
||||
return field.Invalid(fieldSpec.Child("Kubelet", "CloudProvider"), c.Spec.Kubelet.CloudProvider, "Did not match cluster CloudProvider")
|
||||
}
|
||||
}
|
||||
if c.Spec.MasterKubelet != nil && (strict || c.Spec.MasterKubelet.CloudProvider != "") {
|
||||
if cloudProvider != c.Spec.MasterKubelet.CloudProvider && c.Spec.MasterKubelet.CloudProvider != "external" {
|
||||
if k8sCloudProvider != c.Spec.MasterKubelet.CloudProvider {
|
||||
return field.Invalid(fieldSpec.Child("MasterKubelet", "CloudProvider"), c.Spec.MasterKubelet.CloudProvider, "Did not match cluster CloudProvider")
|
||||
}
|
||||
}
|
||||
if c.Spec.KubeAPIServer != nil && (strict || c.Spec.KubeAPIServer.CloudProvider != "") {
|
||||
if cloudProvider != c.Spec.KubeAPIServer.CloudProvider && c.Spec.KubeAPIServer.CloudProvider != "external" {
|
||||
if k8sCloudProvider != c.Spec.KubeAPIServer.CloudProvider {
|
||||
return field.Invalid(fieldSpec.Child("KubeAPIServer", "CloudProvider"), c.Spec.KubeAPIServer.CloudProvider, "Did not match cluster CloudProvider")
|
||||
}
|
||||
}
|
||||
if c.Spec.KubeControllerManager != nil && (strict || c.Spec.KubeControllerManager.CloudProvider != "") {
|
||||
if cloudProvider != c.Spec.KubeControllerManager.CloudProvider && c.Spec.KubeControllerManager.CloudProvider != "external" {
|
||||
if k8sCloudProvider != c.Spec.KubeControllerManager.CloudProvider {
|
||||
return field.Invalid(fieldSpec.Child("KubeControllerManager", "CloudProvider"), c.Spec.KubeControllerManager.CloudProvider, "Did not match cluster CloudProvider")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,8 +109,10 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(o interface{}) error {
|
|||
c.CloudProvider = "external"
|
||||
case kops.CloudProviderVSphere:
|
||||
c.CloudProvider = "vsphere"
|
||||
case kops.CloudProviderBareMetal:
|
||||
// for baremetal, we don't specify a cloudprovider to apiserver
|
||||
default:
|
||||
return fmt.Errorf("unknown cloud provider %q", clusterSpec.CloudProvider)
|
||||
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider)
|
||||
}
|
||||
|
||||
c.LogLevel = 2
|
||||
|
|
|
|||
|
|
@ -110,8 +110,11 @@ func (b *KubeControllerManagerOptionsBuilder) BuildOptions(o interface{}) error
|
|||
case kops.CloudProviderVSphere:
|
||||
kcm.CloudProvider = "vsphere"
|
||||
|
||||
case kops.CloudProviderBareMetal:
|
||||
// No cloudprovider
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown cloud provider %q", clusterSpec.CloudProvider)
|
||||
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider)
|
||||
}
|
||||
|
||||
if kcm.Master == "" {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import (
|
|||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks"
|
||||
|
|
@ -95,6 +96,8 @@ func (b *MasterVolumeBuilder) Build(c *fi.ModelBuilderContext) error {
|
|||
b.addGCEVolume(c, name, volumeSize, subnet, etcd, m, allMembers)
|
||||
case kops.CloudProviderVSphere:
|
||||
b.addVSphereVolume(c, name, volumeSize, subnet, etcd, m, allMembers)
|
||||
case kops.CloudProviderBareMetal:
|
||||
glog.Fatalf("BareMetal not implemented")
|
||||
default:
|
||||
return fmt.Errorf("unknown cloudprovider %q", b.Cluster.Spec.CloudProvider)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,8 @@ const (
|
|||
)
|
||||
|
||||
var (
|
||||
// AlphaAllowBareMetal is a feature flag that gates BareMetal support while it is alpha
|
||||
AlphaAllowBareMetal = featureflag.New("AlphaAllowBareMetal", featureflag.Bool(false))
|
||||
// AlphaAllowDO is a feature flag that gates DigitalOcean support while it is alpha
|
||||
AlphaAllowDO = featureflag.New("AlphaAllowDO", featureflag.Bool(false))
|
||||
// AlphaAllowGCE is a feature flag that gates GCE support while it is alpha
|
||||
|
|
@ -409,6 +411,15 @@ func (c *ApplyClusterCmd) Run() error {
|
|||
})
|
||||
}
|
||||
|
||||
case kops.CloudProviderBareMetal:
|
||||
{
|
||||
if !AlphaAllowBareMetal.Enabled() {
|
||||
return fmt.Errorf("BareMetal support is currently (very) alpha and is feature-gated. export KOPS_FEATURE_FLAGS=AlphaAllowBareMetal to enable it")
|
||||
}
|
||||
|
||||
// No additional tasks (yet)
|
||||
}
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,25 +56,28 @@ func buildCloudupTags(cluster *api.Cluster) (sets.String, error) {
|
|||
return nil, fmt.Errorf("no networking mode set")
|
||||
}
|
||||
|
||||
switch cluster.Spec.CloudProvider {
|
||||
case "gce":
|
||||
switch api.CloudProviderID(cluster.Spec.CloudProvider) {
|
||||
case api.CloudProviderGCE:
|
||||
{
|
||||
tags.Insert("_gce")
|
||||
}
|
||||
|
||||
case "aws":
|
||||
case api.CloudProviderAWS:
|
||||
{
|
||||
tags.Insert("_aws")
|
||||
}
|
||||
case "digitalocean":
|
||||
case api.CloudProviderDO:
|
||||
{
|
||||
tags.Insert("_do")
|
||||
}
|
||||
case "vsphere":
|
||||
case api.CloudProviderVSphere:
|
||||
{
|
||||
tags.Insert("_vsphere")
|
||||
}
|
||||
|
||||
case api.CloudProviderBareMetal:
|
||||
// No tags
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
|
|||
region := ""
|
||||
project := ""
|
||||
|
||||
switch cluster.Spec.CloudProvider {
|
||||
case "gce":
|
||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
||||
case kops.CloudProviderGCE:
|
||||
{
|
||||
nodeZones := make(map[string]bool)
|
||||
for _, subnet := range cluster.Spec.Subnets {
|
||||
|
|
@ -71,7 +71,7 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
|
|||
cloud = gceCloud
|
||||
}
|
||||
|
||||
case "aws":
|
||||
case kops.CloudProviderAWS:
|
||||
{
|
||||
region, err := awsup.FindRegion(cluster)
|
||||
if err != nil {
|
||||
|
|
@ -100,7 +100,7 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
|
|||
}
|
||||
cloud = awsCloud
|
||||
}
|
||||
case "vsphere":
|
||||
case kops.CloudProviderVSphere:
|
||||
{
|
||||
vsphereCloud, err := vsphere.NewVSphereCloud(&cluster.Spec)
|
||||
if err != nil {
|
||||
|
|
@ -108,7 +108,7 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
|
|||
}
|
||||
cloud = vsphereCloud
|
||||
}
|
||||
case "digitalocean":
|
||||
case kops.CloudProviderDO:
|
||||
{
|
||||
// for development purposes we're going to assume
|
||||
// single region setups for DO. Reconsider this logic
|
||||
|
|
@ -122,7 +122,7 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
|
|||
cloud = doCloud
|
||||
}
|
||||
|
||||
case string(kops.CloudProviderBareMetal):
|
||||
case kops.CloudProviderBareMetal:
|
||||
{
|
||||
// TODO: Allow dns provider to be specified
|
||||
dns, err := dnsprovider.GetDnsProvider(route53.ProviderName, nil)
|
||||
|
|
|
|||
Loading…
Reference in New Issue