mirror of https://github.com/kubernetes/kops.git
Refactor LaunchTemplate.RootVolumeType
This commit is contained in:
parent
abc6bc087c
commit
01a55812ac
|
|
@ -36,8 +36,6 @@ import (
|
|||
const (
|
||||
// DefaultVolumeType is the default volume type
|
||||
DefaultVolumeType = ec2.VolumeTypeGp3
|
||||
// DefaultLegacyVolumeType is the default volume type when using LaunchConfigurations
|
||||
DefaultLegacyVolumeType = ec2.VolumeTypeGp2
|
||||
// DefaultVolumeIonIops is the default volume IOPS when volume type is io1 or io2
|
||||
DefaultVolumeIonIops = 100
|
||||
// DefaultVolumeGp3Iops is the default volume IOPS when volume type is gp3
|
||||
|
|
@ -141,6 +139,11 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.ModelBuilde
|
|||
return nil, fmt.Errorf("unable to find IAM profile link for instance group %q: %w", ig.ObjectMeta.Name, err)
|
||||
}
|
||||
|
||||
rootVolumeType := fi.StringValue(ig.Spec.RootVolumeType)
|
||||
if rootVolumeType == "" {
|
||||
rootVolumeType = DefaultVolumeType
|
||||
}
|
||||
|
||||
tags, err := b.CloudTagsForInstanceGroup(ig)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error building cloud tags: %v", err)
|
||||
|
|
@ -160,7 +163,7 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.ModelBuilde
|
|||
RootVolumeOptimization: lc.RootVolumeOptimization,
|
||||
RootVolumeSize: lc.RootVolumeSize,
|
||||
RootVolumeIops: lc.RootVolumeIops,
|
||||
RootVolumeType: lc.RootVolumeType,
|
||||
RootVolumeType: fi.String(rootVolumeType),
|
||||
RootVolumeEncryption: lc.RootVolumeEncryption,
|
||||
SSHKey: lc.SSHKey,
|
||||
SecurityGroups: lc.SecurityGroups,
|
||||
|
|
@ -236,6 +239,25 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.ModelBuilde
|
|||
lt.HTTPTokens = ig.Spec.InstanceMetadata.HTTPTokens
|
||||
}
|
||||
|
||||
if rootVolumeType == ec2.VolumeTypeIo1 || rootVolumeType == ec2.VolumeTypeIo2 {
|
||||
if fi.Int32Value(ig.Spec.RootVolumeIops) < 100 {
|
||||
lt.RootVolumeIops = fi.Int64(int64(DefaultVolumeIonIops))
|
||||
} else {
|
||||
lt.RootVolumeIops = fi.Int64(int64(fi.Int32Value(ig.Spec.RootVolumeIops)))
|
||||
}
|
||||
} else if rootVolumeType == ec2.VolumeTypeGp3 {
|
||||
if fi.Int32Value(ig.Spec.RootVolumeIops) < 3000 {
|
||||
lt.RootVolumeIops = fi.Int64(int64(DefaultVolumeGp3Iops))
|
||||
} else {
|
||||
lt.RootVolumeIops = fi.Int64(int64(fi.Int32Value(ig.Spec.RootVolumeIops)))
|
||||
}
|
||||
if fi.Int32Value(ig.Spec.RootVolumeThroughput) < 125 {
|
||||
lt.RootVolumeThroughput = fi.Int64(int64(DefaultVolumeGp3Throughput))
|
||||
} else {
|
||||
lt.RootVolumeThroughput = fi.Int64(int64(fi.Int32Value(ig.Spec.RootVolumeThroughput)))
|
||||
}
|
||||
}
|
||||
|
||||
// When using a MixedInstances ASG, AWS requires the SpotPrice be defined on the ASG
|
||||
// rather than the LaunchTemplate or else it returns this error:
|
||||
// You cannot use a launch template that is set to request Spot Instances (InstanceMarketOptions)
|
||||
|
|
@ -253,21 +275,6 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.ModelBuilde
|
|||
} else {
|
||||
lt.RootVolumeKmsKey = fi.String("")
|
||||
}
|
||||
if fi.StringValue(ig.Spec.RootVolumeType) == "" {
|
||||
lt.RootVolumeType = fi.String(DefaultVolumeType)
|
||||
}
|
||||
if fi.StringValue(lt.RootVolumeType) == ec2.VolumeTypeGp3 {
|
||||
if fi.Int32Value(ig.Spec.RootVolumeIops) < 3000 {
|
||||
lt.RootVolumeIops = fi.Int64(int64(DefaultVolumeGp3Iops))
|
||||
} else {
|
||||
lt.RootVolumeIops = fi.Int64(int64(fi.Int32Value(ig.Spec.RootVolumeIops)))
|
||||
}
|
||||
if fi.Int32Value(ig.Spec.RootVolumeThroughput) < 125 {
|
||||
lt.RootVolumeThroughput = fi.Int64(int64(DefaultVolumeGp3Throughput))
|
||||
} else {
|
||||
lt.RootVolumeThroughput = fi.Int64(int64(fi.Int32Value(ig.Spec.RootVolumeThroughput)))
|
||||
}
|
||||
}
|
||||
|
||||
return lt, nil
|
||||
}
|
||||
|
|
@ -283,11 +290,6 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateHelper(c *fi.ModelBuil
|
|||
volumeSize = fi.Int32Value(ig.Spec.RootVolumeSize)
|
||||
}
|
||||
|
||||
volumeType := fi.StringValue(ig.Spec.RootVolumeType)
|
||||
if volumeType == "" {
|
||||
volumeType = DefaultLegacyVolumeType
|
||||
}
|
||||
|
||||
rootVolumeEncryption := DefaultVolumeEncryption
|
||||
if ig.Spec.RootVolumeEncryption != nil {
|
||||
rootVolumeEncryption = fi.BoolValue(ig.Spec.RootVolumeEncryption)
|
||||
|
|
@ -309,7 +311,6 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateHelper(c *fi.ModelBuil
|
|||
Lifecycle: b.Lifecycle,
|
||||
RootVolumeOptimization: ig.Spec.RootVolumeOptimization,
|
||||
RootVolumeSize: fi.Int64(int64(volumeSize)),
|
||||
RootVolumeType: fi.String(volumeType),
|
||||
RootVolumeEncryption: fi.Bool(rootVolumeEncryption),
|
||||
SecurityGroups: []*awstasks.SecurityGroup{sgLink},
|
||||
}
|
||||
|
|
@ -330,14 +331,6 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateHelper(c *fi.ModelBuil
|
|||
}
|
||||
}
|
||||
|
||||
if volumeType == ec2.VolumeTypeIo1 || volumeType == ec2.VolumeTypeIo2 {
|
||||
if fi.Int32Value(ig.Spec.RootVolumeIops) < 100 {
|
||||
t.RootVolumeIops = fi.Int64(int64(DefaultVolumeIonIops))
|
||||
} else {
|
||||
t.RootVolumeIops = fi.Int64(int64(fi.Int32Value(ig.Spec.RootVolumeIops)))
|
||||
}
|
||||
}
|
||||
|
||||
if ig.Spec.Tenancy != "" {
|
||||
t.Tenancy = fi.String(ig.Spec.Tenancy)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue