From dae1487c43bcd0f7eaf9ed266b7ad07065bbf144 Mon Sep 17 00:00:00 2001 From: Valentin Widmer Date: Thu, 14 Dec 2023 11:49:02 +0100 Subject: [PATCH] add vpc lattice pattern --- patterns/vpc-lattice/README.md | 38 ++ patterns/vpc-lattice/assets/diagram.png | Bin 0 -> 72248 bytes .../vpc-lattice/assets/server-response.jpeg | Bin 0 -> 65916 bytes .../charts/demo-application/.helmignore | 23 ++ .../charts/demo-application/Chart.yaml | 5 + .../templates/deployment.yaml | 22 + .../templates/gateway-class.yaml | 6 + .../demo-application/templates/gateway.yaml | 11 + .../demo-application/templates/httproute.yaml | 20 + .../demo-application/templates/service.yaml | 11 + patterns/vpc-lattice/main.tf | 377 ++++++++++++++++++ patterns/vpc-lattice/outputs.tf | 4 + patterns/vpc-lattice/variables.tf | 0 patterns/vpc-lattice/versions.tf | 18 + 14 files changed, 535 insertions(+) create mode 100644 patterns/vpc-lattice/README.md create mode 100644 patterns/vpc-lattice/assets/diagram.png create mode 100644 patterns/vpc-lattice/assets/server-response.jpeg create mode 100644 patterns/vpc-lattice/charts/demo-application/.helmignore create mode 100644 patterns/vpc-lattice/charts/demo-application/Chart.yaml create mode 100644 patterns/vpc-lattice/charts/demo-application/templates/deployment.yaml create mode 100644 patterns/vpc-lattice/charts/demo-application/templates/gateway-class.yaml create mode 100644 patterns/vpc-lattice/charts/demo-application/templates/gateway.yaml create mode 100644 patterns/vpc-lattice/charts/demo-application/templates/httproute.yaml create mode 100644 patterns/vpc-lattice/charts/demo-application/templates/service.yaml create mode 100644 patterns/vpc-lattice/main.tf create mode 100644 patterns/vpc-lattice/outputs.tf create mode 100644 patterns/vpc-lattice/variables.tf create mode 100644 patterns/vpc-lattice/versions.tf diff --git a/patterns/vpc-lattice/README.md b/patterns/vpc-lattice/README.md new file mode 100644 index 0000000000..e2ce19544d --- /dev/null +++ b/patterns/vpc-lattice/README.md @@ -0,0 +1,38 @@ +# Amazon VPC Lattice + +This pattern demonstrates how to expose an EKS cluster hosted application to an internal consumer through Amazon VPC Lattice. + +- [Documentation](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html) +- [AWS Gateway API Controller](https://www.gateway-api-controller.eks.aws.dev/) + +## Scenario + +With this soluton we showcase how to configure Amazon VPC Lattice using the AWS Gateway API Controller in order to manage Amazon VPC Lattice resources through native K8S Gateway API objects. This pattern deploys two distinct VPCs with a client application running in one of them and a server application in the other. The server application is deployed inside an EKS cluster and made exposed to the client application through Amazon VPC Lattice which establishes connectivity between the two applications. Further we demonstrate how to configure a custom domain name for the exposed service using Amazon Route53. + +![diagram](assets/diagram.png) + + +## Deploy + +See [here](https://aws-ia.github.io/terraform-aws-eks-blueprints/getting-started/#prerequisites) for the prerequisites and steps to deploy this pattern. + +## Validate + +In order to test the connectivty between the client and server, please follow the steps outlined below: + +1. Login to the management console of your AWS account and navigate to the EC2 service +2. Select your the EC2 Instance with the name **client**, click **Connect**, choose **Session Manager** and click **Connect** +3. Within the console test the connecvity to the server application by entering the following command: + + ```sh + curl -I http://server.example.com + ``` + + If everythign works as expected yous should receive the following response: + ![output](assets/server-response.jpeg) + +## Destroy + +{% + include-markdown "../../docs/_partials/destroy.md" +%} diff --git a/patterns/vpc-lattice/assets/diagram.png b/patterns/vpc-lattice/assets/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1c74adbfe59baccc70c49ffdff5f913ac01641b6 GIT binary patch literal 72248 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
  • $oQX?znBNepSt^D$)eR?>qD)ao?fz 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 bM5pJ}_$BWgOQ$?O1AfWNC`;!{8o&ErC6k>$ literal 0 HcmV?d00001 diff --git a/patterns/vpc-lattice/charts/demo-application/.helmignore b/patterns/vpc-lattice/charts/demo-application/.helmignore new file mode 100644 index 0000000000..0e8a0eb36f --- /dev/null +++ b/patterns/vpc-lattice/charts/demo-application/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/patterns/vpc-lattice/charts/demo-application/Chart.yaml b/patterns/vpc-lattice/charts/demo-application/Chart.yaml new file mode 100644 index 0000000000..7e6d29f9b3 --- /dev/null +++ b/patterns/vpc-lattice/charts/demo-application/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v2 +name: demo-application +description: A Helm chart to deploy the demo-application +type: application +version: 1.0.0 diff --git a/patterns/vpc-lattice/charts/demo-application/templates/deployment.yaml b/patterns/vpc-lattice/charts/demo-application/templates/deployment.yaml new file mode 100644 index 0000000000..a2dc1de5b6 --- /dev/null +++ b/patterns/vpc-lattice/charts/demo-application/templates/deployment.yaml @@ -0,0 +1,22 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: server + labels: + app: server +spec: + replicas: 2 + selector: + matchLabels: + app: server + template: + metadata: + labels: + app: server + spec: + containers: + - name: server + image: public.ecr.aws/x2j8p8w7/http-server:latest + env: + - name: PodName + value: "server pod" \ No newline at end of file diff --git a/patterns/vpc-lattice/charts/demo-application/templates/gateway-class.yaml b/patterns/vpc-lattice/charts/demo-application/templates/gateway-class.yaml new file mode 100644 index 0000000000..23f16a9ef0 --- /dev/null +++ b/patterns/vpc-lattice/charts/demo-application/templates/gateway-class.yaml @@ -0,0 +1,6 @@ +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: GatewayClass +metadata: + name: amazon-vpc-lattice +spec: + controllerName: application-networking.k8s.aws/gateway-api-controller \ No newline at end of file diff --git a/patterns/vpc-lattice/charts/demo-application/templates/gateway.yaml b/patterns/vpc-lattice/charts/demo-application/templates/gateway.yaml new file mode 100644 index 0000000000..ca0e22f54c --- /dev/null +++ b/patterns/vpc-lattice/charts/demo-application/templates/gateway.yaml @@ -0,0 +1,11 @@ +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: Gateway +metadata: + name: my-services + namespace: apps +spec: + gatewayClassName: amazon-vpc-lattice + listeners: + - name: http + protocol: HTTP + port: 80 \ No newline at end of file diff --git a/patterns/vpc-lattice/charts/demo-application/templates/httproute.yaml b/patterns/vpc-lattice/charts/demo-application/templates/httproute.yaml new file mode 100644 index 0000000000..862a2eeef1 --- /dev/null +++ b/patterns/vpc-lattice/charts/demo-application/templates/httproute.yaml @@ -0,0 +1,20 @@ +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: HTTPRoute +metadata: + name: server + namespace: apps +spec: + hostnames: + - server.example.com + parentRefs: + - name: my-services + sectionName: http + rules: + - backendRefs: + - name: server + kind: Service + port: 8090 + matches: + - path: + type: PathPrefix + value: / \ No newline at end of file diff --git a/patterns/vpc-lattice/charts/demo-application/templates/service.yaml b/patterns/vpc-lattice/charts/demo-application/templates/service.yaml new file mode 100644 index 0000000000..39680474aa --- /dev/null +++ b/patterns/vpc-lattice/charts/demo-application/templates/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: server +spec: + selector: + app: server + ports: + - protocol: TCP + port: 8090 + targetPort: 8090 \ No newline at end of file diff --git a/patterns/vpc-lattice/main.tf b/patterns/vpc-lattice/main.tf new file mode 100644 index 0000000000..7f215bcd4c --- /dev/null +++ b/patterns/vpc-lattice/main.tf @@ -0,0 +1,377 @@ +provider "aws" { + region = local.region +} + +data "aws_caller_identity" "current" {} + +data "aws_availability_zones" "available" {} + +provider "kubernetes" { + host = module.eks.cluster_endpoint + cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data) + + exec { + api_version = "client.authentication.k8s.io/v1beta1" + command = "aws" + # This requires the awscli to be installed locally where Terraform is executed + args = ["eks", "get-token", "--cluster-name", module.eks.cluster_name] + } +} + +provider "helm" { + kubernetes { + host = module.eks.cluster_endpoint + cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data) + + exec { + api_version = "client.authentication.k8s.io/v1beta1" + command = "aws" + # This requires the awscli to be installed locally where Terraform is executed + args = ["eks", "get-token", "--cluster-name", module.eks.cluster_name] + } + } +} + +locals { + name = basename(path.cwd) + region = "us-west-2" + + cluster_vpc_cidr = "10.0.0.0/16" + client_vpc_cidr = "10.1.0.0/16" + azs = slice(data.aws_availability_zones.available.names, 0, 3) + + tags = { + Blueprint = local.name + GithubRepo = "github.com/aws-ia/terraform-aws-eks-blueprints" + } +} + +################################################################################ +# Cluster +################################################################################ + +module "eks" { + source = "terraform-aws-modules/eks/aws" + version = "~> 19.21" + + cluster_name = local.name + cluster_version = "1.28" + cluster_endpoint_public_access = true + enable_irsa = true + + vpc_id = module.cluster_vpc.vpc_id + subnet_ids = module.cluster_vpc.private_subnets + + eks_managed_node_groups = { + initial = { + instance_types = ["m5.large"] + + min_size = 3 + max_size = 10 + desired_size = 3 + } + } + + tags = local.tags +} + +################################################################################ +# Cluster VPC +################################################################################ + +module "cluster_vpc" { + source = "terraform-aws-modules/vpc/aws" + version = "~> 5.4" + + name = local.name + cidr = local.cluster_vpc_cidr + + azs = local.azs + private_subnets = [for k, v in local.azs : cidrsubnet(local.cluster_vpc_cidr, 4, k)] + public_subnets = [for k, v in local.azs : cidrsubnet(local.cluster_vpc_cidr, 8, k + 48)] + + enable_nat_gateway = true + single_nat_gateway = true + + public_subnet_tags = { + "kubernetes.io/role/elb" = 1 + } + + private_subnet_tags = { + "kubernetes.io/role/internal-elb" = 1 + } + + tags = local.tags +} + +################################################################################ +# Client VPC +################################################################################ + +module "client_vpc" { + source = "terraform-aws-modules/vpc/aws" + version = "~> 5.4" + + name = local.name + cidr = local.client_vpc_cidr + + azs = local.azs + private_subnets = [for k, v in local.azs : cidrsubnet(local.client_vpc_cidr, 4, k)] + + tags = local.tags +} + +################################################################################ +# EKS Addons (AWS Gateway API Controller) +################################################################################ + +module "addons" { + source = "aws-ia/eks-blueprints-addons/aws" + version = "~> 1.12" + + cluster_name = module.eks.cluster_name + cluster_endpoint = module.eks.cluster_endpoint + cluster_version = module.eks.cluster_version + oidc_provider_arn = module.eks.oidc_provider_arn + + enable_aws_gateway_api_controller = true + aws_gateway_api_controller = { + chart_version = "v1.0.1" + create_namespace = true + namespace = "aws-application-networking-system" + source_policy_documents = [data.aws_iam_policy_document.gateway_api_controller.json] + set = [ + { + name = "clusterName" + value = module.eks.cluster_name + }, + { + name = "log.level" + value = "debug" + }, + { + name = "clusterVpcId" + value = module.cluster_vpc.vpc_id + }, ] + + } + + tags = local.tags +} + +resource "null_resource" "wait_for_crd_registration" { + triggers = { + build_number = "$(timestamp())" + } + + provisioner "local-exec" { + command = < + { + service = service + subnet_ids = module.client_vpc.private_subnets + private_dns_enabled = true + tags = { Name = "${local.name}-${service}" } + } + } + + security_group_ids = [module.endpoint_sg.security_group_id] + + tags = local.tags +} + +module "client_sg" { + source = "terraform-aws-modules/security-group/aws" + version = "~> 5.0" + + name = "client" + description = "Security Group for EC2 Instance Egress" + + vpc_id = module.client_vpc.vpc_id + + egress_with_cidr_blocks = [ + { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = "0.0.0.0/0" + + }, + ] + + tags = local.tags +} + +module "endpoint_sg" { + source = "terraform-aws-modules/security-group/aws" + version = "~> 5.0" + + name = "ssm-endpoint" + description = "Security Group for EC2 Instance Egress" + + vpc_id = module.client_vpc.vpc_id + + ingress_with_cidr_blocks = [for subnet in module.client_vpc.private_subnets_cidr_blocks : + { + from_port = 443 + to_port = 443 + protocol = "TCP" + cidr_blocks = subnet + } + ] + + tags = local.tags +} \ No newline at end of file diff --git a/patterns/vpc-lattice/outputs.tf b/patterns/vpc-lattice/outputs.tf new file mode 100644 index 0000000000..b1a50fa2de --- /dev/null +++ b/patterns/vpc-lattice/outputs.tf @@ -0,0 +1,4 @@ +output "configure_kubectl" { + description = "Configure kubectl: make sure you're logged in with the correct AWS profile and run the following command to update your kubeconfig" + value = "aws eks update-kubeconfig --name ${module.eks.cluster_name} --alias ${module.eks.cluster_name} --region ${local.region}" +} \ No newline at end of file diff --git a/patterns/vpc-lattice/variables.tf b/patterns/vpc-lattice/variables.tf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/patterns/vpc-lattice/versions.tf b/patterns/vpc-lattice/versions.tf new file mode 100644 index 0000000000..b26b395e43 --- /dev/null +++ b/patterns/vpc-lattice/versions.tf @@ -0,0 +1,18 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + aws = { + source = "hashicorp/aws" + version = ">= 5.30" + } + helm = { + source = "hashicorp/helm" + version = ">= 2.9" + } + kubernetes = { + source = "hashicorp/kubernetes" + version = ">= 2.24" + } + } +}