Base configuration for settingup vke
This commit is contained in:
		
							parent
							
								
									69d75cdb2d
								
							
						
					
					
						commit
						8a66a04337
					
				
							
								
								
									
										24
									
								
								infra/vultr-kubernetes/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								infra/vultr-kubernetes/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
			
		||||
plan=out.plan
 | 
			
		||||
 | 
			
		||||
SHELL := /bin/bash
 | 
			
		||||
 | 
			
		||||
$(plan): *.tf
 | 
			
		||||
	source ./secrets.env && terraform plan -input=false -out $(plan)
 | 
			
		||||
 | 
			
		||||
push: build
 | 
			
		||||
	source ./secrets.env && terraform apply $(plan)
 | 
			
		||||
 | 
			
		||||
refresh:
 | 
			
		||||
	source ./secrets.env && terraform apply -refresh-only
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
	terraform validate
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
rip:
 | 
			
		||||
	source ./secrets.env && terraform destroy
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f $(plan)
 | 
			
		||||
 | 
			
		||||
.PHONY: test build clean push rip
 | 
			
		||||
							
								
								
									
										34
									
								
								infra/vultr-kubernetes/backend.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								infra/vultr-kubernetes/backend.tf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
terraform {
 | 
			
		||||
  required_version = ">= 0.13"
 | 
			
		||||
  backend s3 {
 | 
			
		||||
    bucket  = "project-athens"
 | 
			
		||||
    key     = "infra/vke/state/build.tfstate"
 | 
			
		||||
    region  = "us-west-1"
 | 
			
		||||
    encrypt = true
 | 
			
		||||
  }
 | 
			
		||||
  required_providers {
 | 
			
		||||
    aws = {
 | 
			
		||||
      source  = "hashicorp/aws"
 | 
			
		||||
      version = "~> 5.0"
 | 
			
		||||
    }
 | 
			
		||||
    vultr = {
 | 
			
		||||
      source = "vultr/vultr"
 | 
			
		||||
      version = "2.19.0"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
provider vultr {
 | 
			
		||||
  api_key     = var.vultr_api_key
 | 
			
		||||
  rate_limit  = 100
 | 
			
		||||
  retry_limit = 3
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
provider aws {
 | 
			
		||||
  access_key  = var.aws_key
 | 
			
		||||
  secret_key  = var.aws_secret
 | 
			
		||||
  region      = var.aws_region
 | 
			
		||||
  max_retries = 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								infra/vultr-kubernetes/cluster.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								infra/vultr-kubernetes/cluster.tf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
resource vultr_kubernetes athens {
 | 
			
		||||
  region = var.cluster.region
 | 
			
		||||
  version = var.cluster.version
 | 
			
		||||
  label = var.cluster.label
 | 
			
		||||
  node_pools {
 | 
			
		||||
    # how many pools do we want
 | 
			
		||||
    node_quantity = 1
 | 
			
		||||
    plan = var.cluster.pool.plan
 | 
			
		||||
    label = var.cluster.pool.label
 | 
			
		||||
    min_nodes = var.cluster.pool.min
 | 
			
		||||
    max_nodes = var.cluster.pool.max
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								infra/vultr-kubernetes/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								infra/vultr-kubernetes/readme.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
# Kubernetes Cluster On Vultr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										35
									
								
								infra/vultr-kubernetes/variables.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								infra/vultr-kubernetes/variables.tf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
# API Keys required to reach AWS/Vultr
 | 
			
		||||
variable vultr_api_key {
 | 
			
		||||
  type = string
 | 
			
		||||
  sensitive = true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
variable aws_key {
 | 
			
		||||
  type = string
 | 
			
		||||
  sensitive = true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
variable aws_secret {
 | 
			
		||||
  type = string
 | 
			
		||||
  sensitive = true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
variable aws_region {
 | 
			
		||||
  type = string
 | 
			
		||||
  sensitive = true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Cluster configuration
 | 
			
		||||
variable cluster {
 | 
			
		||||
  type = object({
 | 
			
		||||
    region  = string
 | 
			
		||||
    label   = string
 | 
			
		||||
    version = string
 | 
			
		||||
    pool = object({
 | 
			
		||||
      plan = string
 | 
			
		||||
      autoscale = bool
 | 
			
		||||
      min = number
 | 
			
		||||
      max = number
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user