From fe17476e53142a02a6d061b3774b7cdb06f24299 Mon Sep 17 00:00:00 2001 From: David Shafer Date: Thu, 26 Jul 2018 09:00:43 -0500 Subject: [PATCH] Rename demo resources --- README.md | 4 ++- eks-cluster.tf | 42 +++++++++++++-------------- eks-worker-nodes.tf | 70 ++++++++++++++++++++++----------------------- outputs.tf | 31 +++++++++++++------- providers.tf | 6 ++-- vpc.tf | 28 +++++++++--------- 6 files changed, 97 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index 99d2ff9..bcbbbb1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# EKS Getting Started Guide Configuration +# Terraform AWS EKS Module + +Terraform configuration to create an AWS EKS cluster (Adapted from https://github.com/terraform-providers/terraform-provider-aws) diff --git a/eks-cluster.tf b/eks-cluster.tf index 58a7389..8df998f 100644 --- a/eks-cluster.tf +++ b/eks-cluster.tf @@ -5,8 +5,8 @@ # * EKS Cluster # -resource "aws_iam_role" "demo-cluster" { - name = "terraform-eks-demo-cluster" +resource "aws_iam_role" "eksServiceRole" { + name = "terraform-eks-${var.cluster-name}-eksServiceRole" assume_role_policy = < $CA_CERTIFICATE_FILE_PATH +echo "${aws_eks_cluster.cluster.certificate_authority.0.data}" | base64 -d > $CA_CERTIFICATE_FILE_PATH INTERNAL_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4) -sed -i s,MASTER_ENDPOINT,${aws_eks_cluster.demo.endpoint},g /var/lib/kubelet/kubeconfig +sed -i s,MASTER_ENDPOINT,${aws_eks_cluster.cluster.endpoint},g /var/lib/kubelet/kubeconfig sed -i s,CLUSTER_NAME,${var.cluster-name},g /var/lib/kubelet/kubeconfig sed -i s,REGION,${data.aws_region.current.name},g /etc/systemd/system/kubelet.service sed -i s,MAX_PODS,20,g /etc/systemd/system/kubelet.service -sed -i s,MASTER_ENDPOINT,${aws_eks_cluster.demo.endpoint},g /etc/systemd/system/kubelet.service +sed -i s,MASTER_ENDPOINT,${aws_eks_cluster.cluster.endpoint},g /etc/systemd/system/kubelet.service sed -i s,INTERNAL_IP,$INTERNAL_IP,g /etc/systemd/system/kubelet.service DNS_CLUSTER_IP=10.100.0.10 if [[ $INTERNAL_IP == 10.* ]] ; then DNS_CLUSTER_IP=172.20.0.10; fi @@ -126,31 +126,31 @@ systemctl restart kubelet USERDATA } -resource "aws_launch_configuration" "demo" { +resource "aws_launch_configuration" "node" { associate_public_ip_address = true - iam_instance_profile = "${aws_iam_instance_profile.demo-node.name}" + iam_instance_profile = "${aws_iam_instance_profile.node.name}" image_id = "${data.aws_ami.eks-worker.id}" instance_type = "m4.large" - name_prefix = "terraform-eks-demo" - security_groups = ["${aws_security_group.demo-node.id}"] - user_data_base64 = "${base64encode(local.demo-node-userdata)}" + name_prefix = "terraform-eks-${var.cluster-name}" + security_groups = ["${aws_security_group.node.id}"] + user_data_base64 = "${base64encode(local.node-userdata)}" lifecycle { create_before_destroy = true } } -resource "aws_autoscaling_group" "demo" { +resource "aws_autoscaling_group" "cluster" { desired_capacity = 2 - launch_configuration = "${aws_launch_configuration.demo.id}" + launch_configuration = "${aws_launch_configuration.node.id}" max_size = 2 min_size = 1 - name = "terraform-eks-demo" - vpc_zone_identifier = ["${aws_subnet.demo.*.id}"] + name = "terraform-eks-${var.cluster-name}" + vpc_zone_identifier = ["${aws_subnet.cluster.*.id}"] tag { key = "Name" - value = "terraform-eks-demo" + value = "terraform-eks-${var.cluster-name}" propagate_at_launch = true } diff --git a/outputs.tf b/outputs.tf index 1492754..df2c2cd 100644 --- a/outputs.tf +++ b/outputs.tf @@ -13,7 +13,7 @@ metadata: namespace: kube-system data: mapRoles: | - - rolearn: ${aws_iam_role.demo-node.arn} + - rolearn: ${aws_iam_role.node.arn} username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers @@ -26,23 +26,23 @@ CONFIGMAPAWSAUTH apiVersion: v1 clusters: - cluster: - server: ${aws_eks_cluster.demo.endpoint} - certificate-authority-data: ${aws_eks_cluster.demo.certificate_authority.0.data} - name: kubernetes + server: ${aws_eks_cluster.cluster.endpoint} + certificate-authority-data: ${aws_eks_cluster.cluster.certificate_authority.0.data} + name: ${var.cluster-name} contexts: - context: - cluster: kubernetes - user: aws - name: aws -current-context: aws + cluster: ${var.cluster-name} + user: aws-${var.cluster-name} + name: aws-${var.cluster-name} +current-context: aws-${var.cluster-name} kind: Config preferences: {} users: -- name: aws +- name: aws-${var.cluster-name} user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 - command: aws-iam-authenticator + command: heptio-authenticator-aws args: - "token" - "-i" @@ -57,3 +57,14 @@ output "config_map_aws_auth" { output "kubeconfig" { value = "${local.kubeconfig}" } + +output "endpoint" { + value = "${aws_eks_cluster.cluster.endpoint}" +} +output "certificate_authority_data" { + value = "${aws_eks_cluster.cluster.certificate_authority.0.data}" +} + +output "rolearn" { + value = "${aws_iam_role.node.arn}" +} diff --git a/providers.tf b/providers.tf index 8c50c66..57d43ac 100644 --- a/providers.tf +++ b/providers.tf @@ -2,9 +2,9 @@ # Provider Configuration # -provider "aws" { - region = "us-west-2" -} +#provider "aws" { +# region = "us-west-2" +#} # Using these data sources allows the configuration to be # generic for any region. diff --git a/vpc.tf b/vpc.tf index 53f828a..4cb75ea 100644 --- a/vpc.tf +++ b/vpc.tf @@ -6,52 +6,52 @@ # * Route Table # -resource "aws_vpc" "demo" { +resource "aws_vpc" "cluster" { cidr_block = "10.0.0.0/16" tags = "${ map( - "Name", "terraform-eks-demo-node", + "Name", "terraform-eks-${var.cluster-name}", "kubernetes.io/cluster/${var.cluster-name}", "shared", ) }" } -resource "aws_subnet" "demo" { +resource "aws_subnet" "cluster" { count = 2 availability_zone = "${data.aws_availability_zones.available.names[count.index]}" cidr_block = "10.0.${count.index}.0/24" - vpc_id = "${aws_vpc.demo.id}" + vpc_id = "${aws_vpc.cluster.id}" tags = "${ map( - "Name", "terraform-eks-demo-node", + "Name", "terraform-eks-${var.cluster-name}", "kubernetes.io/cluster/${var.cluster-name}", "shared", ) }" } -resource "aws_internet_gateway" "demo" { - vpc_id = "${aws_vpc.demo.id}" +resource "aws_internet_gateway" "cluster" { + vpc_id = "${aws_vpc.cluster.id}" tags { - Name = "terraform-eks-demo" + Name = "terraform-eks-${var.cluster-name}" } } -resource "aws_route_table" "demo" { - vpc_id = "${aws_vpc.demo.id}" +resource "aws_route_table" "cluster" { + vpc_id = "${aws_vpc.cluster.id}" route { cidr_block = "0.0.0.0/0" - gateway_id = "${aws_internet_gateway.demo.id}" + gateway_id = "${aws_internet_gateway.cluster.id}" } } -resource "aws_route_table_association" "demo" { +resource "aws_route_table_association" "eks" { count = 2 - subnet_id = "${aws_subnet.demo.*.id[count.index]}" - route_table_id = "${aws_route_table.demo.id}" + subnet_id = "${aws_subnet.cluster.*.id[count.index]}" + route_table_id = "${aws_route_table.cluster.id}" }