mirror of https://github.com/kubernetes/kops.git
incorporate review comments to use instance group name for DO instance group tag
This commit is contained in:
parent
0209830ff4
commit
160a4b81c9
|
@ -13,6 +13,7 @@ go_library(
|
|||
"//pkg/apis/kops:go_default_library",
|
||||
"//pkg/dns:go_default_library",
|
||||
"//pkg/model:go_default_library",
|
||||
"//pkg/resources/digitalocean:go_default_library",
|
||||
"//upup/pkg/fi:go_default_library",
|
||||
"//upup/pkg/fi/cloudup/do:go_default_library",
|
||||
"//upup/pkg/fi/cloudup/dotasks:go_default_library",
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"strings"
|
||||
|
||||
"k8s.io/kops/pkg/model"
|
||||
"k8s.io/kops/pkg/resources/digitalocean"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/do"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/dotasks"
|
||||
|
@ -73,9 +74,9 @@ func (d *DropletBuilder) Build(c *fi.ModelBuilderContext) error {
|
|||
clusterTagIndex := do.TagKubernetesClusterIndex + ":" + strconv.Itoa(masterIndexCount)
|
||||
droplet.Tags = append(droplet.Tags, clusterTagIndex)
|
||||
droplet.Tags = append(droplet.Tags, clusterMasterTag)
|
||||
droplet.Tags = append(droplet.Tags, do.TagKubernetesClusterInstanceGroupPrefix+":"+"master-"+d.Cluster.Spec.Subnets[0].Region)
|
||||
droplet.Tags = append(droplet.Tags, digitalocean.TagKubernetesInstanceGroup+":"+ig.Name)
|
||||
} else {
|
||||
droplet.Tags = append(droplet.Tags, do.TagKubernetesClusterInstanceGroupPrefix+":"+"nodes")
|
||||
droplet.Tags = append(droplet.Tags, digitalocean.TagKubernetesInstanceGroup+":"+ig.Name)
|
||||
}
|
||||
|
||||
userData, err := d.BootstrapScriptBuilder.ResourceNodeUp(c, ig)
|
||||
|
|
|
@ -324,9 +324,7 @@ func getCloudGroups(c *Cloud, cluster *kops.Cluster, instancegroups []*kops.Inst
|
|||
// FindInstanceGroups finds instance groups matching the specified tags
|
||||
func FindInstanceGroups(c *Cloud, clusterName string) ([]DOInstanceGroup, error) {
|
||||
var result []DOInstanceGroup
|
||||
var masterDroplets []string
|
||||
var workerDroplets []string
|
||||
nodeExists := false
|
||||
instanceGroupMap := make(map[string][]string) // map of instance group name with droplet ids
|
||||
|
||||
clusterTag := "KubernetesCluster:" + strings.Replace(clusterName, ".", "-", -1)
|
||||
droplets, err := getAllDropletsByTag(c, clusterTag)
|
||||
|
@ -341,36 +339,14 @@ func FindInstanceGroups(c *Cloud, clusterName string) ([]DOInstanceGroup, error)
|
|||
return nil, fmt.Errorf("get droplets Instance group for tags %v returned error. Error=%v", droplet.Tags, err)
|
||||
}
|
||||
|
||||
if strings.Contains(doInstanceGroup, "master") {
|
||||
// This is a master instance group, get the index.
|
||||
k8sIndex, err := getDropletIndexFromTag(droplet.Tags)
|
||||
if err != nil {
|
||||
klog.Warningf("tag check returned err = %v", err)
|
||||
}
|
||||
instanceGroupName = fmt.Sprintf("%s-%s-%s", clusterName, doInstanceGroup, k8sIndex)
|
||||
|
||||
result = append(result, DOInstanceGroup{
|
||||
InstanceGroupName: instanceGroupName,
|
||||
GroupType: "master",
|
||||
ClusterName: clusterName,
|
||||
Members: append(masterDroplets, strconv.Itoa(droplet.ID)),
|
||||
})
|
||||
|
||||
} else if strings.Contains(doInstanceGroup, "nodes") {
|
||||
// This is a node (add this instance group only once)
|
||||
nodeExists = true
|
||||
workerDroplets = append(workerDroplets, strconv.Itoa(droplet.ID))
|
||||
}
|
||||
}
|
||||
|
||||
if nodeExists {
|
||||
instanceGroupName = fmt.Sprintf("%s-%s", clusterName, "nodes")
|
||||
instanceGroupName = fmt.Sprintf("%s-%s", clusterName, doInstanceGroup)
|
||||
instanceGroupMap[instanceGroupName] = append(instanceGroupMap[instanceGroupName], strconv.Itoa(droplet.ID))
|
||||
|
||||
result = append(result, DOInstanceGroup{
|
||||
InstanceGroupName: instanceGroupName,
|
||||
GroupType: "node",
|
||||
GroupType: instanceGroupName,
|
||||
ClusterName: clusterName,
|
||||
Members: workerDroplets,
|
||||
Members: instanceGroupMap[instanceGroupName],
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -391,22 +367,7 @@ func getDropletInstanceGroup(tags []string) (string, error) {
|
|||
}
|
||||
}
|
||||
|
||||
return "", fmt.Errorf("Didn't find k8s-index for tag %v", tags)
|
||||
}
|
||||
|
||||
func getDropletIndexFromTag(tags []string) (string, error) {
|
||||
for _, tag := range tags {
|
||||
klog.V(8).Infof("Check tag = %s", tag)
|
||||
if strings.Contains(strings.ToLower(tag), TagKubernetesClusterIndex) {
|
||||
tagParts := strings.Split(tag, ":")
|
||||
if len(tagParts) < 2 {
|
||||
return "", fmt.Errorf("tag split failed, too few components for tag %q", tag)
|
||||
}
|
||||
return tagParts[1], nil
|
||||
}
|
||||
}
|
||||
|
||||
return "", fmt.Errorf("Didn't find k8s-index for tag %v", tags)
|
||||
return "", fmt.Errorf("Didn't find k8s-instancegroup for tag %v", tags)
|
||||
}
|
||||
|
||||
// matchInstanceGroup filters a list of instancegroups for recognized cloud groups
|
||||
|
|
|
@ -28,7 +28,6 @@ const TagNameEtcdClusterPrefix = "etcdCluster-"
|
|||
const TagNameRolePrefix = "k8s.io/role/"
|
||||
const TagKubernetesClusterNamePrefix = "KubernetesCluster"
|
||||
const TagKubernetesClusterMasterPrefix = "KubernetesCluster-Master"
|
||||
const TagKubernetesClusterInstanceGroupPrefix = "kops-instancegroup"
|
||||
|
||||
func SafeClusterName(clusterName string) string {
|
||||
// DO does not support . in tags / names
|
||||
|
|
Loading…
Reference in New Issue