Create Cluster Tr

Create Cluster (Terraform) #

Steps to create a GKE cluster using terraform

Install Terraform #

sudo yum install wget zip

wget https://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_linux_amd64.zip

unzip terraform_0.11.11_linux_amd64.zip

sudo mv terraform /usr/local/bin/

Folder structure #

Create a folder name gke-cluster

main.tf
modules/
	gke-cluster/
		main.tf
		variables.tf

Create gke-cluster/main.tf #

# Create a GKE  cluster
resource "google_container_cluster" "gke-cluster" {
  count = 1
  name               = "${var.gke_cluster_name}"
  network            = "${var.network_name}"
  subnetwork         = "${var.subnetwork_name}"
  region   			     = "${var.gke_cluster_region}" 
  additional_zones   = "${var.gke_cluster_zones}" 

  
  master_authorized_networks_config {
    cidr_blocks = [
      { cidr_block = "172.25.0.0/19", display_name = "app" },
    ]
  }
  
  node_pool {
    name       		   = "core-node-pool"
    initial_node_count = "${var.num_nodes}"
    node_config {
      machine_type = "${var.node_machine_type}"
      preemptible  = false
      oauth_scopes = [
        "https://www.googleapis.com/auth/compute",
        "https://www.googleapis.com/auth/devstorage.read_only",
        "https://www.googleapis.com/auth/logging.write",
        "https://www.googleapis.com/auth/monitoring.write",
        "https://www.googleapis.com/auth/monitoring",
        "https://www.googleapis.com/auth/cloud_debugger",
        "https://www.googleapis.com/auth/cloud-platform",
        "https://www.googleapis.com/auth/service.management.readonly",
        "https://www.googleapis.com/auth/servicecontrol",
        "https://www.googleapis.com/auth/trace.append",
      ]
      labels {
          cluster = "${var.gke_cluster_name}"
      }
      tags = ["${var.gke_cluster_name}"]
    }
    management {
      auto_upgrade = true
      auto_repair = true
    }  
  }


}