aws: introduce maximum instance lifetime in cluster

The maximum instance lifetime is an AWS only feature and specifies the
maximum amount of time (in seconds) that an instance can be in service
before it is terminated and replaced.
A common use case might be a requirement to replace your instances on a
schedule because of internal security policies or external compliance
controls.
This commit is contained in:
Nicolas Sterchele 2022-06-27 20:48:55 +02:00
parent 34490d07cf
commit 73b6ed4150
No known key found for this signature in database
GPG Key ID: 80C21B5FED523B0B
69 changed files with 271 additions and 18 deletions

View File

@ -74,6 +74,7 @@ func (m *MockAutoscaling) CreateAutoScalingGroup(input *autoscaling.CreateAutoSc
TargetGroupARNs: input.TargetGroupARNs, TargetGroupARNs: input.TargetGroupARNs,
TerminationPolicies: input.TerminationPolicies, TerminationPolicies: input.TerminationPolicies,
VPCZoneIdentifier: input.VPCZoneIdentifier, VPCZoneIdentifier: input.VPCZoneIdentifier,
MaxInstanceLifetime: input.MaxInstanceLifetime,
} }
if input.LaunchTemplate != nil { if input.LaunchTemplate != nil {

View File

@ -320,3 +320,19 @@ spec:
httpPutResponseHopLimit: 1 httpPutResponseHopLimit: 1
httpTokens: required httpTokens: required
``` ```
## maxInstanceLifetime (AWS Only)
{{ kops_feature_table(kops_added_default='1.24') }}
The maximum instance lifetime specifies the maximum amount of time (in go duration [format](https://pkg.go.dev/time#ParseDuration)) that an instance can be in service before it is terminated and replaced.
A common use case might be a requirement to replace your instances on a schedule because of internal security policies or external compliance controls.
In other words, this feature helps you to put a bit of ephemerality in your cluster.
You must specify a value of at least 24h (86,400 seconds). To clear a previously set value, specify a new value of 0.
The following configuration enables a maximum instance lifetime to two days.
```yaml
spec:
maxInstanceLifetime: "48h"
```

View File

@ -754,6 +754,11 @@ spec:
manager: manager:
description: Manager determines what is managing the node lifecycle description: Manager determines what is managing the node lifecycle
type: string type: string
maxInstanceLifetime:
description: MaxInstanceLifetime to the maximum amount of time, in
seconds, that an instance can be in service. Value expected must
be in form of duration ("ms", "s", "m", "h")
type: string
maxPrice: maxPrice:
description: MaxPrice indicates this is a spot-pricing group, with description: MaxPrice indicates this is a spot-pricing group, with
the specified value as our max-price bid the specified value as our max-price bid

View File

@ -196,6 +196,9 @@ type InstanceGroupSpec struct {
Packages []string `json:"packages,omitempty"` Packages []string `json:"packages,omitempty"`
// GuestAccelerators configures additional accelerators // GuestAccelerators configures additional accelerators
GuestAccelerators []AcceleratorConfig `json:"guestAccelerators,omitempty"` GuestAccelerators []AcceleratorConfig `json:"guestAccelerators,omitempty"`
// MaxInstanceLifetime to the maximum amount of time, in seconds, that an instance can be in service.
// Value expected must be in form of duration ("ms", "s", "m", "h")
MaxInstanceLifetime *metav1.Duration `json:"maxInstanceLifetime,omitempty"`
} }
const ( const (

View File

@ -162,6 +162,9 @@ type InstanceGroupSpec struct {
Packages []string `json:"packages,omitempty"` Packages []string `json:"packages,omitempty"`
// GuestAccelerators configures additional accelerators // GuestAccelerators configures additional accelerators
GuestAccelerators []AcceleratorConfig `json:"guestAccelerators,omitempty"` GuestAccelerators []AcceleratorConfig `json:"guestAccelerators,omitempty"`
// MaxInstanceLifetime to the maximum amount of time, in seconds, that an instance can be in service.
// Value expected must be in form of duration ("ms", "s", "m", "h")
MaxInstanceLifetime *metav1.Duration `json:"maxInstanceLifetime,omitempty"`
} }
// InstanceMetadataOptions defines the EC2 instance metadata service options (AWS Only) // InstanceMetadataOptions defines the EC2 instance metadata service options (AWS Only)

View File

@ -4471,6 +4471,7 @@ func autoConvert_v1alpha2_InstanceGroupSpec_To_kops_InstanceGroupSpec(in *Instan
} else { } else {
out.GuestAccelerators = nil out.GuestAccelerators = nil
} }
out.MaxInstanceLifetime = in.MaxInstanceLifetime
return nil return nil
} }
@ -4654,6 +4655,7 @@ func autoConvert_kops_InstanceGroupSpec_To_v1alpha2_InstanceGroupSpec(in *kops.I
} else { } else {
out.GuestAccelerators = nil out.GuestAccelerators = nil
} }
out.MaxInstanceLifetime = in.MaxInstanceLifetime
return nil return nil
} }

View File

@ -2534,6 +2534,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
*out = make([]AcceleratorConfig, len(*in)) *out = make([]AcceleratorConfig, len(*in))
copy(*out, *in) copy(*out, *in)
} }
if in.MaxInstanceLifetime != nil {
in, out := &in.MaxInstanceLifetime, &out.MaxInstanceLifetime
*out = new(v1.Duration)
**out = **in
}
return return
} }

View File

@ -159,6 +159,9 @@ type InstanceGroupSpec struct {
Packages []string `json:"packages,omitempty"` Packages []string `json:"packages,omitempty"`
// GuestAccelerators configures additional accelerators // GuestAccelerators configures additional accelerators
GuestAccelerators []AcceleratorConfig `json:"guestAccelerators,omitempty"` GuestAccelerators []AcceleratorConfig `json:"guestAccelerators,omitempty"`
// MaxInstanceLifetime to the maximum amount of time, in seconds, that an instance can be in service.
// Value expected must be in form of duration ("ms", "s", "m", "h")
MaxInstanceLifetime *metav1.Duration `json:"maxInstanceLifetime,omitempty"`
} }
// InstanceMetadataOptions defines the EC2 instance metadata service options (AWS Only) // InstanceMetadataOptions defines the EC2 instance metadata service options (AWS Only)

View File

@ -4610,6 +4610,7 @@ func autoConvert_v1alpha3_InstanceGroupSpec_To_kops_InstanceGroupSpec(in *Instan
} else { } else {
out.GuestAccelerators = nil out.GuestAccelerators = nil
} }
out.MaxInstanceLifetime = in.MaxInstanceLifetime
return nil return nil
} }
@ -4793,6 +4794,7 @@ func autoConvert_kops_InstanceGroupSpec_To_v1alpha3_InstanceGroupSpec(in *kops.I
} else { } else {
out.GuestAccelerators = nil out.GuestAccelerators = nil
} }
out.MaxInstanceLifetime = in.MaxInstanceLifetime
return nil return nil
} }

View File

@ -2540,6 +2540,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
*out = make([]AcceleratorConfig, len(*in)) *out = make([]AcceleratorConfig, len(*in))
copy(*out, *in) copy(*out, *in)
} }
if in.MaxInstanceLifetime != nil {
in, out := &in.MaxInstanceLifetime, &out.MaxInstanceLifetime
*out = new(v1.Duration)
**out = **in
}
return return
} }

View File

@ -24,6 +24,7 @@ import (
"github.com/aws/aws-sdk-go/aws/arn" "github.com/aws/aws-sdk-go/aws/arn"
"github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kops/pkg/apis/kops" "k8s.io/kops/pkg/apis/kops"
@ -100,6 +101,21 @@ func awsValidateInstanceGroup(ig *kops.InstanceGroup, cloud awsup.AWSCloud) fiel
allErrs = append(allErrs, awsValidateCPUCredits(field.NewPath("spec"), &ig.Spec, cloud)...) allErrs = append(allErrs, awsValidateCPUCredits(field.NewPath("spec"), &ig.Spec, cloud)...)
} }
if ig.Spec.MaxInstanceLifetime != nil {
allErrs = append(allErrs, awsValidateMaximumInstanceLifetime(field.NewPath(ig.GetName(), "spec"), ig.Spec.MaxInstanceLifetime)...)
}
return allErrs
}
func awsValidateMaximumInstanceLifetime(fieldPath *field.Path, maxInstanceLifetime *metav1.Duration) field.ErrorList {
allErrs := field.ErrorList{}
const minMaxInstanceLifetime = 86400
lifetimeSec := int64(maxInstanceLifetime.Seconds())
if lifetimeSec != 0 && lifetimeSec < minMaxInstanceLifetime {
allErrs = append(allErrs, field.Invalid(fieldPath.Child("maxInstanceLifetime"), maxInstanceLifetime, fmt.Sprintf("max instance lifetime must be greater than %d or equal to 0", int64(minMaxInstanceLifetime))))
}
return allErrs return allErrs
} }

View File

@ -18,6 +18,7 @@ package validation
import ( import (
"testing" "testing"
"time"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2"
@ -26,6 +27,7 @@ import (
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/awsup" "k8s.io/kops/upup/pkg/fi/cloudup/awsup"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/pkg/apis/kops" "k8s.io/kops/pkg/apis/kops"
) )
@ -204,6 +206,26 @@ func TestValidateInstanceGroupSpec(t *testing.T) {
}, },
ExpectedErrors: []string{}, ExpectedErrors: []string{},
}, },
{
Input: kops.InstanceGroupSpec{
MaxInstanceLifetime: &metav1.Duration{Duration: time.Duration(100 * float64(time.Second))},
},
ExpectedErrors: []string{
"Invalid value::test-nodes.spec.maxInstanceLifetime",
},
},
{
Input: kops.InstanceGroupSpec{
MaxInstanceLifetime: &metav1.Duration{Duration: time.Duration(86400 * float64(time.Second))},
},
ExpectedErrors: []string{},
},
{
Input: kops.InstanceGroupSpec{
MaxInstanceLifetime: &metav1.Duration{Duration: time.Duration(0 * float64(time.Second))},
},
ExpectedErrors: []string{},
},
} }
cloud := awsup.BuildMockAWSCloud("us-east-1", "abc") cloud := awsup.BuildMockAWSCloud("us-east-1", "abc")
mockEC2 := &mockec2.MockEC2{} mockEC2 := &mockec2.MockEC2{}

View File

@ -2703,6 +2703,11 @@ func (in *InstanceGroupSpec) DeepCopyInto(out *InstanceGroupSpec) {
*out = make([]AcceleratorConfig, len(*in)) *out = make([]AcceleratorConfig, len(*in))
copy(*out, *in) copy(*out, *in)
} }
if in.MaxInstanceLifetime != nil {
in, out := &in.MaxInstanceLifetime, &out.MaxInstanceLifetime
*out = new(v1.Duration)
**out = **in
}
return return
} }

View File

@ -547,5 +547,11 @@ func (b *AutoscalingGroupModelBuilder) buildAutoScalingGroupTask(c *fi.ModelBuil
} }
} }
if ig.Spec.MaxInstanceLifetime != nil {
lifetimeSec := int64(ig.Spec.MaxInstanceLifetime.Seconds())
t.MaxInstanceLifetime = fi.Int64(lifetimeSec)
} else {
t.MaxInstanceLifetime = fi.Int64(0)
}
return t, nil return t, nil
} }

View File

@ -111,6 +111,7 @@ resource "aws_autoscaling_group" "apiserver-apiservers-minimal-example-com" {
id = aws_launch_template.apiserver-apiservers-minimal-example-com.id id = aws_launch_template.apiserver-apiservers-minimal-example-com.id
version = aws_launch_template.apiserver-apiservers-minimal-example-com.latest_version version = aws_launch_template.apiserver-apiservers-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2
@ -160,6 +161,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -229,6 +231,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -121,6 +121,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -185,6 +186,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-bastionuserdata-example-com" {
version = aws_launch_template.bastion-bastionuserdata-example-com.latest_version version = aws_launch_template.bastion-bastionuserdata-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-bastionuserdata-example-com.id] load_balancers = [aws_elb.bastion-bastionuserdata-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -172,6 +173,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-bastionuserdata-exam
version = aws_launch_template.master-us-test-1a-masters-bastionuserdata-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-bastionuserdata-example-com.latest_version
} }
load_balancers = [aws_elb.api-bastionuserdata-example-com.id] load_balancers = [aws_elb.api-bastionuserdata-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -236,6 +238,7 @@ resource "aws_autoscaling_group" "nodes-bastionuserdata-example-com" {
id = aws_launch_template.nodes-bastionuserdata-example-com.id id = aws_launch_template.nodes-bastionuserdata-example-com.id
version = aws_launch_template.nodes-bastionuserdata-example-com.latest_version version = aws_launch_template.nodes-bastionuserdata-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -109,6 +109,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-complex-example-com"
version = aws_launch_template.master-us-test-1a-masters-complex-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-complex-example-com.latest_version
} }
load_balancers = ["my-external-lb-1"] load_balancers = ["my-external-lb-1"]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -185,6 +186,7 @@ resource "aws_autoscaling_group" "nodes-complex-example-com" {
version = aws_launch_template.nodes-complex-example-com.latest_version version = aws_launch_template.nodes-complex-example-com.latest_version
} }
load_balancers = ["my-external-lb-1"] load_balancers = ["my-external-lb-1"]
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-compress-example-com
id = aws_launch_template.master-us-test-1a-masters-compress-example-com.id id = aws_launch_template.master-us-test-1a-masters-compress-example-com.id
version = aws_launch_template.master-us-test-1a-masters-compress-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-compress-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-compress-example-com" {
id = aws_launch_template.nodes-compress-example-com.id id = aws_launch_template.nodes-compress-example-com.id
version = aws_launch_template.nodes-compress-example-com.latest_version version = aws_launch_template.nodes-compress-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -121,6 +121,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-123-example-com" {
id = aws_launch_template.master-us-test-1a-masters-123-example-com.id id = aws_launch_template.master-us-test-1a-masters-123-example-com.id
version = aws_launch_template.master-us-test-1a-masters-123-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-123-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -185,6 +186,7 @@ resource "aws_autoscaling_group" "nodes-123-example-com" {
id = aws_launch_template.nodes-123-example-com.id id = aws_launch_template.nodes-123-example-com.id
version = aws_launch_template.nodes-123-example-com.latest_version version = aws_launch_template.nodes-123-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -81,6 +81,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-existing-iam-example
id = aws_launch_template.master-us-test-1a-masters-existing-iam-example-com.id id = aws_launch_template.master-us-test-1a-masters-existing-iam-example-com.id
version = aws_launch_template.master-us-test-1a-masters-existing-iam-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-existing-iam-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -145,6 +146,7 @@ resource "aws_autoscaling_group" "master-us-test-1b-masters-existing-iam-example
id = aws_launch_template.master-us-test-1b-masters-existing-iam-example-com.id id = aws_launch_template.master-us-test-1b-masters-existing-iam-example-com.id
version = aws_launch_template.master-us-test-1b-masters-existing-iam-example-com.latest_version version = aws_launch_template.master-us-test-1b-masters-existing-iam-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -209,6 +211,7 @@ resource "aws_autoscaling_group" "master-us-test-1c-masters-existing-iam-example
id = aws_launch_template.master-us-test-1c-masters-existing-iam-example-com.id id = aws_launch_template.master-us-test-1c-masters-existing-iam-example-com.id
version = aws_launch_template.master-us-test-1c-masters-existing-iam-example-com.latest_version version = aws_launch_template.master-us-test-1c-masters-existing-iam-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -273,6 +276,7 @@ resource "aws_autoscaling_group" "nodes-existing-iam-example-com" {
id = aws_launch_template.nodes-existing-iam-example-com.id id = aws_launch_template.nodes-existing-iam-example-com.id
version = aws_launch_template.nodes-existing-iam-example-com.latest_version version = aws_launch_template.nodes-existing-iam-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -102,6 +102,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-existingsg-example-c
version = aws_launch_template.master-us-test-1a-masters-existingsg-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-existingsg-example-com.latest_version
} }
load_balancers = [aws_elb.api-existingsg-example-com.id] load_balancers = [aws_elb.api-existingsg-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -167,6 +168,7 @@ resource "aws_autoscaling_group" "master-us-test-1b-masters-existingsg-example-c
version = aws_launch_template.master-us-test-1b-masters-existingsg-example-com.latest_version version = aws_launch_template.master-us-test-1b-masters-existingsg-example-com.latest_version
} }
load_balancers = [aws_elb.api-existingsg-example-com.id] load_balancers = [aws_elb.api-existingsg-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -232,6 +234,7 @@ resource "aws_autoscaling_group" "master-us-test-1c-masters-existingsg-example-c
version = aws_launch_template.master-us-test-1c-masters-existingsg-example-com.latest_version version = aws_launch_template.master-us-test-1c-masters-existingsg-example-com.latest_version
} }
load_balancers = [aws_elb.api-existingsg-example-com.id] load_balancers = [aws_elb.api-existingsg-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -296,6 +299,7 @@ resource "aws_autoscaling_group" "nodes-existingsg-example-com" {
id = aws_launch_template.nodes-existingsg-example-com.id id = aws_launch_template.nodes-existingsg-example-com.id
version = aws_launch_template.nodes-existingsg-example-com.latest_version version = aws_launch_template.nodes-existingsg-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -111,6 +111,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -175,6 +176,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -92,6 +92,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-externallb-example-c
version = aws_launch_template.master-us-test-1a-masters-externallb-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-externallb-example-com.latest_version
} }
load_balancers = ["my-external-elb-1", "my-external-elb-2", "my-external-elb-3"] load_balancers = ["my-external-elb-1", "my-external-elb-2", "my-external-elb-3"]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -158,6 +159,7 @@ resource "aws_autoscaling_group" "nodes-externallb-example-com" {
version = aws_launch_template.nodes-externallb-example-com.latest_version version = aws_launch_template.nodes-externallb-example-com.latest_version
} }
load_balancers = ["my-external-elb-1"] load_balancers = ["my-external-elb-1"]
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -92,6 +92,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-externalpolicies-exa
version = aws_launch_template.master-us-test-1a-masters-externalpolicies-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-externalpolicies-example-com.latest_version
} }
load_balancers = [aws_elb.api-externalpolicies-example-com.id] load_balancers = [aws_elb.api-externalpolicies-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -166,6 +167,7 @@ resource "aws_autoscaling_group" "nodes-externalpolicies-example-com" {
id = aws_launch_template.nodes-externalpolicies-example-com.id id = aws_launch_template.nodes-externalpolicies-example-com.id
version = aws_launch_template.nodes-externalpolicies-example-com.latest_version version = aws_launch_template.nodes-externalpolicies-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -101,6 +101,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-ha-example-com" {
id = aws_launch_template.master-us-test-1a-masters-ha-example-com.id id = aws_launch_template.master-us-test-1a-masters-ha-example-com.id
version = aws_launch_template.master-us-test-1a-masters-ha-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-ha-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -165,6 +166,7 @@ resource "aws_autoscaling_group" "master-us-test-1b-masters-ha-example-com" {
id = aws_launch_template.master-us-test-1b-masters-ha-example-com.id id = aws_launch_template.master-us-test-1b-masters-ha-example-com.id
version = aws_launch_template.master-us-test-1b-masters-ha-example-com.latest_version version = aws_launch_template.master-us-test-1b-masters-ha-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -229,6 +231,7 @@ resource "aws_autoscaling_group" "master-us-test-1c-masters-ha-example-com" {
id = aws_launch_template.master-us-test-1c-masters-ha-example-com.id id = aws_launch_template.master-us-test-1c-masters-ha-example-com.id
version = aws_launch_template.master-us-test-1c-masters-ha-example-com.latest_version version = aws_launch_template.master-us-test-1c-masters-ha-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -293,6 +296,7 @@ resource "aws_autoscaling_group" "nodes-ha-example-com" {
id = aws_launch_template.nodes-ha-example-com.id id = aws_launch_template.nodes-ha-example-com.id
version = aws_launch_template.nodes-ha-example-com.latest_version version = aws_launch_template.nodes-ha-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -131,6 +131,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -195,6 +196,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -121,6 +121,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -185,6 +186,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -161,6 +161,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -225,6 +226,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -161,6 +161,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -225,6 +226,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -161,6 +161,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -215,6 +216,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -160,6 +161,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -150,6 +151,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -96,6 +96,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-ipv6-example
id = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -156,6 +157,7 @@ resource "aws_autoscaling_group" "nodes-minimal-ipv6-example-com" {
id = aws_launch_template.nodes-minimal-ipv6-example-com.id id = aws_launch_template.nodes-minimal-ipv6-example-com.id
version = aws_launch_template.nodes-minimal-ipv6-example-com.latest_version version = aws_launch_template.nodes-minimal-ipv6-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1

View File

@ -96,6 +96,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-ipv6-example
id = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -161,6 +162,7 @@ resource "aws_autoscaling_group" "nodes-minimal-ipv6-example-com" {
id = aws_launch_template.nodes-minimal-ipv6-example-com.id id = aws_launch_template.nodes-minimal-ipv6-example-com.id
version = aws_launch_template.nodes-minimal-ipv6-example-com.latest_version version = aws_launch_template.nodes-minimal-ipv6-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -126,6 +126,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-ipv6-example
id = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -191,6 +192,7 @@ resource "aws_autoscaling_group" "nodes-minimal-ipv6-example-com" {
id = aws_launch_template.nodes-minimal-ipv6-example-com.id id = aws_launch_template.nodes-minimal-ipv6-example-com.id
version = aws_launch_template.nodes-minimal-ipv6-example-com.latest_version version = aws_launch_template.nodes-minimal-ipv6-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -96,6 +96,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-ipv6-example
id = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-ipv6-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -161,6 +162,7 @@ resource "aws_autoscaling_group" "nodes-minimal-ipv6-example-com" {
id = aws_launch_template.nodes-minimal-ipv6-example-com.id id = aws_launch_template.nodes-minimal-ipv6-example-com.id
version = aws_launch_template.nodes-minimal-ipv6-example-com.latest_version version = aws_launch_template.nodes-minimal-ipv6-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-this-is-truly-a-real
id = aws_launch_template.master-us-test-1a-masters-this-is-truly-a-really-really-long-cluster-name-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-this-is-truly-a-really-really-long-cluster-name-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-this-is-truly-a-really-really-long-cluster-name-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-this-is-truly-a-really-really-long-cluster-name-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-this-is-truly-a-really-really-long-clust
id = aws_launch_template.nodes-this-is-truly-a-really-really-long-cluster-name-minimal-example-com.id id = aws_launch_template.nodes-this-is-truly-a-really-really-long-cluster-name-minimal-example-com.id
version = aws_launch_template.nodes-this-is-truly-a-really-really-long-cluster-name-minimal-example-com.latest_version version = aws_launch_template.nodes-this-is-truly-a-really-really-long-cluster-name-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-warmpool-exa
id = aws_launch_template.master-us-test-1a-masters-minimal-warmpool-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-warmpool-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-warmpool-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-warmpool-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-minimal-warmpool-example-com" {
id = aws_launch_template.nodes-minimal-warmpool-example-com.id id = aws_launch_template.nodes-minimal-warmpool-example-com.id
version = aws_launch_template.nodes-minimal-warmpool-example-com.latest_version version = aws_launch_template.nodes-minimal-warmpool-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -51,6 +51,7 @@ spec:
machineType: t2.medium machineType: t2.medium
maxSize: 2 maxSize: 2
minSize: 2 minSize: 2
maxInstanceLifetime: 48h20m
role: Node role: Node
subnets: subnets:
- us-test-1a - us-test-1a
@ -70,6 +71,7 @@ spec:
machineType: m3.medium machineType: m3.medium
maxSize: 1 maxSize: 1
minSize: 1 minSize: 1
maxInstanceLifetime: "0"
role: Master role: Master
subnets: subnets:
- us-test-1a - us-test-1a

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 174000
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-k8s-local" {
id = aws_launch_template.master-us-test-1a-masters-minimal-k8s-local.id id = aws_launch_template.master-us-test-1a-masters-minimal-k8s-local.id
version = aws_launch_template.master-us-test-1a-masters-minimal-k8s-local.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-k8s-local.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-minimal-k8s-local" {
id = aws_launch_template.nodes-minimal-k8s-local.id id = aws_launch_template.nodes-minimal-k8s-local.id
version = aws_launch_template.nodes-minimal-k8s-local.latest_version version = aws_launch_template.nodes-minimal-k8s-local.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -101,6 +101,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-k8s-local" {
id = aws_launch_template.master-us-test-1a-masters-minimal-k8s-local.id id = aws_launch_template.master-us-test-1a-masters-minimal-k8s-local.id
version = aws_launch_template.master-us-test-1a-masters-minimal-k8s-local.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-k8s-local.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -165,6 +166,7 @@ resource "aws_autoscaling_group" "nodes-minimal-k8s-local" {
id = aws_launch_template.nodes-minimal-k8s-local.id id = aws_launch_template.nodes-minimal-k8s-local.id
version = aws_launch_template.nodes-minimal-k8s-local.latest_version version = aws_launch_template.nodes-minimal-k8s-local.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -101,6 +101,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-mixedinstances-examp
id = aws_launch_template.master-us-test-1a-masters-mixedinstances-example-com.id id = aws_launch_template.master-us-test-1a-masters-mixedinstances-example-com.id
version = aws_launch_template.master-us-test-1a-masters-mixedinstances-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-mixedinstances-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -165,6 +166,7 @@ resource "aws_autoscaling_group" "master-us-test-1b-masters-mixedinstances-examp
id = aws_launch_template.master-us-test-1b-masters-mixedinstances-example-com.id id = aws_launch_template.master-us-test-1b-masters-mixedinstances-example-com.id
version = aws_launch_template.master-us-test-1b-masters-mixedinstances-example-com.latest_version version = aws_launch_template.master-us-test-1b-masters-mixedinstances-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -229,6 +231,7 @@ resource "aws_autoscaling_group" "master-us-test-1c-masters-mixedinstances-examp
id = aws_launch_template.master-us-test-1c-masters-mixedinstances-example-com.id id = aws_launch_template.master-us-test-1c-masters-mixedinstances-example-com.id
version = aws_launch_template.master-us-test-1c-masters-mixedinstances-example-com.latest_version version = aws_launch_template.master-us-test-1c-masters-mixedinstances-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -288,10 +291,11 @@ resource "aws_autoscaling_group" "master-us-test-1c-masters-mixedinstances-examp
} }
resource "aws_autoscaling_group" "nodes-mixedinstances-example-com" { resource "aws_autoscaling_group" "nodes-mixedinstances-example-com" {
enabled_metrics = ["GroupDesiredCapacity", "GroupInServiceInstances", "GroupMaxSize", "GroupMinSize", "GroupPendingInstances", "GroupStandbyInstances", "GroupTerminatingInstances", "GroupTotalInstances"] enabled_metrics = ["GroupDesiredCapacity", "GroupInServiceInstances", "GroupMaxSize", "GroupMinSize", "GroupPendingInstances", "GroupStandbyInstances", "GroupTerminatingInstances", "GroupTotalInstances"]
max_size = 2 max_instance_lifetime = 0
metrics_granularity = "1Minute" max_size = 2
min_size = 2 metrics_granularity = "1Minute"
min_size = 2
mixed_instances_policy { mixed_instances_policy {
instances_distribution { instances_distribution {
on_demand_percentage_above_base_capacity = 5 on_demand_percentage_above_base_capacity = 5

View File

@ -101,6 +101,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-mixedinstances-examp
id = aws_launch_template.master-us-test-1a-masters-mixedinstances-example-com.id id = aws_launch_template.master-us-test-1a-masters-mixedinstances-example-com.id
version = aws_launch_template.master-us-test-1a-masters-mixedinstances-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-mixedinstances-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -165,6 +166,7 @@ resource "aws_autoscaling_group" "master-us-test-1b-masters-mixedinstances-examp
id = aws_launch_template.master-us-test-1b-masters-mixedinstances-example-com.id id = aws_launch_template.master-us-test-1b-masters-mixedinstances-example-com.id
version = aws_launch_template.master-us-test-1b-masters-mixedinstances-example-com.latest_version version = aws_launch_template.master-us-test-1b-masters-mixedinstances-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -229,6 +231,7 @@ resource "aws_autoscaling_group" "master-us-test-1c-masters-mixedinstances-examp
id = aws_launch_template.master-us-test-1c-masters-mixedinstances-example-com.id id = aws_launch_template.master-us-test-1c-masters-mixedinstances-example-com.id
version = aws_launch_template.master-us-test-1c-masters-mixedinstances-example-com.latest_version version = aws_launch_template.master-us-test-1c-masters-mixedinstances-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -288,10 +291,11 @@ resource "aws_autoscaling_group" "master-us-test-1c-masters-mixedinstances-examp
} }
resource "aws_autoscaling_group" "nodes-mixedinstances-example-com" { resource "aws_autoscaling_group" "nodes-mixedinstances-example-com" {
enabled_metrics = ["GroupDesiredCapacity", "GroupInServiceInstances", "GroupMaxSize", "GroupMinSize", "GroupPendingInstances", "GroupStandbyInstances", "GroupTerminatingInstances", "GroupTotalInstances"] enabled_metrics = ["GroupDesiredCapacity", "GroupInServiceInstances", "GroupMaxSize", "GroupMinSize", "GroupPendingInstances", "GroupStandbyInstances", "GroupTerminatingInstances", "GroupTotalInstances"]
max_size = 2 max_instance_lifetime = 0
metrics_granularity = "1Minute" max_size = 2
min_size = 2 metrics_granularity = "1Minute"
min_size = 2
mixed_instances_policy { mixed_instances_policy {
instances_distribution { instances_distribution {
on_demand_percentage_above_base_capacity = 5 on_demand_percentage_above_base_capacity = 5

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-nthsqsresources-long
id = aws_launch_template.master-us-test-1a-masters-nthsqsresources-longclustername-example-com.id id = aws_launch_template.master-us-test-1a-masters-nthsqsresources-longclustername-example-com.id
version = aws_launch_template.master-us-test-1a-masters-nthsqsresources-longclustername-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-nthsqsresources-longclustername-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -160,6 +161,7 @@ resource "aws_autoscaling_group" "nodes-nthsqsresources-longclustername-example-
id = aws_launch_template.nodes-nthsqsresources-longclustername-example-com.id id = aws_launch_template.nodes-nthsqsresources-longclustername-example-com.id
version = aws_launch_template.nodes-nthsqsresources-longclustername-example-com.latest_version version = aws_launch_template.nodes-nthsqsresources-longclustername-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -91,6 +91,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -155,6 +156,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -117,6 +117,7 @@ resource "aws_autoscaling_group" "bastion-private-shared-ip-example-com" {
version = aws_launch_template.bastion-private-shared-ip-example-com.latest_version version = aws_launch_template.bastion-private-shared-ip-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-private-shared-ip-example-com.id] load_balancers = [aws_elb.bastion-private-shared-ip-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -167,6 +168,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-private-shared-ip-ex
version = aws_launch_template.master-us-test-1a-masters-private-shared-ip-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-private-shared-ip-example-com.latest_version
} }
load_balancers = [aws_elb.api-private-shared-ip-example-com.id] load_balancers = [aws_elb.api-private-shared-ip-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -231,6 +233,7 @@ resource "aws_autoscaling_group" "nodes-private-shared-ip-example-com" {
id = aws_launch_template.nodes-private-shared-ip-example-com.id id = aws_launch_template.nodes-private-shared-ip-example-com.id
version = aws_launch_template.nodes-private-shared-ip-example-com.latest_version version = aws_launch_template.nodes-private-shared-ip-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -112,6 +112,7 @@ resource "aws_autoscaling_group" "bastion-private-shared-subnet-example-com" {
version = aws_launch_template.bastion-private-shared-subnet-example-com.latest_version version = aws_launch_template.bastion-private-shared-subnet-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-private-shared-subnet-example-com.id] load_balancers = [aws_elb.bastion-private-shared-subnet-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -162,6 +163,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-private-shared-subne
version = aws_launch_template.master-us-test-1a-masters-private-shared-subnet-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-private-shared-subnet-example-com.latest_version
} }
load_balancers = [aws_elb.api-private-shared-subnet-example-com.id] load_balancers = [aws_elb.api-private-shared-subnet-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -226,6 +228,7 @@ resource "aws_autoscaling_group" "nodes-private-shared-subnet-example-com" {
id = aws_launch_template.nodes-private-shared-subnet-example-com.id id = aws_launch_template.nodes-private-shared-subnet-example-com.id
version = aws_launch_template.nodes-private-shared-subnet-example-com.latest_version version = aws_launch_template.nodes-private-shared-subnet-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-privatecalico-example-com" {
version = aws_launch_template.bastion-privatecalico-example-com.latest_version version = aws_launch_template.bastion-privatecalico-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privatecalico-example-com.id] load_balancers = [aws_elb.bastion-privatecalico-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -167,6 +168,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privatecalico-exampl
version = aws_launch_template.master-us-test-1a-masters-privatecalico-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privatecalico-example-com.latest_version
} }
load_balancers = [aws_elb.api-privatecalico-example-com.id] load_balancers = [aws_elb.api-privatecalico-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -221,6 +223,7 @@ resource "aws_autoscaling_group" "nodes-privatecalico-example-com" {
id = aws_launch_template.nodes-privatecalico-example-com.id id = aws_launch_template.nodes-privatecalico-example-com.id
version = aws_launch_template.nodes-privatecalico-example-com.latest_version version = aws_launch_template.nodes-privatecalico-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-privatecanal-example-com" {
version = aws_launch_template.bastion-privatecanal-example-com.latest_version version = aws_launch_template.bastion-privatecanal-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privatecanal-example-com.id] load_balancers = [aws_elb.bastion-privatecanal-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -172,6 +173,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privatecanal-example
version = aws_launch_template.master-us-test-1a-masters-privatecanal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privatecanal-example-com.latest_version
} }
load_balancers = [aws_elb.api-privatecanal-example-com.id] load_balancers = [aws_elb.api-privatecanal-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -236,6 +238,7 @@ resource "aws_autoscaling_group" "nodes-privatecanal-example-com" {
id = aws_launch_template.nodes-privatecanal-example-com.id id = aws_launch_template.nodes-privatecanal-example-com.id
version = aws_launch_template.nodes-privatecanal-example-com.latest_version version = aws_launch_template.nodes-privatecanal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-privatecilium-example-com" {
version = aws_launch_template.bastion-privatecilium-example-com.latest_version version = aws_launch_template.bastion-privatecilium-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privatecilium-example-com.id] load_balancers = [aws_elb.bastion-privatecilium-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -172,6 +173,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privatecilium-exampl
version = aws_launch_template.master-us-test-1a-masters-privatecilium-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privatecilium-example-com.latest_version
} }
load_balancers = [aws_elb.api-privatecilium-example-com.id] load_balancers = [aws_elb.api-privatecilium-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -236,6 +238,7 @@ resource "aws_autoscaling_group" "nodes-privatecilium-example-com" {
id = aws_launch_template.nodes-privatecilium-example-com.id id = aws_launch_template.nodes-privatecilium-example-com.id
version = aws_launch_template.nodes-privatecilium-example-com.latest_version version = aws_launch_template.nodes-privatecilium-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-privatecilium-example-com" {
version = aws_launch_template.bastion-privatecilium-example-com.latest_version version = aws_launch_template.bastion-privatecilium-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privatecilium-example-com.id] load_balancers = [aws_elb.bastion-privatecilium-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -167,6 +168,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privatecilium-exampl
version = aws_launch_template.master-us-test-1a-masters-privatecilium-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privatecilium-example-com.latest_version
} }
load_balancers = [aws_elb.api-privatecilium-example-com.id] load_balancers = [aws_elb.api-privatecilium-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -221,6 +223,7 @@ resource "aws_autoscaling_group" "nodes-privatecilium-example-com" {
id = aws_launch_template.nodes-privatecilium-example-com.id id = aws_launch_template.nodes-privatecilium-example-com.id
version = aws_launch_template.nodes-privatecilium-example-com.latest_version version = aws_launch_template.nodes-privatecilium-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-privateciliumadvanced-example-com" {
version = aws_launch_template.bastion-privateciliumadvanced-example-com.latest_version version = aws_launch_template.bastion-privateciliumadvanced-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privateciliumadvanced-example-com.id] load_balancers = [aws_elb.bastion-privateciliumadvanced-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -172,6 +173,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privateciliumadvance
version = aws_launch_template.master-us-test-1a-masters-privateciliumadvanced-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privateciliumadvanced-example-com.latest_version
} }
load_balancers = [aws_elb.api-privateciliumadvanced-example-com.id] load_balancers = [aws_elb.api-privateciliumadvanced-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -236,6 +238,7 @@ resource "aws_autoscaling_group" "nodes-privateciliumadvanced-example-com" {
id = aws_launch_template.nodes-privateciliumadvanced-example-com.id id = aws_launch_template.nodes-privateciliumadvanced-example-com.id
version = aws_launch_template.nodes-privateciliumadvanced-example-com.latest_version version = aws_launch_template.nodes-privateciliumadvanced-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-privatedns1-example-com" {
version = aws_launch_template.bastion-privatedns1-example-com.latest_version version = aws_launch_template.bastion-privatedns1-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privatedns1-example-com.id] load_balancers = [aws_elb.bastion-privatedns1-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -182,6 +183,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privatedns1-example-
version = aws_launch_template.master-us-test-1a-masters-privatedns1-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privatedns1-example-com.latest_version
} }
load_balancers = [aws_elb.api-privatedns1-example-com.id] load_balancers = [aws_elb.api-privatedns1-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -256,6 +258,7 @@ resource "aws_autoscaling_group" "nodes-privatedns1-example-com" {
id = aws_launch_template.nodes-privatedns1-example-com.id id = aws_launch_template.nodes-privatedns1-example-com.id
version = aws_launch_template.nodes-privatedns1-example-com.latest_version version = aws_launch_template.nodes-privatedns1-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -117,6 +117,7 @@ resource "aws_autoscaling_group" "bastion-privatedns2-example-com" {
version = aws_launch_template.bastion-privatedns2-example-com.latest_version version = aws_launch_template.bastion-privatedns2-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privatedns2-example-com.id] load_balancers = [aws_elb.bastion-privatedns2-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -167,6 +168,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privatedns2-example-
version = aws_launch_template.master-us-test-1a-masters-privatedns2-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privatedns2-example-com.latest_version
} }
load_balancers = [aws_elb.api-privatedns2-example-com.id] load_balancers = [aws_elb.api-privatedns2-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -231,6 +233,7 @@ resource "aws_autoscaling_group" "nodes-privatedns2-example-com" {
id = aws_launch_template.nodes-privatedns2-example-com.id id = aws_launch_template.nodes-privatedns2-example-com.id
version = aws_launch_template.nodes-privatedns2-example-com.latest_version version = aws_launch_template.nodes-privatedns2-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-privateflannel-example-com" {
version = aws_launch_template.bastion-privateflannel-example-com.latest_version version = aws_launch_template.bastion-privateflannel-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privateflannel-example-com.id] load_balancers = [aws_elb.bastion-privateflannel-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -172,6 +173,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privateflannel-examp
version = aws_launch_template.master-us-test-1a-masters-privateflannel-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privateflannel-example-com.latest_version
} }
load_balancers = [aws_elb.api-privateflannel-example-com.id] load_balancers = [aws_elb.api-privateflannel-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -236,6 +238,7 @@ resource "aws_autoscaling_group" "nodes-privateflannel-example-com" {
id = aws_launch_template.nodes-privateflannel-example-com.id id = aws_launch_template.nodes-privateflannel-example-com.id
version = aws_launch_template.nodes-privateflannel-example-com.latest_version version = aws_launch_template.nodes-privateflannel-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -137,6 +137,7 @@ resource "aws_autoscaling_group" "bastion-privatekopeio-example-com" {
version = aws_launch_template.bastion-privatekopeio-example-com.latest_version version = aws_launch_template.bastion-privatekopeio-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privatekopeio-example-com.id] load_balancers = [aws_elb.bastion-privatekopeio-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -187,6 +188,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privatekopeio-exampl
version = aws_launch_template.master-us-test-1a-masters-privatekopeio-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privatekopeio-example-com.latest_version
} }
load_balancers = [aws_elb.api-privatekopeio-example-com.id] load_balancers = [aws_elb.api-privatekopeio-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -251,6 +253,7 @@ resource "aws_autoscaling_group" "nodes-privatekopeio-example-com" {
id = aws_launch_template.nodes-privatekopeio-example-com.id id = aws_launch_template.nodes-privatekopeio-example-com.id
version = aws_launch_template.nodes-privatekopeio-example-com.latest_version version = aws_launch_template.nodes-privatekopeio-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -122,6 +122,7 @@ resource "aws_autoscaling_group" "bastion-privateweave-example-com" {
version = aws_launch_template.bastion-privateweave-example-com.latest_version version = aws_launch_template.bastion-privateweave-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-privateweave-example-com.id] load_balancers = [aws_elb.bastion-privateweave-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -172,6 +173,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-privateweave-example
version = aws_launch_template.master-us-test-1a-masters-privateweave-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-privateweave-example-com.latest_version
} }
load_balancers = [aws_elb.api-privateweave-example-com.id] load_balancers = [aws_elb.api-privateweave-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -236,6 +238,7 @@ resource "aws_autoscaling_group" "nodes-privateweave-example-com" {
id = aws_launch_template.nodes-privateweave-example-com.id id = aws_launch_template.nodes-privateweave-example-com.id
version = aws_launch_template.nodes-privateweave-example-com.latest_version version = aws_launch_template.nodes-privateweave-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -131,6 +131,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -185,6 +186,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -86,6 +86,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-sharedsubnet-example
id = aws_launch_template.master-us-test-1a-masters-sharedsubnet-example-com.id id = aws_launch_template.master-us-test-1a-masters-sharedsubnet-example-com.id
version = aws_launch_template.master-us-test-1a-masters-sharedsubnet-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-sharedsubnet-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -150,6 +151,7 @@ resource "aws_autoscaling_group" "nodes-sharedsubnet-example-com" {
id = aws_launch_template.nodes-sharedsubnet-example-com.id id = aws_launch_template.nodes-sharedsubnet-example-com.id
version = aws_launch_template.nodes-sharedsubnet-example-com.latest_version version = aws_launch_template.nodes-sharedsubnet-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -86,6 +86,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-sharedvpc-example-co
id = aws_launch_template.master-us-test-1a-masters-sharedvpc-example-com.id id = aws_launch_template.master-us-test-1a-masters-sharedvpc-example-com.id
version = aws_launch_template.master-us-test-1a-masters-sharedvpc-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-sharedvpc-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -150,6 +151,7 @@ resource "aws_autoscaling_group" "nodes-sharedvpc-example-com" {
id = aws_launch_template.nodes-sharedvpc-example-com.id id = aws_launch_template.nodes-sharedvpc-example-com.id
version = aws_launch_template.nodes-sharedvpc-example-com.latest_version version = aws_launch_template.nodes-sharedvpc-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -117,6 +117,7 @@ resource "aws_autoscaling_group" "bastion-unmanaged-example-com" {
version = aws_launch_template.bastion-unmanaged-example-com.latest_version version = aws_launch_template.bastion-unmanaged-example-com.latest_version
} }
load_balancers = [aws_elb.bastion-unmanaged-example-com.id] load_balancers = [aws_elb.bastion-unmanaged-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -167,6 +168,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-unmanaged-example-co
version = aws_launch_template.master-us-test-1a-masters-unmanaged-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-unmanaged-example-com.latest_version
} }
load_balancers = [aws_elb.api-unmanaged-example-com.id] load_balancers = [aws_elb.api-unmanaged-example-com.id]
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -231,6 +233,7 @@ resource "aws_autoscaling_group" "nodes-unmanaged-example-com" {
id = aws_launch_template.nodes-unmanaged-example-com.id id = aws_launch_template.nodes-unmanaged-example-com.id
version = aws_launch_template.nodes-unmanaged-example-com.latest_version version = aws_launch_template.nodes-unmanaged-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -101,6 +101,7 @@ resource "aws_autoscaling_group" "master-us-test-1a-masters-minimal-example-com"
id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id id = aws_launch_template.master-us-test-1a-masters-minimal-example-com.id
version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version version = aws_launch_template.master-us-test-1a-masters-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 1 max_size = 1
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 1 min_size = 1
@ -165,6 +166,7 @@ resource "aws_autoscaling_group" "nodes-minimal-example-com" {
id = aws_launch_template.nodes-minimal-example-com.id id = aws_launch_template.nodes-minimal-example-com.id
version = aws_launch_template.nodes-minimal-example-com.latest_version version = aws_launch_template.nodes-minimal-example-com.latest_version
} }
max_instance_lifetime = 0
max_size = 2 max_size = 2
metrics_granularity = "1Minute" metrics_granularity = "1Minute"
min_size = 2 min_size = 2

View File

@ -37,7 +37,7 @@ import (
// CloudTagInstanceGroupRolePrefix is a cloud tag that defines the instance role // CloudTagInstanceGroupRolePrefix is a cloud tag that defines the instance role
const CloudTagInstanceGroupRolePrefix = "k8s.io/role/" const CloudTagInstanceGroupRolePrefix = "k8s.io/role/"
// AutoscalingGroup provdes the definition for a autoscaling group in aws // AutoscalingGroup provides the definition for a autoscaling group in aws
// +kops:fitask // +kops:fitask
type AutoscalingGroup struct { type AutoscalingGroup struct {
// Name is the name of the ASG // Name is the name of the ASG
@ -53,6 +53,8 @@ type AutoscalingGroup struct {
LaunchTemplate *LaunchTemplate LaunchTemplate *LaunchTemplate
// LoadBalancers is a list of elastic load balancer names to add to the autoscaling group // LoadBalancers is a list of elastic load balancer names to add to the autoscaling group
LoadBalancers []*ClassicLoadBalancer LoadBalancers []*ClassicLoadBalancer
// MaxInstanceLifetime is the maximum amount of time, in seconds, that an instance can be in service.
MaxInstanceLifetime *int64
// MaxSize is the max number of nodes in asg // MaxSize is the max number of nodes in asg
MaxSize *int64 MaxSize *int64
// Metrics is a collection of metrics to monitor // Metrics is a collection of metrics to monitor
@ -110,9 +112,17 @@ func (e *AutoscalingGroup) Find(c *fi.Context) (*AutoscalingGroup, error) {
} }
actual := &AutoscalingGroup{ actual := &AutoscalingGroup{
Name: g.AutoScalingGroupName, Name: g.AutoScalingGroupName,
MaxSize: g.MaxSize, MaxSize: g.MaxSize,
MinSize: g.MinSize, MinSize: g.MinSize,
MaxInstanceLifetime: g.MaxInstanceLifetime,
}
// Use 0 as default value when api returns nil (same as model)
if g.MaxInstanceLifetime == nil {
actual.MaxInstanceLifetime = fi.Int64(0)
} else {
actual.MaxInstanceLifetime = g.MaxInstanceLifetime
} }
actual.LoadBalancers = []*ClassicLoadBalancer{} actual.LoadBalancers = []*ClassicLoadBalancer{}
@ -344,6 +354,13 @@ func (v *AutoscalingGroup) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Autos
VPCZoneIdentifier: fi.String(strings.Join(e.AutoscalingGroupSubnets(), ",")), VPCZoneIdentifier: fi.String(strings.Join(e.AutoscalingGroupSubnets(), ",")),
} }
//On ASG creation 0 value is forbidden
if fi.Int64Value(e.MaxInstanceLifetime) == 0 {
request.MaxInstanceLifetime = nil
} else {
request.MaxInstanceLifetime = e.MaxInstanceLifetime
}
for _, k := range e.LoadBalancers { for _, k := range e.LoadBalancers {
if k.LoadBalancerName == nil { if k.LoadBalancerName == nil {
lbDesc, err := t.Cloud.FindELBByNameTag(fi.StringValue(k.GetName())) lbDesc, err := t.Cloud.FindELBByNameTag(fi.StringValue(k.GetName()))
@ -523,6 +540,13 @@ func (v *AutoscalingGroup) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Autos
changes.Subnets = nil changes.Subnets = nil
} }
if changes.MaxInstanceLifetime != nil {
request.MaxInstanceLifetime = e.MaxInstanceLifetime
changes.MaxInstanceLifetime = nil
} else {
request.MaxInstanceLifetime = fi.Int64(0)
}
var updateTagsRequest *autoscaling.CreateOrUpdateTagsInput var updateTagsRequest *autoscaling.CreateOrUpdateTagsInput
var deleteTagsRequest *autoscaling.DeleteTagsInput var deleteTagsRequest *autoscaling.DeleteTagsInput
if changes.Tags != nil { if changes.Tags != nil {
@ -891,17 +915,19 @@ type terraformAutoscalingGroup struct {
InstanceProtection *bool `cty:"protect_from_scale_in"` InstanceProtection *bool `cty:"protect_from_scale_in"`
LoadBalancers []*terraformWriter.Literal `cty:"load_balancers"` LoadBalancers []*terraformWriter.Literal `cty:"load_balancers"`
TargetGroupARNs []*terraformWriter.Literal `cty:"target_group_arns"` TargetGroupARNs []*terraformWriter.Literal `cty:"target_group_arns"`
MaxInstanceLifetime *int64 `cty:"max_instance_lifetime"`
} }
// RenderTerraform is responsible for rendering the terraform codebase // RenderTerraform is responsible for rendering the terraform codebase
func (_ *AutoscalingGroup) RenderTerraform(t *terraform.TerraformTarget, a, e, changes *AutoscalingGroup) error { func (_ *AutoscalingGroup) RenderTerraform(t *terraform.TerraformTarget, a, e, changes *AutoscalingGroup) error {
tf := &terraformAutoscalingGroup{ tf := &terraformAutoscalingGroup{
Name: e.Name, Name: e.Name,
MinSize: e.MinSize, MinSize: e.MinSize,
MaxSize: e.MaxSize, MaxSize: e.MaxSize,
MetricsGranularity: e.Granularity, MetricsGranularity: e.Granularity,
EnabledMetrics: aws.StringSlice(e.Metrics), EnabledMetrics: aws.StringSlice(e.Metrics),
InstanceProtection: e.InstanceProtection, InstanceProtection: e.InstanceProtection,
MaxInstanceLifetime: e.MaxInstanceLifetime,
} }
for _, s := range e.Subnets { for _, s := range e.Subnets {