diff --git a/cmd/kops/integration_test.go b/cmd/kops/integration_test.go index 4d2f6f52bb..0c0096225a 100644 --- a/cmd/kops/integration_test.go +++ b/cmd/kops/integration_test.go @@ -1033,6 +1033,7 @@ func (i *integrationTest) runTestTerraformAWS(t *testing.T) { "aws_cloudwatch_event_rule_" + i.clusterName + "-ASGLifecycle_event_pattern", "aws_cloudwatch_event_rule_" + i.clusterName + "-RebalanceRecommendation_event_pattern", "aws_cloudwatch_event_rule_" + i.clusterName + "-SpotInterruption_event_pattern", + "aws_cloudwatch_event_rule_" + i.clusterName + "-InstanceStateChange_event_pattern", "aws_sqs_queue_" + strings.Replace(i.clusterName, ".", "-", -1) + "-nth_policy", }...) } diff --git a/pkg/model/awsmodel/nodeterminationhandler.go b/pkg/model/awsmodel/nodeterminationhandler.go index f08a2bf4e3..84a3abb296 100644 --- a/pkg/model/awsmodel/nodeterminationhandler.go +++ b/pkg/model/awsmodel/nodeterminationhandler.go @@ -64,6 +64,10 @@ var ( name: "RebalanceRecommendation", pattern: `{"source": ["aws.ec2"],"detail-type": ["EC2 Instance Rebalance Recommendation"]}`, }, + { + name: "InstanceStateChange", + pattern: `{"source": ["aws.ec2"],"detail-type": ["EC2 Instance State-change Notification"]}`, + }, } ) diff --git a/tests/integration/update_cluster/many-addons-ccm-irsa/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content b/tests/integration/update_cluster/many-addons-ccm-irsa/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content index 3194d746f6..071ff023bf 100644 --- a/tests/integration/update_cluster/many-addons-ccm-irsa/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content +++ b/tests/integration/update_cluster/many-addons-ccm-irsa/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content @@ -52,7 +52,7 @@ spec: selector: null - id: k8s-1.11 manifest: node-termination-handler.aws/k8s-1.11.yaml - manifestHash: 9330666b0382e3ef54ce357319899e040f7b1477d63d7e4f1f592cb79eb3d395 + manifestHash: 921107cec6ff139ad757c3167c9d479ef87804e39efdf172d23b7b0b3c453a14 name: node-termination-handler.aws selector: k8s-addon: node-termination-handler.aws diff --git a/tests/integration/update_cluster/many-addons-ccm-irsa/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content b/tests/integration/update_cluster/many-addons-ccm-irsa/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content index 34b2c20ec5..a8c79c12e0 100644 --- a/tests/integration/update_cluster/many-addons-ccm-irsa/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content +++ b/tests/integration/update_cluster/many-addons-ccm-irsa/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content @@ -7,7 +7,7 @@ metadata: app.kubernetes.io/instance: aws-node-termination-handler app.kubernetes.io/managed-by: kops app.kubernetes.io/name: aws-node-termination-handler - app.kubernetes.io/version: 1.13.0 + app.kubernetes.io/version: 1.13.3 k8s-addon: node-termination-handler.aws k8s-app: aws-node-termination-handler name: aws-node-termination-handler @@ -90,7 +90,7 @@ metadata: app.kubernetes.io/instance: aws-node-termination-handler app.kubernetes.io/managed-by: kops app.kubernetes.io/name: aws-node-termination-handler - app.kubernetes.io/version: 1.13.0 + app.kubernetes.io/version: 1.13.3 k8s-addon: node-termination-handler.aws k8s-app: aws-node-termination-handler name: aws-node-termination-handler @@ -166,7 +166,7 @@ spec: value: arn:aws-test:iam::123456789012:role/aws-node-termination-handler.kube-system.sa.minimal.example.com - name: AWS_WEB_IDENTITY_TOKEN_FILE value: /var/run/secrets/amazonaws.com/token - image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.0 + image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.3 imagePullPolicy: IfNotPresent name: aws-node-termination-handler resources: diff --git a/tests/integration/update_cluster/many-addons-ccm/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content b/tests/integration/update_cluster/many-addons-ccm/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content index 6aaa012f94..a61157e334 100644 --- a/tests/integration/update_cluster/many-addons-ccm/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content +++ b/tests/integration/update_cluster/many-addons-ccm/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content @@ -52,7 +52,7 @@ spec: selector: null - id: k8s-1.11 manifest: node-termination-handler.aws/k8s-1.11.yaml - manifestHash: 964641df31815a1c0740ac78a342fc422676509c05ec8f090368b3c4b16a8e13 + manifestHash: aff5c358e9068af057fc266041105328dd9e11e473cd051f393f67182edc47fb name: node-termination-handler.aws selector: k8s-addon: node-termination-handler.aws diff --git a/tests/integration/update_cluster/many-addons-ccm/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content b/tests/integration/update_cluster/many-addons-ccm/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content index 4df7c18a5f..32fe6b63f7 100644 --- a/tests/integration/update_cluster/many-addons-ccm/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content +++ b/tests/integration/update_cluster/many-addons-ccm/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content @@ -7,7 +7,7 @@ metadata: app.kubernetes.io/instance: aws-node-termination-handler app.kubernetes.io/managed-by: kops app.kubernetes.io/name: aws-node-termination-handler - app.kubernetes.io/version: 1.13.0 + app.kubernetes.io/version: 1.13.3 k8s-addon: node-termination-handler.aws k8s-app: aws-node-termination-handler name: aws-node-termination-handler @@ -90,7 +90,7 @@ metadata: app.kubernetes.io/instance: aws-node-termination-handler app.kubernetes.io/managed-by: kops app.kubernetes.io/name: aws-node-termination-handler - app.kubernetes.io/version: 1.13.0 + app.kubernetes.io/version: 1.13.3 k8s-addon: node-termination-handler.aws k8s-app: aws-node-termination-handler name: aws-node-termination-handler @@ -162,7 +162,7 @@ spec: value: "false" - name: LOG_LEVEL value: info - image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.0 + image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.3 imagePullPolicy: IfNotPresent name: aws-node-termination-handler resources: diff --git a/tests/integration/update_cluster/many-addons/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content b/tests/integration/update_cluster/many-addons/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content index d231bc8af0..ab49d70320 100644 --- a/tests/integration/update_cluster/many-addons/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content +++ b/tests/integration/update_cluster/many-addons/data/aws_s3_bucket_object_minimal.example.com-addons-bootstrap_content @@ -52,7 +52,7 @@ spec: selector: null - id: k8s-1.11 manifest: node-termination-handler.aws/k8s-1.11.yaml - manifestHash: 964641df31815a1c0740ac78a342fc422676509c05ec8f090368b3c4b16a8e13 + manifestHash: aff5c358e9068af057fc266041105328dd9e11e473cd051f393f67182edc47fb name: node-termination-handler.aws selector: k8s-addon: node-termination-handler.aws diff --git a/tests/integration/update_cluster/many-addons/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content b/tests/integration/update_cluster/many-addons/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content index 4df7c18a5f..32fe6b63f7 100644 --- a/tests/integration/update_cluster/many-addons/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content +++ b/tests/integration/update_cluster/many-addons/data/aws_s3_bucket_object_minimal.example.com-addons-node-termination-handler.aws-k8s-1.11_content @@ -7,7 +7,7 @@ metadata: app.kubernetes.io/instance: aws-node-termination-handler app.kubernetes.io/managed-by: kops app.kubernetes.io/name: aws-node-termination-handler - app.kubernetes.io/version: 1.13.0 + app.kubernetes.io/version: 1.13.3 k8s-addon: node-termination-handler.aws k8s-app: aws-node-termination-handler name: aws-node-termination-handler @@ -90,7 +90,7 @@ metadata: app.kubernetes.io/instance: aws-node-termination-handler app.kubernetes.io/managed-by: kops app.kubernetes.io/name: aws-node-termination-handler - app.kubernetes.io/version: 1.13.0 + app.kubernetes.io/version: 1.13.3 k8s-addon: node-termination-handler.aws k8s-app: aws-node-termination-handler name: aws-node-termination-handler @@ -162,7 +162,7 @@ spec: value: "false" - name: LOG_LEVEL value: info - image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.0 + image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.3 imagePullPolicy: IfNotPresent name: aws-node-termination-handler resources: diff --git a/tests/integration/update_cluster/nth_sqs_resources/cloudformation.json b/tests/integration/update_cluster/nth_sqs_resources/cloudformation.json index d18044202e..940965c8b6 100644 --- a/tests/integration/update_cluster/nth_sqs_resources/cloudformation.json +++ b/tests/integration/update_cluster/nth_sqs_resources/cloudformation.json @@ -989,6 +989,26 @@ ] } }, + "AWSEventsRulenthsqsresourcesexamplecomInstanceStateChange": { + "Type": "AWS::Events::Rule", + "Properties": { + "Name": "nthsqsresources.example.com-InstanceStateChange", + "EventPattern": { + "detail-type": [ + "EC2 Instance State-change Notification" + ], + "source": [ + "aws.ec2" + ] + }, + "Targets": [ + { + "Id": "1", + "Arn": "arn:aws:sqs:us-test-1:123456789012:nthsqsresources-example-com-nth" + } + ] + } + }, "AWSEventsRulenthsqsresourcesexamplecomRebalanceRecommendation": { "Type": "AWS::Events::Rule", "Properties": { diff --git a/tests/integration/update_cluster/nth_sqs_resources/data/aws_cloudwatch_event_rule_nthsqsresources.example.com-InstanceStateChange_event_pattern b/tests/integration/update_cluster/nth_sqs_resources/data/aws_cloudwatch_event_rule_nthsqsresources.example.com-InstanceStateChange_event_pattern new file mode 100644 index 0000000000..8c2916419d --- /dev/null +++ b/tests/integration/update_cluster/nth_sqs_resources/data/aws_cloudwatch_event_rule_nthsqsresources.example.com-InstanceStateChange_event_pattern @@ -0,0 +1 @@ +{"source": ["aws.ec2"],"detail-type": ["EC2 Instance State-change Notification"]} diff --git a/tests/integration/update_cluster/nth_sqs_resources/data/aws_s3_bucket_object_nthsqsresources.example.com-addons-bootstrap_content b/tests/integration/update_cluster/nth_sqs_resources/data/aws_s3_bucket_object_nthsqsresources.example.com-addons-bootstrap_content index 17529310ab..9189887420 100644 --- a/tests/integration/update_cluster/nth_sqs_resources/data/aws_s3_bucket_object_nthsqsresources.example.com-addons-bootstrap_content +++ b/tests/integration/update_cluster/nth_sqs_resources/data/aws_s3_bucket_object_nthsqsresources.example.com-addons-bootstrap_content @@ -41,7 +41,7 @@ spec: k8s-addon: dns-controller.addons.k8s.io - id: k8s-1.11 manifest: node-termination-handler.aws/k8s-1.11.yaml - manifestHash: 2fbd4c41bf3c8cfd8651b82cc9335431f0ad5931abb82b92dbb4fe713df2e1aa + manifestHash: 0d47866cd451a44675257bc40b4902d3dce29ebe88ab3f9f43f31e246e6ce7f1 name: node-termination-handler.aws selector: k8s-addon: node-termination-handler.aws diff --git a/tests/integration/update_cluster/nth_sqs_resources/data/aws_s3_bucket_object_nthsqsresources.example.com-addons-node-termination-handler.aws-k8s-1.11_content b/tests/integration/update_cluster/nth_sqs_resources/data/aws_s3_bucket_object_nthsqsresources.example.com-addons-node-termination-handler.aws-k8s-1.11_content index 11dcd23944..a55f796855 100644 --- a/tests/integration/update_cluster/nth_sqs_resources/data/aws_s3_bucket_object_nthsqsresources.example.com-addons-node-termination-handler.aws-k8s-1.11_content +++ b/tests/integration/update_cluster/nth_sqs_resources/data/aws_s3_bucket_object_nthsqsresources.example.com-addons-node-termination-handler.aws-k8s-1.11_content @@ -7,7 +7,7 @@ metadata: app.kubernetes.io/instance: aws-node-termination-handler app.kubernetes.io/managed-by: kops app.kubernetes.io/name: aws-node-termination-handler - app.kubernetes.io/version: 1.13.0 + app.kubernetes.io/version: 1.13.3 k8s-addon: node-termination-handler.aws k8s-app: aws-node-termination-handler name: aws-node-termination-handler @@ -90,7 +90,7 @@ metadata: app.kubernetes.io/instance: aws-node-termination-handler app.kubernetes.io/managed-by: kops app.kubernetes.io/name: aws-node-termination-handler - app.kubernetes.io/version: 1.13.0 + app.kubernetes.io/version: 1.13.3 k8s-addon: node-termination-handler.aws k8s-app: aws-node-termination-handler name: aws-node-termination-handler @@ -199,7 +199,7 @@ spec: value: aws-node-termination-handler/managed - name: WORKERS value: "10" - image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.0 + image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.3 imagePullPolicy: IfNotPresent name: aws-node-termination-handler resources: diff --git a/tests/integration/update_cluster/nth_sqs_resources/kubernetes.tf b/tests/integration/update_cluster/nth_sqs_resources/kubernetes.tf index e4b17e6034..b96aa6e9f9 100644 --- a/tests/integration/update_cluster/nth_sqs_resources/kubernetes.tf +++ b/tests/integration/update_cluster/nth_sqs_resources/kubernetes.tf @@ -229,6 +229,16 @@ resource "aws_cloudwatch_event_rule" "nthsqsresources-example-com-ASGLifecycle" } } +resource "aws_cloudwatch_event_rule" "nthsqsresources-example-com-InstanceStateChange" { + event_pattern = file("${path.module}/data/aws_cloudwatch_event_rule_nthsqsresources.example.com-InstanceStateChange_event_pattern") + name = "nthsqsresources.example.com-InstanceStateChange" + tags = { + "KubernetesCluster" = "nthsqsresources.example.com" + "Name" = "nthsqsresources.example.com-InstanceStateChange" + "kubernetes.io/cluster/nthsqsresources.example.com" = "owned" + } +} + resource "aws_cloudwatch_event_rule" "nthsqsresources-example-com-RebalanceRecommendation" { event_pattern = file("${path.module}/data/aws_cloudwatch_event_rule_nthsqsresources.example.com-RebalanceRecommendation_event_pattern") name = "nthsqsresources.example.com-RebalanceRecommendation" @@ -254,6 +264,11 @@ resource "aws_cloudwatch_event_target" "nthsqsresources-example-com-ASGLifecycle rule = aws_cloudwatch_event_rule.nthsqsresources-example-com-ASGLifecycle.id } +resource "aws_cloudwatch_event_target" "nthsqsresources-example-com-InstanceStateChange-Target" { + arn = "arn:aws:sqs:us-test-1:123456789012:nthsqsresources-example-com-nth" + rule = aws_cloudwatch_event_rule.nthsqsresources-example-com-InstanceStateChange.id +} + resource "aws_cloudwatch_event_target" "nthsqsresources-example-com-RebalanceRecommendation-Target" { arn = "arn:aws:sqs:us-test-1:123456789012:nthsqsresources-example-com-nth" rule = aws_cloudwatch_event_rule.nthsqsresources-example-com-RebalanceRecommendation.id diff --git a/upup/models/cloudup/resources/addons/node-termination-handler.aws/k8s-1.11.yaml.template b/upup/models/cloudup/resources/addons/node-termination-handler.aws/k8s-1.11.yaml.template index afcbd839fb..7454d67e64 100644 --- a/upup/models/cloudup/resources/addons/node-termination-handler.aws/k8s-1.11.yaml.template +++ b/upup/models/cloudup/resources/addons/node-termination-handler.aws/k8s-1.11.yaml.template @@ -1,5 +1,5 @@ {{ with .NodeTerminationHandler }} -# Sourced from https://github.com/aws/aws-node-termination-handler/releases/download/v1.13.0/all-resources.yaml +# Sourced from https://github.com/aws/aws-node-termination-handler/releases/download/v1.13.3/all-resources.yaml --- # Source: aws-node-termination-handler/templates/serviceaccount.yaml apiVersion: v1 @@ -11,7 +11,7 @@ metadata: app.kubernetes.io/name: aws-node-termination-handler app.kubernetes.io/instance: aws-node-termination-handler k8s-app: aws-node-termination-handler - app.kubernetes.io/version: "1.13.0" + app.kubernetes.io/version: "1.13.3" --- # Source: aws-node-termination-handler/templates/clusterrole.yaml kind: ClusterRole @@ -78,7 +78,7 @@ metadata: app.kubernetes.io/name: aws-node-termination-handler app.kubernetes.io/instance: aws-node-termination-handler k8s-app: aws-node-termination-handler - app.kubernetes.io/version: "1.13.0" + app.kubernetes.io/version: "1.13.3" spec: replicas: 1 selector: @@ -117,7 +117,7 @@ spec: fsGroup: 1000 containers: - name: aws-node-termination-handler - image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.0 + image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.3 imagePullPolicy: IfNotPresent securityContext: readOnlyRootFilesystem: true @@ -220,7 +220,7 @@ metadata: app.kubernetes.io/name: aws-node-termination-handler app.kubernetes.io/instance: aws-node-termination-handler k8s-app: aws-node-termination-handler - app.kubernetes.io/version: "1.13.0" + app.kubernetes.io/version: "1.13.3" spec: updateStrategy: rollingUpdate: @@ -264,7 +264,7 @@ spec: dnsPolicy: "ClusterFirstWithHostNet" containers: - name: aws-node-termination-handler - image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.0 + image: public.ecr.aws/aws-ec2/aws-node-termination-handler:v1.13.3 imagePullPolicy: IfNotPresent securityContext: readOnlyRootFilesystem: true