Browse Source

Create terraform infrastructure

JL-10/add-doppler-secrets-support
lavenderguitar 3 years ago
parent
commit
0a08e7e08d
  1. 34
      terraform/lke-cluster.tf
  2. 14
      terraform/provider.tf
  3. 9
      terraform/terraform.auto.tfvars
  4. 38
      terraform/variables.tf

34
terraform/lke-cluster.tf

@ -0,0 +1,34 @@
resource "linode_lke_cluster" "cluster1" {
k8s_version = var.k8s_version
label = var.label
region = var.region
tags = var.tags
dynamic "pool" {
for_each = var.pools
content {
type = pool.value["type"]
count = pool.value["count"]
}
}
}
output "kubeconfig" {
description = "Linode kubeconfig."
value = base64decode(linode_lke_cluster.cluster1.kubeconfig)
sensitive = true
}
resource "local_file" "kubeconfig" {
content = base64decode(linode_lke_cluster.cluster1.kubeconfig)
filename = "../.kube-config"
file_permission = "0400"
}
output "api_endpoints" {
value = linode_lke_cluster.cluster1.api_endpoints
}
output "status" {
value = linode_lke_cluster.cluster1.status
}

14
terraform/provider.tf

@ -0,0 +1,14 @@
terraform {
required_providers {
linode = {
source = "linode/linode"
version = "1.16.0"
}
}
}
provider "linode" {
token = var.token
}
provider "local" {}

9
terraform/terraform.auto.tfvars

@ -0,0 +1,9 @@
label = "production-lke-cluster"
k8s_version = "1.21"
region = "us-central"
pools = [
{
type : "g6-standard-1"
count : 1
}
]

38
terraform/variables.tf

@ -0,0 +1,38 @@
variable "token" {
description = "Your Linode API Personal Access Token. (required)"
}
variable "k8s_version" {
description = "The Kubernetes version to use for this cluster. (required)"
default = "1.17"
}
variable "label" {
description = "The unique label to assign to this cluster. (required)"
default = "default-lke-cluster"
}
variable "region" {
description = "The region where your cluster will be located. (required)"
default = "us-east"
}
variable "tags" {
description = "Tags to apply to your cluster for organizational purposes. (optional)"
type = list(string)
default = ["testing"]
}
variable "pools" {
description = "The Node Pool specifications for the Kubernetes cluster. (required)"
type = list(object({
type = string
count = number
}))
default = [
{
type = "g6-standard-4"
count = 3
},
]
}
Loading…
Cancel
Save