Terraform templates for Kubernetes on AWS and GCP AWS provider.tf declare these scripts run on AWS vpc.tf define virtual private cloud subnet.tf define public and private subnets and gateways cluster.tf set up k8s control plane node_group.tf run pods/containers on EC2 addon.tf set CNI (container network interface) up, not to use proxy/nat iam_role.tf assign roles to cluster and node group to let them access and control components in VPC security_group.tf two security groups are defined, but not used yet. GCP provider.tf declare these scripts run on GCP vpc.tf define project on GCP subnet.tf define subnets router_nat.tf define nat router for private nodes cluster.tf set up k8s control plane node_pool.tf build nodes to run pods/containers Docker apache2_k8s/Dockerfile a Docker template to run Apache2 with port 80 to serve a default index.html in Ubuntu Helm apache2_k8s/ a Helm template to deploy a pod with the Docker image above, a service of NodePort, and an ingress as an external load balancer.