diff --git a/contrib/terraform/aws/README.md b/contrib/terraform/aws/README.md index 451fc58a7..188fea00e 100644 --- a/contrib/terraform/aws/README.md +++ b/contrib/terraform/aws/README.md @@ -25,16 +25,24 @@ export AWS_DEFAULT_REGION="zzz" - Rename `contrib/terraform/aws/terraform.tfvars.example` to `terraform.tfvars` - Update `contrib/terraform/aws/terraform.tfvars` with your data - - Allocate new AWS Elastic IPs: Depending on # of Availability Zones used (2 for each AZ) - - Create an AWS EC2 SSH Key - - +- Allocate a new AWS Elastic IP. Use this for your `loadbalancer_apiserver_address` value (below) +- Create an AWS EC2 SSH Key - Run with `terraform apply --var-file="credentials.tfvars"` or `terraform apply` depending if you exported your AWS credentials +Example: +```commandline +terraform apply -var-file=credentials.tfvars -var 'loadbalancer_apiserver_address=34.212.228.77' +``` + - Terraform automatically creates an Ansible Inventory file called `hosts` with the created infrastructure in the directory `inventory` - Once the infrastructure is created, you can run the kubespray playbooks and supply inventory/hosts with the `-i` flag. +Example (this one assumes you are using CoreOS) +```commandline +ansible-playbook -i ./inventory/hosts ./cluster.yml -e ansible_ssh_user=core -e bootstrap_os=coreos -b --become-user=root --flush-cache +``` + **Troubleshooting** ***Remaining AWS IAM Instance Profile***: diff --git a/contrib/terraform/aws/create-infrastructure.tf b/contrib/terraform/aws/create-infrastructure.tf index f1f1e205b..04c5a8881 100644 --- a/contrib/terraform/aws/create-infrastructure.tf +++ b/contrib/terraform/aws/create-infrastructure.tf @@ -173,8 +173,7 @@ data "template_file" "inventory" { list_etcd = "${join("\n",aws_instance.k8s-etcd.*.tags.Name)}" elb_api_fqdn = "apiserver_loadbalancer_domain_name=\"${module.aws-elb.aws_elb_api_fqdn}\"" elb_api_port = "loadbalancer_apiserver.port=${var.aws_elb_api_port}" - kube_insecure_apiserver_address = "kube_apiserver_insecure_bind_address: ${var.kube_insecure_apiserver_address}" - + loadbalancer_apiserver_address = "loadbalancer_apiserver.address=${var.loadbalancer_apiserver_address}" } } diff --git a/contrib/terraform/aws/templates/inventory.tpl b/contrib/terraform/aws/templates/inventory.tpl index 8d5afd1cf..dd8126002 100644 --- a/contrib/terraform/aws/templates/inventory.tpl +++ b/contrib/terraform/aws/templates/inventory.tpl @@ -25,4 +25,4 @@ kube-master [k8s-cluster:vars] ${elb_api_fqdn} ${elb_api_port} -${kube_insecure_apiserver_address} +${loadbalancer_apiserver_address} diff --git a/contrib/terraform/aws/terraform.tfvars b/contrib/terraform/aws/terraform.tfvars index a538d46f3..bc83a719d 100644 --- a/contrib/terraform/aws/terraform.tfvars +++ b/contrib/terraform/aws/terraform.tfvars @@ -5,11 +5,11 @@ aws_cluster_name = "devtest" aws_vpc_cidr_block = "10.250.192.0/18" aws_cidr_subnets_private = ["10.250.192.0/20","10.250.208.0/20"] aws_cidr_subnets_public = ["10.250.224.0/20","10.250.240.0/20"] -aws_avail_zones = ["eu-central-1a","eu-central-1b"] +aws_avail_zones = ["us-west-2a","us-west-2b"] #Bastion Host -aws_bastion_ami = "ami-5900cc36" -aws_bastion_size = "t2.small" +aws_bastion_ami = "ami-db56b9a3" +aws_bastion_size = "t2.medium" #Kubernetes Cluster @@ -23,9 +23,10 @@ aws_etcd_size = "t2.medium" aws_kube_worker_num = 4 aws_kube_worker_size = "t2.medium" -aws_cluster_ami = "ami-903df7ff" +aws_cluster_ami = "ami-db56b9a3" #Settings AWS ELB -aws_elb_api_port = 443 -k8s_secure_api_port = 443 +aws_elb_api_port = 6443 +k8s_secure_api_port = 6443 +kube_insecure_apiserver_address = "0.0.0.0" diff --git a/contrib/terraform/aws/variables.tf b/contrib/terraform/aws/variables.tf index c740e6472..c7c65c772 100644 --- a/contrib/terraform/aws/variables.tf +++ b/contrib/terraform/aws/variables.tf @@ -96,6 +96,6 @@ variable "k8s_secure_api_port" { description = "Secure Port of K8S API Server" } -variable "kube_insecure_apiserver_address" { - description= "Bind Address for insecure Port of K8s API Server" +variable "loadbalancer_apiserver_address" { + description= "Bind Address for ELB of K8s API Server" }