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 (
|
const (
|
||||||
// DefaultVolumeType is the default volume type
|
// DefaultVolumeType is the default volume type
|
||||||
DefaultVolumeType = ec2.VolumeTypeGp3
|
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 is the default volume IOPS when volume type is io1 or io2
|
||||||
DefaultVolumeIonIops = 100
|
DefaultVolumeIonIops = 100
|
||||||
// DefaultVolumeGp3Iops is the default volume IOPS when volume type is gp3
|
// 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)
|
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)
|
tags, err := b.CloudTagsForInstanceGroup(ig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error building cloud tags: %v", err)
|
return nil, fmt.Errorf("error building cloud tags: %v", err)
|
||||||
|
|
@ -160,7 +163,7 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.ModelBuilde
|
||||||
RootVolumeOptimization: lc.RootVolumeOptimization,
|
RootVolumeOptimization: lc.RootVolumeOptimization,
|
||||||
RootVolumeSize: lc.RootVolumeSize,
|
RootVolumeSize: lc.RootVolumeSize,
|
||||||
RootVolumeIops: lc.RootVolumeIops,
|
RootVolumeIops: lc.RootVolumeIops,
|
||||||
RootVolumeType: lc.RootVolumeType,
|
RootVolumeType: fi.String(rootVolumeType),
|
||||||
RootVolumeEncryption: lc.RootVolumeEncryption,
|
RootVolumeEncryption: lc.RootVolumeEncryption,
|
||||||
SSHKey: lc.SSHKey,
|
SSHKey: lc.SSHKey,
|
||||||
SecurityGroups: lc.SecurityGroups,
|
SecurityGroups: lc.SecurityGroups,
|
||||||
|
|
@ -236,6 +239,25 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.ModelBuilde
|
||||||
lt.HTTPTokens = ig.Spec.InstanceMetadata.HTTPTokens
|
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
|
// When using a MixedInstances ASG, AWS requires the SpotPrice be defined on the ASG
|
||||||
// rather than the LaunchTemplate or else it returns this error:
|
// rather than the LaunchTemplate or else it returns this error:
|
||||||
// You cannot use a launch template that is set to request Spot Instances (InstanceMarketOptions)
|
// 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 {
|
} else {
|
||||||
lt.RootVolumeKmsKey = fi.String("")
|
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
|
return lt, nil
|
||||||
}
|
}
|
||||||
|
|
@ -283,11 +290,6 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateHelper(c *fi.ModelBuil
|
||||||
volumeSize = fi.Int32Value(ig.Spec.RootVolumeSize)
|
volumeSize = fi.Int32Value(ig.Spec.RootVolumeSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
volumeType := fi.StringValue(ig.Spec.RootVolumeType)
|
|
||||||
if volumeType == "" {
|
|
||||||
volumeType = DefaultLegacyVolumeType
|
|
||||||
}
|
|
||||||
|
|
||||||
rootVolumeEncryption := DefaultVolumeEncryption
|
rootVolumeEncryption := DefaultVolumeEncryption
|
||||||
if ig.Spec.RootVolumeEncryption != nil {
|
if ig.Spec.RootVolumeEncryption != nil {
|
||||||
rootVolumeEncryption = fi.BoolValue(ig.Spec.RootVolumeEncryption)
|
rootVolumeEncryption = fi.BoolValue(ig.Spec.RootVolumeEncryption)
|
||||||
|
|
@ -309,7 +311,6 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateHelper(c *fi.ModelBuil
|
||||||
Lifecycle: b.Lifecycle,
|
Lifecycle: b.Lifecycle,
|
||||||
RootVolumeOptimization: ig.Spec.RootVolumeOptimization,
|
RootVolumeOptimization: ig.Spec.RootVolumeOptimization,
|
||||||
RootVolumeSize: fi.Int64(int64(volumeSize)),
|
RootVolumeSize: fi.Int64(int64(volumeSize)),
|
||||||
RootVolumeType: fi.String(volumeType),
|
|
||||||
RootVolumeEncryption: fi.Bool(rootVolumeEncryption),
|
RootVolumeEncryption: fi.Bool(rootVolumeEncryption),
|
||||||
SecurityGroups: []*awstasks.SecurityGroup{sgLink},
|
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 != "" {
|
if ig.Spec.Tenancy != "" {
|
||||||
t.Tenancy = fi.String(ig.Spec.Tenancy)
|
t.Tenancy = fi.String(ig.Spec.Tenancy)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue