diff --git a/tests/integration/update_cluster/bastionadditional_user-data/kubernetes.tf b/tests/integration/update_cluster/bastionadditional_user-data/kubernetes.tf index 1d05409a6d..feae31aacb 100644 --- a/tests/integration/update_cluster/bastionadditional_user-data/kubernetes.tf +++ b/tests/integration/update_cluster/bastionadditional_user-data/kubernetes.tf @@ -183,6 +183,12 @@ resource "aws_ebs_volume" "us-test-1a-etcd-main-bastionuserdata-example-com" { resource "aws_eip" "us-test-1a-bastionuserdata-example-com" { vpc = true + + tags = { + KubernetesCluster = "bastionuserdata.example.com" + Name = "us-test-1a.bastionuserdata.example.com" + "kubernetes.io/cluster/bastionuserdata.example.com" = "owned" + } } resource "aws_elb" "api-bastionuserdata-example-com" { diff --git a/tests/integration/update_cluster/lifecycle_phases/network-kubernetes.tf b/tests/integration/update_cluster/lifecycle_phases/network-kubernetes.tf index 3c10eb7abc..07e2b41181 100644 --- a/tests/integration/update_cluster/lifecycle_phases/network-kubernetes.tf +++ b/tests/integration/update_cluster/lifecycle_phases/network-kubernetes.tf @@ -16,6 +16,12 @@ provider "aws" { resource "aws_eip" "us-test-1a-lifecyclephases-example-com" { vpc = true + + tags = { + KubernetesCluster = "lifecyclephases.example.com" + Name = "us-test-1a.lifecyclephases.example.com" + "kubernetes.io/cluster/lifecyclephases.example.com" = "owned" + } } resource "aws_internet_gateway" "lifecyclephases-example-com" { diff --git a/tests/integration/update_cluster/privatecalico/kubernetes.tf b/tests/integration/update_cluster/privatecalico/kubernetes.tf index fcaeb14ded..c4a7ba8e69 100644 --- a/tests/integration/update_cluster/privatecalico/kubernetes.tf +++ b/tests/integration/update_cluster/privatecalico/kubernetes.tf @@ -183,6 +183,12 @@ resource "aws_ebs_volume" "us-test-1a-etcd-main-privatecalico-example-com" { resource "aws_eip" "us-test-1a-privatecalico-example-com" { vpc = true + + tags = { + KubernetesCluster = "privatecalico.example.com" + Name = "us-test-1a.privatecalico.example.com" + "kubernetes.io/cluster/privatecalico.example.com" = "owned" + } } resource "aws_elb" "api-privatecalico-example-com" { diff --git a/tests/integration/update_cluster/privatecanal/kubernetes.tf b/tests/integration/update_cluster/privatecanal/kubernetes.tf index 09b69a920a..4afdca6f3a 100644 --- a/tests/integration/update_cluster/privatecanal/kubernetes.tf +++ b/tests/integration/update_cluster/privatecanal/kubernetes.tf @@ -183,6 +183,12 @@ resource "aws_ebs_volume" "us-test-1a-etcd-main-privatecanal-example-com" { resource "aws_eip" "us-test-1a-privatecanal-example-com" { vpc = true + + tags = { + KubernetesCluster = "privatecanal.example.com" + Name = "us-test-1a.privatecanal.example.com" + "kubernetes.io/cluster/privatecanal.example.com" = "owned" + } } resource "aws_elb" "api-privatecanal-example-com" { diff --git a/tests/integration/update_cluster/privatedns1/kubernetes.tf b/tests/integration/update_cluster/privatedns1/kubernetes.tf index 169fc6b7df..0be33b246a 100644 --- a/tests/integration/update_cluster/privatedns1/kubernetes.tf +++ b/tests/integration/update_cluster/privatedns1/kubernetes.tf @@ -183,6 +183,12 @@ resource "aws_ebs_volume" "us-test-1a-etcd-main-privatedns1-example-com" { resource "aws_eip" "us-test-1a-privatedns1-example-com" { vpc = true + + tags = { + KubernetesCluster = "privatedns1.example.com" + Name = "us-test-1a.privatedns1.example.com" + "kubernetes.io/cluster/privatedns1.example.com" = "owned" + } } resource "aws_elb" "api-privatedns1-example-com" { diff --git a/tests/integration/update_cluster/privatedns2/kubernetes.tf b/tests/integration/update_cluster/privatedns2/kubernetes.tf index 2c547c6cf2..c2d768e1ed 100644 --- a/tests/integration/update_cluster/privatedns2/kubernetes.tf +++ b/tests/integration/update_cluster/privatedns2/kubernetes.tf @@ -183,6 +183,12 @@ resource "aws_ebs_volume" "us-test-1a-etcd-main-privatedns2-example-com" { resource "aws_eip" "us-test-1a-privatedns2-example-com" { vpc = true + + tags = { + KubernetesCluster = "privatedns2.example.com" + Name = "us-test-1a.privatedns2.example.com" + "kubernetes.io/cluster/privatedns2.example.com" = "owned" + } } resource "aws_elb" "api-privatedns2-example-com" { diff --git a/tests/integration/update_cluster/privateflannel/kubernetes.tf b/tests/integration/update_cluster/privateflannel/kubernetes.tf index b77237a524..bffef888ee 100644 --- a/tests/integration/update_cluster/privateflannel/kubernetes.tf +++ b/tests/integration/update_cluster/privateflannel/kubernetes.tf @@ -183,6 +183,12 @@ resource "aws_ebs_volume" "us-test-1a-etcd-main-privateflannel-example-com" { resource "aws_eip" "us-test-1a-privateflannel-example-com" { vpc = true + + tags = { + KubernetesCluster = "privateflannel.example.com" + Name = "us-test-1a.privateflannel.example.com" + "kubernetes.io/cluster/privateflannel.example.com" = "owned" + } } resource "aws_elb" "api-privateflannel-example-com" { diff --git a/tests/integration/update_cluster/privateweave/kubernetes.tf b/tests/integration/update_cluster/privateweave/kubernetes.tf index c34662d199..29526efb7e 100644 --- a/tests/integration/update_cluster/privateweave/kubernetes.tf +++ b/tests/integration/update_cluster/privateweave/kubernetes.tf @@ -183,6 +183,12 @@ resource "aws_ebs_volume" "us-test-1a-etcd-main-privateweave-example-com" { resource "aws_eip" "us-test-1a-privateweave-example-com" { vpc = true + + tags = { + KubernetesCluster = "privateweave.example.com" + Name = "us-test-1a.privateweave.example.com" + "kubernetes.io/cluster/privateweave.example.com" = "owned" + } } resource "aws_elb" "api-privateweave-example-com" { diff --git a/upup/pkg/fi/cloudup/awstasks/elastic_ip.go b/upup/pkg/fi/cloudup/awstasks/elastic_ip.go index 81b151f095..f62ff49668 100644 --- a/upup/pkg/fi/cloudup/awstasks/elastic_ip.go +++ b/upup/pkg/fi/cloudup/awstasks/elastic_ip.go @@ -279,12 +279,14 @@ func (_ *ElasticIP) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *ElasticIP) e } type terraformElasticIP struct { - VPC *bool `json:"vpc"` + VPC *bool `json:"vpc"` + Tags map[string]string `json:"tags,omitempty"` } func (_ *ElasticIP) RenderTerraform(t *terraform.TerraformTarget, a, e, changes *ElasticIP) error { tf := &terraformElasticIP{ - VPC: aws.Bool(true), + VPC: aws.Bool(true), + Tags: e.Tags, } return t.RenderResource("aws_eip", *e.Name, tf) @@ -295,12 +297,14 @@ func (e *ElasticIP) TerraformLink() *terraform.Literal { } type cloudformationElasticIP struct { - Domain *string `json:"Domain"` + Domain *string `json:"Domain"` + Tags []cloudformationTag `json:"Tags,omitempty"` } func (_ *ElasticIP) RenderCloudformation(t *cloudformation.CloudformationTarget, a, e, changes *ElasticIP) error { tf := &cloudformationElasticIP{ Domain: aws.String("vpc"), + Tags: buildCloudformationTags(e.Tags), } return t.RenderResource("AWS::EC2::EIP", *e.Name, tf)