From 57385d460a571cd4f297ba288ceecb2ba56a8117 Mon Sep 17 00:00:00 2001 From: David Shafer Date: Tue, 31 Jul 2018 09:36:45 -0500 Subject: [PATCH] Working on EKS --- README.md | 30 ++++++++++++++++++++++++++++++ eks-cluster.tf | 8 ++++---- eks-worker-nodes.tf | 20 ++++++++++---------- outputs.tf | 16 +++++++++------- variables.tf | 18 +++++++++++++++--- vpc.tf | 12 ++++++------ 6 files changed, 74 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index e9771ec..b828610 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,36 @@ Adapted from https://github.com/terraform-providers/terraform-provider-aws For details, see https://www.terraform.io/docs/providers/aws/guides/eks-getting-started.html +## Variables + +### Required + +#### account_id (string) + +The AWS account ID that should be used to automatically map IAM users into the Kubernetes cluster + +### Optional + +#### cluster_name (string) + +The Kubernetes cluster name (defaults to "cluster") + +#### availability_zones (list) + +List of exactly 2 availability zones in which +to create the cluster (defaults to ["us-east-1a", "us-east-1b"]) + +## Outputs + +#### config_map_aws_auth (string) + +Kubernetes config map contents in YAML format, used to configure cluster authentication for users and worker nodes + +#### kubeconfig (string) + +Kubeconfig file contents, used to configure cluster access for Kubernetes client libraries + + ## Getting started 1. Apply the configuration: diff --git a/eks-cluster.tf b/eks-cluster.tf index 9add532..e338f1d 100644 --- a/eks-cluster.tf +++ b/eks-cluster.tf @@ -6,7 +6,7 @@ # resource "aws_iam_role" "eksServiceRole" { - name = "terraform-eks-${var.cluster-name}-eksServiceRole" + name = "terraform-eks-${var.cluster_name}-eksServiceRole" assume_role_policy = < $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.cluster.endpoint},g /var/lib/kubelet/kubeconfig -sed -i s,CLUSTER_NAME,${var.cluster-name},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.cluster.endpoint},g /etc/systemd/system/kubelet.service @@ -131,7 +131,7 @@ resource "aws_launch_configuration" "node" { 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-${var.cluster-name}" + name_prefix = "terraform-eks-${var.cluster_name}" security_groups = ["${aws_security_group.node.id}"] user_data_base64 = "${base64encode(local.node-userdata)}" @@ -145,17 +145,17 @@ resource "aws_autoscaling_group" "cluster" { launch_configuration = "${aws_launch_configuration.node.id}" max_size = 2 min_size = 1 - name = "terraform-eks-${var.cluster-name}" + name = "terraform-eks-${var.cluster_name}" vpc_zone_identifier = ["${aws_subnet.cluster.*.id}"] tag { key = "Name" - value = "terraform-eks-${var.cluster-name}" + value = "terraform-eks-${var.cluster_name}" propagate_at_launch = true } tag { - key = "kubernetes.io/cluster/${var.cluster-name}" + key = "kubernetes.io/cluster/${var.cluster_name}" value = "owned" propagate_at_launch = true } diff --git a/outputs.tf b/outputs.tf index 591fd46..d2c2273 100644 --- a/outputs.tf +++ b/outputs.tf @@ -18,6 +18,8 @@ data: groups: - system:bootstrappers - system:nodes + mapAccounts: | + - "${var.account_id}" CONFIGMAPAWSAUTH kubeconfig = <